Changeset 8651603 in flexpart.git for flexpart_code/fpmetbinary_mod.F90
- Timestamp:
- Apr 9, 2017, 1:12:42 AM (7 years ago)
- Branches:
- fp9.3.1-20161214-nc4
- Children:
- 8413bc9
- Parents:
- 41a2981
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
flexpart_code/fpmetbinary_mod.F90
r41a2981 r8651603 308 308 309 309 INTEGER :: nxmax_dimid, nymax_dimid, nzmax_dimid, nuvzmax_dimid, nwzmax_dimid, & 310 & max nests_dimid, nxmaxn_dimid, nymaxn_dimid310 & maxspec_dimid, numclass_dimid, maxnests_dimid, nxmaxn_dimid, nymaxn_dimid 311 311 312 312 INTEGER, DIMENSION(1) :: dim1dids ! Dimension IDs for 1D arrays 313 313 INTEGER, DIMENSION(2) :: dim2dids ! Dimension IDs for 2D arrays 314 314 INTEGER, DIMENSION(3) :: dim3dids ! Dimension IDs for 3D arrays 315 INTEGER, DIMENSION(4) :: dim4dids ! Dimension IDs for 4D arrays 316 315 317 316 318 ! These are used when loading in dimensions from NC file 317 319 CHARACTER(LEN=NF90_MAX_NAME) :: nxmax_dimname, nymax_dimname, nzmax_dimname, & 318 320 & nuvzmax_dimname, nwzmax_dimname,& 321 & maxspec_dimname, numclass_dimname,& 319 322 & maxnests_dimname, nxmaxn_dimname, nymaxn_dimname 320 323 … … 323 326 INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, & 324 327 & temp_nuvzmax, temp_nwzmax, & 325 & temp_maxnests, temp_nxmaxn, temp_nymaxn 328 & temp_maxspec, temp_numclass,& 329 & temp_maxnests, temp_nxmaxn, temp_nymaxn 326 330 327 331 CHARACTER(LEN=12) :: temp_preproc_format_version_str … … 347 351 ncret = nf90_def_dim(ncid, 'nuvzmax', nuvzmax, nuvzmax_dimid) 348 352 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) 351 355 352 356 ! Scalar values … … 382 386 ncret = nf90_put_var(ncid, ncvarid, nmixz) 383 387 384 ncret = nf90_def_var(ncid, 'nlev_ ', NF90_INT, ncvarid)388 ncret = nf90_def_var(ncid, 'nlev_ec', NF90_INT, ncvarid) 385 389 ncret = nf90_put_var(ncid, ncvarid, nlev_ec) 386 390 … … 437 441 & lsm(0:nxmax-1, 0:nymax-1)) 438 442 439 dim3dids = (/nxmax_dimid, nymax_dimid, numclass /)443 dim3dids = (/nxmax_dimid, nymax_dimid, numclass_dimid/) 440 444 ! numclass comes from par_mod - number of land use classes 441 445 ncret = nf90_def_var(ncid, 'xlanduse', NF90_FLOAT, & … … 836 840 837 841 838 dim3dids = (/nxmax_dimid, nymax_dimid, maxspec /)842 dim3dids = (/nxmax_dimid, nymax_dimid, maxspec_dimid/) 839 843 840 844 ncret = nf90_def_var(ncid, 'vdep', NF90_FLOAT, & … … 858 862 WRITE(iounit) bknew(:) 859 863 860 dim1dids = (/numclass /)864 dim1dids = (/numclass_dimid/) 861 865 862 866 ncret = nf90_def_var(ncid, 'z0', NF90_FLOAT, & … … 870 874 871 875 872 dim1dids = (/nwzmax /)876 dim1dids = (/nwzmax_dimid/) 873 877 874 878 ncret = nf90_def_var(ncid, 'akm', NF90_FLOAT, & … … 891 895 892 896 893 dim1dids = (/nuvzmax /)897 dim1dids = (/nuvzmax_dimid/) 894 898 895 899 ncret = nf90_def_var(ncid, 'akz', NF90_FLOAT, & … … 912 916 913 917 914 dim1dids = (/nzmax /)918 dim1dids = (/nzmax_dimid/) 915 919 916 920 ncret = nf90_def_var(ncid, 'aknew', NF90_FLOAT, & … … 947 951 ncret = nf90_def_dim(ncid, 'nymaxn', nymaxn, nymaxn_dimid) 948 952 949 950 951 ! Nested, scalar values (for each nest)952 953 WRITE(iounit) nxn(:) 953 954 WRITE(iounit) nyn(:) … … 957 958 WRITE(iounit) ylat0n(:) 958 959 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 959 1021 ! Nested fields, static over time 960 1022 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 961 1068 962 1069 ! 3d nested fields … … 1082 1189 PRINT *, 'temp_nwzmax: ', temp_nwzmax 1083 1190 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 1084 1201 1085 1202 … … 1087 1204 & (temp_nzmax == nzmax) .AND. & 1088 1205 & (temp_nuvzmax == nuvzmax) .AND. & 1089 & (temp_nwzmax == nwzmax) ) THEN 1206 & (temp_nwzmax == nwzmax) .AND. & 1207 & (temp_numclass == numclass) .AND. & 1208 & (temp_maxspec == maxspec) ) THEN 1090 1209 CONTINUE 1091 1210 ELSE … … 1097 1216 PRINT *, 'nzmax: ', temp_nzmax, ' ', nzmax 1098 1217 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 1100 1221 ! PRINT *, '' 1101 1222 STOP … … 1420 1541 PRINT *, 'temp_nymaxn: ', temp_nymaxn 1421 1542 1543 ! Note that maxspec_dimid and numclass_dimid were checked above 1544 1545 1546 1422 1547 1423 1548 IF ( (temp_nxmaxn == nxmaxn) .AND. (temp_nymaxn == nymaxn) .AND. & … … 1445 1570 1446 1571 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 1447 1592 ! Nested fields, static over time 1448 1593 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 1449 1613 1450 1614 ! 3d nested fields
Note: See TracChangeset
for help on using the changeset viewer.