Changeset 8651603 in flexpart.git


Ignore:
Timestamp:
Apr 9, 2017, 1:12:42 AM (7 years ago)
Author:
Don Morton <Don.Morton@…>
Branches:
fp9.3.1-20161214-nc4
Children:
8413bc9
Parents:
41a2981
Message:

Incremental save for branch fp9.3.1-20161214-nc4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • flexpart_code/fpmetbinary_mod.F90

    r41a2981 r8651603  
    308308
    309309        INTEGER :: nxmax_dimid, nymax_dimid, nzmax_dimid, nuvzmax_dimid, nwzmax_dimid, &
    310 &                  maxnests_dimid, nxmaxn_dimid, nymaxn_dimid
     310&                  maxspec_dimid, numclass_dimid, maxnests_dimid, nxmaxn_dimid, nymaxn_dimid
    311311
    312312        INTEGER, DIMENSION(1) :: dim1dids    ! Dimension IDs for 1D arrays
    313313        INTEGER, DIMENSION(2) :: dim2dids    ! Dimension IDs for 2D arrays
    314314        INTEGER, DIMENSION(3) :: dim3dids    ! Dimension IDs for 3D arrays
     315        INTEGER, DIMENSION(4) :: dim4dids    ! Dimension IDs for 4D arrays
     316
    315317
    316318        ! These are used when loading in dimensions from NC file
    317319        CHARACTER(LEN=NF90_MAX_NAME) :: nxmax_dimname, nymax_dimname, nzmax_dimname, &
    318320&                                       nuvzmax_dimname, nwzmax_dimname,&
     321&                                       maxspec_dimname, numclass_dimname,&
    319322&                                       maxnests_dimname, nxmaxn_dimname, nymaxn_dimname
    320323
     
    323326        INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, &
    324327&                  temp_nuvzmax, temp_nwzmax, &
    325 &                   temp_maxnests, temp_nxmaxn, temp_nymaxn
     328&                  temp_maxspec, temp_numclass,&
     329&                  temp_maxnests, temp_nxmaxn, temp_nymaxn
    326330
    327331        CHARACTER(LEN=12) :: temp_preproc_format_version_str
     
    347351            ncret = nf90_def_dim(ncid, 'nuvzmax', nuvzmax, nuvzmax_dimid)
    348352            ncret = nf90_def_dim(ncid, 'nwzmax', nwzmax, nwzmax_dimid)
    349 
    350 
     353            ncret = nf90_def_dim(ncid, 'maxspec', maxspec, maxspec_dimid)
     354            ncret = nf90_def_dim(ncid, 'numclass', numclass, numclass_dimid)
    351355
    352356            ! Scalar values
     
    382386            ncret = nf90_put_var(ncid, ncvarid, nmixz)
    383387
    384             ncret = nf90_def_var(ncid, 'nlev_', NF90_INT, ncvarid)
     388            ncret = nf90_def_var(ncid, 'nlev_ec', NF90_INT, ncvarid)
    385389            ncret = nf90_put_var(ncid, ncvarid, nlev_ec)
    386390
     
    437441&                                lsm(0:nxmax-1, 0:nymax-1))
    438442
    439             dim3dids = (/nxmax_dimid, nymax_dimid, numclass/)
     443            dim3dids = (/nxmax_dimid, nymax_dimid, numclass_dimid/)
    440444            ! numclass comes from par_mod - number of land use classes
    441445            ncret = nf90_def_var(ncid, 'xlanduse', NF90_FLOAT, &
     
    836840
    837841
    838             dim3dids = (/nxmax_dimid, nymax_dimid, maxspec/)
     842            dim3dids = (/nxmax_dimid, nymax_dimid, maxspec_dimid/)
    839843
    840844            ncret = nf90_def_var(ncid, 'vdep', NF90_FLOAT, &
     
    858862            WRITE(iounit) bknew(:)
    859863
    860             dim1dids = (/numclass/)
     864            dim1dids = (/numclass_dimid/)
    861865
    862866            ncret = nf90_def_var(ncid, 'z0', NF90_FLOAT, &
     
    870874
    871875
    872             dim1dids = (/nwzmax/)
     876            dim1dids = (/nwzmax_dimid/)
    873877
    874878            ncret = nf90_def_var(ncid, 'akm', NF90_FLOAT, &
     
    891895
    892896
    893             dim1dids = (/nuvzmax/)
     897            dim1dids = (/nuvzmax_dimid/)
    894898
    895899            ncret = nf90_def_var(ncid, 'akz', NF90_FLOAT, &
     
    912916
    913917
    914             dim1dids = (/nzmax/)
     918            dim1dids = (/nzmax_dimid/)
    915919
    916920            ncret = nf90_def_var(ncid, 'aknew', NF90_FLOAT, &
     
    947951            ncret = nf90_def_dim(ncid, 'nymaxn', nymaxn, nymaxn_dimid)
    948952
    949 
    950 
    951             ! Nested, scalar values (for each nest)
    952953            WRITE(iounit) nxn(:)
    953954            WRITE(iounit) nyn(:)
     
    957958            WRITE(iounit) ylat0n(:)
    958959
     960            ! Nested, scalar values (for each nest)
     961
     962            dim1dids = (/maxnests_dimid/)
     963
     964            ncret = nf90_def_var(ncid, 'nxn', NF90_INT, &
     965&                                       dim1dids, ncvarid)
     966            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     967&                                        shuffle=0,     &
     968&                                        deflate=1,     &
     969&                                        deflate_level=DEF_LEVEL)
     970            ncret = nf90_put_var(ncid, ncvarid, &
     971&                                nxn(1:maxnests))
     972
     973            ncret = nf90_def_var(ncid, 'nyn', NF90_INT, &
     974&                                       dim1dids, ncvarid)
     975            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     976&                                        shuffle=0,     &
     977&                                        deflate=1,     &
     978&                                        deflate_level=DEF_LEVEL)
     979            ncret = nf90_put_var(ncid, ncvarid, &
     980&                                nyn(1:maxnests))
     981
     982            ncret = nf90_def_var(ncid, 'dxn', NF90_FLOAT, &
     983&                                       dim1dids, ncvarid)
     984            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     985&                                        shuffle=0,     &
     986&                                        deflate=1,     &
     987&                                        deflate_level=DEF_LEVEL)
     988            ncret = nf90_put_var(ncid, ncvarid, &
     989&                                dxn(1:maxnests))
     990
     991            ncret = nf90_def_var(ncid, 'dyn', NF90_FLOAT, &
     992&                                       dim1dids, ncvarid)
     993            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     994&                                        shuffle=0,     &
     995&                                        deflate=1,     &
     996&                                        deflate_level=DEF_LEVEL)
     997            ncret = nf90_put_var(ncid, ncvarid, &
     998&                                dyn(1:maxnests))
     999
     1000            ncret = nf90_def_var(ncid, 'xlon0n', NF90_FLOAT, &
     1001&                                       dim1dids, ncvarid)
     1002            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     1003&                                        shuffle=0,     &
     1004&                                        deflate=1,     &
     1005&                                        deflate_level=DEF_LEVEL)
     1006            ncret = nf90_put_var(ncid, ncvarid, &
     1007&                                xlon0n(1:maxnests))
     1008
     1009            ncret = nf90_def_var(ncid, 'ylat0n', NF90_FLOAT, &
     1010&                                       dim1dids, ncvarid)
     1011            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     1012&                                        shuffle=0,     &
     1013&                                        deflate=1,     &
     1014&                                        deflate_level=DEF_LEVEL)
     1015            ncret = nf90_put_var(ncid, ncvarid, &
     1016&                                ylat0n(1:maxnests))
     1017
     1018
     1019
     1020
    9591021            ! Nested fields, static over time
    9601022            WRITE(iounit) oron, excessoron, lsmn, xlandusen
     1023
     1024            dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/)
     1025
     1026            ncret = nf90_def_var(ncid, 'oron', NF90_FLOAT, &
     1027&                                       dim3dids, ncvarid)
     1028            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     1029&                                        shuffle=0,     &
     1030&                                        deflate=1,     &
     1031&                                        deflate_level=DEF_LEVEL)
     1032            ncret = nf90_put_var(ncid, ncvarid, &
     1033&                                oron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests))
     1034
     1035            ncret = nf90_def_var(ncid, 'excessoron', NF90_FLOAT, &
     1036&                                       dim3dids, ncvarid)
     1037            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     1038&                                        shuffle=0,     &
     1039&                                        deflate=1,     &
     1040&                                        deflate_level=DEF_LEVEL)
     1041            ncret = nf90_put_var(ncid, ncvarid, &
     1042&                                excessoron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests))
     1043
     1044            ncret = nf90_def_var(ncid, 'lsmn', NF90_FLOAT, &
     1045&                                       dim3dids, ncvarid)
     1046            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     1047&                                        shuffle=0,     &
     1048&                                        deflate=1,     &
     1049&                                        deflate_level=DEF_LEVEL)
     1050            ncret = nf90_put_var(ncid, ncvarid, &
     1051&                                lsmn(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests))
     1052
     1053            dim4dids = (/nxmaxn_dimid, nymaxn_dimid, numclass_dimid, maxnests_dimid/)
     1054
     1055            ncret = nf90_def_var(ncid, 'xlandusen', NF90_FLOAT, &
     1056&                                       dim4dids, ncvarid)
     1057            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     1058&                                        shuffle=0,     &
     1059&                                        deflate=1,     &
     1060&                                        deflate_level=DEF_LEVEL)
     1061            ncret = nf90_put_var(ncid, ncvarid, &
     1062&                                xlandusen(0:nxmaxn-1, 0:nymaxn-1, 1:numclass, 1:maxnests))
     1063
     1064            PRINT *, 'SUM(xlandusen): ', &
     1065&                                        SUM(xlandusen)
     1066
     1067
    9611068
    9621069            ! 3d nested fields
     
    10821189            PRINT *, 'temp_nwzmax: ', temp_nwzmax
    10831190
     1191            ncret = nf90_inq_dimid(ncid, 'numclass', numclass_dimid)
     1192            ncret = nf90_inquire_dimension(ncid, numclass_dimid, numclass_dimname, &
     1193&                                                temp_numclass)
     1194            PRINT *, 'temp_numclass: ', temp_numclass
     1195
     1196            ncret = nf90_inq_dimid(ncid, 'maxspec', maxspec_dimid)
     1197            ncret = nf90_inquire_dimension(ncid, maxspec_dimid, maxspec_dimname, &
     1198&                                                temp_maxspec)
     1199            PRINT *, 'temp_maxspec: ', temp_maxspec
     1200
    10841201
    10851202
     
    10871204&                   (temp_nzmax == nzmax) .AND. &
    10881205&                   (temp_nuvzmax == nuvzmax) .AND. &
    1089 &                   (temp_nwzmax == nwzmax) ) THEN
     1206&                   (temp_nwzmax == nwzmax) .AND. &
     1207&                   (temp_numclass == numclass) .AND. &
     1208&                   (temp_maxspec == maxspec) ) THEN
    10901209                CONTINUE
    10911210            ELSE
     
    10971216                PRINT *, 'nzmax:     ', temp_nzmax, '    ', nzmax
    10981217                PRINT *, 'nuvzmax:     ', temp_nuvzmax, '    ', nuvzmax
    1099                 PRINT *, 'nwzmax:     ', temp_nwzmax, '    ', nwzmax
     1218                PRINT *, 'nwzmax:     ', temp_nwzmax, '    ', nwzmax
     1219                PRINT *, 'numclass:     ', temp_numclass, '    ', numclass
     1220                PRINT *, 'maxspec:     ', temp_maxspec, '    ', maxspec
    11001221                ! PRINT *, ''
    11011222                STOP
     
    14201541            PRINT *, 'temp_nymaxn: ', temp_nymaxn
    14211542
     1543            ! Note that maxspec_dimid and numclass_dimid were checked above
     1544
     1545
     1546
    14221547
    14231548            IF ( (temp_nxmaxn == nxmaxn) .AND. (temp_nymaxn == nymaxn) .AND. &
     
    14451570
    14461571
     1572            ncret = nf90_inq_varid(ncid, 'nxn', ncvarid)
     1573            ncret = nf90_get_var(ncid, ncvarid, nxn(1:maxnests))
     1574
     1575            ncret = nf90_inq_varid(ncid, 'nyn', ncvarid)
     1576            ncret = nf90_get_var(ncid, ncvarid, nyn(1:maxnests))
     1577
     1578            ncret = nf90_inq_varid(ncid, 'dxn', ncvarid)
     1579            ncret = nf90_get_var(ncid, ncvarid, dxn(1:maxnests))
     1580
     1581            ncret = nf90_inq_varid(ncid, 'dyn', ncvarid)
     1582            ncret = nf90_get_var(ncid, ncvarid, dyn(1:maxnests))
     1583
     1584            ncret = nf90_inq_varid(ncid, 'xlon0n', ncvarid)
     1585            ncret = nf90_get_var(ncid, ncvarid, xlon0n(1:maxnests))
     1586
     1587            ncret = nf90_inq_varid(ncid, 'ylat0n', ncvarid)
     1588            ncret = nf90_get_var(ncid, ncvarid, ylat0n(1:maxnests))
     1589
     1590
     1591
    14471592            ! Nested fields, static over time
    14481593            READ(iounit) oron, excessoron, lsmn, xlandusen
     1594
     1595            ncret = nf90_inq_varid(ncid, 'oron', ncvarid)
     1596            ncret = nf90_get_var(ncid, ncvarid, oron(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
     1597
     1598            ncret = nf90_inq_varid(ncid, 'excessoron', ncvarid)
     1599            ncret = nf90_get_var(ncid, ncvarid, excessoron(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
     1600
     1601            ncret = nf90_inq_varid(ncid, 'lsmn', ncvarid)
     1602            ncret = nf90_get_var(ncid, ncvarid, lsmn(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
     1603
     1604            ncret = nf90_inq_varid(ncid, 'xlandusen', ncvarid)
     1605            ncret = nf90_get_var(ncid, ncvarid, xlandusen(0:nxmaxn-1,0:nymaxn-1,1:numclass,1:maxnests))
     1606
     1607
     1608            PRINT *, 'SUM(xlandusen): ', &
     1609&                                        SUM(xlandusen)
     1610
     1611
     1612
    14491613
    14501614            ! 3d nested fields
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG