Changeset b398fb6 in flexpart.git
- Timestamp:
- Apr 16, 2017, 12:19:49 PM (7 years ago)
- Branches:
- fp9.3.1-20161214-nc4
- Parents:
- 515b21c
- Location:
- flexpart_code
- Files:
-
- 4 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
flexpart_code/fpmetbinary_mod.F90
r515b21c rb398fb6 112 112 113 113 114 #ifdef RAWBIN 115 OPEN(IOUNIT_DUMP, file=filename, action='WRITE', status='REPLACE', form="unformatted", access="stream") 116 #endif 117 118 119 120 121 122 CALL fpio(IOUNIT_DUMP, ncid, 'DUMP', cm_index) 123 124 #ifdef RAWBIN 125 CLOSE(IOUNIT_DUMP) 126 #endif 114 115 CALL fpio(ncid, 'DUMP', cm_index) 127 116 128 117 PRINT *, 'Closing NC4 file...' … … 153 142 154 143 155 156 #ifdef RAWBIN 157 OPEN(IOUNIT_LOAD, file=filename, action='READ', status='OLD', form="unformatted", access="stream") 158 #endif 159 160 CALL fpio(IOUNIT_LOAD, ncid, 'LOAD', cm_index) 161 162 #ifdef RAWBIN 163 CLOSE(IOUNIT_LOAD) 164 #endif 165 144 CALL fpio(ncid, 'LOAD', cm_index) 166 145 167 146 CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) … … 169 148 END SUBROUTINE fpmetbinary_load 170 149 171 SUBROUTINE fpmetbinary_zero(cm_index) 172 INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in 173 ! most com_mod variables. 174 ! Should be 1 or 2 175 176 177 ! Zeroes out, in local datastructures, the values dumped/loaded 178 ! This was written primarily as a testing mechanism. 179 ! DJM -- 17 February 2017 -- I don't think this routine has been used 180 ! for anything in recent past. Might want to consider 86'ing it. 181 ! The lines here correspond to READ and WRITE in the dump/load routines 182 183 ! Scalar values 184 nx=0.0; ny=0.0; nxmin1=0.0; nymin1=0.0; nxfield=0.0 185 nuvz=0.0; nwz=0.0; nz=0.0; nmixz=0.0; nlev_ec=0.0 186 dx=0.0; dy=0.0; xlon0=0.0; ylat0=0.0; dxconst=0.0; dyconst=0.0 187 188 ! Fixed fields, static in time 189 oro=0.0; excessoro=0.0; lsm=0.0; xlanduse=0.0; height=0.0 190 191 ! 3d fields 192 uu(:,:,:,cm_index) = 0.0 193 vv(:,:,:,cm_index) = 0.0 194 uupol(:,:,:,cm_index) = 0.0 195 vvpol(:,:,:,cm_index) = 0.0 196 ww(:,:,:,cm_index) = 0.0 197 tt(:,:,:,cm_index) = 0.0 198 qv(:,:,:,cm_index) = 0.0 199 pv(:,:,:,cm_index) = 0.0 200 rho(:,:,:,cm_index) = 0.0 201 drhodz(:,:,:,cm_index) = 0.0 202 tth(:,:,:,cm_index) = 0.0 203 qvh(:,:,:,cm_index) = 0.0 204 pplev(:,:,:,cm_index) = 0.0 205 clouds(:,:,:,cm_index) = 0.0 206 cloudsh(:,:,cm_index) = 0.0 207 208 ! 2d fields 209 ps(:,:,:,cm_index) = 0.0 210 sd(:,:,:,cm_index) = 0.0 211 msl(:,:,:,cm_index) = 0.0 212 tcc(:,:,:,cm_index) = 0.0 213 u10(:,:,:,cm_index) = 0.0 214 v10(:,:,:,cm_index) = 0.0 215 tt2(:,:,:,cm_index) = 0.0 216 td2(:,:,:,cm_index) = 0.0 217 lsprec(:,:,:,cm_index) = 0.0 218 convprec(:,:,:,cm_index) = 0.0 219 sshf(:,:,:,cm_index) = 0.0 220 ssr(:,:,:,cm_index) = 0.0 221 surfstr(:,:,:,cm_index) = 0.0 222 ustar(:,:,:,cm_index) = 0.0 223 wstar(:,:,:,cm_index) = 0.0 224 hmix(:,:,:,cm_index) = 0.0 225 tropopause(:,:,:,cm_index) = 0.0 226 oli(:,:,:,cm_index) = 0.0 227 diffk(:,:,:,cm_index) = 0.0 228 vdep(:,:,:,cm_index) = 0.0 229 230 ! 1d fields 231 z0(:) = 0.0 232 akm(:) = 0.0 233 bkm(:) = 0.0 234 akz(:) = 0.0 235 bkz(:) = 0.0 236 aknew(:) = 0.0 237 bknew(:) = 0.0 238 239 ! Nested, scalar values (for each nest) 240 nxn(:) = 0.0 241 nyn(:) = 0.0 242 dxn(:) = 0.0 243 dyn(:) = 0.0 244 xlon0n(:) = 0.0 245 ylat0n(:) = 0.0 246 247 ! Nested fields, static in time 248 oron=0.0; excessoron=0.0; lsmn=0.0; xlandusen=0.0 249 250 ! 3d nested fields 251 uun(:,:,:,cm_index,:) = 0.0 252 wwn(:,:,:,cm_index,:) = 0.0 253 ttn(:,:,:,cm_index,:) = 0.0 254 qvn(:,:,:,cm_index,:) = 0.0 255 pvn(:,:,:,cm_index,:) = 0.0 256 cloudsn(:,:,:,cm_index,:) = 0.0 257 cloudsnh(:,:,cm_index,:) = 0.0 258 rhon(:,:,:,cm_index,:) = 0.0 259 drhodzn(:,:,:,cm_index,:) = 0.0 260 tthn(:,:,:,cm_index,:) = 0.0 261 qvhn(:,:,:,cm_index,:) = 0.0 262 263 ! 2d nested fields 264 psn(:,:,:,cm_index,:) = 0.0 265 sdn(:,:,:,cm_index,:) = 0.0 266 msln(:,:,:,cm_index,:) = 0.0 267 tccn(:,:,:,cm_index,:) = 0.0 268 u10n(:,:,:,cm_index,:) = 0.0 269 v10n(:,:,:,cm_index,:) = 0.0 270 tt2n(:,:,:,cm_index,:) = 0.0 271 td2n(:,:,:,cm_index,:) = 0.0 272 lsprecn(:,:,:,cm_index,:) = 0.0 273 convprecn(:,:,:,cm_index,:) = 0.0 274 sshfn(:,:,:,cm_index,:) = 0.0 275 ssrn(:,:,:,cm_index,:) = 0.0 276 surfstrn(:,:,:,cm_index,:) = 0.0 277 ustarn(:,:,:,cm_index,:) = 0.0 278 wstarn(:,:,:,cm_index,:) = 0.0 279 hmixn(:,:,:,cm_index,:) = 0.0 280 tropopausen(:,:,:,cm_index,:) = 0.0 281 olin(:,:,:,cm_index,:) = 0.0 282 diffkn(:,:,:,cm_index,:) = 0.0 283 vdepn(:,:,:,cm_index,:) = 0.0 284 285 ! Auxiliary variables for nests 286 xresoln(:) = 0.0 287 yresoln(:) = 0.0 288 xln(:) = 0.0 289 yln(:) = 0.0 290 xrn(:) = 0.0 291 yrn(:) = 0.0 292 293 ! Variables for polar stereographic projection 294 xglobal=.FALSE.; sglobal=.FALSE.; nglobal=.FALSE. 295 switchnorthg=0.0; switchsouthg=0.0 296 southpolemap(:) = 0.0 297 northpolemap(:) = 0.0 298 299 ! Variables declared in conv_mod (convection) 300 pconv(:) = 0.0 301 phconv(:) = 0.0 302 dpr(:) = 0.0 303 pconv_hpa(:) = 0.0 304 phconv_hpa(:) = 0.0 305 ft(:) = 0.0 306 fq(:) = 0.0 307 fmass(:,:) = 0.0 308 sub(:) = 0.0 309 fmassfrac(:,:) = 0.0 310 cbaseflux(:,:) = 0.0 311 cbasefluxn(:,:,:) = 0.0 312 tconv(:) = 0.0 313 qconv(:) = 0.0 314 qsconv(:) = 0.0 315 psconv=0.0; tt2conv=0.0; td2conv=0.0 316 nconvlev=0.0; nconvtop=0.0 317 318 END SUBROUTINE fpmetbinary_zero 319 320 SUBROUTINE fpio(iounit, ncid, op, cm_index) 150 151 152 153 SUBROUTINE fpio(ncid, op, cm_index) 321 154 IMPLICIT NONE 322 155 INTEGER, INTENT(IN) :: ncid ! NetCDF file id 323 INTEGER, INTENT(IN) :: iounit324 156 CHARACTER(LEN=4), INTENT(IN) :: op ! Operation - DUMP or LOAD 325 157 INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in … … 380 212 381 213 382 #ifdef RAWBIN 383 WRITE (iounit) PREPROC_FORMAT_VERSION_STR 384 385 #endif 214 386 215 387 216 ! Write the compiled max dimensions from par_mod - these are … … 389 218 ! information to provide the structure of arrays 390 219 391 #ifdef RAWBIN392 WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax393 #endif394 220 395 221 … … 449 275 450 276 451 452 #ifdef RAWBIN453 WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield454 WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec455 WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst456 #endif457 458 277 ncret = nf90_def_var(ncid, 'nx', NF90_INT, ncvarid) 459 278 call handle_nf90_err(ncret) … … 539 358 540 359 ! Fixed fields, static in time 541 542 543 #ifdef RAWBIN544 WRITE(iounit) oro, excessoro, lsm, xlanduse, height545 #endif546 547 360 dim2dids = (/nxmax_dimid, nymax_dimid/) 548 361 … … 614 427 615 428 ! 3d fields 616 617 618 619 #ifdef RAWBIN620 WRITE(iounit) uu(:,:,:,cm_index)621 WRITE(iounit) vv(:,:,:,cm_index)622 WRITE(iounit) uupol(:,:,:,cm_index)623 WRITE(iounit) vvpol(:,:,:,cm_index)624 WRITE(iounit) ww(:,:,:,cm_index)625 WRITE(iounit) tt(:,:,:,cm_index)626 WRITE(iounit) qv(:,:,:,cm_index)627 WRITE(iounit) pv(:,:,:,cm_index)628 WRITE(iounit) rho(:,:,:,cm_index)629 WRITE(iounit) drhodz(:,:,:,cm_index)630 WRITE(iounit) tth(:,:,:,cm_index)631 WRITE(iounit) qvh(:,:,:,cm_index)632 WRITE(iounit) pplev(:,:,:,cm_index)633 WRITE(iounit) clouds(:,:,:,cm_index)634 WRITE(iounit) cloudsh(:,:,cm_index)635 #endif636 637 638 429 dim3dids = (/nxmax_dimid, nymax_dimid, nzmax_dimid/) 639 430 … … 836 627 837 628 ! 2d fields 838 839 840 #ifdef RAWBIN841 WRITE(iounit) ps(:,:,:,cm_index)842 WRITE(iounit) sd(:,:,:,cm_index)843 WRITE(iounit) msl(:,:,:,cm_index)844 WRITE(iounit) tcc(:,:,:,cm_index)845 WRITE(iounit) u10(:,:,:,cm_index)846 WRITE(iounit) v10(:,:,:,cm_index)847 WRITE(iounit) tt2(:,:,:,cm_index)848 WRITE(iounit) td2(:,:,:,cm_index)849 WRITE(iounit) lsprec(:,:,:,cm_index)850 WRITE(iounit) convprec(:,:,:,cm_index)851 WRITE(iounit) sshf(:,:,:,cm_index)852 WRITE(iounit) ssr(:,:,:,cm_index)853 WRITE(iounit) surfstr(:,:,:,cm_index)854 WRITE(iounit) ustar(:,:,:,cm_index)855 WRITE(iounit) wstar(:,:,:,cm_index)856 WRITE(iounit) hmix(:,:,:,cm_index)857 WRITE(iounit) tropopause(:,:,:,cm_index)858 WRITE(iounit) oli(:,:,:,cm_index)859 WRITE(iounit) diffk(:,:,:,cm_index)860 WRITE(iounit) vdep(:,:,:,cm_index)861 #endif862 863 864 629 dim2dids = (/nxmax_dimid, nymax_dimid/) 865 630 … … 1118 883 1119 884 ! 1d fields 1120 1121 1122 1123 #ifdef RAWBIN1124 WRITE(iounit) z0(:)1125 WRITE(iounit) akm(:)1126 WRITE(iounit) bkm(:)1127 WRITE(iounit) akz(:)1128 WRITE(iounit) bkz(:)1129 WRITE(iounit) aknew(:)1130 WRITE(iounit) bknew(:)1131 #endif1132 1133 885 dim1dids = (/numclass_dimid/) 1134 886 … … 1242 994 1243 995 1244 #ifdef RAWBIN1245 WRITE(iounit) nxn(:)1246 WRITE(iounit) nyn(:)1247 WRITE(iounit) dxn(:)1248 WRITE(iounit) dyn(:)1249 WRITE(iounit) xlon0n(:)1250 WRITE(iounit) ylat0n(:)1251 #endif1252 1253 996 ! Nested, scalar values (for each nest) 1254 1255 997 dim1dids = (/maxnests_dimid/) 1256 998 … … 1331 1073 1332 1074 ! Nested fields, static over time 1333 WRITE(iounit) oron, excessoron, lsmn, xlandusen1334 1335 1075 dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) 1336 1076 … … 1390 1130 1391 1131 ! 3d nested fields 1392 1393 1394 1395 #ifdef RAWBIN1396 WRITE(iounit) uun(:,:,:,cm_index,:)1397 WRITE(iounit) vvn(:,:,:,cm_index,:)1398 WRITE(iounit) wwn(:,:,:,cm_index,:)1399 WRITE(iounit) ttn(:,:,:,cm_index,:)1400 WRITE(iounit) qvn(:,:,:,cm_index,:)1401 WRITE(iounit) pvn(:,:,:,cm_index,:)1402 WRITE(iounit) cloudsn(:,:,:,cm_index,:)1403 WRITE(iounit) cloudsnh(:,:,cm_index,:)1404 WRITE(iounit) rhon(:,:,:,cm_index,:)1405 WRITE(iounit) drhodzn(:,:,:,cm_index,:)1406 WRITE(iounit) tthn(:,:,:,cm_index,:)1407 WRITE(iounit) qvhn(:,:,:,cm_index,:)1408 #endif1409 1410 1132 dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nzmax_dimid, maxnests_dimid/) 1411 1133 … … 1563 1285 & cloudsnh(0:nxmaxn-1, 0:nymaxn-1, cm_index, 1:maxnests)) 1564 1286 call handle_nf90_err(ncret) 1565 1566 1567 1568 1569 1570 1571 1572 1287 1573 1288 … … 1579 1294 1580 1295 ! 2d nested fields 1581 1582 1583 #ifdef RAWBIN1584 WRITE(iounit) psn(:,:,:,cm_index,:)1585 WRITE(iounit) sdn(:,:,:,cm_index,:)1586 WRITE(iounit) msln(:,:,:,cm_index,:)1587 WRITE(iounit) tccn(:,:,:,cm_index,:)1588 WRITE(iounit) u10n(:,:,:,cm_index,:)1589 WRITE(iounit) v10n(:,:,:,cm_index,:)1590 WRITE(iounit) tt2n(:,:,:,cm_index,:)1591 WRITE(iounit) td2n(:,:,:,cm_index,:)1592 WRITE(iounit) lsprecn(:,:,:,cm_index,:)1593 WRITE(iounit) convprecn(:,:,:,cm_index,:)1594 WRITE(iounit) sshfn(:,:,:,cm_index,:)1595 WRITE(iounit) ssrn(:,:,:,cm_index,:)1596 WRITE(iounit) surfstrn(:,:,:,cm_index,:)1597 WRITE(iounit) ustarn(:,:,:,cm_index,:)1598 WRITE(iounit) wstarn(:,:,:,cm_index,:)1599 WRITE(iounit) hmixn(:,:,:,cm_index,:)1600 WRITE(iounit) tropopausen(:,:,:,cm_index,:)1601 WRITE(iounit) olin(:,:,:,cm_index,:)1602 WRITE(iounit) diffkn(:,:,:,cm_index,:)1603 WRITE(iounit) vdepn(:,:,:,cm_index,:)1604 #endif1605 1606 1607 1296 dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) 1608 1297 … … 1850 1539 & vdepn(0:nxmaxn-1, 0:nymaxn-1, 1:maxspec, cm_index, 1:maxnests)) 1851 1540 call handle_nf90_err(ncret) 1852 1853 1854 1541 1855 1542 … … 1860 1547 1861 1548 1862 1863 1864 1549 ! Auxiliary variables for nests 1865 1866 #ifdef RAWBIN1867 WRITE(iounit) xresoln(:)1868 WRITE(iounit) yresoln(:)1869 WRITE(iounit) xln(:)1870 WRITE(iounit) yln(:)1871 WRITE(iounit) xrn(:)1872 WRITE(iounit) yrn(:)1873 #endif1874 1875 1876 1550 dim1dids = (/zero_to_maxnests_dimid/) 1877 1551 … … 1956 1630 1957 1631 ! Variables for polar stereographic projection 1958 1959 1960 1961 #ifdef RAWBIN1962 WRITE(iounit) xglobal, sglobal, nglobal1963 WRITE(iounit) switchnorthg, switchsouthg1964 WRITE(iounit) southpolemap(:)1965 WRITE(iounit) northpolemap(:)1966 #endif1967 1968 1969 1632 dim1dids = (/polemap_dimid/) 1970 1633 … … 2025 1688 2026 1689 ! Variables declared in conv_mod (convection) 2027 2028 2029 #ifdef RAWBIN2030 WRITE(iounit) pconv(:)2031 WRITE(iounit) phconv(:)2032 WRITE(iounit) dpr(:)2033 WRITE(iounit) pconv_hpa(:)2034 WRITE(iounit) phconv_hpa(:)2035 WRITE(iounit) ft(:)2036 WRITE(iounit) fq(:)2037 WRITE(iounit) fmass(:,:)2038 WRITE(iounit) sub(:)2039 WRITE(iounit) fmassfrac(:,:)2040 WRITE(iounit) cbaseflux(:,:)2041 WRITE(iounit) cbasefluxn(:,:,:)2042 WRITE(iounit) tconv(:)2043 WRITE(iounit) qconv(:)2044 WRITE(iounit) qsconv(:)2045 WRITE(iounit) psconv, tt2conv, td2conv2046 WRITE(iounit) nconvlev, nconvtop2047 #endif2048 2049 2050 1690 dim1dids = (/nconvlevmax_dimid/) 2051 1691 … … 2237 1877 ! Read the preprocessed format version string and insure it 2238 1878 ! matches this version 2239 2240 2241 2242 2243 2244 2245 2246 #ifdef RAWBIN2247 READ (iounit) temp_preproc_format_version_str2248 #endif2249 2250 2251 1879 ncret = nf90_inq_dimid(ncid, 'preproc_fmt_str_dim', preproc_fmt_str_dimid) 2252 1880 call handle_nf90_err(ncret) … … 2285 1913 ! we abort. 2286 1914 2287 2288 2289 #ifdef RAWBIN2290 READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, &2291 & temp_nuvzmax, temp_nwzmax2292 #endif2293 2294 2295 2296 2297 2298 1915 ! Get dimensions 2299 2300 2301 2302 2303 1916 ncret = nf90_inq_dimid(ncid, 'nxmax', nxmax_dimid) 2304 1917 call handle_nf90_err(ncret) … … 2381 1994 2382 1995 2383 #ifdef RAWBIN 1996 ! Get the varid , then read into scalar variable 1997 ncret = nf90_inq_varid(ncid, 'nx', ncvarid) 1998 call handle_nf90_err(ncret) 1999 ncret = nf90_get_var(ncid, ncvarid, nx) 2000 call handle_nf90_err(ncret) 2001 2002 ncret = nf90_inq_varid(ncid, 'ny', ncvarid) 2003 call handle_nf90_err(ncret) 2004 ncret = nf90_get_var(ncid, ncvarid, ny) 2005 call handle_nf90_err(ncret) 2006 2007 ncret = nf90_inq_varid(ncid, 'nxmin1', ncvarid) 2008 call handle_nf90_err(ncret) 2009 ncret = nf90_get_var(ncid, ncvarid, nxmin1) 2010 call handle_nf90_err(ncret) 2011 2012 ncret = nf90_inq_varid(ncid, 'nymin1', ncvarid) 2013 call handle_nf90_err(ncret) 2014 ncret = nf90_get_var(ncid, ncvarid, nymin1) 2015 call handle_nf90_err(ncret) 2016 2017 ncret = nf90_inq_varid(ncid, 'nxfield', ncvarid) 2018 call handle_nf90_err(ncret) 2019 ncret = nf90_get_var(ncid, ncvarid, nxfield) 2020 call handle_nf90_err(ncret) 2021 2022 ncret = nf90_inq_varid(ncid, 'nuvz', ncvarid) 2023 call handle_nf90_err(ncret) 2024 ncret = nf90_get_var(ncid, ncvarid, nuvz) 2025 call handle_nf90_err(ncret) 2026 2027 ncret = nf90_inq_varid(ncid, 'nwz', ncvarid) 2028 call handle_nf90_err(ncret) 2029 ncret = nf90_get_var(ncid, ncvarid, nwz) 2030 call handle_nf90_err(ncret) 2031 2032 ncret = nf90_inq_varid(ncid, 'nz', ncvarid) 2033 call handle_nf90_err(ncret) 2034 ncret = nf90_get_var(ncid, ncvarid, nz) 2035 call handle_nf90_err(ncret) 2036 2037 ncret = nf90_inq_varid(ncid, 'nmixz', ncvarid) 2038 call handle_nf90_err(ncret) 2039 ncret = nf90_get_var(ncid, ncvarid, nmixz) 2040 call handle_nf90_err(ncret) 2041 2042 ncret = nf90_inq_varid(ncid, 'nlev_ec', ncvarid) 2043 call handle_nf90_err(ncret) 2044 ncret = nf90_get_var(ncid, ncvarid, nlev_ec) 2045 call handle_nf90_err(ncret) 2046 2047 ncret = nf90_inq_varid(ncid, 'dx', ncvarid) 2048 call handle_nf90_err(ncret) 2049 ncret = nf90_get_var(ncid, ncvarid, dx) 2050 call handle_nf90_err(ncret) 2051 2052 ncret = nf90_inq_varid(ncid, 'dy', ncvarid) 2053 call handle_nf90_err(ncret) 2054 ncret = nf90_get_var(ncid, ncvarid, dy) 2055 call handle_nf90_err(ncret) 2056 2057 ncret = nf90_inq_varid(ncid, 'xlon0', ncvarid) 2058 call handle_nf90_err(ncret) 2059 ncret = nf90_get_var(ncid, ncvarid, xlon0) 2060 call handle_nf90_err(ncret) 2061 2062 ncret = nf90_inq_varid(ncid, 'ylat0', ncvarid) 2063 call handle_nf90_err(ncret) 2064 ncret = nf90_get_var(ncid, ncvarid, ylat0) 2065 call handle_nf90_err(ncret) 2066 2067 ncret = nf90_inq_varid(ncid, 'dxconst', ncvarid) 2068 call handle_nf90_err(ncret) 2069 ncret = nf90_get_var(ncid, ncvarid, dxconst) 2070 call handle_nf90_err(ncret) 2071 2072 ncret = nf90_inq_varid(ncid, 'dyconst', ncvarid) 2073 call handle_nf90_err(ncret) 2074 ncret = nf90_get_var(ncid, ncvarid, dyconst) 2075 call handle_nf90_err(ncret) 2076 2077 2078 2079 2080 2081 2082 ! Fixed fields, static in time 2083 ncret = nf90_inq_varid(ncid, 'oro', ncvarid) 2084 call handle_nf90_err(ncret) 2085 ncret = nf90_get_var(ncid, ncvarid, oro(0:nxmax-1,0:nymax-1)) 2086 call handle_nf90_err(ncret) 2087 2088 ncret = nf90_inq_varid(ncid, 'excessoro', ncvarid) 2089 call handle_nf90_err(ncret) 2090 ncret = nf90_get_var(ncid, ncvarid, excessoro(0:nxmax-1,0:nymax-1)) 2091 call handle_nf90_err(ncret) 2092 2093 ncret = nf90_inq_varid(ncid, 'lsm', ncvarid) 2094 call handle_nf90_err(ncret) 2095 ncret = nf90_get_var(ncid, ncvarid, lsm(0:nxmax-1,0:nymax-1)) 2096 call handle_nf90_err(ncret) 2097 2098 ncret = nf90_inq_varid(ncid, 'xlanduse', ncvarid) 2099 call handle_nf90_err(ncret) 2100 ncret = nf90_get_var(ncid, ncvarid, xlanduse(0:nxmax-1,0:nymax-1, 1:numclass)) 2101 call handle_nf90_err(ncret) 2102 2103 ncret = nf90_inq_varid(ncid, 'height', ncvarid) 2104 call handle_nf90_err(ncret) 2105 ncret = nf90_get_var(ncid, ncvarid, height(1:nzmax)) 2106 call handle_nf90_err(ncret) 2107 2108 2109 2110 2111 ! 3d fields 2112 2113 ! Get the varid and read the variable into the array 2114 ncret = nf90_inq_varid(ncid, 'uu', ncvarid) 2115 call handle_nf90_err(ncret) 2116 ncret = nf90_get_var(ncid, ncvarid, uu(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2117 call handle_nf90_err(ncret) 2118 2119 ncret = nf90_inq_varid(ncid, 'vv', ncvarid) 2120 call handle_nf90_err(ncret) 2121 ncret = nf90_get_var(ncid, ncvarid, vv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2122 call handle_nf90_err(ncret) 2123 2124 ncret = nf90_inq_varid(ncid, 'uupol', ncvarid) 2125 call handle_nf90_err(ncret) 2126 ncret = nf90_get_var(ncid, ncvarid, uupol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2127 call handle_nf90_err(ncret) 2128 2129 ncret = nf90_inq_varid(ncid, 'vvpol', ncvarid) 2130 call handle_nf90_err(ncret) 2131 ncret = nf90_get_var(ncid, ncvarid, vvpol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2132 call handle_nf90_err(ncret) 2133 2134 ncret = nf90_inq_varid(ncid, 'ww', ncvarid) 2135 call handle_nf90_err(ncret) 2136 ncret = nf90_get_var(ncid, ncvarid, ww(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2137 call handle_nf90_err(ncret) 2138 2139 ncret = nf90_inq_varid(ncid, 'tt', ncvarid) 2140 call handle_nf90_err(ncret) 2141 ncret = nf90_get_var(ncid, ncvarid, tt(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2142 call handle_nf90_err(ncret) 2143 2144 ncret = nf90_inq_varid(ncid, 'qv', ncvarid) 2145 call handle_nf90_err(ncret) 2146 ncret = nf90_get_var(ncid, ncvarid, qv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2147 call handle_nf90_err(ncret) 2148 2149 ncret = nf90_inq_varid(ncid, 'pv', ncvarid) 2150 call handle_nf90_err(ncret) 2151 ncret = nf90_get_var(ncid, ncvarid, pv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2152 call handle_nf90_err(ncret) 2153 2154 ncret = nf90_inq_varid(ncid, 'rho', ncvarid) 2155 call handle_nf90_err(ncret) 2156 ncret = nf90_get_var(ncid, ncvarid, rho(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2157 call handle_nf90_err(ncret) 2158 2159 ncret = nf90_inq_varid(ncid, 'drhodz', ncvarid) 2160 call handle_nf90_err(ncret) 2161 ncret = nf90_get_var(ncid, ncvarid, drhodz(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2162 call handle_nf90_err(ncret) 2163 2164 ncret = nf90_inq_varid(ncid, 'clouds', ncvarid) 2165 call handle_nf90_err(ncret) 2166 ncret = nf90_get_var(ncid, ncvarid, clouds(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2167 call handle_nf90_err(ncret) 2168 2169 ncret = nf90_inq_varid(ncid, 'tth', ncvarid) 2170 call handle_nf90_err(ncret) 2171 ncret = nf90_get_var(ncid, ncvarid, tth(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) 2172 call handle_nf90_err(ncret) 2173 2174 ncret = nf90_inq_varid(ncid, 'qvh', ncvarid) 2175 call handle_nf90_err(ncret) 2176 ncret = nf90_get_var(ncid, ncvarid, qvh(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) 2177 call handle_nf90_err(ncret) 2178 2179 ncret = nf90_inq_varid(ncid, 'pplev', ncvarid) 2180 call handle_nf90_err(ncret) 2181 ncret = nf90_get_var(ncid, ncvarid, pplev(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) 2182 call handle_nf90_err(ncret) 2183 2184 ncret = nf90_inq_varid(ncid, 'cloudsh', ncvarid) 2185 call handle_nf90_err(ncret) 2186 ncret = nf90_get_var(ncid, ncvarid, cloudsh(0:nxmax-1,0:nymax-1,cm_index)) 2187 call handle_nf90_err(ncret) 2188 2189 2190 2191 2192 PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 2193 & SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 2194 2195 2196 PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 2197 & SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 2198 2199 2200 2201 ! 2d fields 2202 2203 ! Get the varid and read the variable into the array 2204 ncret = nf90_inq_varid(ncid, 'ps', ncvarid) 2205 call handle_nf90_err(ncret) 2206 ncret = nf90_get_var(ncid, ncvarid, ps(0:nxmax-1,0:nymax-1,1,cm_index)) 2207 call handle_nf90_err(ncret) 2208 2209 ncret = nf90_inq_varid(ncid, 'sd', ncvarid) 2210 call handle_nf90_err(ncret) 2211 ncret = nf90_get_var(ncid, ncvarid, sd(0:nxmax-1,0:nymax-1,1,cm_index)) 2212 call handle_nf90_err(ncret) 2213 2214 ncret = nf90_inq_varid(ncid, 'msl', ncvarid) 2215 call handle_nf90_err(ncret) 2216 ncret = nf90_get_var(ncid, ncvarid, msl(0:nxmax-1,0:nymax-1,1,cm_index)) 2217 call handle_nf90_err(ncret) 2218 2219 ncret = nf90_inq_varid(ncid, 'tcc', ncvarid) 2220 call handle_nf90_err(ncret) 2221 ncret = nf90_get_var(ncid, ncvarid, tcc(0:nxmax-1,0:nymax-1,1,cm_index)) 2222 call handle_nf90_err(ncret) 2223 2224 ncret = nf90_inq_varid(ncid, 'u10', ncvarid) 2225 call handle_nf90_err(ncret) 2226 ncret = nf90_get_var(ncid, ncvarid, u10(0:nxmax-1,0:nymax-1,1,cm_index)) 2227 call handle_nf90_err(ncret) 2228 2229 ncret = nf90_inq_varid(ncid, 'v10', ncvarid) 2230 call handle_nf90_err(ncret) 2231 ncret = nf90_get_var(ncid, ncvarid, v10(0:nxmax-1,0:nymax-1,1,cm_index)) 2232 call handle_nf90_err(ncret) 2233 2234 ncret = nf90_inq_varid(ncid, 'tt2', ncvarid) 2235 call handle_nf90_err(ncret) 2236 ncret = nf90_get_var(ncid, ncvarid, tt2(0:nxmax-1,0:nymax-1,1,cm_index)) 2237 call handle_nf90_err(ncret) 2238 2239 ncret = nf90_inq_varid(ncid, 'td2', ncvarid) 2240 call handle_nf90_err(ncret) 2241 ncret = nf90_get_var(ncid, ncvarid, td2(0:nxmax-1,0:nymax-1,1,cm_index)) 2242 call handle_nf90_err(ncret) 2243 2244 ncret = nf90_inq_varid(ncid, 'lsprec', ncvarid) 2245 call handle_nf90_err(ncret) 2246 ncret = nf90_get_var(ncid, ncvarid, lsprec(0:nxmax-1,0:nymax-1,1,cm_index)) 2247 call handle_nf90_err(ncret) 2248 2249 ncret = nf90_inq_varid(ncid, 'convprec', ncvarid) 2250 call handle_nf90_err(ncret) 2251 ncret = nf90_get_var(ncid, ncvarid, convprec(0:nxmax-1,0:nymax-1,1,cm_index)) 2252 call handle_nf90_err(ncret) 2253 2254 ncret = nf90_inq_varid(ncid, 'sshf', ncvarid) 2255 call handle_nf90_err(ncret) 2256 ncret = nf90_get_var(ncid, ncvarid, sshf(0:nxmax-1,0:nymax-1,1,cm_index)) 2257 call handle_nf90_err(ncret) 2258 2259 ncret = nf90_inq_varid(ncid, 'ssr', ncvarid) 2260 call handle_nf90_err(ncret) 2261 ncret = nf90_get_var(ncid, ncvarid, ssr(0:nxmax-1,0:nymax-1,1,cm_index)) 2262 call handle_nf90_err(ncret) 2263 2264 ncret = nf90_inq_varid(ncid, 'surfstr', ncvarid) 2265 call handle_nf90_err(ncret) 2266 ncret = nf90_get_var(ncid, ncvarid, surfstr(0:nxmax-1,0:nymax-1,1,cm_index)) 2267 call handle_nf90_err(ncret) 2268 2269 ncret = nf90_inq_varid(ncid, 'ustar', ncvarid) 2270 call handle_nf90_err(ncret) 2271 ncret = nf90_get_var(ncid, ncvarid, ustar(0:nxmax-1,0:nymax-1,1,cm_index)) 2272 call handle_nf90_err(ncret) 2273 2274 ncret = nf90_inq_varid(ncid, 'wstar', ncvarid) 2275 call handle_nf90_err(ncret) 2276 ncret = nf90_get_var(ncid, ncvarid, wstar(0:nxmax-1,0:nymax-1,1,cm_index)) 2277 call handle_nf90_err(ncret) 2278 2279 ncret = nf90_inq_varid(ncid, 'hmix', ncvarid) 2280 call handle_nf90_err(ncret) 2281 ncret = nf90_get_var(ncid, ncvarid, hmix(0:nxmax-1,0:nymax-1,1,cm_index)) 2282 call handle_nf90_err(ncret) 2283 2284 ncret = nf90_inq_varid(ncid, 'tropopause', ncvarid) 2285 call handle_nf90_err(ncret) 2286 ncret = nf90_get_var(ncid, ncvarid, tropopause(0:nxmax-1,0:nymax-1,1,cm_index)) 2287 call handle_nf90_err(ncret) 2288 2289 ncret = nf90_inq_varid(ncid, 'oli', ncvarid) 2290 call handle_nf90_err(ncret) 2291 ncret = nf90_get_var(ncid, ncvarid, oli(0:nxmax-1,0:nymax-1,1,cm_index)) 2292 call handle_nf90_err(ncret) 2293 2294 ncret = nf90_inq_varid(ncid, 'diffk', ncvarid) 2295 call handle_nf90_err(ncret) 2296 ncret = nf90_get_var(ncid, ncvarid, diffk(0:nxmax-1,0:nymax-1,1,cm_index)) 2297 call handle_nf90_err(ncret) 2298 2299 2300 2301 2302 PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & 2303 & SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) 2304 2305 PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & 2306 & SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) 2307 2308 2309 ncret = nf90_inq_varid(ncid, 'vdep', ncvarid) 2310 call handle_nf90_err(ncret) 2311 ncret = nf90_get_var(ncid, ncvarid, vdep(0:nxmax-1,0:nymax-1,1:maxspec, cm_index)) 2312 call handle_nf90_err(ncret) 2313 2314 2315 2316 2317 2318 ! 1d fields 2319 2320 ncret = nf90_inq_varid(ncid, 'z0', ncvarid) 2321 call handle_nf90_err(ncret) 2322 ncret = nf90_get_var(ncid, ncvarid, z0(1:numclass)) 2323 call handle_nf90_err(ncret) 2324 2325 ncret = nf90_inq_varid(ncid, 'akm', ncvarid) 2326 call handle_nf90_err(ncret) 2327 ncret = nf90_get_var(ncid, ncvarid, akm(1:nwzmax)) 2328 call handle_nf90_err(ncret) 2329 2330 ncret = nf90_inq_varid(ncid, 'bkm', ncvarid) 2331 call handle_nf90_err(ncret) 2332 ncret = nf90_get_var(ncid, ncvarid, bkm(1:nwzmax)) 2333 call handle_nf90_err(ncret) 2334 2335 ncret = nf90_inq_varid(ncid, 'akz', ncvarid) 2336 call handle_nf90_err(ncret) 2337 ncret = nf90_get_var(ncid, ncvarid, akz(1:nuvzmax)) 2338 call handle_nf90_err(ncret) 2339 2340 ncret = nf90_inq_varid(ncid, 'bkz', ncvarid) 2341 call handle_nf90_err(ncret) 2342 ncret = nf90_get_var(ncid, ncvarid, bkz(1:nuvzmax)) 2343 call handle_nf90_err(ncret) 2344 2345 ncret = nf90_inq_varid(ncid, 'aknew', ncvarid) 2346 call handle_nf90_err(ncret) 2347 ncret = nf90_get_var(ncid, ncvarid, aknew(1:nzmax)) 2348 call handle_nf90_err(ncret) 2349 2350 ncret = nf90_inq_varid(ncid, 'bknew', ncvarid) 2351 call handle_nf90_err(ncret) 2352 ncret = nf90_get_var(ncid, ncvarid, bknew(1:nzmax)) 2353 call handle_nf90_err(ncret) 2354 2355 2356 2357 PRINT *, 'SUM(bknew(1:nzmax)): ', & 2358 & SUM(bknew(1:nzmax)) 2359 2360 2361 2362 2363 ! Now the nested input grid variables 2364 ! Get the compiled values that were written into the FP file, and 2365 ! make sure they are equal to the current compiled values, to make 2366 ! sure we are working with consistent arrays 2367 ncret = nf90_inq_dimid(ncid, 'maxnests', maxnests_dimid) 2368 call handle_nf90_err(ncret) 2369 ncret = nf90_inquire_dimension(ncid, maxnests_dimid, maxnests_dimname, & 2370 & temp_maxnests) 2371 call handle_nf90_err(ncret) 2372 PRINT *, 'temp_maxnests: ', temp_maxnests 2373 2374 ncret = nf90_inq_dimid(ncid, 'nxmaxn', nxmaxn_dimid) 2375 call handle_nf90_err(ncret) 2376 ncret = nf90_inquire_dimension(ncid, nxmaxn_dimid, nxmaxn_dimname, & 2377 & temp_nxmaxn) 2378 call handle_nf90_err(ncret) 2379 PRINT *, 'temp_nxmaxn: ', temp_nxmaxn 2380 2381 ncret = nf90_inq_dimid(ncid, 'nymaxn', nymaxn_dimid) 2382 call handle_nf90_err(ncret) 2383 ncret = nf90_inquire_dimension(ncid, nymaxn_dimid, nymaxn_dimname, & 2384 & temp_nymaxn) 2385 call handle_nf90_err(ncret) 2386 PRINT *, 'temp_nymaxn: ', temp_nymaxn 2387 2388 ! Note that maxspec_dimid and numclass_dimid were checked above 2389 2390 2391 2392 2393 IF ( (temp_nxmaxn == nxmaxn) .AND. (temp_nymaxn == nymaxn) .AND. & 2394 & (temp_maxnests == maxnests) ) THEN 2395 CONTINUE 2396 ELSE 2397 PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' 2398 ! PRINT *, '' 2399 PRINT *, ' FP file Compiled FP' 2400 PRINT *, 'nxmaxn: ', temp_nxmaxn, ' ', nxmaxn 2401 PRINT *, 'nymaxn: ', temp_nymaxn, ' ', nymaxn 2402 PRINT *, 'maxnests: ', temp_maxnests, ' ', maxnests 2403 STOP 2404 END IF 2405 2406 2407 2408 ! Nested, scalar values (for each nest) 2409 ncret = nf90_inq_varid(ncid, 'nxn', ncvarid) 2410 call handle_nf90_err(ncret) 2411 ncret = nf90_get_var(ncid, ncvarid, nxn(1:maxnests)) 2412 call handle_nf90_err(ncret) 2413 2414 ncret = nf90_inq_varid(ncid, 'nyn', ncvarid) 2415 call handle_nf90_err(ncret) 2416 ncret = nf90_get_var(ncid, ncvarid, nyn(1:maxnests)) 2417 call handle_nf90_err(ncret) 2418 2419 ncret = nf90_inq_varid(ncid, 'dxn', ncvarid) 2420 call handle_nf90_err(ncret) 2421 ncret = nf90_get_var(ncid, ncvarid, dxn(1:maxnests)) 2422 call handle_nf90_err(ncret) 2423 2424 ncret = nf90_inq_varid(ncid, 'dyn', ncvarid) 2425 call handle_nf90_err(ncret) 2426 ncret = nf90_get_var(ncid, ncvarid, dyn(1:maxnests)) 2427 call handle_nf90_err(ncret) 2428 2429 ncret = nf90_inq_varid(ncid, 'xlon0n', ncvarid) 2430 call handle_nf90_err(ncret) 2431 ncret = nf90_get_var(ncid, ncvarid, xlon0n(1:maxnests)) 2432 call handle_nf90_err(ncret) 2433 2434 ncret = nf90_inq_varid(ncid, 'ylat0n', ncvarid) 2435 call handle_nf90_err(ncret) 2436 ncret = nf90_get_var(ncid, ncvarid, ylat0n(1:maxnests)) 2437 call handle_nf90_err(ncret) 2438 2439 2440 2441 ! Nested fields, static over time 2442 ncret = nf90_inq_varid(ncid, 'oron', ncvarid) 2443 call handle_nf90_err(ncret) 2444 ncret = nf90_get_var(ncid, ncvarid, oron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 2445 call handle_nf90_err(ncret) 2446 2447 ncret = nf90_inq_varid(ncid, 'excessoron', ncvarid) 2448 call handle_nf90_err(ncret) 2449 ncret = nf90_get_var(ncid, ncvarid, excessoron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 2450 call handle_nf90_err(ncret) 2451 2452 ncret = nf90_inq_varid(ncid, 'lsmn', ncvarid) 2453 call handle_nf90_err(ncret) 2454 ncret = nf90_get_var(ncid, ncvarid, lsmn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 2455 call handle_nf90_err(ncret) 2456 2457 ncret = nf90_inq_varid(ncid, 'xlandusen', ncvarid) 2458 call handle_nf90_err(ncret) 2459 ncret = nf90_get_var(ncid, ncvarid, xlandusen(0:nxmaxn-1,0:nymaxn-1,1:numclass,1:maxnests)) 2460 call handle_nf90_err(ncret) 2461 2462 2463 PRINT *, 'SUM(oron): ', SUM(oron) 2464 2465 2466 2467 2468 ! 3d nested fields 2469 2470 ncret = nf90_inq_varid(ncid, 'uun', ncvarid) 2471 call handle_nf90_err(ncret) 2472 ncret = nf90_get_var(ncid, ncvarid, uun(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2473 call handle_nf90_err(ncret) 2474 2475 ncret = nf90_inq_varid(ncid, 'vvn', ncvarid) 2476 call handle_nf90_err(ncret) 2477 ncret = nf90_get_var(ncid, ncvarid, vvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2478 call handle_nf90_err(ncret) 2479 2480 ncret = nf90_inq_varid(ncid, 'wwn', ncvarid) 2481 call handle_nf90_err(ncret) 2482 ncret = nf90_get_var(ncid, ncvarid, wwn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2483 call handle_nf90_err(ncret) 2484 2485 ncret = nf90_inq_varid(ncid, 'ttn', ncvarid) 2486 call handle_nf90_err(ncret) 2487 ncret = nf90_get_var(ncid, ncvarid, ttn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2488 call handle_nf90_err(ncret) 2489 2490 ncret = nf90_inq_varid(ncid, 'qvn', ncvarid) 2491 call handle_nf90_err(ncret) 2492 ncret = nf90_get_var(ncid, ncvarid, qvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2493 call handle_nf90_err(ncret) 2494 2495 ncret = nf90_inq_varid(ncid, 'pvn', ncvarid) 2496 call handle_nf90_err(ncret) 2497 ncret = nf90_get_var(ncid, ncvarid, pvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2498 call handle_nf90_err(ncret) 2499 2500 ncret = nf90_inq_varid(ncid, 'rhon', ncvarid) 2501 call handle_nf90_err(ncret) 2502 ncret = nf90_get_var(ncid, ncvarid, rhon(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2503 call handle_nf90_err(ncret) 2504 2505 ncret = nf90_inq_varid(ncid, 'drhodzn', ncvarid) 2506 call handle_nf90_err(ncret) 2507 ncret = nf90_get_var(ncid, ncvarid, drhodzn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2508 call handle_nf90_err(ncret) 2509 2510 ncret = nf90_inq_varid(ncid, 'tthn', ncvarid) 2511 call handle_nf90_err(ncret) 2512 ncret = nf90_get_var(ncid, ncvarid, tthn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) 2513 call handle_nf90_err(ncret) 2514 2515 ncret = nf90_inq_varid(ncid, 'qvhn', ncvarid) 2516 call handle_nf90_err(ncret) 2517 ncret = nf90_get_var(ncid, ncvarid, qvhn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) 2518 call handle_nf90_err(ncret) 2519 2520 ncret = nf90_inq_varid(ncid, 'cloudsn', ncvarid) 2521 call handle_nf90_err(ncret) 2522 ncret = nf90_get_var(ncid, ncvarid, cloudsn(0:nxmaxn-1,0:nymaxn-1,0:nzmax,cm_index,1:maxnests)) 2523 call handle_nf90_err(ncret) 2524 2525 ncret = nf90_inq_varid(ncid, 'cloudsnh', ncvarid) 2526 call handle_nf90_err(ncret) 2527 ncret = nf90_get_var(ncid, ncvarid, cloudsnh(0:nxmaxn-1,0:nymaxn-1,cm_index,1:maxnests)) 2528 call handle_nf90_err(ncret) 2529 2530 2531 2532 2533 PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) 2534 PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) 2535 PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) 2536 2537 2538 2539 2540 ! 2d nested fields 2541 ncret = nf90_inq_varid(ncid, 'psn', ncvarid) 2542 call handle_nf90_err(ncret) 2543 ncret = nf90_get_var(ncid, ncvarid, psn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2544 call handle_nf90_err(ncret) 2545 2546 ncret = nf90_inq_varid(ncid, 'sdn', ncvarid) 2547 call handle_nf90_err(ncret) 2548 ncret = nf90_get_var(ncid, ncvarid, sdn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2549 call handle_nf90_err(ncret) 2550 2551 ncret = nf90_inq_varid(ncid, 'msln', ncvarid) 2552 call handle_nf90_err(ncret) 2553 ncret = nf90_get_var(ncid, ncvarid, msln(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2554 call handle_nf90_err(ncret) 2555 2556 ncret = nf90_inq_varid(ncid, 'tccn', ncvarid) 2557 call handle_nf90_err(ncret) 2558 ncret = nf90_get_var(ncid, ncvarid, tccn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2559 call handle_nf90_err(ncret) 2560 2561 ncret = nf90_inq_varid(ncid, 'u10n', ncvarid) 2562 call handle_nf90_err(ncret) 2563 ncret = nf90_get_var(ncid, ncvarid, u10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2564 call handle_nf90_err(ncret) 2565 2566 ncret = nf90_inq_varid(ncid, 'v10n', ncvarid) 2567 call handle_nf90_err(ncret) 2568 ncret = nf90_get_var(ncid, ncvarid, v10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2569 call handle_nf90_err(ncret) 2570 2571 ncret = nf90_inq_varid(ncid, 'tt2n', ncvarid) 2572 call handle_nf90_err(ncret) 2573 ncret = nf90_get_var(ncid, ncvarid, tt2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2574 call handle_nf90_err(ncret) 2575 2576 ncret = nf90_inq_varid(ncid, 'td2n', ncvarid) 2577 call handle_nf90_err(ncret) 2578 ncret = nf90_get_var(ncid, ncvarid, td2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2579 call handle_nf90_err(ncret) 2580 2581 ncret = nf90_inq_varid(ncid, 'lsprecn', ncvarid) 2582 call handle_nf90_err(ncret) 2583 ncret = nf90_get_var(ncid, ncvarid, lsprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2584 call handle_nf90_err(ncret) 2585 2586 ncret = nf90_inq_varid(ncid, 'convprecn', ncvarid) 2587 call handle_nf90_err(ncret) 2588 ncret = nf90_get_var(ncid, ncvarid, convprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2589 call handle_nf90_err(ncret) 2590 2591 ncret = nf90_inq_varid(ncid, 'sshfn', ncvarid) 2592 call handle_nf90_err(ncret) 2593 ncret = nf90_get_var(ncid, ncvarid, sshfn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2594 call handle_nf90_err(ncret) 2595 2596 ncret = nf90_inq_varid(ncid, 'ssrn', ncvarid) 2597 call handle_nf90_err(ncret) 2598 ncret = nf90_get_var(ncid, ncvarid, ssrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2599 call handle_nf90_err(ncret) 2600 2601 ncret = nf90_inq_varid(ncid, 'surfstrn', ncvarid) 2602 call handle_nf90_err(ncret) 2603 ncret = nf90_get_var(ncid, ncvarid, surfstrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2604 call handle_nf90_err(ncret) 2605 2606 ncret = nf90_inq_varid(ncid, 'ustarn', ncvarid) 2607 call handle_nf90_err(ncret) 2608 ncret = nf90_get_var(ncid, ncvarid, ustarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2609 call handle_nf90_err(ncret) 2610 2611 ncret = nf90_inq_varid(ncid, 'wstarn', ncvarid) 2612 call handle_nf90_err(ncret) 2613 ncret = nf90_get_var(ncid, ncvarid, wstarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2614 call handle_nf90_err(ncret) 2615 2616 ncret = nf90_inq_varid(ncid, 'hmixn', ncvarid) 2617 call handle_nf90_err(ncret) 2618 ncret = nf90_get_var(ncid, ncvarid, hmixn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2619 call handle_nf90_err(ncret) 2620 2621 ncret = nf90_inq_varid(ncid, 'tropopausen', ncvarid) 2622 call handle_nf90_err(ncret) 2623 ncret = nf90_get_var(ncid, ncvarid, tropopausen(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2624 call handle_nf90_err(ncret) 2625 2626 ncret = nf90_inq_varid(ncid, 'olin', ncvarid) 2627 call handle_nf90_err(ncret) 2628 ncret = nf90_get_var(ncid, ncvarid, olin(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2629 call handle_nf90_err(ncret) 2630 2631 ncret = nf90_inq_varid(ncid, 'diffkn', ncvarid) 2632 call handle_nf90_err(ncret) 2633 ncret = nf90_get_var(ncid, ncvarid, diffkn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 2634 call handle_nf90_err(ncret) 2635 2636 ncret = nf90_inq_varid(ncid, 'vdepn', ncvarid) 2637 call handle_nf90_err(ncret) 2638 ncret = nf90_get_var(ncid, ncvarid, vdepn(0:nxmaxn-1,0:nymaxn-1,1:maxspec,cm_index,1:maxnests)) 2639 call handle_nf90_err(ncret) 2640 2641 2642 2643 2644 PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) 2645 PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) 2646 PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) 2647 2648 2649 2650 ! Auxiliary variables for nests 2651 ncret = nf90_inq_varid(ncid, 'xresoln', ncvarid) 2652 call handle_nf90_err(ncret) 2653 ncret = nf90_get_var(ncid, ncvarid, xresoln(0:maxnests)) 2654 call handle_nf90_err(ncret) 2655 2656 ncret = nf90_inq_varid(ncid, 'yresoln', ncvarid) 2657 call handle_nf90_err(ncret) 2658 ncret = nf90_get_var(ncid, ncvarid, yresoln(0:maxnests)) 2659 call handle_nf90_err(ncret) 2660 2661 ncret = nf90_inq_varid(ncid, 'xln', ncvarid) 2662 call handle_nf90_err(ncret) 2663 ncret = nf90_get_var(ncid, ncvarid, xln(1:maxnests)) 2664 call handle_nf90_err(ncret) 2665 2666 ncret = nf90_inq_varid(ncid, 'yln', ncvarid) 2667 call handle_nf90_err(ncret) 2668 ncret = nf90_get_var(ncid, ncvarid, yln(1:maxnests)) 2669 call handle_nf90_err(ncret) 2670 2671 ncret = nf90_inq_varid(ncid, 'xrn', ncvarid) 2672 call handle_nf90_err(ncret) 2673 ncret = nf90_get_var(ncid, ncvarid, xrn(1:maxnests)) 2674 call handle_nf90_err(ncret) 2675 2676 ncret = nf90_inq_varid(ncid, 'yrn', ncvarid) 2677 call handle_nf90_err(ncret) 2678 ncret = nf90_get_var(ncid, ncvarid, yrn(1:maxnests)) 2679 call handle_nf90_err(ncret) 2680 2681 2682 2683 PRINT *, 'SUM(yresoln): ', SUM(yresoln) 2684 PRINT *, 'SUM(xrn): ', SUM(xrn) 2685 2686 2687 2688 ! Variables for polar stereographic projection 2689 ncret = nf90_inq_varid(ncid, 'southpolemap', ncvarid) 2690 call handle_nf90_err(ncret) 2691 ncret = nf90_get_var(ncid, ncvarid, southpolemap(:)) 2692 call handle_nf90_err(ncret) 2693 2694 ncret = nf90_inq_varid(ncid, 'northpolemap', ncvarid) 2695 call handle_nf90_err(ncret) 2696 ncret = nf90_get_var(ncid, ncvarid, northpolemap(:)) 2697 call handle_nf90_err(ncret) 2698 2699 ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted 2700 ! to INTEGER for NetCDF storage 2701 ncret = nf90_inq_varid(ncid, 'xglobal', ncvarid) 2702 call handle_nf90_err(ncret) 2703 ncret = nf90_get_var(ncid, ncvarid, temp_integer) 2704 call handle_nf90_err(ncret) 2705 xglobal = integer2logical(temp_integer) 2706 2707 ncret = nf90_inq_varid(ncid, 'sglobal', ncvarid) 2708 call handle_nf90_err(ncret) 2709 ncret = nf90_get_var(ncid, ncvarid, temp_integer) 2710 call handle_nf90_err(ncret) 2711 sglobal = integer2logical(temp_integer) 2712 2713 ncret = nf90_inq_varid(ncid, 'nglobal', ncvarid) 2714 call handle_nf90_err(ncret) 2715 ncret = nf90_get_var(ncid, ncvarid, temp_integer) 2716 call handle_nf90_err(ncret) 2717 nglobal = integer2logical(temp_integer) 2718 2719 ncret = nf90_inq_varid(ncid, 'switchnorthg', ncvarid) 2720 call handle_nf90_err(ncret) 2721 ncret = nf90_get_var(ncid, ncvarid, switchnorthg) 2722 call handle_nf90_err(ncret) 2723 2724 ncret = nf90_inq_varid(ncid, 'switchsouthg', ncvarid) 2725 call handle_nf90_err(ncret) 2726 ncret = nf90_get_var(ncid, ncvarid, switchsouthg) 2727 call handle_nf90_err(ncret) 2728 2729 2730 PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) 2731 PRINT *, 'xglobal: ', xglobal 2732 PRINT *, 'sglobal: ', sglobal 2733 PRINT *, 'nglobal: ', nglobal 2734 PRINT *, 'switchsouthg: ', switchsouthg 2735 2736 2737 2738 2739 ! Variables declared in conv_mod (convection) 2740 ncret = nf90_inq_varid(ncid, 'pconv', ncvarid) 2741 call handle_nf90_err(ncret) 2742 ncret = nf90_get_var(ncid, ncvarid, pconv(:)) 2743 call handle_nf90_err(ncret) 2744 2745 ncret = nf90_inq_varid(ncid, 'dpr', ncvarid) 2746 call handle_nf90_err(ncret) 2747 ncret = nf90_get_var(ncid, ncvarid, dpr(:)) 2748 call handle_nf90_err(ncret) 2749 2750 ncret = nf90_inq_varid(ncid, 'pconv_hpa', ncvarid) 2751 call handle_nf90_err(ncret) 2752 ncret = nf90_get_var(ncid, ncvarid, pconv_hpa(:)) 2753 call handle_nf90_err(ncret) 2754 2755 ncret = nf90_inq_varid(ncid, 'ft', ncvarid) 2756 call handle_nf90_err(ncret) 2757 ncret = nf90_get_var(ncid, ncvarid, ft(:)) 2758 call handle_nf90_err(ncret) 2759 2760 ncret = nf90_inq_varid(ncid, 'fq', ncvarid) 2761 call handle_nf90_err(ncret) 2762 ncret = nf90_get_var(ncid, ncvarid, fq(:)) 2763 call handle_nf90_err(ncret) 2764 2765 ncret = nf90_inq_varid(ncid, 'sub', ncvarid) 2766 call handle_nf90_err(ncret) 2767 ncret = nf90_get_var(ncid, ncvarid, sub(:)) 2768 call handle_nf90_err(ncret) 2769 2770 ncret = nf90_inq_varid(ncid, 'phconv', ncvarid) 2771 call handle_nf90_err(ncret) 2772 ncret = nf90_get_var(ncid, ncvarid, phconv(:)) 2773 call handle_nf90_err(ncret) 2774 2775 ncret = nf90_inq_varid(ncid, 'phconv_hpa', ncvarid) 2776 call handle_nf90_err(ncret) 2777 ncret = nf90_get_var(ncid, ncvarid, phconv_hpa(:)) 2778 call handle_nf90_err(ncret) 2779 2780 ncret = nf90_inq_varid(ncid, 'tconv', ncvarid) 2781 call handle_nf90_err(ncret) 2782 ncret = nf90_get_var(ncid, ncvarid, tconv(:)) 2783 call handle_nf90_err(ncret) 2784 2785 ncret = nf90_inq_varid(ncid, 'qconv', ncvarid) 2786 call handle_nf90_err(ncret) 2787 ncret = nf90_get_var(ncid, ncvarid, qconv(:)) 2788 call handle_nf90_err(ncret) 2789 2790 ncret = nf90_inq_varid(ncid, 'qsconv', ncvarid) 2791 call handle_nf90_err(ncret) 2792 ncret = nf90_get_var(ncid, ncvarid, qsconv(:)) 2793 call handle_nf90_err(ncret) 2794 2795 ncret = nf90_inq_varid(ncid, 'fmass', ncvarid) 2796 call handle_nf90_err(ncret) 2797 ncret = nf90_get_var(ncid, ncvarid, fmass(:,:)) 2798 call handle_nf90_err(ncret) 2799 2800 ncret = nf90_inq_varid(ncid, 'fmassfrac', ncvarid) 2801 call handle_nf90_err(ncret) 2802 ncret = nf90_get_var(ncid, ncvarid, fmassfrac(:,:)) 2803 call handle_nf90_err(ncret) 2804 2805 ncret = nf90_inq_varid(ncid, 'cbaseflux', ncvarid) 2806 call handle_nf90_err(ncret) 2807 ncret = nf90_get_var(ncid, ncvarid, cbaseflux(0:nxmax-1,0:nymax-1)) 2808 call handle_nf90_err(ncret) 2809 2810 ncret = nf90_inq_varid(ncid, 'cbasefluxn', ncvarid) 2811 call handle_nf90_err(ncret) 2812 ncret = nf90_get_var(ncid, ncvarid, cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 2813 call handle_nf90_err(ncret) 2814 2815 ncret = nf90_inq_varid(ncid, 'psconv', ncvarid) 2816 call handle_nf90_err(ncret) 2817 ncret = nf90_get_var(ncid, ncvarid, psconv) 2818 call handle_nf90_err(ncret) 2819 2820 ncret = nf90_inq_varid(ncid, 'tt2conv', ncvarid) 2821 call handle_nf90_err(ncret) 2822 ncret = nf90_get_var(ncid, ncvarid, tt2conv) 2823 call handle_nf90_err(ncret) 2824 2825 ncret = nf90_inq_varid(ncid, 'td2conv', ncvarid) 2826 call handle_nf90_err(ncret) 2827 ncret = nf90_get_var(ncid, ncvarid, td2conv) 2828 call handle_nf90_err(ncret) 2829 2830 ncret = nf90_inq_varid(ncid, 'nconvlev', ncvarid) 2831 call handle_nf90_err(ncret) 2832 ncret = nf90_get_var(ncid, ncvarid, nconvlev) 2833 call handle_nf90_err(ncret) 2834 2835 ncret = nf90_inq_varid(ncid, 'nconvtop', ncvarid) 2836 call handle_nf90_err(ncret) 2837 ncret = nf90_get_var(ncid, ncvarid, nconvtop) 2838 call handle_nf90_err(ncret) 2839 2840 2841 2842 2843 PRINT *, 'SUM(pconv): ', SUM(pconv) 2844 PRINT *, 'SUM(qconv): ', SUM(qconv) 2845 PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) 2846 PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) 2847 PRINT *, 'tt2conv: ', tt2conv 2848 PRINT *, 'nconvlev: ', nconvlev 2849 2850 2851 2852 ELSE 2853 STOP 'fpio(): Illegal operation' 2854 2855 ENDIF 2856 END SUBROUTINE fpio 2857 2858 2859 2860 2861 2862 SUBROUTINE fpio_rawbin(iounit, op, cm_index) 2863 IMPLICIT NONE 2864 INTEGER, INTENT(IN) :: iounit 2865 CHARACTER(LEN=4), INTENT(IN) :: op ! Operation - DUMP or LOAD 2866 INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in 2867 ! most com_mod variables. 2868 ! Should be 1 or 2 2869 2870 2871 INTEGER :: temp_integer ! temporary value 2872 2873 2874 ! These are temporary variables, used in the LOAD option, for 2875 ! comparing against the current values in FLEXPART of nxmax, nymax, ... 2876 INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, & 2877 & temp_nuvzmax, temp_nwzmax, & 2878 & temp_maxspec, temp_numclass,& 2879 & temp_maxnests, temp_nxmaxn, temp_nymaxn, temp_preproc_fmt_str_dim 2880 2881 CHARACTER(LEN=PREPROC_FMT_STR_DIM) :: temp_preproc_format_version_str 2882 2883 CHARACTER(LEN=128) :: errmesg 2884 2885 INTEGER, PARAMETER :: DEF_LEVEL = 3 2886 2887 if (op == 'DUMP') THEN 2888 2889 2890 ! Write the preprocessing format version string 2891 ! NEED TO FILL THIS IN FOR NC4 2892 2893 2894 2895 WRITE (iounit) PREPROC_FORMAT_VERSION_STR 2896 2897 2898 ! Write the compiled max dimensions from par_mod - these are 2899 ! not meant to be reassigned during a LOAD, but used as "header" 2900 ! information to provide the structure of arrays 2901 2902 2903 WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax 2904 2905 2906 2907 2908 ! Scalar values 2909 2910 ! Fixed fields, static in time 2911 2912 2913 2914 WRITE(iounit) oro, excessoro, lsm, xlanduse, height 2915 2916 2917 2918 2919 ! 3d fields 2920 WRITE(iounit) uu(:,:,:,cm_index) 2921 WRITE(iounit) vv(:,:,:,cm_index) 2922 WRITE(iounit) uupol(:,:,:,cm_index) 2923 WRITE(iounit) vvpol(:,:,:,cm_index) 2924 WRITE(iounit) ww(:,:,:,cm_index) 2925 WRITE(iounit) tt(:,:,:,cm_index) 2926 WRITE(iounit) qv(:,:,:,cm_index) 2927 WRITE(iounit) pv(:,:,:,cm_index) 2928 WRITE(iounit) rho(:,:,:,cm_index) 2929 WRITE(iounit) drhodz(:,:,:,cm_index) 2930 WRITE(iounit) tth(:,:,:,cm_index) 2931 WRITE(iounit) qvh(:,:,:,cm_index) 2932 WRITE(iounit) pplev(:,:,:,cm_index) 2933 WRITE(iounit) clouds(:,:,:,cm_index) 2934 WRITE(iounit) cloudsh(:,:,cm_index) 2935 2936 2937 2938 ! PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 2939 !& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 2940 2941 ! PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 2942 !& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 2943 2944 2945 2946 ! 2d fields 2947 WRITE(iounit) ps(:,:,:,cm_index) 2948 WRITE(iounit) sd(:,:,:,cm_index) 2949 WRITE(iounit) msl(:,:,:,cm_index) 2950 WRITE(iounit) tcc(:,:,:,cm_index) 2951 WRITE(iounit) u10(:,:,:,cm_index) 2952 WRITE(iounit) v10(:,:,:,cm_index) 2953 WRITE(iounit) tt2(:,:,:,cm_index) 2954 WRITE(iounit) td2(:,:,:,cm_index) 2955 WRITE(iounit) lsprec(:,:,:,cm_index) 2956 WRITE(iounit) convprec(:,:,:,cm_index) 2957 WRITE(iounit) sshf(:,:,:,cm_index) 2958 WRITE(iounit) ssr(:,:,:,cm_index) 2959 WRITE(iounit) surfstr(:,:,:,cm_index) 2960 WRITE(iounit) ustar(:,:,:,cm_index) 2961 WRITE(iounit) wstar(:,:,:,cm_index) 2962 WRITE(iounit) hmix(:,:,:,cm_index) 2963 WRITE(iounit) tropopause(:,:,:,cm_index) 2964 WRITE(iounit) oli(:,:,:,cm_index) 2965 WRITE(iounit) diffk(:,:,:,cm_index) 2966 WRITE(iounit) vdep(:,:,:,cm_index) 2967 2968 2969 2970 2971 ! 1d fields 2972 WRITE(iounit) z0(:) 2973 WRITE(iounit) akm(:) 2974 WRITE(iounit) bkm(:) 2975 WRITE(iounit) akz(:) 2976 WRITE(iounit) bkz(:) 2977 WRITE(iounit) aknew(:) 2978 WRITE(iounit) bknew(:) 2979 2980 2981 2982 2983 2984 ! PRINT *, 'SUM(bknew(1:nzmax)): ', & 2985 !& SUM(bknew(1:nzmax)) 2986 2987 2988 2989 ! Getting ready to add in nested code 2990 2991 ! These are compiled max dimensions from par_mod - these are 2992 ! not meant to be reassigned during a LOAD, but used as "header" 2993 ! information to provide the structure of arrays 2994 WRITE(iounit) nxn(:) 2995 WRITE(iounit) nyn(:) 2996 WRITE(iounit) dxn(:) 2997 WRITE(iounit) dyn(:) 2998 WRITE(iounit) xlon0n(:) 2999 WRITE(iounit) ylat0n(:) 3000 3001 ! Nested, scalar values (for each nest) 3002 3003 3004 ! Nested fields, static over time 3005 WRITE(iounit) oron, excessoron, lsmn, xlandusen 3006 3007 3008 ! PRINT *, 'SUM(oron): ', SUM(oron) 3009 3010 3011 3012 ! 3d nested fields 3013 WRITE(iounit) uun(:,:,:,cm_index,:) 3014 WRITE(iounit) vvn(:,:,:,cm_index,:) 3015 WRITE(iounit) wwn(:,:,:,cm_index,:) 3016 WRITE(iounit) ttn(:,:,:,cm_index,:) 3017 WRITE(iounit) qvn(:,:,:,cm_index,:) 3018 WRITE(iounit) pvn(:,:,:,cm_index,:) 3019 WRITE(iounit) cloudsn(:,:,:,cm_index,:) 3020 WRITE(iounit) cloudsnh(:,:,cm_index,:) 3021 WRITE(iounit) rhon(:,:,:,cm_index,:) 3022 WRITE(iounit) drhodzn(:,:,:,cm_index,:) 3023 WRITE(iounit) tthn(:,:,:,cm_index,:) 3024 WRITE(iounit) qvhn(:,:,:,cm_index,:) 3025 3026 3027 3028 ! PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) 3029 ! PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) 3030 ! PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) 3031 3032 3033 3034 ! 2d nested fields 3035 WRITE(iounit) psn(:,:,:,cm_index,:) 3036 WRITE(iounit) sdn(:,:,:,cm_index,:) 3037 WRITE(iounit) msln(:,:,:,cm_index,:) 3038 WRITE(iounit) tccn(:,:,:,cm_index,:) 3039 WRITE(iounit) u10n(:,:,:,cm_index,:) 3040 WRITE(iounit) v10n(:,:,:,cm_index,:) 3041 WRITE(iounit) tt2n(:,:,:,cm_index,:) 3042 WRITE(iounit) td2n(:,:,:,cm_index,:) 3043 WRITE(iounit) lsprecn(:,:,:,cm_index,:) 3044 WRITE(iounit) convprecn(:,:,:,cm_index,:) 3045 WRITE(iounit) sshfn(:,:,:,cm_index,:) 3046 WRITE(iounit) ssrn(:,:,:,cm_index,:) 3047 WRITE(iounit) surfstrn(:,:,:,cm_index,:) 3048 WRITE(iounit) ustarn(:,:,:,cm_index,:) 3049 WRITE(iounit) wstarn(:,:,:,cm_index,:) 3050 WRITE(iounit) hmixn(:,:,:,cm_index,:) 3051 WRITE(iounit) tropopausen(:,:,:,cm_index,:) 3052 WRITE(iounit) olin(:,:,:,cm_index,:) 3053 WRITE(iounit) diffkn(:,:,:,cm_index,:) 3054 WRITE(iounit) vdepn(:,:,:,cm_index,:) 3055 3056 3057 3058 ! PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) 3059 ! PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) 3060 ! PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) 3061 3062 3063 3064 3065 3066 ! Auxiliary variables for nests 3067 WRITE(iounit) xresoln(:) 3068 WRITE(iounit) yresoln(:) 3069 WRITE(iounit) xln(:) 3070 WRITE(iounit) yln(:) 3071 WRITE(iounit) xrn(:) 3072 WRITE(iounit) yrn(:) 3073 3074 3075 3076 ! PRINT *, 'SUM(yresoln): ', SUM(yresoln) 3077 ! PRINT *, 'SUM(xrn): ', SUM(xrn) 3078 3079 3080 3081 ! Variables for polar stereographic projection 3082 WRITE(iounit) xglobal, sglobal, nglobal 3083 WRITE(iounit) switchnorthg, switchsouthg 3084 WRITE(iounit) southpolemap(:) 3085 WRITE(iounit) northpolemap(:) 3086 3087 3088 3089 3090 3091 ! PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) 3092 ! PRINT *, 'xglobal: ', xglobal 3093 ! PRINT *, 'sglobal: ', sglobal 3094 ! PRINT *, 'nglobal: ', nglobal 3095 ! PRINT *, 'switchsouthg: ', switchsouthg 3096 3097 ! Variables declared in conv_mod (convection) 3098 WRITE(iounit) pconv(:) 3099 WRITE(iounit) phconv(:) 3100 WRITE(iounit) dpr(:) 3101 WRITE(iounit) pconv_hpa(:) 3102 WRITE(iounit) phconv_hpa(:) 3103 WRITE(iounit) ft(:) 3104 WRITE(iounit) fq(:) 3105 WRITE(iounit) fmass(:,:) 3106 WRITE(iounit) sub(:) 3107 WRITE(iounit) fmassfrac(:,:) 3108 WRITE(iounit) cbaseflux(:,:) 3109 WRITE(iounit) cbasefluxn(:,:,:) 3110 WRITE(iounit) tconv(:) 3111 WRITE(iounit) qconv(:) 3112 WRITE(iounit) qsconv(:) 3113 WRITE(iounit) psconv, tt2conv, td2conv 3114 WRITE(iounit) nconvlev, nconvtop 3115 3116 3117 3118 3119 ! PRINT *, 'SUM(pconv): ', SUM(pconv) 3120 ! PRINT *, 'SUM(qconv): ', SUM(qconv) 3121 ! PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) 3122 ! PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) 3123 ! PRINT *, 'tt2conv: ', tt2conv 3124 ! PRINT *, 'nconvlev: ', nconvlev 3125 3126 3127 3128 ELSE IF (op == 'LOAD') THEN 3129 3130 ! Read the preprocessed format version string and insure it 3131 ! matches this version 3132 READ (iounit) temp_preproc_format_version_str 3133 3134 PRINT *, 'Reading preprocessed file format version: ', & 3135 & temp_preproc_format_version_str 3136 IF (TRIM(temp_preproc_format_version_str) == & 3137 & TRIM(PREPROC_FORMAT_VERSION_STR)) THEN 3138 CONTINUE 3139 ELSE 3140 ! PRINT *, '' GK: causes relocation truncated to fit: R_X86_64_32 3141 PRINT *, 'Inconsistent preprocessing format version' 3142 PRINT *, 'Expected Version: ', PREPROC_FORMAT_VERSION_STR 3143 PRINT *, 'Detected Version: ', temp_preproc_format_version_str 3144 ! PRINT *, '' 3145 STOP 3146 END IF 3147 3148 3149 ! Read the compiled max dimensions that were dumped from par_mod 3150 ! when creating the fp file, so that we can compare against 3151 ! current FLEXPART dimensions - they need to be the same, or else 3152 ! we abort. 3153 READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, & 3154 & temp_nuvzmax, temp_nwzmax 3155 3156 3157 3158 3159 3160 ! Get dimensions 3161 IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. & 3162 & (temp_nzmax == nzmax) .AND. & 3163 & (temp_nuvzmax == nuvzmax) .AND. & 3164 & (temp_nwzmax == nwzmax) ) THEN 3165 CONTINUE 3166 ELSE 3167 PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' 3168 PRINT *, ' FP file Compiled FP' 3169 PRINT *, 'nxmax: ', temp_nxmax, ' ', nxmax 3170 PRINT *, 'nymax: ', temp_nymax, ' ', nymax 3171 PRINT *, 'nzmax: ', temp_nzmax, ' ', nzmax 3172 PRINT *, 'nuvzmax: ', temp_nuvzmax, ' ', nuvzmax 3173 PRINT *, 'nwzmax: ', temp_nwzmax, ' ', nwzmax 3174 STOP 3175 END IF 3176 3177 3178 3179 3180 ! Scalar values 2384 3181 READ(iounit) nx, ny, nxmin1, nymin1, nxfield 2385 3182 READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec 2386 3183 READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst 2387 #endif 2388 2389 2390 2391 ! Get the varid , then read into scalar variable 2392 ncret = nf90_inq_varid(ncid, 'nx', ncvarid) 2393 call handle_nf90_err(ncret) 2394 ncret = nf90_get_var(ncid, ncvarid, nx) 2395 call handle_nf90_err(ncret) 2396 2397 ncret = nf90_inq_varid(ncid, 'ny', ncvarid) 2398 call handle_nf90_err(ncret) 2399 ncret = nf90_get_var(ncid, ncvarid, ny) 2400 call handle_nf90_err(ncret) 2401 2402 ncret = nf90_inq_varid(ncid, 'nxmin1', ncvarid) 2403 call handle_nf90_err(ncret) 2404 ncret = nf90_get_var(ncid, ncvarid, nxmin1) 2405 call handle_nf90_err(ncret) 2406 2407 ncret = nf90_inq_varid(ncid, 'nymin1', ncvarid) 2408 call handle_nf90_err(ncret) 2409 ncret = nf90_get_var(ncid, ncvarid, nymin1) 2410 call handle_nf90_err(ncret) 2411 2412 ncret = nf90_inq_varid(ncid, 'nxfield', ncvarid) 2413 call handle_nf90_err(ncret) 2414 ncret = nf90_get_var(ncid, ncvarid, nxfield) 2415 call handle_nf90_err(ncret) 2416 2417 ncret = nf90_inq_varid(ncid, 'nuvz', ncvarid) 2418 call handle_nf90_err(ncret) 2419 ncret = nf90_get_var(ncid, ncvarid, nuvz) 2420 call handle_nf90_err(ncret) 2421 2422 ncret = nf90_inq_varid(ncid, 'nwz', ncvarid) 2423 call handle_nf90_err(ncret) 2424 ncret = nf90_get_var(ncid, ncvarid, nwz) 2425 call handle_nf90_err(ncret) 2426 2427 ncret = nf90_inq_varid(ncid, 'nz', ncvarid) 2428 call handle_nf90_err(ncret) 2429 ncret = nf90_get_var(ncid, ncvarid, nz) 2430 call handle_nf90_err(ncret) 2431 2432 ncret = nf90_inq_varid(ncid, 'nmixz', ncvarid) 2433 call handle_nf90_err(ncret) 2434 ncret = nf90_get_var(ncid, ncvarid, nmixz) 2435 call handle_nf90_err(ncret) 2436 2437 ncret = nf90_inq_varid(ncid, 'nlev_ec', ncvarid) 2438 call handle_nf90_err(ncret) 2439 ncret = nf90_get_var(ncid, ncvarid, nlev_ec) 2440 call handle_nf90_err(ncret) 2441 2442 ncret = nf90_inq_varid(ncid, 'dx', ncvarid) 2443 call handle_nf90_err(ncret) 2444 ncret = nf90_get_var(ncid, ncvarid, dx) 2445 call handle_nf90_err(ncret) 2446 2447 ncret = nf90_inq_varid(ncid, 'dy', ncvarid) 2448 call handle_nf90_err(ncret) 2449 ncret = nf90_get_var(ncid, ncvarid, dy) 2450 call handle_nf90_err(ncret) 2451 2452 ncret = nf90_inq_varid(ncid, 'xlon0', ncvarid) 2453 call handle_nf90_err(ncret) 2454 ncret = nf90_get_var(ncid, ncvarid, xlon0) 2455 call handle_nf90_err(ncret) 2456 2457 ncret = nf90_inq_varid(ncid, 'ylat0', ncvarid) 2458 call handle_nf90_err(ncret) 2459 ncret = nf90_get_var(ncid, ncvarid, ylat0) 2460 call handle_nf90_err(ncret) 2461 2462 ncret = nf90_inq_varid(ncid, 'dxconst', ncvarid) 2463 call handle_nf90_err(ncret) 2464 ncret = nf90_get_var(ncid, ncvarid, dxconst) 2465 call handle_nf90_err(ncret) 2466 2467 ncret = nf90_inq_varid(ncid, 'dyconst', ncvarid) 2468 call handle_nf90_err(ncret) 2469 ncret = nf90_get_var(ncid, ncvarid, dyconst) 2470 call handle_nf90_err(ncret) 2471 2472 2473 2474 2475 2476 2477 ! Fixed fields, static in time 2478 2479 #ifdef RAWBIN 3184 3185 3186 3187 3188 3189 ! Fixed fields, static in time 2480 3190 READ(iounit) oro, excessoro, lsm, xlanduse, height 2481 #endif2482 2483 ncret = nf90_inq_varid(ncid, 'oro', ncvarid)2484 call handle_nf90_err(ncret)2485 ncret = nf90_get_var(ncid, ncvarid, oro(0:nxmax-1,0:nymax-1))2486 call handle_nf90_err(ncret)2487 2488 ncret = nf90_inq_varid(ncid, 'excessoro', ncvarid)2489 call handle_nf90_err(ncret)2490 ncret = nf90_get_var(ncid, ncvarid, excessoro(0:nxmax-1,0:nymax-1))2491 call handle_nf90_err(ncret)2492 2493 ncret = nf90_inq_varid(ncid, 'lsm', ncvarid)2494 call handle_nf90_err(ncret)2495 ncret = nf90_get_var(ncid, ncvarid, lsm(0:nxmax-1,0:nymax-1))2496 call handle_nf90_err(ncret)2497 2498 ncret = nf90_inq_varid(ncid, 'xlanduse', ncvarid)2499 call handle_nf90_err(ncret)2500 ncret = nf90_get_var(ncid, ncvarid, xlanduse(0:nxmax-1,0:nymax-1, 1:numclass))2501 call handle_nf90_err(ncret)2502 2503 ncret = nf90_inq_varid(ncid, 'height', ncvarid)2504 call handle_nf90_err(ncret)2505 ncret = nf90_get_var(ncid, ncvarid, height(1:nzmax))2506 call handle_nf90_err(ncret)2507 2508 3191 2509 3192 2510 3193 2511 3194 ! 3d fields 2512 2513 2514 2515 #ifdef RAWBIN2516 3195 READ(iounit) uu(:,:,:,cm_index) 2517 3196 READ(iounit) vv(:,:,:,cm_index) … … 2529 3208 READ(iounit) clouds(:,:,:,cm_index) 2530 3209 READ(iounit) cloudsh(:,:,cm_index) 2531 #endif 2532 2533 2534 2535 ! Get the varid and read the variable into the array 2536 ncret = nf90_inq_varid(ncid, 'uu', ncvarid) 2537 call handle_nf90_err(ncret) 2538 ncret = nf90_get_var(ncid, ncvarid, uu(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2539 call handle_nf90_err(ncret) 2540 2541 ncret = nf90_inq_varid(ncid, 'vv', ncvarid) 2542 call handle_nf90_err(ncret) 2543 ncret = nf90_get_var(ncid, ncvarid, vv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2544 call handle_nf90_err(ncret) 2545 2546 ncret = nf90_inq_varid(ncid, 'uupol', ncvarid) 2547 call handle_nf90_err(ncret) 2548 ncret = nf90_get_var(ncid, ncvarid, uupol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2549 call handle_nf90_err(ncret) 2550 2551 ncret = nf90_inq_varid(ncid, 'vvpol', ncvarid) 2552 call handle_nf90_err(ncret) 2553 ncret = nf90_get_var(ncid, ncvarid, vvpol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2554 call handle_nf90_err(ncret) 2555 2556 ncret = nf90_inq_varid(ncid, 'ww', ncvarid) 2557 call handle_nf90_err(ncret) 2558 ncret = nf90_get_var(ncid, ncvarid, ww(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2559 call handle_nf90_err(ncret) 2560 2561 ncret = nf90_inq_varid(ncid, 'tt', ncvarid) 2562 call handle_nf90_err(ncret) 2563 ncret = nf90_get_var(ncid, ncvarid, tt(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2564 call handle_nf90_err(ncret) 2565 2566 ncret = nf90_inq_varid(ncid, 'qv', ncvarid) 2567 call handle_nf90_err(ncret) 2568 ncret = nf90_get_var(ncid, ncvarid, qv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2569 call handle_nf90_err(ncret) 2570 2571 ncret = nf90_inq_varid(ncid, 'pv', ncvarid) 2572 call handle_nf90_err(ncret) 2573 ncret = nf90_get_var(ncid, ncvarid, pv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2574 call handle_nf90_err(ncret) 2575 2576 ncret = nf90_inq_varid(ncid, 'rho', ncvarid) 2577 call handle_nf90_err(ncret) 2578 ncret = nf90_get_var(ncid, ncvarid, rho(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2579 call handle_nf90_err(ncret) 2580 2581 ncret = nf90_inq_varid(ncid, 'drhodz', ncvarid) 2582 call handle_nf90_err(ncret) 2583 ncret = nf90_get_var(ncid, ncvarid, drhodz(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2584 call handle_nf90_err(ncret) 2585 2586 ncret = nf90_inq_varid(ncid, 'clouds', ncvarid) 2587 call handle_nf90_err(ncret) 2588 ncret = nf90_get_var(ncid, ncvarid, clouds(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) 2589 call handle_nf90_err(ncret) 2590 2591 ncret = nf90_inq_varid(ncid, 'tth', ncvarid) 2592 call handle_nf90_err(ncret) 2593 ncret = nf90_get_var(ncid, ncvarid, tth(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) 2594 call handle_nf90_err(ncret) 2595 2596 ncret = nf90_inq_varid(ncid, 'qvh', ncvarid) 2597 call handle_nf90_err(ncret) 2598 ncret = nf90_get_var(ncid, ncvarid, qvh(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) 2599 call handle_nf90_err(ncret) 2600 2601 ncret = nf90_inq_varid(ncid, 'pplev', ncvarid) 2602 call handle_nf90_err(ncret) 2603 ncret = nf90_get_var(ncid, ncvarid, pplev(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) 2604 call handle_nf90_err(ncret) 2605 2606 ncret = nf90_inq_varid(ncid, 'cloudsh', ncvarid) 2607 call handle_nf90_err(ncret) 2608 ncret = nf90_get_var(ncid, ncvarid, cloudsh(0:nxmax-1,0:nymax-1,cm_index)) 2609 call handle_nf90_err(ncret) 2610 2611 2612 2613 2614 PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 2615 & SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 2616 2617 2618 PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 2619 & SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 3210 3211 3212 ! PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 3213 !& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 3214 3215 3216 ! PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & 3217 !& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) 2620 3218 2621 3219 2622 3220 2623 3221 ! 2d fields 2624 2625 2626 #ifdef RAWBIN2627 3222 READ(iounit) ps(:,:,:,cm_index) 2628 3223 READ(iounit) sd(:,:,:,cm_index) … … 2645 3240 READ(iounit) diffk(:,:,:,cm_index) 2646 3241 READ(iounit) vdep(:,:,:,cm_index) 2647 #endif 2648 2649 2650 2651 ! Get the varid and read the variable into the array 2652 ncret = nf90_inq_varid(ncid, 'ps', ncvarid) 2653 call handle_nf90_err(ncret) 2654 ncret = nf90_get_var(ncid, ncvarid, ps(0:nxmax-1,0:nymax-1,1,cm_index)) 2655 call handle_nf90_err(ncret) 2656 2657 ncret = nf90_inq_varid(ncid, 'sd', ncvarid) 2658 call handle_nf90_err(ncret) 2659 ncret = nf90_get_var(ncid, ncvarid, sd(0:nxmax-1,0:nymax-1,1,cm_index)) 2660 call handle_nf90_err(ncret) 2661 2662 ncret = nf90_inq_varid(ncid, 'msl', ncvarid) 2663 call handle_nf90_err(ncret) 2664 ncret = nf90_get_var(ncid, ncvarid, msl(0:nxmax-1,0:nymax-1,1,cm_index)) 2665 call handle_nf90_err(ncret) 2666 2667 ncret = nf90_inq_varid(ncid, 'tcc', ncvarid) 2668 call handle_nf90_err(ncret) 2669 ncret = nf90_get_var(ncid, ncvarid, tcc(0:nxmax-1,0:nymax-1,1,cm_index)) 2670 call handle_nf90_err(ncret) 2671 2672 ncret = nf90_inq_varid(ncid, 'u10', ncvarid) 2673 call handle_nf90_err(ncret) 2674 ncret = nf90_get_var(ncid, ncvarid, u10(0:nxmax-1,0:nymax-1,1,cm_index)) 2675 call handle_nf90_err(ncret) 2676 2677 ncret = nf90_inq_varid(ncid, 'v10', ncvarid) 2678 call handle_nf90_err(ncret) 2679 ncret = nf90_get_var(ncid, ncvarid, v10(0:nxmax-1,0:nymax-1,1,cm_index)) 2680 call handle_nf90_err(ncret) 2681 2682 ncret = nf90_inq_varid(ncid, 'tt2', ncvarid) 2683 call handle_nf90_err(ncret) 2684 ncret = nf90_get_var(ncid, ncvarid, tt2(0:nxmax-1,0:nymax-1,1,cm_index)) 2685 call handle_nf90_err(ncret) 2686 2687 ncret = nf90_inq_varid(ncid, 'td2', ncvarid) 2688 call handle_nf90_err(ncret) 2689 ncret = nf90_get_var(ncid, ncvarid, td2(0:nxmax-1,0:nymax-1,1,cm_index)) 2690 call handle_nf90_err(ncret) 2691 2692 ncret = nf90_inq_varid(ncid, 'lsprec', ncvarid) 2693 call handle_nf90_err(ncret) 2694 ncret = nf90_get_var(ncid, ncvarid, lsprec(0:nxmax-1,0:nymax-1,1,cm_index)) 2695 call handle_nf90_err(ncret) 2696 2697 ncret = nf90_inq_varid(ncid, 'convprec', ncvarid) 2698 call handle_nf90_err(ncret) 2699 ncret = nf90_get_var(ncid, ncvarid, convprec(0:nxmax-1,0:nymax-1,1,cm_index)) 2700 call handle_nf90_err(ncret) 2701 2702 ncret = nf90_inq_varid(ncid, 'sshf', ncvarid) 2703 call handle_nf90_err(ncret) 2704 ncret = nf90_get_var(ncid, ncvarid, sshf(0:nxmax-1,0:nymax-1,1,cm_index)) 2705 call handle_nf90_err(ncret) 2706 2707 ncret = nf90_inq_varid(ncid, 'ssr', ncvarid) 2708 call handle_nf90_err(ncret) 2709 ncret = nf90_get_var(ncid, ncvarid, ssr(0:nxmax-1,0:nymax-1,1,cm_index)) 2710 call handle_nf90_err(ncret) 2711 2712 ncret = nf90_inq_varid(ncid, 'surfstr', ncvarid) 2713 call handle_nf90_err(ncret) 2714 ncret = nf90_get_var(ncid, ncvarid, surfstr(0:nxmax-1,0:nymax-1,1,cm_index)) 2715 call handle_nf90_err(ncret) 2716 2717 ncret = nf90_inq_varid(ncid, 'ustar', ncvarid) 2718 call handle_nf90_err(ncret) 2719 ncret = nf90_get_var(ncid, ncvarid, ustar(0:nxmax-1,0:nymax-1,1,cm_index)) 2720 call handle_nf90_err(ncret) 2721 2722 ncret = nf90_inq_varid(ncid, 'wstar', ncvarid) 2723 call handle_nf90_err(ncret) 2724 ncret = nf90_get_var(ncid, ncvarid, wstar(0:nxmax-1,0:nymax-1,1,cm_index)) 2725 call handle_nf90_err(ncret) 2726 2727 ncret = nf90_inq_varid(ncid, 'hmix', ncvarid) 2728 call handle_nf90_err(ncret) 2729 ncret = nf90_get_var(ncid, ncvarid, hmix(0:nxmax-1,0:nymax-1,1,cm_index)) 2730 call handle_nf90_err(ncret) 2731 2732 ncret = nf90_inq_varid(ncid, 'tropopause', ncvarid) 2733 call handle_nf90_err(ncret) 2734 ncret = nf90_get_var(ncid, ncvarid, tropopause(0:nxmax-1,0:nymax-1,1,cm_index)) 2735 call handle_nf90_err(ncret) 2736 2737 ncret = nf90_inq_varid(ncid, 'oli', ncvarid) 2738 call handle_nf90_err(ncret) 2739 ncret = nf90_get_var(ncid, ncvarid, oli(0:nxmax-1,0:nymax-1,1,cm_index)) 2740 call handle_nf90_err(ncret) 2741 2742 ncret = nf90_inq_varid(ncid, 'diffk', ncvarid) 2743 call handle_nf90_err(ncret) 2744 ncret = nf90_get_var(ncid, ncvarid, diffk(0:nxmax-1,0:nymax-1,1,cm_index)) 2745 call handle_nf90_err(ncret) 2746 2747 2748 2749 2750 PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & 2751 & SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) 2752 2753 PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & 2754 & SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) 2755 2756 2757 ncret = nf90_inq_varid(ncid, 'vdep', ncvarid) 2758 call handle_nf90_err(ncret) 2759 ncret = nf90_get_var(ncid, ncvarid, vdep(0:nxmax-1,0:nymax-1,1:maxspec, cm_index)) 2760 call handle_nf90_err(ncret) 2761 3242 3243 3244 3245 3246 3247 ! PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & 3248 !& SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) 3249 3250 ! PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & 3251 !& SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) 2762 3252 2763 3253 … … 2765 3255 2766 3256 ! 1d fields 2767 2768 #ifdef RAWBIN2769 3257 READ(iounit) z0(:) 2770 3258 READ(iounit) akm(:) … … 2774 3262 READ(iounit) aknew(:) 2775 3263 READ(iounit) bknew(:) 2776 #endif 2777 2778 ncret = nf90_inq_varid(ncid, 'z0', ncvarid) 2779 call handle_nf90_err(ncret) 2780 ncret = nf90_get_var(ncid, ncvarid, z0(1:numclass)) 2781 call handle_nf90_err(ncret) 2782 2783 ncret = nf90_inq_varid(ncid, 'akm', ncvarid) 2784 call handle_nf90_err(ncret) 2785 ncret = nf90_get_var(ncid, ncvarid, akm(1:nwzmax)) 2786 call handle_nf90_err(ncret) 2787 2788 ncret = nf90_inq_varid(ncid, 'bkm', ncvarid) 2789 call handle_nf90_err(ncret) 2790 ncret = nf90_get_var(ncid, ncvarid, bkm(1:nwzmax)) 2791 call handle_nf90_err(ncret) 2792 2793 ncret = nf90_inq_varid(ncid, 'akz', ncvarid) 2794 call handle_nf90_err(ncret) 2795 ncret = nf90_get_var(ncid, ncvarid, akz(1:nuvzmax)) 2796 call handle_nf90_err(ncret) 2797 2798 ncret = nf90_inq_varid(ncid, 'bkz', ncvarid) 2799 call handle_nf90_err(ncret) 2800 ncret = nf90_get_var(ncid, ncvarid, bkz(1:nuvzmax)) 2801 call handle_nf90_err(ncret) 2802 2803 ncret = nf90_inq_varid(ncid, 'aknew', ncvarid) 2804 call handle_nf90_err(ncret) 2805 ncret = nf90_get_var(ncid, ncvarid, aknew(1:nzmax)) 2806 call handle_nf90_err(ncret) 2807 2808 ncret = nf90_inq_varid(ncid, 'bknew', ncvarid) 2809 call handle_nf90_err(ncret) 2810 ncret = nf90_get_var(ncid, ncvarid, bknew(1:nzmax)) 2811 call handle_nf90_err(ncret) 2812 2813 2814 2815 PRINT *, 'SUM(bknew(1:nzmax)): ', & 2816 & SUM(bknew(1:nzmax)) 2817 2818 2819 2820 2821 ! Now the nested input grid variables 2822 ! Get the compiled values that were written into the FP file, and 2823 ! make sure they are equal to the current compiled values, to make 2824 ! sure we are working with consistent arrays 2825 ncret = nf90_inq_dimid(ncid, 'maxnests', maxnests_dimid) 2826 call handle_nf90_err(ncret) 2827 ncret = nf90_inquire_dimension(ncid, maxnests_dimid, maxnests_dimname, & 2828 & temp_maxnests) 2829 call handle_nf90_err(ncret) 2830 PRINT *, 'temp_maxnests: ', temp_maxnests 2831 2832 ncret = nf90_inq_dimid(ncid, 'nxmaxn', nxmaxn_dimid) 2833 call handle_nf90_err(ncret) 2834 ncret = nf90_inquire_dimension(ncid, nxmaxn_dimid, nxmaxn_dimname, & 2835 & temp_nxmaxn) 2836 call handle_nf90_err(ncret) 2837 PRINT *, 'temp_nxmaxn: ', temp_nxmaxn 2838 2839 ncret = nf90_inq_dimid(ncid, 'nymaxn', nymaxn_dimid) 2840 call handle_nf90_err(ncret) 2841 ncret = nf90_inquire_dimension(ncid, nymaxn_dimid, nymaxn_dimname, & 2842 & temp_nymaxn) 2843 call handle_nf90_err(ncret) 2844 PRINT *, 'temp_nymaxn: ', temp_nymaxn 2845 2846 ! Note that maxspec_dimid and numclass_dimid were checked above 2847 2848 2849 2850 2851 IF ( (temp_nxmaxn == nxmaxn) .AND. (temp_nymaxn == nymaxn) .AND. & 2852 & (temp_maxnests == maxnests) ) THEN 2853 CONTINUE 2854 ELSE 2855 PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' 2856 ! PRINT *, '' 2857 PRINT *, ' FP file Compiled FP' 2858 PRINT *, 'nxmaxn: ', temp_nxmaxn, ' ', nxmaxn 2859 PRINT *, 'nymaxn: ', temp_nymaxn, ' ', nymaxn 2860 PRINT *, 'maxnests: ', temp_maxnests, ' ', maxnests 2861 STOP 2862 END IF 3264 3265 3266 3267 ! PRINT *, 'SUM(bknew(1:nzmax)): ', & 3268 !& SUM(bknew(1:nzmax)) 3269 3270 2863 3271 2864 3272 2865 3273 2866 3274 ! Nested, scalar values (for each nest) 2867 2868 2869 2870 2871 #ifdef RAWBIN2872 3275 READ(iounit) nxn(:) 2873 3276 READ(iounit) nyn(:) … … 2876 3279 READ(iounit) xlon0n(:) 2877 3280 READ(iounit) ylat0n(:) 2878 #endif2879 2880 2881 ncret = nf90_inq_varid(ncid, 'nxn', ncvarid)2882 call handle_nf90_err(ncret)2883 ncret = nf90_get_var(ncid, ncvarid, nxn(1:maxnests))2884 call handle_nf90_err(ncret)2885 2886 ncret = nf90_inq_varid(ncid, 'nyn', ncvarid)2887 call handle_nf90_err(ncret)2888 ncret = nf90_get_var(ncid, ncvarid, nyn(1:maxnests))2889 call handle_nf90_err(ncret)2890 2891 ncret = nf90_inq_varid(ncid, 'dxn', ncvarid)2892 call handle_nf90_err(ncret)2893 ncret = nf90_get_var(ncid, ncvarid, dxn(1:maxnests))2894 call handle_nf90_err(ncret)2895 2896 ncret = nf90_inq_varid(ncid, 'dyn', ncvarid)2897 call handle_nf90_err(ncret)2898 ncret = nf90_get_var(ncid, ncvarid, dyn(1:maxnests))2899 call handle_nf90_err(ncret)2900 2901 ncret = nf90_inq_varid(ncid, 'xlon0n', ncvarid)2902 call handle_nf90_err(ncret)2903 ncret = nf90_get_var(ncid, ncvarid, xlon0n(1:maxnests))2904 call handle_nf90_err(ncret)2905 2906 ncret = nf90_inq_varid(ncid, 'ylat0n', ncvarid)2907 call handle_nf90_err(ncret)2908 ncret = nf90_get_var(ncid, ncvarid, ylat0n(1:maxnests))2909 call handle_nf90_err(ncret)2910 3281 2911 3282 2912 3283 2913 3284 ! Nested fields, static over time 2914 2915 #ifdef RAWBIN2916 3285 READ(iounit) oron, excessoron, lsmn, xlandusen 2917 #endif 2918 2919 ncret = nf90_inq_varid(ncid, 'oron', ncvarid) 2920 call handle_nf90_err(ncret) 2921 ncret = nf90_get_var(ncid, ncvarid, oron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 2922 call handle_nf90_err(ncret) 2923 2924 ncret = nf90_inq_varid(ncid, 'excessoron', ncvarid) 2925 call handle_nf90_err(ncret) 2926 ncret = nf90_get_var(ncid, ncvarid, excessoron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 2927 call handle_nf90_err(ncret) 2928 2929 ncret = nf90_inq_varid(ncid, 'lsmn', ncvarid) 2930 call handle_nf90_err(ncret) 2931 ncret = nf90_get_var(ncid, ncvarid, lsmn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 2932 call handle_nf90_err(ncret) 2933 2934 ncret = nf90_inq_varid(ncid, 'xlandusen', ncvarid) 2935 call handle_nf90_err(ncret) 2936 ncret = nf90_get_var(ncid, ncvarid, xlandusen(0:nxmaxn-1,0:nymaxn-1,1:numclass,1:maxnests)) 2937 call handle_nf90_err(ncret) 2938 2939 2940 PRINT *, 'SUM(oron): ', SUM(oron) 3286 3287 3288 3289 ! PRINT *, 'SUM(oron): ', SUM(oron) 2941 3290 2942 3291 … … 2944 3293 2945 3294 ! 3d nested fields 2946 2947 #ifdef RAWBIN2948 3295 READ(iounit) uun(:,:,:,cm_index,:) 2949 3296 READ(iounit) vvn(:,:,:,cm_index,:) … … 2958 3305 READ(iounit) tthn(:,:,:,cm_index,:) 2959 3306 READ(iounit) qvhn(:,:,:,cm_index,:) 2960 #endif 2961 2962 ncret = nf90_inq_varid(ncid, 'uun', ncvarid) 2963 call handle_nf90_err(ncret) 2964 ncret = nf90_get_var(ncid, ncvarid, uun(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2965 call handle_nf90_err(ncret) 2966 2967 ncret = nf90_inq_varid(ncid, 'vvn', ncvarid) 2968 call handle_nf90_err(ncret) 2969 ncret = nf90_get_var(ncid, ncvarid, vvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2970 call handle_nf90_err(ncret) 2971 2972 ncret = nf90_inq_varid(ncid, 'wwn', ncvarid) 2973 call handle_nf90_err(ncret) 2974 ncret = nf90_get_var(ncid, ncvarid, wwn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2975 call handle_nf90_err(ncret) 2976 2977 ncret = nf90_inq_varid(ncid, 'ttn', ncvarid) 2978 call handle_nf90_err(ncret) 2979 ncret = nf90_get_var(ncid, ncvarid, ttn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2980 call handle_nf90_err(ncret) 2981 2982 ncret = nf90_inq_varid(ncid, 'qvn', ncvarid) 2983 call handle_nf90_err(ncret) 2984 ncret = nf90_get_var(ncid, ncvarid, qvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2985 call handle_nf90_err(ncret) 2986 2987 ncret = nf90_inq_varid(ncid, 'pvn', ncvarid) 2988 call handle_nf90_err(ncret) 2989 ncret = nf90_get_var(ncid, ncvarid, pvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2990 call handle_nf90_err(ncret) 2991 2992 ncret = nf90_inq_varid(ncid, 'rhon', ncvarid) 2993 call handle_nf90_err(ncret) 2994 ncret = nf90_get_var(ncid, ncvarid, rhon(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 2995 call handle_nf90_err(ncret) 2996 2997 ncret = nf90_inq_varid(ncid, 'drhodzn', ncvarid) 2998 call handle_nf90_err(ncret) 2999 ncret = nf90_get_var(ncid, ncvarid, drhodzn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) 3000 call handle_nf90_err(ncret) 3001 3002 ncret = nf90_inq_varid(ncid, 'tthn', ncvarid) 3003 call handle_nf90_err(ncret) 3004 ncret = nf90_get_var(ncid, ncvarid, tthn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) 3005 call handle_nf90_err(ncret) 3006 3007 ncret = nf90_inq_varid(ncid, 'qvhn', ncvarid) 3008 call handle_nf90_err(ncret) 3009 ncret = nf90_get_var(ncid, ncvarid, qvhn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) 3010 call handle_nf90_err(ncret) 3011 3012 ncret = nf90_inq_varid(ncid, 'cloudsn', ncvarid) 3013 call handle_nf90_err(ncret) 3014 ncret = nf90_get_var(ncid, ncvarid, cloudsn(0:nxmaxn-1,0:nymaxn-1,0:nzmax,cm_index,1:maxnests)) 3015 call handle_nf90_err(ncret) 3016 3017 ncret = nf90_inq_varid(ncid, 'cloudsnh', ncvarid) 3018 call handle_nf90_err(ncret) 3019 ncret = nf90_get_var(ncid, ncvarid, cloudsnh(0:nxmaxn-1,0:nymaxn-1,cm_index,1:maxnests)) 3020 call handle_nf90_err(ncret) 3021 3022 3023 3024 3025 PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) 3026 PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) 3027 PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) 3307 3308 ! PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) 3309 ! PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) 3310 ! PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) 3028 3311 3029 3312 … … 3031 3314 3032 3315 ! 2d nested fields 3033 3034 3035 #ifdef RAWBIN3036 3316 READ(iounit) psn(:,:,:,cm_index,:) 3037 3317 READ(iounit) sdn(:,:,:,cm_index,:) … … 3054 3334 READ(iounit) diffkn(:,:,:,cm_index,:) 3055 3335 READ(iounit) vdepn(:,:,:,cm_index,:) 3056 #endif 3057 3058 3059 ncret = nf90_inq_varid(ncid, 'psn', ncvarid) 3060 call handle_nf90_err(ncret) 3061 ncret = nf90_get_var(ncid, ncvarid, psn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3062 call handle_nf90_err(ncret) 3063 3064 ncret = nf90_inq_varid(ncid, 'sdn', ncvarid) 3065 call handle_nf90_err(ncret) 3066 ncret = nf90_get_var(ncid, ncvarid, sdn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3067 call handle_nf90_err(ncret) 3068 3069 ncret = nf90_inq_varid(ncid, 'msln', ncvarid) 3070 call handle_nf90_err(ncret) 3071 ncret = nf90_get_var(ncid, ncvarid, msln(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3072 call handle_nf90_err(ncret) 3073 3074 ncret = nf90_inq_varid(ncid, 'tccn', ncvarid) 3075 call handle_nf90_err(ncret) 3076 ncret = nf90_get_var(ncid, ncvarid, tccn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3077 call handle_nf90_err(ncret) 3078 3079 ncret = nf90_inq_varid(ncid, 'u10n', ncvarid) 3080 call handle_nf90_err(ncret) 3081 ncret = nf90_get_var(ncid, ncvarid, u10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3082 call handle_nf90_err(ncret) 3083 3084 ncret = nf90_inq_varid(ncid, 'v10n', ncvarid) 3085 call handle_nf90_err(ncret) 3086 ncret = nf90_get_var(ncid, ncvarid, v10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3087 call handle_nf90_err(ncret) 3088 3089 ncret = nf90_inq_varid(ncid, 'tt2n', ncvarid) 3090 call handle_nf90_err(ncret) 3091 ncret = nf90_get_var(ncid, ncvarid, tt2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3092 call handle_nf90_err(ncret) 3093 3094 ncret = nf90_inq_varid(ncid, 'td2n', ncvarid) 3095 call handle_nf90_err(ncret) 3096 ncret = nf90_get_var(ncid, ncvarid, td2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3097 call handle_nf90_err(ncret) 3098 3099 ncret = nf90_inq_varid(ncid, 'lsprecn', ncvarid) 3100 call handle_nf90_err(ncret) 3101 ncret = nf90_get_var(ncid, ncvarid, lsprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3102 call handle_nf90_err(ncret) 3103 3104 ncret = nf90_inq_varid(ncid, 'convprecn', ncvarid) 3105 call handle_nf90_err(ncret) 3106 ncret = nf90_get_var(ncid, ncvarid, convprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3107 call handle_nf90_err(ncret) 3108 3109 ncret = nf90_inq_varid(ncid, 'sshfn', ncvarid) 3110 call handle_nf90_err(ncret) 3111 ncret = nf90_get_var(ncid, ncvarid, sshfn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3112 call handle_nf90_err(ncret) 3113 3114 ncret = nf90_inq_varid(ncid, 'ssrn', ncvarid) 3115 call handle_nf90_err(ncret) 3116 ncret = nf90_get_var(ncid, ncvarid, ssrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3117 call handle_nf90_err(ncret) 3118 3119 ncret = nf90_inq_varid(ncid, 'surfstrn', ncvarid) 3120 call handle_nf90_err(ncret) 3121 ncret = nf90_get_var(ncid, ncvarid, surfstrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3122 call handle_nf90_err(ncret) 3123 3124 ncret = nf90_inq_varid(ncid, 'ustarn', ncvarid) 3125 call handle_nf90_err(ncret) 3126 ncret = nf90_get_var(ncid, ncvarid, ustarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3127 call handle_nf90_err(ncret) 3128 3129 ncret = nf90_inq_varid(ncid, 'wstarn', ncvarid) 3130 call handle_nf90_err(ncret) 3131 ncret = nf90_get_var(ncid, ncvarid, wstarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3132 call handle_nf90_err(ncret) 3133 3134 ncret = nf90_inq_varid(ncid, 'hmixn', ncvarid) 3135 call handle_nf90_err(ncret) 3136 ncret = nf90_get_var(ncid, ncvarid, hmixn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3137 call handle_nf90_err(ncret) 3138 3139 ncret = nf90_inq_varid(ncid, 'tropopausen', ncvarid) 3140 call handle_nf90_err(ncret) 3141 ncret = nf90_get_var(ncid, ncvarid, tropopausen(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3142 call handle_nf90_err(ncret) 3143 3144 ncret = nf90_inq_varid(ncid, 'olin', ncvarid) 3145 call handle_nf90_err(ncret) 3146 ncret = nf90_get_var(ncid, ncvarid, olin(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3147 call handle_nf90_err(ncret) 3148 3149 ncret = nf90_inq_varid(ncid, 'diffkn', ncvarid) 3150 call handle_nf90_err(ncret) 3151 ncret = nf90_get_var(ncid, ncvarid, diffkn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) 3152 call handle_nf90_err(ncret) 3153 3154 ncret = nf90_inq_varid(ncid, 'vdepn', ncvarid) 3155 call handle_nf90_err(ncret) 3156 ncret = nf90_get_var(ncid, ncvarid, vdepn(0:nxmaxn-1,0:nymaxn-1,1:maxspec,cm_index,1:maxnests)) 3157 call handle_nf90_err(ncret) 3158 3159 3160 3161 3162 PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) 3163 PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) 3164 PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) 3336 3337 ! PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) 3338 ! PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) 3339 ! PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) 3165 3340 3166 3341 3167 3342 3168 3343 ! Auxiliary variables for nests 3169 3170 3171 #ifdef RAWBIN3172 3344 READ(iounit) xresoln(:) 3173 3345 READ(iounit) yresoln(:) … … 3175 3347 READ(iounit) yln(:) 3176 3348 READ(iounit) xrn(:) 3177 READ(iounit) yrn(:) 3178 #endif 3179 3180 3181 ncret = nf90_inq_varid(ncid, 'xresoln', ncvarid) 3182 call handle_nf90_err(ncret) 3183 ncret = nf90_get_var(ncid, ncvarid, xresoln(0:maxnests)) 3184 call handle_nf90_err(ncret) 3185 3186 ncret = nf90_inq_varid(ncid, 'yresoln', ncvarid) 3187 call handle_nf90_err(ncret) 3188 ncret = nf90_get_var(ncid, ncvarid, yresoln(0:maxnests)) 3189 call handle_nf90_err(ncret) 3190 3191 ncret = nf90_inq_varid(ncid, 'xln', ncvarid) 3192 call handle_nf90_err(ncret) 3193 ncret = nf90_get_var(ncid, ncvarid, xln(1:maxnests)) 3194 call handle_nf90_err(ncret) 3195 3196 ncret = nf90_inq_varid(ncid, 'yln', ncvarid) 3197 call handle_nf90_err(ncret) 3198 ncret = nf90_get_var(ncid, ncvarid, yln(1:maxnests)) 3199 call handle_nf90_err(ncret) 3200 3201 ncret = nf90_inq_varid(ncid, 'xrn', ncvarid) 3202 call handle_nf90_err(ncret) 3203 ncret = nf90_get_var(ncid, ncvarid, xrn(1:maxnests)) 3204 call handle_nf90_err(ncret) 3205 3206 ncret = nf90_inq_varid(ncid, 'yrn', ncvarid) 3207 call handle_nf90_err(ncret) 3208 ncret = nf90_get_var(ncid, ncvarid, yrn(1:maxnests)) 3209 call handle_nf90_err(ncret) 3210 3211 3212 3213 PRINT *, 'SUM(yresoln): ', SUM(yresoln) 3214 PRINT *, 'SUM(xrn): ', SUM(xrn) 3349 3350 3351 ! PRINT *, 'SUM(yresoln): ', SUM(yresoln) 3352 ! PRINT *, 'SUM(xrn): ', SUM(xrn) 3215 3353 3216 3354 3217 3355 3218 3356 ! Variables for polar stereographic projection 3219 3220 3221 #ifdef RAWBIN3222 3357 READ(iounit) xglobal, sglobal, nglobal 3223 3358 READ(iounit) switchnorthg, switchsouthg 3224 3359 READ(iounit) southpolemap(:) 3225 3360 READ(iounit) northpolemap(:) 3226 #endif 3227 3228 ncret = nf90_inq_varid(ncid, 'southpolemap', ncvarid) 3229 call handle_nf90_err(ncret) 3230 ncret = nf90_get_var(ncid, ncvarid, southpolemap(:)) 3231 call handle_nf90_err(ncret) 3232 3233 ncret = nf90_inq_varid(ncid, 'northpolemap', ncvarid) 3234 call handle_nf90_err(ncret) 3235 ncret = nf90_get_var(ncid, ncvarid, northpolemap(:)) 3236 call handle_nf90_err(ncret) 3237 3238 ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted 3239 ! to INTEGER for NetCDF storage 3240 ncret = nf90_inq_varid(ncid, 'xglobal', ncvarid) 3241 call handle_nf90_err(ncret) 3242 ncret = nf90_get_var(ncid, ncvarid, temp_integer) 3243 call handle_nf90_err(ncret) 3244 xglobal = integer2logical(temp_integer) 3245 3246 ncret = nf90_inq_varid(ncid, 'sglobal', ncvarid) 3247 call handle_nf90_err(ncret) 3248 ncret = nf90_get_var(ncid, ncvarid, temp_integer) 3249 call handle_nf90_err(ncret) 3250 sglobal = integer2logical(temp_integer) 3251 3252 ncret = nf90_inq_varid(ncid, 'nglobal', ncvarid) 3253 call handle_nf90_err(ncret) 3254 ncret = nf90_get_var(ncid, ncvarid, temp_integer) 3255 call handle_nf90_err(ncret) 3256 nglobal = integer2logical(temp_integer) 3257 3258 ncret = nf90_inq_varid(ncid, 'switchnorthg', ncvarid) 3259 call handle_nf90_err(ncret) 3260 ncret = nf90_get_var(ncid, ncvarid, switchnorthg) 3261 call handle_nf90_err(ncret) 3262 3263 ncret = nf90_inq_varid(ncid, 'switchsouthg', ncvarid) 3264 call handle_nf90_err(ncret) 3265 ncret = nf90_get_var(ncid, ncvarid, switchsouthg) 3266 call handle_nf90_err(ncret) 3267 3268 3269 PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) 3270 PRINT *, 'xglobal: ', xglobal 3271 PRINT *, 'sglobal: ', sglobal 3272 PRINT *, 'nglobal: ', nglobal 3273 PRINT *, 'switchsouthg: ', switchsouthg 3361 3362 3363 ! PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) 3364 ! PRINT *, 'xglobal: ', xglobal 3365 ! PRINT *, 'sglobal: ', sglobal 3366 ! PRINT *, 'nglobal: ', nglobal 3367 ! PRINT *, 'switchsouthg: ', switchsouthg 3274 3368 3275 3369 … … 3277 3371 3278 3372 ! Variables declared in conv_mod (convection) 3279 3280 3281 #ifdef RAWBIN3282 3373 READ(iounit) pconv(:) 3283 3374 READ(iounit) phconv(:) … … 3297 3388 READ(iounit) psconv, tt2conv, td2conv 3298 3389 READ(iounit) nconvlev, nconvtop 3299 #endif 3300 3301 3302 3303 ncret = nf90_inq_varid(ncid, 'pconv', ncvarid) 3304 call handle_nf90_err(ncret) 3305 ncret = nf90_get_var(ncid, ncvarid, pconv(:)) 3306 call handle_nf90_err(ncret) 3307 3308 ncret = nf90_inq_varid(ncid, 'dpr', ncvarid) 3309 call handle_nf90_err(ncret) 3310 ncret = nf90_get_var(ncid, ncvarid, dpr(:)) 3311 call handle_nf90_err(ncret) 3312 3313 ncret = nf90_inq_varid(ncid, 'pconv_hpa', ncvarid) 3314 call handle_nf90_err(ncret) 3315 ncret = nf90_get_var(ncid, ncvarid, pconv_hpa(:)) 3316 call handle_nf90_err(ncret) 3317 3318 ncret = nf90_inq_varid(ncid, 'ft', ncvarid) 3319 call handle_nf90_err(ncret) 3320 ncret = nf90_get_var(ncid, ncvarid, ft(:)) 3321 call handle_nf90_err(ncret) 3322 3323 ncret = nf90_inq_varid(ncid, 'fq', ncvarid) 3324 call handle_nf90_err(ncret) 3325 ncret = nf90_get_var(ncid, ncvarid, fq(:)) 3326 call handle_nf90_err(ncret) 3327 3328 ncret = nf90_inq_varid(ncid, 'sub', ncvarid) 3329 call handle_nf90_err(ncret) 3330 ncret = nf90_get_var(ncid, ncvarid, sub(:)) 3331 call handle_nf90_err(ncret) 3332 3333 ncret = nf90_inq_varid(ncid, 'phconv', ncvarid) 3334 call handle_nf90_err(ncret) 3335 ncret = nf90_get_var(ncid, ncvarid, phconv(:)) 3336 call handle_nf90_err(ncret) 3337 3338 ncret = nf90_inq_varid(ncid, 'phconv_hpa', ncvarid) 3339 call handle_nf90_err(ncret) 3340 ncret = nf90_get_var(ncid, ncvarid, phconv_hpa(:)) 3341 call handle_nf90_err(ncret) 3342 3343 ncret = nf90_inq_varid(ncid, 'tconv', ncvarid) 3344 call handle_nf90_err(ncret) 3345 ncret = nf90_get_var(ncid, ncvarid, tconv(:)) 3346 call handle_nf90_err(ncret) 3347 3348 ncret = nf90_inq_varid(ncid, 'qconv', ncvarid) 3349 call handle_nf90_err(ncret) 3350 ncret = nf90_get_var(ncid, ncvarid, qconv(:)) 3351 call handle_nf90_err(ncret) 3352 3353 ncret = nf90_inq_varid(ncid, 'qsconv', ncvarid) 3354 call handle_nf90_err(ncret) 3355 ncret = nf90_get_var(ncid, ncvarid, qsconv(:)) 3356 call handle_nf90_err(ncret) 3357 3358 ncret = nf90_inq_varid(ncid, 'fmass', ncvarid) 3359 call handle_nf90_err(ncret) 3360 ncret = nf90_get_var(ncid, ncvarid, fmass(:,:)) 3361 call handle_nf90_err(ncret) 3362 3363 ncret = nf90_inq_varid(ncid, 'fmassfrac', ncvarid) 3364 call handle_nf90_err(ncret) 3365 ncret = nf90_get_var(ncid, ncvarid, fmassfrac(:,:)) 3366 call handle_nf90_err(ncret) 3367 3368 ncret = nf90_inq_varid(ncid, 'cbaseflux', ncvarid) 3369 call handle_nf90_err(ncret) 3370 ncret = nf90_get_var(ncid, ncvarid, cbaseflux(0:nxmax-1,0:nymax-1)) 3371 call handle_nf90_err(ncret) 3372 3373 ncret = nf90_inq_varid(ncid, 'cbasefluxn', ncvarid) 3374 call handle_nf90_err(ncret) 3375 ncret = nf90_get_var(ncid, ncvarid, cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) 3376 call handle_nf90_err(ncret) 3377 3378 ncret = nf90_inq_varid(ncid, 'psconv', ncvarid) 3379 call handle_nf90_err(ncret) 3380 ncret = nf90_get_var(ncid, ncvarid, psconv) 3381 call handle_nf90_err(ncret) 3382 3383 ncret = nf90_inq_varid(ncid, 'tt2conv', ncvarid) 3384 call handle_nf90_err(ncret) 3385 ncret = nf90_get_var(ncid, ncvarid, tt2conv) 3386 call handle_nf90_err(ncret) 3387 3388 ncret = nf90_inq_varid(ncid, 'td2conv', ncvarid) 3389 call handle_nf90_err(ncret) 3390 ncret = nf90_get_var(ncid, ncvarid, td2conv) 3391 call handle_nf90_err(ncret) 3392 3393 ncret = nf90_inq_varid(ncid, 'nconvlev', ncvarid) 3394 call handle_nf90_err(ncret) 3395 ncret = nf90_get_var(ncid, ncvarid, nconvlev) 3396 call handle_nf90_err(ncret) 3397 3398 ncret = nf90_inq_varid(ncid, 'nconvtop', ncvarid) 3399 call handle_nf90_err(ncret) 3400 ncret = nf90_get_var(ncid, ncvarid, nconvtop) 3401 call handle_nf90_err(ncret) 3402 3403 3404 3405 3406 PRINT *, 'SUM(pconv): ', SUM(pconv) 3407 PRINT *, 'SUM(qconv): ', SUM(qconv) 3408 PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) 3409 PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) 3410 PRINT *, 'tt2conv: ', tt2conv 3411 PRINT *, 'nconvlev: ', nconvlev 3390 3391 3392 3393 3394 3395 ! PRINT *, 'SUM(pconv): ', SUM(pconv) 3396 ! PRINT *, 'SUM(qconv): ', SUM(qconv) 3397 ! PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) 3398 ! PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) 3399 ! PRINT *, 'tt2conv: ', tt2conv 3400 ! PRINT *, 'nconvlev: ', nconvlev 3412 3401 3413 3402 3414 3403 3415 3404 ELSE 3416 STOP 'fpio (): Illegal operation'3405 STOP 'fpio_rawbin(): Illegal operation' 3417 3406 3418 3407 ENDIF 3419 END SUBROUTINE fpio 3420 3421 SUBROUTINE fpmetbinary_filetext(filename, cm_index) 3422 3423 ! This is a utility subroutine meant to be used for testing purposes. 3424 ! It facilitates the text output of variables read in from the 3425 ! specified .fp file. This routine will easily cause the program 3426 ! to crash due memory allocation issues, particularly when you are 3427 ! trying to text print 3d arrays in a single formatted statetment. 3428 3429 CHARACTER(LEN=*), INTENT(IN) :: filename 3430 INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in 3431 ! most com_mod variables. 3432 ! Should be 1 or 2 3433 3434 !OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', status='REPLACE', & 3435 ! form="formatted", access="stream") 3436 OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', & 3437 form="formatted", access="APPEND") 3438 3439 WRITE(IOUNIT_TEXTOUT, *) 'oro: ', oro 3440 WRITE(IOUNIT_TEXTOUT, *) 'excessoro: ', excessoro 3441 WRITE(IOUNIT_TEXTOUT, *) 'lsm: ', lsm 3442 WRITE(IOUNIT_TEXTOUT, *) 'xlanduse: ', xlanduse 3443 WRITE(IOUNIT_TEXTOUT, *) 'height: ', height 3444 3445 WRITE(IOUNIT_TEXTOUT, *) 'uu: ', uu(:,:,:,cm_index) 3446 WRITE(IOUNIT_TEXTOUT, *) 'vv: ', vv(:,:,:,cm_index) 3447 WRITE(IOUNIT_TEXTOUT, *) 'uupol: ', uupol(:,:,:,cm_index) 3448 WRITE(IOUNIT_TEXTOUT, *) 'vvpol: ', vvpol(:,:,:,cm_index) 3449 WRITE(IOUNIT_TEXTOUT, *) 'ww: ', ww(:,:,:,cm_index) 3450 WRITE(IOUNIT_TEXTOUT, *) 'tt: ', tt(:,:,:,cm_index) 3451 WRITE(IOUNIT_TEXTOUT, *) 'qv: ', qv(:,:,:,cm_index) 3452 WRITE(IOUNIT_TEXTOUT, *) 'pv: ', pv(:,:,:,cm_index) 3453 WRITE(IOUNIT_TEXTOUT, *) 'rho: ', rho(:,:,:,cm_index) 3454 WRITE(IOUNIT_TEXTOUT, *) 'drhodz: ', drhodz(:,:,:,cm_index) 3455 WRITE(IOUNIT_TEXTOUT, *) 'tth: ', tth(:,:,:,cm_index) 3456 WRITE(IOUNIT_TEXTOUT, *) 'qvh: ', qvh(:,:,:,cm_index) 3457 WRITE(IOUNIT_TEXTOUT, *) 'pplev: ', pplev(:,:,:,cm_index) 3458 WRITE(IOUNIT_TEXTOUT, *) 'clouds: ', clouds(:,:,:,cm_index) 3459 WRITE(IOUNIT_TEXTOUT, *) 'cloudsh: ', cloudsh(:,:,cm_index) 3460 3461 3462 3463 3464 CLOSE(IOUNIT_TEXTOUT) 3465 END SUBROUTINE fpmetbinary_filetext 3408 END SUBROUTINE fpio_rawbin 3409 3410 3411 3466 3412 3467 3413 subroutine handle_nf90_err(status) -
flexpart_code/par_mod.F90
r7e5f1dc rb398fb6 157 157 !********************************************* 158 158 159 integer,parameter :: maxnests=1, nxmaxn=180, nymaxn=100160 !integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0159 !integer,parameter :: maxnests=1, nxmaxn=180, nymaxn=100 160 integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0 161 161 !integer,parameter :: maxnests=1,nxmaxn=251,nymaxn=151 162 162 -
flexpart_code/readwind_nests.F90
r496c607 rb398fb6 275 275 ! Get the fpname 276 276 fpname = vtable_get_fpname(igrib, my_vtable) 277 print *, 'readwind_nests(): fpname: ', trim(fpname)277 !print *, 'readwind_nests(): fpname: ', trim(fpname) 278 278 279 279
Note: See TracChangeset
for help on using the changeset viewer.