diff --git a/flexpart_code/fpmetbinary_mod.F90 b/flexpart_code/fpmetbinary_mod.F90 index eb881f85c6e372e7c0d947f0d4d7fef82633fb3e..7620437a1ee7babdf07f6b2b930e845d15e8cc7b 100644 --- a/flexpart_code/fpmetbinary_mod.F90 +++ b/flexpart_code/fpmetbinary_mod.F90 @@ -111,19 +111,8 @@ CONTAINS & ncid) -#ifdef RAWBIN - OPEN(IOUNIT_DUMP, file=filename, action='WRITE', status='REPLACE', form="unformatted", access="stream") -#endif - - - - - CALL fpio(IOUNIT_DUMP, ncid, 'DUMP', cm_index) - -#ifdef RAWBIN - CLOSE(IOUNIT_DUMP) -#endif + CALL fpio(ncid, 'DUMP', cm_index) PRINT *, 'Closing NC4 file...' ncretval = nf90_close(ncid) @@ -152,175 +141,18 @@ PRINT *, "Opening nc file for reading: ", filename PRINT *, 'OPENED NC4 FILE FOR READING...' - -#ifdef RAWBIN - OPEN(IOUNIT_LOAD, file=filename, action='READ', status='OLD', form="unformatted", access="stream") -#endif - - CALL fpio(IOUNIT_LOAD, ncid, 'LOAD', cm_index) - -#ifdef RAWBIN - CLOSE(IOUNIT_LOAD) -#endif - + CALL fpio(ncid, 'LOAD', cm_index) CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) !PRINT *, 'Load walltime secs: ', (millisecs_stop-millisecs_start)/1000.0 END SUBROUTINE fpmetbinary_load - SUBROUTINE fpmetbinary_zero(cm_index) - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - ! Zeroes out, in local datastructures, the values dumped/loaded - ! This was written primarily as a testing mechanism. - ! DJM -- 17 February 2017 -- I don't think this routine has been used - ! for anything in recent past. Might want to consider 86'ing it. - ! The lines here correspond to READ and WRITE in the dump/load routines - - ! Scalar values - nx=0.0; ny=0.0; nxmin1=0.0; nymin1=0.0; nxfield=0.0 - nuvz=0.0; nwz=0.0; nz=0.0; nmixz=0.0; nlev_ec=0.0 - dx=0.0; dy=0.0; xlon0=0.0; ylat0=0.0; dxconst=0.0; dyconst=0.0 - - ! Fixed fields, static in time - oro=0.0; excessoro=0.0; lsm=0.0; xlanduse=0.0; height=0.0 - - ! 3d fields - uu(:,:,:,cm_index) = 0.0 - vv(:,:,:,cm_index) = 0.0 - uupol(:,:,:,cm_index) = 0.0 - vvpol(:,:,:,cm_index) = 0.0 - ww(:,:,:,cm_index) = 0.0 - tt(:,:,:,cm_index) = 0.0 - qv(:,:,:,cm_index) = 0.0 - pv(:,:,:,cm_index) = 0.0 - rho(:,:,:,cm_index) = 0.0 - drhodz(:,:,:,cm_index) = 0.0 - tth(:,:,:,cm_index) = 0.0 - qvh(:,:,:,cm_index) = 0.0 - pplev(:,:,:,cm_index) = 0.0 - clouds(:,:,:,cm_index) = 0.0 - cloudsh(:,:,cm_index) = 0.0 - - ! 2d fields - ps(:,:,:,cm_index) = 0.0 - sd(:,:,:,cm_index) = 0.0 - msl(:,:,:,cm_index) = 0.0 - tcc(:,:,:,cm_index) = 0.0 - u10(:,:,:,cm_index) = 0.0 - v10(:,:,:,cm_index) = 0.0 - tt2(:,:,:,cm_index) = 0.0 - td2(:,:,:,cm_index) = 0.0 - lsprec(:,:,:,cm_index) = 0.0 - convprec(:,:,:,cm_index) = 0.0 - sshf(:,:,:,cm_index) = 0.0 - ssr(:,:,:,cm_index) = 0.0 - surfstr(:,:,:,cm_index) = 0.0 - ustar(:,:,:,cm_index) = 0.0 - wstar(:,:,:,cm_index) = 0.0 - hmix(:,:,:,cm_index) = 0.0 - tropopause(:,:,:,cm_index) = 0.0 - oli(:,:,:,cm_index) = 0.0 - diffk(:,:,:,cm_index) = 0.0 - vdep(:,:,:,cm_index) = 0.0 - - ! 1d fields - z0(:) = 0.0 - akm(:) = 0.0 - bkm(:) = 0.0 - akz(:) = 0.0 - bkz(:) = 0.0 - aknew(:) = 0.0 - bknew(:) = 0.0 - - ! Nested, scalar values (for each nest) - nxn(:) = 0.0 - nyn(:) = 0.0 - dxn(:) = 0.0 - dyn(:) = 0.0 - xlon0n(:) = 0.0 - ylat0n(:) = 0.0 - - ! Nested fields, static in time - oron=0.0; excessoron=0.0; lsmn=0.0; xlandusen=0.0 - - ! 3d nested fields - uun(:,:,:,cm_index,:) = 0.0 - wwn(:,:,:,cm_index,:) = 0.0 - ttn(:,:,:,cm_index,:) = 0.0 - qvn(:,:,:,cm_index,:) = 0.0 - pvn(:,:,:,cm_index,:) = 0.0 - cloudsn(:,:,:,cm_index,:) = 0.0 - cloudsnh(:,:,cm_index,:) = 0.0 - rhon(:,:,:,cm_index,:) = 0.0 - drhodzn(:,:,:,cm_index,:) = 0.0 - tthn(:,:,:,cm_index,:) = 0.0 - qvhn(:,:,:,cm_index,:) = 0.0 - - ! 2d nested fields - psn(:,:,:,cm_index,:) = 0.0 - sdn(:,:,:,cm_index,:) = 0.0 - msln(:,:,:,cm_index,:) = 0.0 - tccn(:,:,:,cm_index,:) = 0.0 - u10n(:,:,:,cm_index,:) = 0.0 - v10n(:,:,:,cm_index,:) = 0.0 - tt2n(:,:,:,cm_index,:) = 0.0 - td2n(:,:,:,cm_index,:) = 0.0 - lsprecn(:,:,:,cm_index,:) = 0.0 - convprecn(:,:,:,cm_index,:) = 0.0 - sshfn(:,:,:,cm_index,:) = 0.0 - ssrn(:,:,:,cm_index,:) = 0.0 - surfstrn(:,:,:,cm_index,:) = 0.0 - ustarn(:,:,:,cm_index,:) = 0.0 - wstarn(:,:,:,cm_index,:) = 0.0 - hmixn(:,:,:,cm_index,:) = 0.0 - tropopausen(:,:,:,cm_index,:) = 0.0 - olin(:,:,:,cm_index,:) = 0.0 - diffkn(:,:,:,cm_index,:) = 0.0 - vdepn(:,:,:,cm_index,:) = 0.0 - - ! Auxiliary variables for nests - xresoln(:) = 0.0 - yresoln(:) = 0.0 - xln(:) = 0.0 - yln(:) = 0.0 - xrn(:) = 0.0 - yrn(:) = 0.0 - - ! Variables for polar stereographic projection - xglobal=.FALSE.; sglobal=.FALSE.; nglobal=.FALSE. - switchnorthg=0.0; switchsouthg=0.0 - southpolemap(:) = 0.0 - northpolemap(:) = 0.0 - - ! Variables declared in conv_mod (convection) - pconv(:) = 0.0 - phconv(:) = 0.0 - dpr(:) = 0.0 - pconv_hpa(:) = 0.0 - phconv_hpa(:) = 0.0 - ft(:) = 0.0 - fq(:) = 0.0 - fmass(:,:) = 0.0 - sub(:) = 0.0 - fmassfrac(:,:) = 0.0 - cbaseflux(:,:) = 0.0 - cbasefluxn(:,:,:) = 0.0 - tconv(:) = 0.0 - qconv(:) = 0.0 - qsconv(:) = 0.0 - psconv=0.0; tt2conv=0.0; td2conv=0.0 - nconvlev=0.0; nconvtop=0.0 - - END SUBROUTINE fpmetbinary_zero - - SUBROUTINE fpio(iounit, ncid, op, cm_index) + + SUBROUTINE fpio(ncid, op, cm_index) IMPLICIT NONE INTEGER, INTENT(IN) :: ncid ! NetCDF file id - INTEGER, INTENT(IN) :: iounit CHARACTER(LEN=4), INTENT(IN) :: op ! Operation - DUMP or LOAD INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in ! most com_mod variables. @@ -379,18 +211,12 @@ PRINT *, 'OPENED NC4 FILE FOR READING...' ! NEED TO FILL THIS IN FOR NC4 -#ifdef RAWBIN - WRITE (iounit) PREPROC_FORMAT_VERSION_STR -#endif ! Write the compiled max dimensions from par_mod - these are ! not meant to be reassigned during a LOAD, but used as "header" ! information to provide the structure of arrays -#ifdef RAWBIN - WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax -#endif ! Dimension for the preprocessing format string @@ -448,13 +274,6 @@ PRINT *, '1' call handle_nf90_err(ncret) - -#ifdef RAWBIN - WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield - WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec - WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst -#endif - ncret = nf90_def_var(ncid, 'nx', NF90_INT, ncvarid) call handle_nf90_err(ncret) ncret = nf90_put_var(ncid, ncvarid, nx) @@ -538,12 +357,6 @@ PRINT *, '1' ! Fixed fields, static in time - - -#ifdef RAWBIN - WRITE(iounit) oro, excessoro, lsm, xlanduse, height -#endif - dim2dids = (/nxmax_dimid, nymax_dimid/) ncret = nf90_def_var(ncid, 'oro', NF90_FLOAT, & @@ -613,28 +426,6 @@ PRINT *, '1' ! 3d fields - - - -#ifdef RAWBIN - WRITE(iounit) uu(:,:,:,cm_index) - WRITE(iounit) vv(:,:,:,cm_index) - WRITE(iounit) uupol(:,:,:,cm_index) - WRITE(iounit) vvpol(:,:,:,cm_index) - WRITE(iounit) ww(:,:,:,cm_index) - WRITE(iounit) tt(:,:,:,cm_index) - WRITE(iounit) qv(:,:,:,cm_index) - WRITE(iounit) pv(:,:,:,cm_index) - WRITE(iounit) rho(:,:,:,cm_index) - WRITE(iounit) drhodz(:,:,:,cm_index) - WRITE(iounit) tth(:,:,:,cm_index) - WRITE(iounit) qvh(:,:,:,cm_index) - WRITE(iounit) pplev(:,:,:,cm_index) - WRITE(iounit) clouds(:,:,:,cm_index) - WRITE(iounit) cloudsh(:,:,cm_index) -#endif - - dim3dids = (/nxmax_dimid, nymax_dimid, nzmax_dimid/) ncret = nf90_def_var(ncid, 'uu', NF90_FLOAT, & @@ -835,32 +626,6 @@ PRINT *, '1' ! 2d fields - - -#ifdef RAWBIN - WRITE(iounit) ps(:,:,:,cm_index) - WRITE(iounit) sd(:,:,:,cm_index) - WRITE(iounit) msl(:,:,:,cm_index) - WRITE(iounit) tcc(:,:,:,cm_index) - WRITE(iounit) u10(:,:,:,cm_index) - WRITE(iounit) v10(:,:,:,cm_index) - WRITE(iounit) tt2(:,:,:,cm_index) - WRITE(iounit) td2(:,:,:,cm_index) - WRITE(iounit) lsprec(:,:,:,cm_index) - WRITE(iounit) convprec(:,:,:,cm_index) - WRITE(iounit) sshf(:,:,:,cm_index) - WRITE(iounit) ssr(:,:,:,cm_index) - WRITE(iounit) surfstr(:,:,:,cm_index) - WRITE(iounit) ustar(:,:,:,cm_index) - WRITE(iounit) wstar(:,:,:,cm_index) - WRITE(iounit) hmix(:,:,:,cm_index) - WRITE(iounit) tropopause(:,:,:,cm_index) - WRITE(iounit) oli(:,:,:,cm_index) - WRITE(iounit) diffk(:,:,:,cm_index) - WRITE(iounit) vdep(:,:,:,cm_index) -#endif - - dim2dids = (/nxmax_dimid, nymax_dimid/) ncret = nf90_def_var(ncid, 'ps', NF90_FLOAT, & @@ -1117,19 +882,6 @@ PRINT *, '1' ! 1d fields - - - -#ifdef RAWBIN - WRITE(iounit) z0(:) - WRITE(iounit) akm(:) - WRITE(iounit) bkm(:) - WRITE(iounit) akz(:) - WRITE(iounit) bkz(:) - WRITE(iounit) aknew(:) - WRITE(iounit) bknew(:) -#endif - dim1dids = (/numclass_dimid/) ncret = nf90_def_var(ncid, 'z0', NF90_FLOAT, & @@ -1241,17 +993,7 @@ PRINT *, '1' call handle_nf90_err(ncret) -#ifdef RAWBIN - WRITE(iounit) nxn(:) - WRITE(iounit) nyn(:) - WRITE(iounit) dxn(:) - WRITE(iounit) dyn(:) - WRITE(iounit) xlon0n(:) - WRITE(iounit) ylat0n(:) -#endif - ! Nested, scalar values (for each nest) - dim1dids = (/maxnests_dimid/) ncret = nf90_def_var(ncid, 'nxn', NF90_INT, & @@ -1330,8 +1072,6 @@ PRINT *, '1' ! Nested fields, static over time - WRITE(iounit) oron, excessoron, lsmn, xlandusen - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) ncret = nf90_def_var(ncid, 'oron', NF90_FLOAT, & @@ -1389,24 +1129,6 @@ PRINT *, '1' ! 3d nested fields - - - -#ifdef RAWBIN - WRITE(iounit) uun(:,:,:,cm_index,:) - WRITE(iounit) vvn(:,:,:,cm_index,:) - WRITE(iounit) wwn(:,:,:,cm_index,:) - WRITE(iounit) ttn(:,:,:,cm_index,:) - WRITE(iounit) qvn(:,:,:,cm_index,:) - WRITE(iounit) pvn(:,:,:,cm_index,:) - WRITE(iounit) cloudsn(:,:,:,cm_index,:) - WRITE(iounit) cloudsnh(:,:,cm_index,:) - WRITE(iounit) rhon(:,:,:,cm_index,:) - WRITE(iounit) drhodzn(:,:,:,cm_index,:) - WRITE(iounit) tthn(:,:,:,cm_index,:) - WRITE(iounit) qvhn(:,:,:,cm_index,:) -#endif - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nzmax_dimid, maxnests_dimid/) ncret = nf90_def_var(ncid, 'uun', NF90_FLOAT, & @@ -1564,13 +1286,6 @@ PRINT *, '1' call handle_nf90_err(ncret) - - - - - - - PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) @@ -1578,32 +1293,6 @@ PRINT *, '1' ! 2d nested fields - - -#ifdef RAWBIN - WRITE(iounit) psn(:,:,:,cm_index,:) - WRITE(iounit) sdn(:,:,:,cm_index,:) - WRITE(iounit) msln(:,:,:,cm_index,:) - WRITE(iounit) tccn(:,:,:,cm_index,:) - WRITE(iounit) u10n(:,:,:,cm_index,:) - WRITE(iounit) v10n(:,:,:,cm_index,:) - WRITE(iounit) tt2n(:,:,:,cm_index,:) - WRITE(iounit) td2n(:,:,:,cm_index,:) - WRITE(iounit) lsprecn(:,:,:,cm_index,:) - WRITE(iounit) convprecn(:,:,:,cm_index,:) - WRITE(iounit) sshfn(:,:,:,cm_index,:) - WRITE(iounit) ssrn(:,:,:,cm_index,:) - WRITE(iounit) surfstrn(:,:,:,cm_index,:) - WRITE(iounit) ustarn(:,:,:,cm_index,:) - WRITE(iounit) wstarn(:,:,:,cm_index,:) - WRITE(iounit) hmixn(:,:,:,cm_index,:) - WRITE(iounit) tropopausen(:,:,:,cm_index,:) - WRITE(iounit) olin(:,:,:,cm_index,:) - WRITE(iounit) diffkn(:,:,:,cm_index,:) - WRITE(iounit) vdepn(:,:,:,cm_index,:) -#endif - - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) ncret = nf90_def_var(ncid, 'psn', NF90_FLOAT, & @@ -1851,28 +1540,13 @@ PRINT *, '1' call handle_nf90_err(ncret) - - PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) - - ! Auxiliary variables for nests - -#ifdef RAWBIN - WRITE(iounit) xresoln(:) - WRITE(iounit) yresoln(:) - WRITE(iounit) xln(:) - WRITE(iounit) yln(:) - WRITE(iounit) xrn(:) - WRITE(iounit) yrn(:) -#endif - - dim1dids = (/zero_to_maxnests_dimid/) ncret = nf90_def_var(ncid, 'xresoln', NF90_FLOAT, & @@ -1955,17 +1629,6 @@ PRINT *, '1' ! Variables for polar stereographic projection - - - -#ifdef RAWBIN - WRITE(iounit) xglobal, sglobal, nglobal - WRITE(iounit) switchnorthg, switchsouthg - WRITE(iounit) southpolemap(:) - WRITE(iounit) northpolemap(:) -#endif - - dim1dids = (/polemap_dimid/) ncret = nf90_def_var(ncid, 'southpolemap', NF90_FLOAT, & @@ -2024,29 +1687,6 @@ PRINT *, '1' PRINT *, 'switchsouthg: ', switchsouthg ! Variables declared in conv_mod (convection) - - -#ifdef RAWBIN - WRITE(iounit) pconv(:) - WRITE(iounit) phconv(:) - WRITE(iounit) dpr(:) - WRITE(iounit) pconv_hpa(:) - WRITE(iounit) phconv_hpa(:) - WRITE(iounit) ft(:) - WRITE(iounit) fq(:) - WRITE(iounit) fmass(:,:) - WRITE(iounit) sub(:) - WRITE(iounit) fmassfrac(:,:) - WRITE(iounit) cbaseflux(:,:) - WRITE(iounit) cbasefluxn(:,:,:) - WRITE(iounit) tconv(:) - WRITE(iounit) qconv(:) - WRITE(iounit) qsconv(:) - WRITE(iounit) psconv, tt2conv, td2conv - WRITE(iounit) nconvlev, nconvtop -#endif - - dim1dids = (/nconvlevmax_dimid/) ncret = nf90_def_var(ncid, 'pconv', NF90_FLOAT, & @@ -2236,18 +1876,6 @@ PRINT *, '1' ! Read the preprocessed format version string and insure it ! matches this version - - - - - - - -#ifdef RAWBIN - READ (iounit) temp_preproc_format_version_str -#endif - - ncret = nf90_inq_dimid(ncid, 'preproc_fmt_str_dim', preproc_fmt_str_dimid) call handle_nf90_err(ncret) ncret = nf90_inquire_dimension(ncid, preproc_fmt_str_dimid, preproc_fmt_str_dimname, & @@ -2284,22 +1912,7 @@ PRINT *, '1' ! current FLEXPART dimensions - they need to be the same, or else ! we abort. - - -#ifdef RAWBIN - READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, & -& temp_nuvzmax, temp_nwzmax -#endif - - - - - ! Get dimensions - - - - ncret = nf90_inq_dimid(ncid, 'nxmax', nxmax_dimid) call handle_nf90_err(ncret) ncret = nf90_inquire_dimension(ncid, nxmax_dimid, nxmax_dimname, & @@ -2380,14 +1993,6 @@ PRINT *, '1' ! Scalar values -#ifdef RAWBIN - READ(iounit) nx, ny, nxmin1, nymin1, nxfield - READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec - READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst -#endif - - - ! Get the varid , then read into scalar variable ncret = nf90_inq_varid(ncid, 'nx', ncvarid) call handle_nf90_err(ncret) @@ -2475,11 +2080,6 @@ PRINT *, '1' ! Fixed fields, static in time - -#ifdef RAWBIN - READ(iounit) oro, excessoro, lsm, xlanduse, height -#endif - ncret = nf90_inq_varid(ncid, 'oro', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, oro(0:nxmax-1,0:nymax-1)) @@ -2510,28 +2110,6 @@ PRINT *, '1' ! 3d fields - - -#ifdef RAWBIN - READ(iounit) uu(:,:,:,cm_index) - READ(iounit) vv(:,:,:,cm_index) - READ(iounit) uupol(:,:,:,cm_index) - READ(iounit) vvpol(:,:,:,cm_index) - READ(iounit) ww(:,:,:,cm_index) - READ(iounit) tt(:,:,:,cm_index) - READ(iounit) qv(:,:,:,cm_index) - READ(iounit) pv(:,:,:,cm_index) - READ(iounit) rho(:,:,:,cm_index) - READ(iounit) drhodz(:,:,:,cm_index) - READ(iounit) tth(:,:,:,cm_index) - READ(iounit) qvh(:,:,:,cm_index) - READ(iounit) pplev(:,:,:,cm_index) - READ(iounit) clouds(:,:,:,cm_index) - READ(iounit) cloudsh(:,:,cm_index) -#endif - - - ! Get the varid and read the variable into the array ncret = nf90_inq_varid(ncid, 'uu', ncvarid) call handle_nf90_err(ncret) @@ -2622,32 +2200,6 @@ PRINT *, '1' ! 2d fields - -#ifdef RAWBIN - READ(iounit) ps(:,:,:,cm_index) - READ(iounit) sd(:,:,:,cm_index) - READ(iounit) msl(:,:,:,cm_index) - READ(iounit) tcc(:,:,:,cm_index) - READ(iounit) u10(:,:,:,cm_index) - READ(iounit) v10(:,:,:,cm_index) - READ(iounit) tt2(:,:,:,cm_index) - READ(iounit) td2(:,:,:,cm_index) - READ(iounit) lsprec(:,:,:,cm_index) - READ(iounit) convprec(:,:,:,cm_index) - READ(iounit) sshf(:,:,:,cm_index) - READ(iounit) ssr(:,:,:,cm_index) - READ(iounit) surfstr(:,:,:,cm_index) - READ(iounit) ustar(:,:,:,cm_index) - READ(iounit) wstar(:,:,:,cm_index) - READ(iounit) hmix(:,:,:,cm_index) - READ(iounit) tropopause(:,:,:,cm_index) - READ(iounit) oli(:,:,:,cm_index) - READ(iounit) diffk(:,:,:,cm_index) - READ(iounit) vdep(:,:,:,cm_index) -#endif - - - ! Get the varid and read the variable into the array ncret = nf90_inq_varid(ncid, 'ps', ncvarid) call handle_nf90_err(ncret) @@ -2765,16 +2317,6 @@ PRINT *, '1' ! 1d fields -#ifdef RAWBIN - READ(iounit) z0(:) - READ(iounit) akm(:) - READ(iounit) bkm(:) - READ(iounit) akz(:) - READ(iounit) bkz(:) - READ(iounit) aknew(:) - READ(iounit) bknew(:) -#endif - ncret = nf90_inq_varid(ncid, 'z0', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, z0(1:numclass)) @@ -2864,20 +2406,6 @@ PRINT *, '1' ! Nested, scalar values (for each nest) - - - - -#ifdef RAWBIN - READ(iounit) nxn(:) - READ(iounit) nyn(:) - READ(iounit) dxn(:) - READ(iounit) dyn(:) - READ(iounit) xlon0n(:) - READ(iounit) ylat0n(:) -#endif - - ncret = nf90_inq_varid(ncid, 'nxn', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, nxn(1:maxnests)) @@ -2911,11 +2439,6 @@ PRINT *, '1' ! Nested fields, static over time - -#ifdef RAWBIN - READ(iounit) oron, excessoron, lsmn, xlandusen -#endif - ncret = nf90_inq_varid(ncid, 'oron', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, oron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) @@ -2944,21 +2467,6 @@ PRINT *, '1' ! 3d nested fields -#ifdef RAWBIN - READ(iounit) uun(:,:,:,cm_index,:) - READ(iounit) vvn(:,:,:,cm_index,:) - READ(iounit) wwn(:,:,:,cm_index,:) - READ(iounit) ttn(:,:,:,cm_index,:) - READ(iounit) qvn(:,:,:,cm_index,:) - READ(iounit) pvn(:,:,:,cm_index,:) - READ(iounit) cloudsn(:,:,:,cm_index,:) - READ(iounit) cloudsnh(:,:,cm_index,:) - READ(iounit) rhon(:,:,:,cm_index,:) - READ(iounit) drhodzn(:,:,:,cm_index,:) - READ(iounit) tthn(:,:,:,cm_index,:) - READ(iounit) qvhn(:,:,:,cm_index,:) -#endif - ncret = nf90_inq_varid(ncid, 'uun', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, uun(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) @@ -3030,32 +2538,6 @@ PRINT *, '1' ! 2d nested fields - - -#ifdef RAWBIN - READ(iounit) psn(:,:,:,cm_index,:) - READ(iounit) sdn(:,:,:,cm_index,:) - READ(iounit) msln(:,:,:,cm_index,:) - READ(iounit) tccn(:,:,:,cm_index,:) - READ(iounit) u10n(:,:,:,cm_index,:) - READ(iounit) v10n(:,:,:,cm_index,:) - READ(iounit) tt2n(:,:,:,cm_index,:) - READ(iounit) td2n(:,:,:,cm_index,:) - READ(iounit) lsprecn(:,:,:,cm_index,:) - READ(iounit) convprecn(:,:,:,cm_index,:) - READ(iounit) sshfn(:,:,:,cm_index,:) - READ(iounit) ssrn(:,:,:,cm_index,:) - READ(iounit) surfstrn(:,:,:,cm_index,:) - READ(iounit) ustarn(:,:,:,cm_index,:) - READ(iounit) wstarn(:,:,:,cm_index,:) - READ(iounit) hmixn(:,:,:,cm_index,:) - READ(iounit) tropopausen(:,:,:,cm_index,:) - READ(iounit) olin(:,:,:,cm_index,:) - READ(iounit) diffkn(:,:,:,cm_index,:) - READ(iounit) vdepn(:,:,:,cm_index,:) -#endif - - ncret = nf90_inq_varid(ncid, 'psn', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, psn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) @@ -3166,18 +2648,6 @@ PRINT *, '1' ! Auxiliary variables for nests - - -#ifdef RAWBIN - READ(iounit) xresoln(:) - READ(iounit) yresoln(:) - READ(iounit) xln(:) - READ(iounit) yln(:) - READ(iounit) xrn(:) - READ(iounit) yrn(:) -#endif - - ncret = nf90_inq_varid(ncid, 'xresoln', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, xresoln(0:maxnests)) @@ -3216,15 +2686,6 @@ PRINT *, '1' ! Variables for polar stereographic projection - - -#ifdef RAWBIN - READ(iounit) xglobal, sglobal, nglobal - READ(iounit) switchnorthg, switchsouthg - READ(iounit) southpolemap(:) - READ(iounit) northpolemap(:) -#endif - ncret = nf90_inq_varid(ncid, 'southpolemap', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, southpolemap(:)) @@ -3276,30 +2737,6 @@ PRINT *, '1' ! Variables declared in conv_mod (convection) - - -#ifdef RAWBIN - READ(iounit) pconv(:) - READ(iounit) phconv(:) - READ(iounit) dpr(:) - READ(iounit) pconv_hpa(:) - READ(iounit) phconv_hpa(:) - READ(iounit) ft(:) - READ(iounit) fq(:) - READ(iounit) fmass(:,:) - READ(iounit) sub(:) - READ(iounit) fmassfrac(:,:) - READ(iounit) cbaseflux(:,:) - READ(iounit) cbasefluxn(:,:,:) - READ(iounit) tconv(:) - READ(iounit) qconv(:) - READ(iounit) qsconv(:) - READ(iounit) psconv, tt2conv, td2conv - READ(iounit) nconvlev, nconvtop -#endif - - - ncret = nf90_inq_varid(ncid, 'pconv', ncvarid) call handle_nf90_err(ncret) ncret = nf90_get_var(ncid, ncvarid, pconv(:)) @@ -3418,51 +2855,560 @@ PRINT *, '1' ENDIF END SUBROUTINE fpio - SUBROUTINE fpmetbinary_filetext(filename, cm_index) - ! This is a utility subroutine meant to be used for testing purposes. - ! It facilitates the text output of variables read in from the - ! specified .fp file. This routine will easily cause the program - ! to crash due memory allocation issues, particularly when you are - ! trying to text print 3d arrays in a single formatted statetment. - - CHARACTER(LEN=*), INTENT(IN) :: filename + + + + SUBROUTINE fpio_rawbin(iounit, op, cm_index) + IMPLICIT NONE + INTEGER, INTENT(IN) :: iounit + CHARACTER(LEN=4), INTENT(IN) :: op ! Operation - DUMP or LOAD INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in ! most com_mod variables. ! Should be 1 or 2 - !OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', status='REPLACE', & - ! form="formatted", access="stream") - OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', & - form="formatted", access="APPEND") - - WRITE(IOUNIT_TEXTOUT, *) 'oro: ', oro - WRITE(IOUNIT_TEXTOUT, *) 'excessoro: ', excessoro - WRITE(IOUNIT_TEXTOUT, *) 'lsm: ', lsm - WRITE(IOUNIT_TEXTOUT, *) 'xlanduse: ', xlanduse - WRITE(IOUNIT_TEXTOUT, *) 'height: ', height - - WRITE(IOUNIT_TEXTOUT, *) 'uu: ', uu(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vv: ', vv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'uupol: ', uupol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vvpol: ', vvpol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'ww: ', ww(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tt: ', tt(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qv: ', qv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pv: ', pv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'rho: ', rho(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'drhodz: ', drhodz(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tth: ', tth(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qvh: ', qvh(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pplev: ', pplev(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'clouds: ', clouds(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'cloudsh: ', cloudsh(:,:,cm_index) - - - - - CLOSE(IOUNIT_TEXTOUT) - END SUBROUTINE fpmetbinary_filetext + + INTEGER :: temp_integer ! temporary value + + + ! These are temporary variables, used in the LOAD option, for + ! comparing against the current values in FLEXPART of nxmax, nymax, ... + INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, & +& temp_nuvzmax, temp_nwzmax, & +& temp_maxspec, temp_numclass,& +& temp_maxnests, temp_nxmaxn, temp_nymaxn, temp_preproc_fmt_str_dim + + CHARACTER(LEN=PREPROC_FMT_STR_DIM) :: temp_preproc_format_version_str + + CHARACTER(LEN=128) :: errmesg + + INTEGER, PARAMETER :: DEF_LEVEL = 3 + + if (op == 'DUMP') THEN + + + ! Write the preprocessing format version string + ! NEED TO FILL THIS IN FOR NC4 + + + + WRITE (iounit) PREPROC_FORMAT_VERSION_STR + + + ! Write the compiled max dimensions from par_mod - these are + ! not meant to be reassigned during a LOAD, but used as "header" + ! information to provide the structure of arrays + + + WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax + + + + + ! Scalar values + + ! Fixed fields, static in time + + + + WRITE(iounit) oro, excessoro, lsm, xlanduse, height + + + + + ! 3d fields + WRITE(iounit) uu(:,:,:,cm_index) + WRITE(iounit) vv(:,:,:,cm_index) + WRITE(iounit) uupol(:,:,:,cm_index) + WRITE(iounit) vvpol(:,:,:,cm_index) + WRITE(iounit) ww(:,:,:,cm_index) + WRITE(iounit) tt(:,:,:,cm_index) + WRITE(iounit) qv(:,:,:,cm_index) + WRITE(iounit) pv(:,:,:,cm_index) + WRITE(iounit) rho(:,:,:,cm_index) + WRITE(iounit) drhodz(:,:,:,cm_index) + WRITE(iounit) tth(:,:,:,cm_index) + WRITE(iounit) qvh(:,:,:,cm_index) + WRITE(iounit) pplev(:,:,:,cm_index) + WRITE(iounit) clouds(:,:,:,cm_index) + WRITE(iounit) cloudsh(:,:,cm_index) + + + +! PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & +!& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) + +! PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & +!& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) + + + + ! 2d fields + WRITE(iounit) ps(:,:,:,cm_index) + WRITE(iounit) sd(:,:,:,cm_index) + WRITE(iounit) msl(:,:,:,cm_index) + WRITE(iounit) tcc(:,:,:,cm_index) + WRITE(iounit) u10(:,:,:,cm_index) + WRITE(iounit) v10(:,:,:,cm_index) + WRITE(iounit) tt2(:,:,:,cm_index) + WRITE(iounit) td2(:,:,:,cm_index) + WRITE(iounit) lsprec(:,:,:,cm_index) + WRITE(iounit) convprec(:,:,:,cm_index) + WRITE(iounit) sshf(:,:,:,cm_index) + WRITE(iounit) ssr(:,:,:,cm_index) + WRITE(iounit) surfstr(:,:,:,cm_index) + WRITE(iounit) ustar(:,:,:,cm_index) + WRITE(iounit) wstar(:,:,:,cm_index) + WRITE(iounit) hmix(:,:,:,cm_index) + WRITE(iounit) tropopause(:,:,:,cm_index) + WRITE(iounit) oli(:,:,:,cm_index) + WRITE(iounit) diffk(:,:,:,cm_index) + WRITE(iounit) vdep(:,:,:,cm_index) + + + + + ! 1d fields + WRITE(iounit) z0(:) + WRITE(iounit) akm(:) + WRITE(iounit) bkm(:) + WRITE(iounit) akz(:) + WRITE(iounit) bkz(:) + WRITE(iounit) aknew(:) + WRITE(iounit) bknew(:) + + + + + +! PRINT *, 'SUM(bknew(1:nzmax)): ', & +!& SUM(bknew(1:nzmax)) + + + + ! Getting ready to add in nested code + + ! These are compiled max dimensions from par_mod - these are + ! not meant to be reassigned during a LOAD, but used as "header" + ! information to provide the structure of arrays + WRITE(iounit) nxn(:) + WRITE(iounit) nyn(:) + WRITE(iounit) dxn(:) + WRITE(iounit) dyn(:) + WRITE(iounit) xlon0n(:) + WRITE(iounit) ylat0n(:) + + ! Nested, scalar values (for each nest) + + + ! Nested fields, static over time + WRITE(iounit) oron, excessoron, lsmn, xlandusen + + +! PRINT *, 'SUM(oron): ', SUM(oron) + + + + ! 3d nested fields + WRITE(iounit) uun(:,:,:,cm_index,:) + WRITE(iounit) vvn(:,:,:,cm_index,:) + WRITE(iounit) wwn(:,:,:,cm_index,:) + WRITE(iounit) ttn(:,:,:,cm_index,:) + WRITE(iounit) qvn(:,:,:,cm_index,:) + WRITE(iounit) pvn(:,:,:,cm_index,:) + WRITE(iounit) cloudsn(:,:,:,cm_index,:) + WRITE(iounit) cloudsnh(:,:,cm_index,:) + WRITE(iounit) rhon(:,:,:,cm_index,:) + WRITE(iounit) drhodzn(:,:,:,cm_index,:) + WRITE(iounit) tthn(:,:,:,cm_index,:) + WRITE(iounit) qvhn(:,:,:,cm_index,:) + + + +! PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) +! PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) +! PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) + + + + ! 2d nested fields + WRITE(iounit) psn(:,:,:,cm_index,:) + WRITE(iounit) sdn(:,:,:,cm_index,:) + WRITE(iounit) msln(:,:,:,cm_index,:) + WRITE(iounit) tccn(:,:,:,cm_index,:) + WRITE(iounit) u10n(:,:,:,cm_index,:) + WRITE(iounit) v10n(:,:,:,cm_index,:) + WRITE(iounit) tt2n(:,:,:,cm_index,:) + WRITE(iounit) td2n(:,:,:,cm_index,:) + WRITE(iounit) lsprecn(:,:,:,cm_index,:) + WRITE(iounit) convprecn(:,:,:,cm_index,:) + WRITE(iounit) sshfn(:,:,:,cm_index,:) + WRITE(iounit) ssrn(:,:,:,cm_index,:) + WRITE(iounit) surfstrn(:,:,:,cm_index,:) + WRITE(iounit) ustarn(:,:,:,cm_index,:) + WRITE(iounit) wstarn(:,:,:,cm_index,:) + WRITE(iounit) hmixn(:,:,:,cm_index,:) + WRITE(iounit) tropopausen(:,:,:,cm_index,:) + WRITE(iounit) olin(:,:,:,cm_index,:) + WRITE(iounit) diffkn(:,:,:,cm_index,:) + WRITE(iounit) vdepn(:,:,:,cm_index,:) + + + +! PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) +! PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) +! PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) + + + + + + ! Auxiliary variables for nests + WRITE(iounit) xresoln(:) + WRITE(iounit) yresoln(:) + WRITE(iounit) xln(:) + WRITE(iounit) yln(:) + WRITE(iounit) xrn(:) + WRITE(iounit) yrn(:) + + + +! PRINT *, 'SUM(yresoln): ', SUM(yresoln) +! PRINT *, 'SUM(xrn): ', SUM(xrn) + + + + ! Variables for polar stereographic projection + WRITE(iounit) xglobal, sglobal, nglobal + WRITE(iounit) switchnorthg, switchsouthg + WRITE(iounit) southpolemap(:) + WRITE(iounit) northpolemap(:) + + + + + +! PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) +! PRINT *, 'xglobal: ', xglobal +! PRINT *, 'sglobal: ', sglobal +! PRINT *, 'nglobal: ', nglobal +! PRINT *, 'switchsouthg: ', switchsouthg + + ! Variables declared in conv_mod (convection) + WRITE(iounit) pconv(:) + WRITE(iounit) phconv(:) + WRITE(iounit) dpr(:) + WRITE(iounit) pconv_hpa(:) + WRITE(iounit) phconv_hpa(:) + WRITE(iounit) ft(:) + WRITE(iounit) fq(:) + WRITE(iounit) fmass(:,:) + WRITE(iounit) sub(:) + WRITE(iounit) fmassfrac(:,:) + WRITE(iounit) cbaseflux(:,:) + WRITE(iounit) cbasefluxn(:,:,:) + WRITE(iounit) tconv(:) + WRITE(iounit) qconv(:) + WRITE(iounit) qsconv(:) + WRITE(iounit) psconv, tt2conv, td2conv + WRITE(iounit) nconvlev, nconvtop + + + + +! PRINT *, 'SUM(pconv): ', SUM(pconv) +! PRINT *, 'SUM(qconv): ', SUM(qconv) +! PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) +! PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) +! PRINT *, 'tt2conv: ', tt2conv +! PRINT *, 'nconvlev: ', nconvlev + + + + ELSE IF (op == 'LOAD') THEN + + ! Read the preprocessed format version string and insure it + ! matches this version + READ (iounit) temp_preproc_format_version_str + + PRINT *, 'Reading preprocessed file format version: ', & +& temp_preproc_format_version_str + IF (TRIM(temp_preproc_format_version_str) == & +& TRIM(PREPROC_FORMAT_VERSION_STR)) THEN + CONTINUE + ELSE + ! PRINT *, '' GK: causes relocation truncated to fit: R_X86_64_32 + PRINT *, 'Inconsistent preprocessing format version' + PRINT *, 'Expected Version: ', PREPROC_FORMAT_VERSION_STR + PRINT *, 'Detected Version: ', temp_preproc_format_version_str + ! PRINT *, '' + STOP + END IF + + + ! Read the compiled max dimensions that were dumped from par_mod + ! when creating the fp file, so that we can compare against + ! current FLEXPART dimensions - they need to be the same, or else + ! we abort. + READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, & +& temp_nuvzmax, temp_nwzmax + + + + + + ! Get dimensions + IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. & +& (temp_nzmax == nzmax) .AND. & +& (temp_nuvzmax == nuvzmax) .AND. & +& (temp_nwzmax == nwzmax) ) THEN + CONTINUE + ELSE + PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' + PRINT *, ' FP file Compiled FP' + PRINT *, 'nxmax: ', temp_nxmax, ' ', nxmax + PRINT *, 'nymax: ', temp_nymax, ' ', nymax + PRINT *, 'nzmax: ', temp_nzmax, ' ', nzmax + PRINT *, 'nuvzmax: ', temp_nuvzmax, ' ', nuvzmax + PRINT *, 'nwzmax: ', temp_nwzmax, ' ', nwzmax + STOP + END IF + + + + + ! Scalar values + READ(iounit) nx, ny, nxmin1, nymin1, nxfield + READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec + READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst + + + + + + ! Fixed fields, static in time + READ(iounit) oro, excessoro, lsm, xlanduse, height + + + + ! 3d fields + READ(iounit) uu(:,:,:,cm_index) + READ(iounit) vv(:,:,:,cm_index) + READ(iounit) uupol(:,:,:,cm_index) + READ(iounit) vvpol(:,:,:,cm_index) + READ(iounit) ww(:,:,:,cm_index) + READ(iounit) tt(:,:,:,cm_index) + READ(iounit) qv(:,:,:,cm_index) + READ(iounit) pv(:,:,:,cm_index) + READ(iounit) rho(:,:,:,cm_index) + READ(iounit) drhodz(:,:,:,cm_index) + READ(iounit) tth(:,:,:,cm_index) + READ(iounit) qvh(:,:,:,cm_index) + READ(iounit) pplev(:,:,:,cm_index) + READ(iounit) clouds(:,:,:,cm_index) + READ(iounit) cloudsh(:,:,cm_index) + + +! PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & +!& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) + + +! PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & +!& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) + + + + ! 2d fields + READ(iounit) ps(:,:,:,cm_index) + READ(iounit) sd(:,:,:,cm_index) + READ(iounit) msl(:,:,:,cm_index) + READ(iounit) tcc(:,:,:,cm_index) + READ(iounit) u10(:,:,:,cm_index) + READ(iounit) v10(:,:,:,cm_index) + READ(iounit) tt2(:,:,:,cm_index) + READ(iounit) td2(:,:,:,cm_index) + READ(iounit) lsprec(:,:,:,cm_index) + READ(iounit) convprec(:,:,:,cm_index) + READ(iounit) sshf(:,:,:,cm_index) + READ(iounit) ssr(:,:,:,cm_index) + READ(iounit) surfstr(:,:,:,cm_index) + READ(iounit) ustar(:,:,:,cm_index) + READ(iounit) wstar(:,:,:,cm_index) + READ(iounit) hmix(:,:,:,cm_index) + READ(iounit) tropopause(:,:,:,cm_index) + READ(iounit) oli(:,:,:,cm_index) + READ(iounit) diffk(:,:,:,cm_index) + READ(iounit) vdep(:,:,:,cm_index) + + + + + +! PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & +!& SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) + +! PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & +!& SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) + + + + + ! 1d fields + READ(iounit) z0(:) + READ(iounit) akm(:) + READ(iounit) bkm(:) + READ(iounit) akz(:) + READ(iounit) bkz(:) + READ(iounit) aknew(:) + READ(iounit) bknew(:) + + + +! PRINT *, 'SUM(bknew(1:nzmax)): ', & +!& SUM(bknew(1:nzmax)) + + + + + + ! Nested, scalar values (for each nest) + READ(iounit) nxn(:) + READ(iounit) nyn(:) + READ(iounit) dxn(:) + READ(iounit) dyn(:) + READ(iounit) xlon0n(:) + READ(iounit) ylat0n(:) + + + + ! Nested fields, static over time + READ(iounit) oron, excessoron, lsmn, xlandusen + + + +! PRINT *, 'SUM(oron): ', SUM(oron) + + + + + ! 3d nested fields + READ(iounit) uun(:,:,:,cm_index,:) + READ(iounit) vvn(:,:,:,cm_index,:) + READ(iounit) wwn(:,:,:,cm_index,:) + READ(iounit) ttn(:,:,:,cm_index,:) + READ(iounit) qvn(:,:,:,cm_index,:) + READ(iounit) pvn(:,:,:,cm_index,:) + READ(iounit) cloudsn(:,:,:,cm_index,:) + READ(iounit) cloudsnh(:,:,cm_index,:) + READ(iounit) rhon(:,:,:,cm_index,:) + READ(iounit) drhodzn(:,:,:,cm_index,:) + READ(iounit) tthn(:,:,:,cm_index,:) + READ(iounit) qvhn(:,:,:,cm_index,:) + +! PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) +! PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) +! PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) + + + + + ! 2d nested fields + READ(iounit) psn(:,:,:,cm_index,:) + READ(iounit) sdn(:,:,:,cm_index,:) + READ(iounit) msln(:,:,:,cm_index,:) + READ(iounit) tccn(:,:,:,cm_index,:) + READ(iounit) u10n(:,:,:,cm_index,:) + READ(iounit) v10n(:,:,:,cm_index,:) + READ(iounit) tt2n(:,:,:,cm_index,:) + READ(iounit) td2n(:,:,:,cm_index,:) + READ(iounit) lsprecn(:,:,:,cm_index,:) + READ(iounit) convprecn(:,:,:,cm_index,:) + READ(iounit) sshfn(:,:,:,cm_index,:) + READ(iounit) ssrn(:,:,:,cm_index,:) + READ(iounit) surfstrn(:,:,:,cm_index,:) + READ(iounit) ustarn(:,:,:,cm_index,:) + READ(iounit) wstarn(:,:,:,cm_index,:) + READ(iounit) hmixn(:,:,:,cm_index,:) + READ(iounit) tropopausen(:,:,:,cm_index,:) + READ(iounit) olin(:,:,:,cm_index,:) + READ(iounit) diffkn(:,:,:,cm_index,:) + READ(iounit) vdepn(:,:,:,cm_index,:) + +! PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) +! PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) +! PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) + + + + ! Auxiliary variables for nests + READ(iounit) xresoln(:) + READ(iounit) yresoln(:) + READ(iounit) xln(:) + READ(iounit) yln(:) + READ(iounit) xrn(:) + + +! PRINT *, 'SUM(yresoln): ', SUM(yresoln) +! PRINT *, 'SUM(xrn): ', SUM(xrn) + + + + ! Variables for polar stereographic projection + READ(iounit) xglobal, sglobal, nglobal + READ(iounit) switchnorthg, switchsouthg + READ(iounit) southpolemap(:) + READ(iounit) northpolemap(:) + + +! PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) +! PRINT *, 'xglobal: ', xglobal +! PRINT *, 'sglobal: ', sglobal +! PRINT *, 'nglobal: ', nglobal +! PRINT *, 'switchsouthg: ', switchsouthg + + + + + ! Variables declared in conv_mod (convection) + READ(iounit) pconv(:) + READ(iounit) phconv(:) + READ(iounit) dpr(:) + READ(iounit) pconv_hpa(:) + READ(iounit) phconv_hpa(:) + READ(iounit) ft(:) + READ(iounit) fq(:) + READ(iounit) fmass(:,:) + READ(iounit) sub(:) + READ(iounit) fmassfrac(:,:) + READ(iounit) cbaseflux(:,:) + READ(iounit) cbasefluxn(:,:,:) + READ(iounit) tconv(:) + READ(iounit) qconv(:) + READ(iounit) qsconv(:) + READ(iounit) psconv, tt2conv, td2conv + READ(iounit) nconvlev, nconvtop + + + + + +! PRINT *, 'SUM(pconv): ', SUM(pconv) +! PRINT *, 'SUM(qconv): ', SUM(qconv) +! PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) +! PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) +! PRINT *, 'tt2conv: ', tt2conv +! PRINT *, 'nconvlev: ', nconvlev + + + + ELSE + STOP 'fpio_rawbin(): Illegal operation' + + ENDIF + END SUBROUTINE fpio_rawbin + + + subroutine handle_nf90_err(status) diff --git a/flexpart_code/fpmetbinary_mod.F90.DEV b/flexpart_code/fpmetbinary_mod.F90.DEV deleted file mode 100644 index 1cbb4ffc8d0377cea033f4d668975e6fdf04c18e..0000000000000000000000000000000000000000 --- a/flexpart_code/fpmetbinary_mod.F90.DEV +++ /dev/null @@ -1,3474 +0,0 @@ -MODULE fpmetbinary_mod - - !***************************************************************************** - ! * - ! Contains data and routines for dumping and loading processed met * - ! fields. * - ! Authors Don Morton (Don.Morton@borealscicomp.com) * - ! Delia Arnold (deliona.arnold@gmail.com) * - ! * - ! 07 Oct 2016 * - ! * - ! Most of the data structures from com_mod.f90 that are dumped and * - ! loaded have a final dimension of size two, so that they may hold data * - ! from two met files. When we dump the contents into a .fp file, we * - ! need to specify which of the two to dump. Likewise, when we load * - ! from a .fp file, we need to specify which of the two possible indices * - ! to load into. * - ! * - ! Note that these routines need more robustness. For example, what * - ! what happens if the filename can't be read or written. Or, what * - ! happens if a read or write fails in any way. Right now, it's crash * - ! city. * - ! * - ! Recent enhancements (07 Oct 2016) DJM: * - ! * - ! - file format changed so that compiled dimensions are output, and * - ! during input these same dimensions are compared with the dimensions * - ! compiled into the flexpart that is reading it. A discrepancy * - ! causes abort, so that time isn't wasted reading an incompatible * - ! file. * - ! * - ! - file format changed so that first item is an 8-character string * - ! depicting the version of the preprocessed file format. * - ! An inconsistency between a detected and expected string results * - ! in program abort. * - ! * - ! *** IMPORTANT *** - when the format of the preprocessed output is * - ! modified in any way, be sure to change the version string below, * - ! PREPROC_FORMAT_VERSION_STR, so that attempts to read the output * - ! with a different format version will cause an abort. * - ! * - !***************************************************************************** - - USE com_mod - USE conv_mod - USE par_mod, ONLY : nxmax, nymax, nzmax, nuvzmax, nwzmax, numclass, maxspec, & -& maxnests, nxmaxn, nymaxn - - USE netcdf - - IMPLICIT NONE - - ! Users may want to change these IO Unit values if they conflict with other parts - ! of code - INTEGER, PARAMETER :: IOUNIT_DUMP = 33, IOUNIT_LOAD = 34, & - IOUNIT_TEXTOUT = 35 - - ! When a change is made to the format of the preprocessed file, such that - ! this routine will not be able to read a previous version, this version - ! string should be modified - CHARACTER(LEN=12), PARAMETER :: PREPROC_FORMAT_VERSION_STR = 'FP_p-9.3.1'//char(0) - - PRIVATE IOUNIT_DUMP, IOUNIT_LOAD, IOUNIT_TEXTOUT, fpio, & -& PREPROC_FORMAT_VERSION_STR - - -CONTAINS - - !***************************************************************************** - ! * - ! Subroutines fpmetbinary_dump() and fpmetbinary_load() provide the * - ! public interface to * - ! this module functionality. I created the PRIVATE fpio() because I * - ! wanted all interactions with variables to be in one place. The read * - ! and write operations need to be done in exactly the same sequence, so * - ! I felt like keeping them in the same routine would at least allow for * - ! coders to more easily compare the two sequences than if they were * - ! separate. * - ! * - ! As mentioned above, the dumps and loads will, for most variables, * - ! need to refer to one of two index values for the last dimension of * - ! the array. * - ! * - !***************************************************************************** - - - SUBROUTINE fpmetbinary_dump(filename, cm_index) - CHARACTER(LEN=*), INTENT(IN) :: filename ! Full path for file - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - INTEGER millisecs_start, millisecs_stop, count_rate, count_max - - INTEGER :: ncretval, ncid ! NetCDF func return value, file id - - CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max) - - ! Create and open NC4 file for writing - PRINT *, 'Opening NC4 file...' - ncretval = nf90_create(filename // ".nc4", & -& OR(NF90_CLOBBER, NF90_HDF5), & -& ncid) - - -#ifdef RAWBIN - OPEN(IOUNIT_DUMP, file=filename, action='WRITE', status='REPLACE', form="unformatted", access="stream") -#endif - - - - - - CALL fpio(IOUNIT_DUMP, ncid, 'DUMP', cm_index) - -#ifdef RAWBIN - CLOSE(IOUNIT_DUMP) -#endif - - PRINT *, 'Closing NC4 file...' - ncretval = nf90_close(ncid) - - CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) - - !PRINT *, 'Dump walltime secs: ', (millisecs_stop-millisecs_start)/1000.0 - END SUBROUTINE fpmetbinary_dump - - SUBROUTINE fpmetbinary_load(filename, cm_index) - CHARACTER(LEN=*), INTENT(IN) :: filename ! Full path for file - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - INTEGER :: ncretval, ncid ! NetCDF func return value, file id - - INTEGER millisecs_start, millisecs_stop, count_rate, count_max - - CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max) - -PRINT *, "filename: ", filename -PRINT *, "Opening nc file for reading: ", filename // ".nc4" - ncretval = nf90_open(filename // ".nc4", NF90_NOWRITE, ncid) - call handle_nf90_err(ncretval) -PRINT *, 'OPENED NC4 FILE FOR READING...' - - - -#ifdef RAWBIN - OPEN(IOUNIT_LOAD, file=filename, action='READ', status='OLD', form="unformatted", access="stream") -#endif - - CALL fpio(IOUNIT_LOAD, ncid, 'LOAD', cm_index) - -#ifdef RAWBIN - CLOSE(IOUNIT_LOAD) -#endif - - - CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) - !PRINT *, 'Load walltime secs: ', (millisecs_stop-millisecs_start)/1000.0 - END SUBROUTINE fpmetbinary_load - - SUBROUTINE fpmetbinary_zero(cm_index) - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - - ! Zeroes out, in local datastructures, the values dumped/loaded - ! This was written primarily as a testing mechanism. - ! DJM -- 17 February 2017 -- I don't think this routine has been used - ! for anything in recent past. Might want to consider 86'ing it. - ! The lines here correspond to READ and WRITE in the dump/load routines - - ! Scalar values - nx=0.0; ny=0.0; nxmin1=0.0; nymin1=0.0; nxfield=0.0 - nuvz=0.0; nwz=0.0; nz=0.0; nmixz=0.0; nlev_ec=0.0 - dx=0.0; dy=0.0; xlon0=0.0; ylat0=0.0; dxconst=0.0; dyconst=0.0 - - ! Fixed fields, static in time - oro=0.0; excessoro=0.0; lsm=0.0; xlanduse=0.0; height=0.0 - - ! 3d fields - uu(:,:,:,cm_index) = 0.0 - vv(:,:,:,cm_index) = 0.0 - uupol(:,:,:,cm_index) = 0.0 - vvpol(:,:,:,cm_index) = 0.0 - ww(:,:,:,cm_index) = 0.0 - tt(:,:,:,cm_index) = 0.0 - qv(:,:,:,cm_index) = 0.0 - pv(:,:,:,cm_index) = 0.0 - rho(:,:,:,cm_index) = 0.0 - drhodz(:,:,:,cm_index) = 0.0 - tth(:,:,:,cm_index) = 0.0 - qvh(:,:,:,cm_index) = 0.0 - pplev(:,:,:,cm_index) = 0.0 - clouds(:,:,:,cm_index) = 0.0 - cloudsh(:,:,cm_index) = 0.0 - - ! 2d fields - ps(:,:,:,cm_index) = 0.0 - sd(:,:,:,cm_index) = 0.0 - msl(:,:,:,cm_index) = 0.0 - tcc(:,:,:,cm_index) = 0.0 - u10(:,:,:,cm_index) = 0.0 - v10(:,:,:,cm_index) = 0.0 - tt2(:,:,:,cm_index) = 0.0 - td2(:,:,:,cm_index) = 0.0 - lsprec(:,:,:,cm_index) = 0.0 - convprec(:,:,:,cm_index) = 0.0 - sshf(:,:,:,cm_index) = 0.0 - ssr(:,:,:,cm_index) = 0.0 - surfstr(:,:,:,cm_index) = 0.0 - ustar(:,:,:,cm_index) = 0.0 - wstar(:,:,:,cm_index) = 0.0 - hmix(:,:,:,cm_index) = 0.0 - tropopause(:,:,:,cm_index) = 0.0 - oli(:,:,:,cm_index) = 0.0 - diffk(:,:,:,cm_index) = 0.0 - vdep(:,:,:,cm_index) = 0.0 - - ! 1d fields - z0(:) = 0.0 - akm(:) = 0.0 - bkm(:) = 0.0 - akz(:) = 0.0 - bkz(:) = 0.0 - aknew(:) = 0.0 - bknew(:) = 0.0 - - ! Nested, scalar values (for each nest) - nxn(:) = 0.0 - nyn(:) = 0.0 - dxn(:) = 0.0 - dyn(:) = 0.0 - xlon0n(:) = 0.0 - ylat0n(:) = 0.0 - - ! Nested fields, static in time - oron=0.0; excessoron=0.0; lsmn=0.0; xlandusen=0.0 - - ! 3d nested fields - uun(:,:,:,cm_index,:) = 0.0 - wwn(:,:,:,cm_index,:) = 0.0 - ttn(:,:,:,cm_index,:) = 0.0 - qvn(:,:,:,cm_index,:) = 0.0 - pvn(:,:,:,cm_index,:) = 0.0 - cloudsn(:,:,:,cm_index,:) = 0.0 - cloudsnh(:,:,cm_index,:) = 0.0 - rhon(:,:,:,cm_index,:) = 0.0 - drhodzn(:,:,:,cm_index,:) = 0.0 - tthn(:,:,:,cm_index,:) = 0.0 - qvhn(:,:,:,cm_index,:) = 0.0 - - ! 2d nested fields - psn(:,:,:,cm_index,:) = 0.0 - sdn(:,:,:,cm_index,:) = 0.0 - msln(:,:,:,cm_index,:) = 0.0 - tccn(:,:,:,cm_index,:) = 0.0 - u10n(:,:,:,cm_index,:) = 0.0 - v10n(:,:,:,cm_index,:) = 0.0 - tt2n(:,:,:,cm_index,:) = 0.0 - td2n(:,:,:,cm_index,:) = 0.0 - lsprecn(:,:,:,cm_index,:) = 0.0 - convprecn(:,:,:,cm_index,:) = 0.0 - sshfn(:,:,:,cm_index,:) = 0.0 - ssrn(:,:,:,cm_index,:) = 0.0 - surfstrn(:,:,:,cm_index,:) = 0.0 - ustarn(:,:,:,cm_index,:) = 0.0 - wstarn(:,:,:,cm_index,:) = 0.0 - hmixn(:,:,:,cm_index,:) = 0.0 - tropopausen(:,:,:,cm_index,:) = 0.0 - olin(:,:,:,cm_index,:) = 0.0 - diffkn(:,:,:,cm_index,:) = 0.0 - vdepn(:,:,:,cm_index,:) = 0.0 - - ! Auxiliary variables for nests - xresoln(:) = 0.0 - yresoln(:) = 0.0 - xln(:) = 0.0 - yln(:) = 0.0 - xrn(:) = 0.0 - yrn(:) = 0.0 - - ! Variables for polar stereographic projection - xglobal=.FALSE.; sglobal=.FALSE.; nglobal=.FALSE. - switchnorthg=0.0; switchsouthg=0.0 - southpolemap(:) = 0.0 - northpolemap(:) = 0.0 - - ! Variables declared in conv_mod (convection) - pconv(:) = 0.0 - phconv(:) = 0.0 - dpr(:) = 0.0 - pconv_hpa(:) = 0.0 - phconv_hpa(:) = 0.0 - ft(:) = 0.0 - fq(:) = 0.0 - fmass(:,:) = 0.0 - sub(:) = 0.0 - fmassfrac(:,:) = 0.0 - cbaseflux(:,:) = 0.0 - cbasefluxn(:,:,:) = 0.0 - tconv(:) = 0.0 - qconv(:) = 0.0 - qsconv(:) = 0.0 - psconv=0.0; tt2conv=0.0; td2conv=0.0 - nconvlev=0.0; nconvtop=0.0 - - END SUBROUTINE fpmetbinary_zero - - SUBROUTINE fpio(iounit, ncid, op, cm_index) - IMPLICIT NONE - INTEGER, INTENT(IN) :: ncid ! NetCDF file id - INTEGER, INTENT(IN) :: iounit - CHARACTER(LEN=4), INTENT(IN) :: op ! Operation - DUMP or LOAD - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - - ! Helper functions (in this module) - !INTEGER :: logical2integer - !LOGICAL :: integer2logical - - INTEGER :: temp_integer ! temporary value - INTEGER :: ncret ! Return value from NetCDF calls - INTEGER :: ncvarid ! NetCDF variable ID - - INTEGER :: nxmax_dimid, nymax_dimid, nzmax_dimid, nuvzmax_dimid, nwzmax_dimid, & -& maxspec_dimid, numclass_dimid, maxnests_dimid, nxmaxn_dimid, nymaxn_dimid, & -& zero_to_nzmax_dimid, zero_to_maxnests_dimid, polemap_dimid, & -& nconvlevmax_dimid, na_dimid - - - INTEGER, DIMENSION(1) :: dim1dids ! Dimension IDs for 1D arrays - INTEGER, DIMENSION(2) :: dim2dids ! Dimension IDs for 2D arrays - INTEGER, DIMENSION(3) :: dim3dids ! Dimension IDs for 3D arrays - INTEGER, DIMENSION(4) :: dim4dids ! Dimension IDs for 4D arrays - INTEGER, DIMENSION(5) :: dim5dids ! Dimension IDs for 5D arrays - - - - - ! These are used when loading in dimensions from NC file - CHARACTER(LEN=NF90_MAX_NAME) :: nxmax_dimname, nymax_dimname, nzmax_dimname, & -& nuvzmax_dimname, nwzmax_dimname,& -& maxspec_dimname, numclass_dimname,& -& maxnests_dimname, nxmaxn_dimname, nymaxn_dimname, & -& zero_to_nzmax_dimname, zero_to_maxnests_dimname, & -& polemap_dimname, nconvlevmax_dimname, na_dimname - - ! These are temporary variables, used in the LOAD option, for - ! comparing against the current values in FLEXPART of nxmax, nymax, ... - INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, & -& temp_nuvzmax, temp_nwzmax, & -& temp_maxspec, temp_numclass,& -& temp_maxnests, temp_nxmaxn, temp_nymaxn - - CHARACTER(LEN=12) :: temp_preproc_format_version_str - - CHARACTER(LEN=128) :: errmesg - - INTEGER, PARAMETER :: DEF_LEVEL = 3 - - if (op == 'DUMP') THEN - - - ! Write the preprocessing format version string - ! NEED TO FILL THIS IN FOR NC4 - - -#ifdef RAWBIN - WRITE (iounit) PREPROC_FORMAT_VERSION_STR - -#endif - - ! Write the compiled max dimensions from par_mod - these are - ! not meant to be reassigned during a LOAD, but used as "header" - ! information to provide the structure of arrays - -#ifdef RAWBIN - WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax -#endif - - - ncret = nf90_def_dim(ncid, 'nxmax', nxmax, nxmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nymax', nymax, nymax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nzmax', nzmax, nzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nuvzmax', nuvzmax, nuvzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nwzmax', nwzmax, nwzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'maxspec', maxspec, maxspec_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'numclass', numclass, numclass_dimid) - call handle_nf90_err(ncret) - - ! There are a handful of variables indexed from 0 to n, rather than 0 to n-1, - ! so these dimensions handle that. What a pain. - ncret = nf90_def_dim(ncid, 'zero_to_nzmax', nzmax+1, zero_to_nzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'zero_to_maxnests', maxnests+1, zero_to_maxnests_dimid) - call handle_nf90_err(ncret) - - ! This is for a couple of small arrays that store polar stereographic stuff - ncret = nf90_def_dim(ncid, 'polemap_dim', 9, polemap_dimid) - call handle_nf90_err(ncret) - - ! These two values come from conv_mod - ncret = nf90_def_dim(ncid, 'nconvlevmax_dim', nconvlevmax, nconvlevmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'na_dim', na, na_dimid) - call handle_nf90_err(ncret) - - ! Scalar values - - -#ifdef RAWBIN - WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield - WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec - WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst -#endif - - ncret = nf90_def_var(ncid, 'nx', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nx) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ny', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, ny) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nxmin1', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nxmin1) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nymin1', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nymin1) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nxfield', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nxfield) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nuvz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nuvz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nwz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nwz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nmixz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nmixz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nlev_ec', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nlev_ec) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dx', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dx) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dy', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dy) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'xlon0', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, xlon0) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ylat0', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, ylat0) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dxconst', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dxconst) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dyconst', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dyconst) - call handle_nf90_err(ncret) - - - - ! Fixed fields, static in time - - -#ifdef RAWBIN - WRITE(iounit) oro, excessoro, lsm, xlanduse, height -#endif - - dim2dids = (/nxmax_dimid, nymax_dimid/) - - ncret = nf90_def_var(ncid, 'oro', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& oro(0:nxmax-1, 0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'excessoro', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& excessoro(0:nxmax-1, 0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsm', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsm(0:nxmax-1, 0:nymax-1)) - call handle_nf90_err(ncret) - - dim3dids = (/nxmax_dimid, nymax_dimid, numclass_dimid/) - ! numclass comes from par_mod - number of land use classes - ncret = nf90_def_var(ncid, 'xlanduse', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xlanduse(0:nxmax-1, 0:nymax-1, 1:numclass)) - call handle_nf90_err(ncret) - - dim1dids = (/nzmax_dimid/) - ncret = nf90_def_var(ncid, 'height', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& height(1:nzmax)) - call handle_nf90_err(ncret) - - - - - ! 3d fields - - - -#ifdef RAWBIN - WRITE(iounit) uu(:,:,:,cm_index) - WRITE(iounit) vv(:,:,:,cm_index) - WRITE(iounit) uupol(:,:,:,cm_index) - WRITE(iounit) vvpol(:,:,:,cm_index) - WRITE(iounit) ww(:,:,:,cm_index) - WRITE(iounit) tt(:,:,:,cm_index) - WRITE(iounit) qv(:,:,:,cm_index) - WRITE(iounit) pv(:,:,:,cm_index) - WRITE(iounit) rho(:,:,:,cm_index) - WRITE(iounit) drhodz(:,:,:,cm_index) - WRITE(iounit) tth(:,:,:,cm_index) - WRITE(iounit) qvh(:,:,:,cm_index) - WRITE(iounit) pplev(:,:,:,cm_index) - WRITE(iounit) clouds(:,:,:,cm_index) - WRITE(iounit) cloudsh(:,:,cm_index) -#endif - - - - dim3dids = (/nxmax_dimid, nymax_dimid, nzmax_dimid/) - - ncret = nf90_def_var(ncid, 'uu', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& uu(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'vv', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'uupol', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& uupol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'vvpol', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vvpol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ww', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ww(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qv', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'pv', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& pv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'rho', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& rho(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'drhodz', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& drhodz(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'clouds', NF90_BYTE, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - - - ! Note the change in z dimension for the following - dim3dids = (/nxmax_dimid, nymax_dimid, nuvzmax_dimid/) - - ncret = nf90_def_var(ncid, 'tth', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tth(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qvh', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qvh(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'pplev', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& pplev(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index)) - call handle_nf90_err(ncret) - - - dim2dids = (/nxmax_dimid, nymax_dimid/) - ncret = nf90_def_var(ncid, 'cloudsh', NF90_INT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& cloudsh(0:nxmax-1, 0:nymax-1, cm_index)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - - - ! 2d fields - - -#ifdef RAWBIN - WRITE(iounit) ps(:,:,:,cm_index) - WRITE(iounit) sd(:,:,:,cm_index) - WRITE(iounit) msl(:,:,:,cm_index) - WRITE(iounit) tcc(:,:,:,cm_index) - WRITE(iounit) u10(:,:,:,cm_index) - WRITE(iounit) v10(:,:,:,cm_index) - WRITE(iounit) tt2(:,:,:,cm_index) - WRITE(iounit) td2(:,:,:,cm_index) - WRITE(iounit) lsprec(:,:,:,cm_index) - WRITE(iounit) convprec(:,:,:,cm_index) - WRITE(iounit) sshf(:,:,:,cm_index) - WRITE(iounit) ssr(:,:,:,cm_index) - WRITE(iounit) surfstr(:,:,:,cm_index) - WRITE(iounit) ustar(:,:,:,cm_index) - WRITE(iounit) wstar(:,:,:,cm_index) - WRITE(iounit) hmix(:,:,:,cm_index) - WRITE(iounit) tropopause(:,:,:,cm_index) - WRITE(iounit) oli(:,:,:,cm_index) - WRITE(iounit) diffk(:,:,:,cm_index) - WRITE(iounit) vdep(:,:,:,cm_index) -#endif - - - - dim2dids = (/nxmax_dimid, nymax_dimid/) - - ncret = nf90_def_var(ncid, 'ps', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ps(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sd', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sd(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'msl', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& msl(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tcc', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tcc(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'u10', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& u10(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'v10', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& v10(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt2', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tt2(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'td2', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& td2(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsprec', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsprec(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'convprec', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& convprec(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sshf', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sshf(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ssr', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ssr(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'surfstr', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& surfstr(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ustar', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ustar(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'wstar', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'hmix', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& hmix(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tropopause', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tropopause(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'oli', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& oli(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'diffk', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& diffk(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) - - PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) - - - dim3dids = (/nxmax_dimid, nymax_dimid, maxspec_dimid/) - - ncret = nf90_def_var(ncid, 'vdep', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vdep(0:nxmax-1, 0:nymax-1, 1:maxspec, cm_index)) - call handle_nf90_err(ncret) - - - - ! 1d fields - - - -#ifdef RAWBIN - WRITE(iounit) z0(:) - WRITE(iounit) akm(:) - WRITE(iounit) bkm(:) - WRITE(iounit) akz(:) - WRITE(iounit) bkz(:) - WRITE(iounit) aknew(:) - WRITE(iounit) bknew(:) -#endif - - dim1dids = (/numclass_dimid/) - - ncret = nf90_def_var(ncid, 'z0', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& z0(1:numclass)) - - - dim1dids = (/nwzmax_dimid/) - - ncret = nf90_def_var(ncid, 'akm', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& akm(1:nwzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'bkm', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& bkm(1:nwzmax)) - call handle_nf90_err(ncret) - - - dim1dids = (/nuvzmax_dimid/) - - ncret = nf90_def_var(ncid, 'akz', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& akz(1:nuvzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'bkz', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& bkz(1:nuvzmax)) - call handle_nf90_err(ncret) - - - dim1dids = (/nzmax_dimid/) - - ncret = nf90_def_var(ncid, 'aknew', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& aknew(1:nzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'bknew', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& bknew(1:nzmax)) - call handle_nf90_err(ncret) - - - PRINT *, 'SUM(bknew(1:nzmax)): ', & -& SUM(bknew(1:nzmax)) - - - - ! Getting ready to add in nested code - - ! These are compiled max dimensions from par_mod - these are - ! not meant to be reassigned during a LOAD, but used as "header" - ! information to provide the structure of arrays - ncret = nf90_def_dim(ncid, 'maxnests', maxnests, maxnests_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nxmaxn', nxmaxn, nxmaxn_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nymaxn', nymaxn, nymaxn_dimid) - call handle_nf90_err(ncret) - - -#ifdef RAWBIN - WRITE(iounit) nxn(:) - WRITE(iounit) nyn(:) - WRITE(iounit) dxn(:) - WRITE(iounit) dyn(:) - WRITE(iounit) xlon0n(:) - WRITE(iounit) ylat0n(:) -#endif - - ! Nested, scalar values (for each nest) - - dim1dids = (/maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'nxn', NF90_INT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& nxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nyn', NF90_INT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& nyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dxn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& dxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dyn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& dyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'xlon0n', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xlon0n(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ylat0n', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ylat0n(1:maxnests)) - call handle_nf90_err(ncret) - - - - - ! Nested fields, static over time - WRITE(iounit) oron, excessoron, lsmn, xlandusen - - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'oron', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& oron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'excessoron', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& excessoron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsmn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsmn(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests)) - call handle_nf90_err(ncret) - - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, numclass_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'xlandusen', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xlandusen(0:nxmaxn-1, 0:nymaxn-1, 1:numclass, 1:maxnests)) - call handle_nf90_err(ncret) - - PRINT *, 'SUM(oron): ', SUM(oron) - - - - ! 3d nested fields - - - -#ifdef RAWBIN - WRITE(iounit) uun(:,:,:,cm_index,:) - WRITE(iounit) vvn(:,:,:,cm_index,:) - WRITE(iounit) wwn(:,:,:,cm_index,:) - WRITE(iounit) ttn(:,:,:,cm_index,:) - WRITE(iounit) qvn(:,:,:,cm_index,:) - WRITE(iounit) pvn(:,:,:,cm_index,:) - WRITE(iounit) cloudsn(:,:,:,cm_index,:) - WRITE(iounit) cloudsnh(:,:,cm_index,:) - WRITE(iounit) rhon(:,:,:,cm_index,:) - WRITE(iounit) drhodzn(:,:,:,cm_index,:) - WRITE(iounit) tthn(:,:,:,cm_index,:) - WRITE(iounit) qvhn(:,:,:,cm_index,:) -#endif - - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nzmax_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'uun', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& uun(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'vvn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'wwn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& wwn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ttn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ttn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qvn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'pvn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& pvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'rhon', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& rhon(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'drhodzn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& drhodzn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - - ! Note the new dimensions - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nuvzmax_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'tthn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tthn(0:nxmaxn-1, 0:nymaxn-1, 1:nuvzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qvhn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qvhn(0:nxmaxn-1, 0:nymaxn-1, 1:nuvzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ! Note the new dimensions - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, zero_to_nzmax_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'cloudsn', NF90_INT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& cloudsn(0:nxmaxn-1, 0:nymaxn-1, 0:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ! Note the new dimensions - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'cloudsnh', NF90_INT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& cloudsnh(0:nxmaxn-1, 0:nymaxn-1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - - - - - - - - - PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) - PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) - PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) - - - - ! 2d nested fields - - -#ifdef RAWBIN - WRITE(iounit) psn(:,:,:,cm_index,:) - WRITE(iounit) sdn(:,:,:,cm_index,:) - WRITE(iounit) msln(:,:,:,cm_index,:) - WRITE(iounit) tccn(:,:,:,cm_index,:) - WRITE(iounit) u10n(:,:,:,cm_index,:) - WRITE(iounit) v10n(:,:,:,cm_index,:) - WRITE(iounit) tt2n(:,:,:,cm_index,:) - WRITE(iounit) td2n(:,:,:,cm_index,:) - WRITE(iounit) lsprecn(:,:,:,cm_index,:) - WRITE(iounit) convprecn(:,:,:,cm_index,:) - WRITE(iounit) sshfn(:,:,:,cm_index,:) - WRITE(iounit) ssrn(:,:,:,cm_index,:) - WRITE(iounit) surfstrn(:,:,:,cm_index,:) - WRITE(iounit) ustarn(:,:,:,cm_index,:) - WRITE(iounit) wstarn(:,:,:,cm_index,:) - WRITE(iounit) hmixn(:,:,:,cm_index,:) - WRITE(iounit) tropopausen(:,:,:,cm_index,:) - WRITE(iounit) olin(:,:,:,cm_index,:) - WRITE(iounit) diffkn(:,:,:,cm_index,:) - WRITE(iounit) vdepn(:,:,:,cm_index,:) -#endif - - - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'psn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& psn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sdn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sdn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'msln', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& msln(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tccn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tccn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'u10n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& u10n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'v10n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& v10n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt2n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tt2n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'td2n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& td2n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsprecn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsprecn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'convprecn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& convprecn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sshfn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sshfn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ssrn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ssrn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'surfstrn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& surfstrn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ustarn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ustarn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'wstarn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& wstarn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'hmixn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& hmixn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tropopausen', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tropopausen(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'olin', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& olin(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'diffkn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& diffkn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, maxspec_dimid, maxnests_dimid/) - - - - ncret = nf90_def_var(ncid, 'vdepn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vdepn(0:nxmaxn-1, 0:nymaxn-1, 1:maxspec, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) - PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) - PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) - - - - - - ! Auxiliary variables for nests - -#ifdef RAWBIN - WRITE(iounit) xresoln(:) - WRITE(iounit) yresoln(:) - WRITE(iounit) xln(:) - WRITE(iounit) yln(:) - WRITE(iounit) xrn(:) - WRITE(iounit) yrn(:) -#endif - - - dim1dids = (/zero_to_maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'xresoln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xresoln(0:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'yresoln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& yresoln(0:maxnests)) - call handle_nf90_err(ncret) - - dim1dids = (/maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'xln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'yln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& yln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'xrn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xrn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'yrn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& yrn(1:maxnests)) - call handle_nf90_err(ncret) - - PRINT *, 'SUM(yresoln): ', SUM(yresoln) - PRINT *, 'SUM(xrn): ', SUM(xrn) - - - - ! Variables for polar stereographic projection - - - -#ifdef RAWBIN - WRITE(iounit) xglobal, sglobal, nglobal - WRITE(iounit) switchnorthg, switchsouthg - WRITE(iounit) southpolemap(:) - WRITE(iounit) northpolemap(:) -#endif - - - dim1dids = (/polemap_dimid/) - - ncret = nf90_def_var(ncid, 'southpolemap', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& southpolemap(:)) - - ncret = nf90_def_var(ncid, 'northpolemap', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& northpolemap(:)) - - - - ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted - ! to INTEGER for NetCDF storage - ncret = nf90_def_var(ncid, 'xglobal', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, logical2integer(xglobal)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sglobal', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, logical2integer(sglobal)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nglobal', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, logical2integer(nglobal)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'switchnorthg', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, switchnorthg) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'switchsouthg', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, switchsouthg) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) - PRINT *, 'xglobal: ', xglobal - PRINT *, 'sglobal: ', sglobal - PRINT *, 'nglobal: ', nglobal - PRINT *, 'switchsouthg: ', switchsouthg - - ! Variables declared in conv_mod (convection) - - -#ifdef RAWBIN - WRITE(iounit) pconv(:) - WRITE(iounit) phconv(:) - WRITE(iounit) dpr(:) - WRITE(iounit) pconv_hpa(:) - WRITE(iounit) phconv_hpa(:) - WRITE(iounit) ft(:) - WRITE(iounit) fq(:) - WRITE(iounit) fmass(:,:) - WRITE(iounit) sub(:) - WRITE(iounit) fmassfrac(:,:) - WRITE(iounit) cbaseflux(:,:) - WRITE(iounit) cbasefluxn(:,:,:) - WRITE(iounit) tconv(:) - WRITE(iounit) qconv(:) - WRITE(iounit) qsconv(:) - WRITE(iounit) psconv, tt2conv, td2conv - WRITE(iounit) nconvlev, nconvtop -#endif - - - dim1dids = (/nconvlevmax_dimid/) - - ncret = nf90_def_var(ncid, 'pconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& pconv(:)) - - ncret = nf90_def_var(ncid, 'dpr', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& dpr(:)) - - ncret = nf90_def_var(ncid, 'pconv_hpa', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& pconv_hpa(:)) - - ncret = nf90_def_var(ncid, 'ft', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& ft(:)) - - ncret = nf90_def_var(ncid, 'fq', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& fq(:)) - - ncret = nf90_def_var(ncid, 'sub', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& sub(:)) - - dim1dids = (/na_dimid/) - - ncret = nf90_def_var(ncid, 'phconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& phconv(:)) - - ncret = nf90_def_var(ncid, 'phconv_hpa', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& phconv_hpa(:)) - - ncret = nf90_def_var(ncid, 'tconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& tconv(:)) - - ncret = nf90_def_var(ncid, 'qconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& qconv(:)) - - ncret = nf90_def_var(ncid, 'qsconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& qsconv(:)) - - ! New dimensions - dim2dids = (/nconvlevmax_dimid, nconvlevmax_dimid/) - - ncret = nf90_def_var(ncid, 'fmass', NF90_FLOAT, & -& dim2dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& fmass(:,:)) - - ncret = nf90_def_var(ncid, 'fmassfrac', NF90_FLOAT, & -& dim2dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& fmassfrac(:,:)) - - - ! New dimensions - dim2dids = (/nxmax_dimid, nymax_dimid/) - - ncret = nf90_def_var(ncid, 'cbaseflux', NF90_FLOAT, & -& dim2dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& cbaseflux(0:nxmax-1,0:nymax-1)) - - ! New dimensions - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'cbasefluxn', NF90_FLOAT, & -& dim3dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - - - ! Scalars - ncret = nf90_def_var(ncid, 'psconv', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, psconv) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt2conv', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, tt2conv) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'td2conv', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, td2conv) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nconvlev', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nconvlev) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nconvtop', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nconvtop) - call handle_nf90_err(ncret) - - PRINT *, 'SUM(pconv): ', SUM(pconv) - PRINT *, 'SUM(qconv): ', SUM(qconv) - PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) - PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) - PRINT *, 'tt2conv: ', tt2conv - PRINT *, 'nconvlev: ', nconvlev - - - - ELSE IF (op == 'LOAD') THEN - - ! Read the preprocessed format version string and insure it - ! matches this version - - -#ifdef RAWBIN - READ (iounit) temp_preproc_format_version_str - PRINT *, 'Reading preprocessed file format version: ', & -& temp_preproc_format_version_str - - IF (TRIM(temp_preproc_format_version_str) == & -& TRIM(PREPROC_FORMAT_VERSION_STR)) THEN - CONTINUE - ELSE - ! PRINT *, '' GK: causes relocation truncated to fit: R_X86_64_32 - PRINT *, 'Inconsistent preprocessing format version' - PRINT *, 'Expected Version: ', PREPROC_FORMAT_VERSION_STR - PRINT *, 'Detected Version: ', temp_preproc_format_version_str - ! PRINT *, '' - STOP - END IF -#endif - - - - - ! Read the compiled max dimensions that were dumped from par_mod - ! when creating the fp file, so that we can compare against - ! current FLEXPART dimensions - they need to be the same, or else - ! we abort. - - - -#ifdef RAWBIN - READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, & -& temp_nuvzmax, temp_nwzmax -#endif - - - - -PRINT *, 'GET DIMENSIONS' - ! Get dimensions - ncret = nf90_inq_dimid(ncid, 'nxmax', nxmax_dimid) - call handle_nf90_err(ncret) -PRINT *, 'GOT nxmax_dimid' - ncret = nf90_inquire_dimension(ncid, nxmax_dimid, nxmax_dimname, & -& temp_nxmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nxmax: ', temp_nxmax - -PRINT *, 'GOT temp_nxmax' - - ncret = nf90_inq_dimid(ncid, 'nymax', nymax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nymax_dimid, nymax_dimname, & -& temp_nymax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nymax: ', temp_nymax - - ncret = nf90_inq_dimid(ncid, 'nzmax', nzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nzmax_dimid, nzmax_dimname, & -& temp_nzmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nzmax: ', temp_nzmax - - ncret = nf90_inq_dimid(ncid, 'nuvzmax', nuvzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nuvzmax_dimid, nuvzmax_dimname, & -& temp_nuvzmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nuvzmax: ', temp_nuvzmax - - ncret = nf90_inq_dimid(ncid, 'nwzmax', nwzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nwzmax_dimid, nwzmax_dimname, & -& temp_nwzmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nwzmax: ', temp_nwzmax - - ncret = nf90_inq_dimid(ncid, 'numclass', numclass_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, numclass_dimid, numclass_dimname, & -& temp_numclass) - call handle_nf90_err(ncret) - PRINT *, 'temp_numclass: ', temp_numclass - - ncret = nf90_inq_dimid(ncid, 'maxspec', maxspec_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, maxspec_dimid, maxspec_dimname, & -& temp_maxspec) - call handle_nf90_err(ncret) - PRINT *, 'temp_maxspec: ', temp_maxspec - - - -PRINT *, 'CHECK DIMENSIONS' - - IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. & -& (temp_nzmax == nzmax) .AND. & -& (temp_nuvzmax == nuvzmax) .AND. & -& (temp_nwzmax == nwzmax) .AND. & -& (temp_numclass == numclass) .AND. & -& (temp_maxspec == maxspec) ) THEN - CONTINUE - ELSE - PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' - ! PRINT *, '' - PRINT *, ' FP file Compiled FP' - PRINT *, 'nxmax: ', temp_nxmax, ' ', nxmax - PRINT *, 'nymax: ', temp_nymax, ' ', nymax - PRINT *, 'nzmax: ', temp_nzmax, ' ', nzmax - PRINT *, 'nuvzmax: ', temp_nuvzmax, ' ', nuvzmax - PRINT *, 'nwzmax: ', temp_nwzmax, ' ', nwzmax - PRINT *, 'numclass: ', temp_numclass, ' ', numclass - PRINT *, 'maxspec: ', temp_maxspec, ' ', maxspec - ! PRINT *, '' - STOP - END IF - - - - - ! Scalar values - - -#ifdef RAWBIN - READ(iounit) nx, ny, nxmin1, nymin1, nxfield - READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec - READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst -#endif - - - - -PRINT *, 'GET SCALARS' - - ! Get the varid , then read into scalar variable - ncret = nf90_inq_varid(ncid, 'nx', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nx) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ny', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ny) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nxmin1', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nxmin1) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nymin1', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nymin1) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nxfield', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nxfield) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nuvz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nuvz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nwz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nwz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nmixz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nmixz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nlev_ec', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nlev_ec) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dx', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dx) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dy', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dy) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlon0', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlon0) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ylat0', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ylat0) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dxconst', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dxconst) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dyconst', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dyconst) - call handle_nf90_err(ncret) - - - - - - - ! Fixed fields, static in time - -#ifdef RAWBIN - READ(iounit) oro, excessoro, lsm, xlanduse, height -#endif - - ncret = nf90_inq_varid(ncid, 'oro', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, oro(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'excessoro', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, excessoro(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsm', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsm(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlanduse', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlanduse(0:nxmax-1,0:nymax-1, 1:numclass)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'height', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, height(1:nzmax)) - call handle_nf90_err(ncret) - - - - - ! 3d fields - - - -#ifdef RAWBIN - READ(iounit) uu(:,:,:,cm_index) - READ(iounit) vv(:,:,:,cm_index) - READ(iounit) uupol(:,:,:,cm_index) - READ(iounit) vvpol(:,:,:,cm_index) - READ(iounit) ww(:,:,:,cm_index) - READ(iounit) tt(:,:,:,cm_index) - READ(iounit) qv(:,:,:,cm_index) - READ(iounit) pv(:,:,:,cm_index) - READ(iounit) rho(:,:,:,cm_index) - READ(iounit) drhodz(:,:,:,cm_index) - READ(iounit) tth(:,:,:,cm_index) - READ(iounit) qvh(:,:,:,cm_index) - READ(iounit) pplev(:,:,:,cm_index) - READ(iounit) clouds(:,:,:,cm_index) - READ(iounit) cloudsh(:,:,cm_index) -#endif - - - - ! Get the varid and read the variable into the array - ncret = nf90_inq_varid(ncid, 'uu', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, uu(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'uupol', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, uupol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vvpol', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vvpol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ww', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ww(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'rho', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, rho(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'drhodz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, drhodz(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'clouds', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, clouds(0:nxmax-1,0:nzmax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tth', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tth(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qvh', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qvh(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pplev', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pplev(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cloudsh', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cloudsh(0:nxmax-1,0:nymax-1,cm_index)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - - PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - - - ! 2d fields - - -#ifdef RAWBIN - READ(iounit) ps(:,:,:,cm_index) - READ(iounit) sd(:,:,:,cm_index) - READ(iounit) msl(:,:,:,cm_index) - READ(iounit) tcc(:,:,:,cm_index) - READ(iounit) u10(:,:,:,cm_index) - READ(iounit) v10(:,:,:,cm_index) - READ(iounit) tt2(:,:,:,cm_index) - READ(iounit) td2(:,:,:,cm_index) - READ(iounit) lsprec(:,:,:,cm_index) - READ(iounit) convprec(:,:,:,cm_index) - READ(iounit) sshf(:,:,:,cm_index) - READ(iounit) ssr(:,:,:,cm_index) - READ(iounit) surfstr(:,:,:,cm_index) - READ(iounit) ustar(:,:,:,cm_index) - READ(iounit) wstar(:,:,:,cm_index) - READ(iounit) hmix(:,:,:,cm_index) - READ(iounit) tropopause(:,:,:,cm_index) - READ(iounit) oli(:,:,:,cm_index) - READ(iounit) diffk(:,:,:,cm_index) - READ(iounit) vdep(:,:,:,cm_index) -#endif - - - - ! Get the varid and read the variable into the array - ncret = nf90_inq_varid(ncid, 'ps', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ps(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sd', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sd(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'msl', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, msl(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tcc', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tcc(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'u10', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, u10(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'v10', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, v10(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt2', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt2(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'td2', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, td2(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsprec', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsprec(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'convprec', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, convprec(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sshf', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sshf(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ssr', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ssr(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'surfstr', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, surfstr(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ustar', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ustar(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'wstar', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, wstar(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'hmix', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, hmix(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tropopause', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tropopause(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'oli', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, oli(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'diffk', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, diffk(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) - - PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) - - - ncret = nf90_inq_varid(ncid, 'vdep', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vdep(0:nxmax-1,0:nymax-1,1:maxspec, cm_index)) - call handle_nf90_err(ncret) - - - - - - ! 1d fields - -#ifdef RAWBIN - READ(iounit) z0(:) - READ(iounit) akm(:) - READ(iounit) bkm(:) - READ(iounit) akz(:) - READ(iounit) bkz(:) - READ(iounit) aknew(:) - READ(iounit) bknew(:) -#endif - - ncret = nf90_inq_varid(ncid, 'z0', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, z0(1:numclass)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'akm', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, akm(1:nwzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'bkm', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, bkm(1:nwzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'akz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, akz(1:nuvzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'bkz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, bkz(1:nuvzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'aknew', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, aknew(1:nzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'bknew', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, bknew(1:nzmax)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(bknew(1:nzmax)): ', & -& SUM(bknew(1:nzmax)) - - - - - ! Now the nested input grid variables - ! Get the compiled values that were written into the FP file, and - ! make sure they are equal to the current compiled values, to make - ! sure we are working with consistent arrays - ncret = nf90_inq_dimid(ncid, 'maxnests', maxnests_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, maxnests_dimid, maxnests_dimname, & -& temp_maxnests) - call handle_nf90_err(ncret) - PRINT *, 'temp_maxnests: ', temp_maxnests - - ncret = nf90_inq_dimid(ncid, 'nxmaxn', nxmaxn_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nxmaxn_dimid, nxmaxn_dimname, & -& temp_nxmaxn) - call handle_nf90_err(ncret) - PRINT *, 'temp_nxmaxn: ', temp_nxmaxn - - ncret = nf90_inq_dimid(ncid, 'nymaxn', nymaxn_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nymaxn_dimid, nymaxn_dimname, & -& temp_nymaxn) - call handle_nf90_err(ncret) - PRINT *, 'temp_nymaxn: ', temp_nymaxn - - ! Note that maxspec_dimid and numclass_dimid were checked above - - - - - IF ( (temp_nxmaxn == nxmaxn) .AND. (temp_nymaxn == nymaxn) .AND. & -& (temp_maxnests == maxnests) ) THEN - CONTINUE - ELSE - PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' - ! PRINT *, '' - PRINT *, ' FP file Compiled FP' - PRINT *, 'nxmaxn: ', temp_nxmaxn, ' ', nxmaxn - PRINT *, 'nymaxn: ', temp_nymaxn, ' ', nymaxn - PRINT *, 'maxnests: ', temp_maxnests, ' ', maxnests - STOP - END IF - - - - ! Nested, scalar values (for each nest) - - - - -#ifdef RAWBIN - READ(iounit) nxn(:) - READ(iounit) nyn(:) - READ(iounit) dxn(:) - READ(iounit) dyn(:) - READ(iounit) xlon0n(:) - READ(iounit) ylat0n(:) -#endif - - - ncret = nf90_inq_varid(ncid, 'nxn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nyn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dxn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dyn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlon0n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlon0n(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ylat0n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ylat0n(1:maxnests)) - call handle_nf90_err(ncret) - - - - ! Nested fields, static over time - READ(iounit) oron, excessoron, lsmn, xlandusen - - ncret = nf90_inq_varid(ncid, 'oron', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, oron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'excessoron', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, excessoron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsmn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsmn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlandusen', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlandusen(0:nxmaxn-1,0:nymaxn-1,1:numclass,1:maxnests)) - call handle_nf90_err(ncret) - - - PRINT *, 'SUM(oron): ', SUM(oron) - - - - - ! 3d nested fields - -#ifdef RAWBIN - READ(iounit) uun(:,:,:,cm_index,:) - READ(iounit) vvn(:,:,:,cm_index,:) - READ(iounit) wwn(:,:,:,cm_index,:) - READ(iounit) ttn(:,:,:,cm_index,:) - READ(iounit) qvn(:,:,:,cm_index,:) - READ(iounit) pvn(:,:,:,cm_index,:) - READ(iounit) cloudsn(:,:,:,cm_index,:) - READ(iounit) cloudsnh(:,:,cm_index,:) - READ(iounit) rhon(:,:,:,cm_index,:) - READ(iounit) drhodzn(:,:,:,cm_index,:) - READ(iounit) tthn(:,:,:,cm_index,:) - READ(iounit) qvhn(:,:,:,cm_index,:) -#endif - - ncret = nf90_inq_varid(ncid, 'uun', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, uun(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vvn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'wwn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, wwn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ttn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ttn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qvn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pvn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'rhon', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, rhon(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'drhodzn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, drhodzn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tthn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tthn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qvhn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qvhn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cloudsn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cloudsn(0:nxmaxn-1,0:nymaxn-1,0:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cloudsnh', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cloudsnh(0:nxmaxn-1,0:nymaxn-1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) - PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) - PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) - - - - - ! 2d nested fields - - -#ifdef RAWBIN - READ(iounit) psn(:,:,:,cm_index,:) - READ(iounit) sdn(:,:,:,cm_index,:) - READ(iounit) msln(:,:,:,cm_index,:) - READ(iounit) tccn(:,:,:,cm_index,:) - READ(iounit) u10n(:,:,:,cm_index,:) - READ(iounit) v10n(:,:,:,cm_index,:) - READ(iounit) tt2n(:,:,:,cm_index,:) - READ(iounit) td2n(:,:,:,cm_index,:) - READ(iounit) lsprecn(:,:,:,cm_index,:) - READ(iounit) convprecn(:,:,:,cm_index,:) - READ(iounit) sshfn(:,:,:,cm_index,:) - READ(iounit) ssrn(:,:,:,cm_index,:) - READ(iounit) surfstrn(:,:,:,cm_index,:) - READ(iounit) ustarn(:,:,:,cm_index,:) - READ(iounit) wstarn(:,:,:,cm_index,:) - READ(iounit) hmixn(:,:,:,cm_index,:) - READ(iounit) tropopausen(:,:,:,cm_index,:) - READ(iounit) olin(:,:,:,cm_index,:) - READ(iounit) diffkn(:,:,:,cm_index,:) - READ(iounit) vdepn(:,:,:,cm_index,:) -#endif - - - ncret = nf90_inq_varid(ncid, 'psn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, psn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sdn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sdn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'msln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, msln(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tccn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tccn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'u10n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, u10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'v10n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, v10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt2n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'td2n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, td2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsprecn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'convprecn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, convprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sshfn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sshfn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ssrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ssrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'surfstrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, surfstrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ustarn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ustarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'wstarn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, wstarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'hmixn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, hmixn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tropopausen', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tropopausen(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'olin', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, olin(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'diffkn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, diffkn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vdepn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vdepn(0:nxmaxn-1,0:nymaxn-1,1:maxspec,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) - PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) - PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) - - - - ! Auxiliary variables for nests - - -#ifdef RAWBIN - READ(iounit) xresoln(:) - READ(iounit) yresoln(:) - READ(iounit) xln(:) - READ(iounit) yln(:) - READ(iounit) xrn(:) - READ(iounit) yrn(:) -#endif - - - ncret = nf90_inq_varid(ncid, 'xresoln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xresoln(0:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'yresoln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, yresoln(0:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'yln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, yln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xrn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'yrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, yrn(1:maxnests)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(yresoln): ', SUM(yresoln) - PRINT *, 'SUM(xrn): ', SUM(xrn) - - - - ! Variables for polar stereographic projection - - -#ifdef RAWBIN - READ(iounit) xglobal, sglobal, nglobal - READ(iounit) switchnorthg, switchsouthg - READ(iounit) southpolemap(:) - READ(iounit) northpolemap(:) -#endif - - ncret = nf90_inq_varid(ncid, 'southpolemap', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, southpolemap(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'northpolemap', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, northpolemap(:)) - call handle_nf90_err(ncret) - - ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted - ! to INTEGER for NetCDF storage - ncret = nf90_inq_varid(ncid, 'xglobal', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, temp_integer) - call handle_nf90_err(ncret) - xglobal = integer2logical(temp_integer) - - ncret = nf90_inq_varid(ncid, 'sglobal', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, temp_integer) - call handle_nf90_err(ncret) - sglobal = integer2logical(temp_integer) - - ncret = nf90_inq_varid(ncid, 'nglobal', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, temp_integer) - call handle_nf90_err(ncret) - nglobal = integer2logical(temp_integer) - - ncret = nf90_inq_varid(ncid, 'switchnorthg', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, switchnorthg) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'switchsouthg', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, switchsouthg) - call handle_nf90_err(ncret) - - - PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) - PRINT *, 'xglobal: ', xglobal - PRINT *, 'sglobal: ', sglobal - PRINT *, 'nglobal: ', nglobal - PRINT *, 'switchsouthg: ', switchsouthg - - - - - ! Variables declared in conv_mod (convection) - - -#ifdef RAWBIN - READ(iounit) pconv(:) - READ(iounit) phconv(:) - READ(iounit) dpr(:) - READ(iounit) pconv_hpa(:) - READ(iounit) phconv_hpa(:) - READ(iounit) ft(:) - READ(iounit) fq(:) - READ(iounit) fmass(:,:) - READ(iounit) sub(:) - READ(iounit) fmassfrac(:,:) - READ(iounit) cbaseflux(:,:) - READ(iounit) cbasefluxn(:,:,:) - READ(iounit) tconv(:) - READ(iounit) qconv(:) - READ(iounit) qsconv(:) - READ(iounit) psconv, tt2conv, td2conv - READ(iounit) nconvlev, nconvtop -#endif - - - - ncret = nf90_inq_varid(ncid, 'pconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dpr', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dpr(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pconv_hpa', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pconv_hpa(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ft', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ft(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'fq', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, fq(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sub', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sub(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'phconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, phconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'phconv_hpa', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, phconv_hpa(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qsconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qsconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'fmass', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, fmass(:,:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'fmassfrac', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, fmassfrac(:,:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cbaseflux', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cbaseflux(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cbasefluxn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'psconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, psconv) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt2conv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt2conv) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'td2conv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, td2conv) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nconvlev', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nconvlev) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nconvtop', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nconvtop) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(pconv): ', SUM(pconv) - PRINT *, 'SUM(qconv): ', SUM(qconv) - PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) - PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) - PRINT *, 'tt2conv: ', tt2conv - PRINT *, 'nconvlev: ', nconvlev - - - - ELSE - STOP 'fpio(): Illegal operation' - - ENDIF - END SUBROUTINE fpio - - SUBROUTINE fpmetbinary_filetext(filename, cm_index) - - ! This is a utility subroutine meant to be used for testing purposes. - ! It facilitates the text output of variables read in from the - ! specified .fp file. This routine will easily cause the program - ! to crash due memory allocation issues, particularly when you are - ! trying to text print 3d arrays in a single formatted statetment. - - CHARACTER(LEN=*), INTENT(IN) :: filename - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - !OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', status='REPLACE', & - ! form="formatted", access="stream") - OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', & - form="formatted", access="APPEND") - - WRITE(IOUNIT_TEXTOUT, *) 'oro: ', oro - WRITE(IOUNIT_TEXTOUT, *) 'excessoro: ', excessoro - WRITE(IOUNIT_TEXTOUT, *) 'lsm: ', lsm - WRITE(IOUNIT_TEXTOUT, *) 'xlanduse: ', xlanduse - WRITE(IOUNIT_TEXTOUT, *) 'height: ', height - - WRITE(IOUNIT_TEXTOUT, *) 'uu: ', uu(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vv: ', vv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'uupol: ', uupol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vvpol: ', vvpol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'ww: ', ww(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tt: ', tt(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qv: ', qv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pv: ', pv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'rho: ', rho(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'drhodz: ', drhodz(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tth: ', tth(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qvh: ', qvh(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pplev: ', pplev(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'clouds: ', clouds(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'cloudsh: ', cloudsh(:,:,cm_index) - - - - - CLOSE(IOUNIT_TEXTOUT) - END SUBROUTINE fpmetbinary_filetext - - subroutine handle_nf90_err(status) - - ! Custom routine for checking NF90 error status - ! and aborting if necessary - use netcdf - implicit none - integer, intent (in) :: status - - if (status /= nf90_noerr) then - print *, trim(nf90_strerror(status)) - stop "Stopped..." - endif - end subroutine handle_nf90_err - - - INTEGER FUNCTION logical2integer(logical_value) - IMPLICIT NONE - - ! Auxiliary function to convert logical values to - ! integers. THIS DOES NO TYPE CHECKING!!! - - - LOGICAL, INTENT(IN) :: logical_value - - IF (logical_value .EQV. .TRUE.) THEN - logical2integer = 1 - ELSE - logical2integer = 0 - ENDIF - - RETURN - - END FUNCTION logical2integer - - - LOGICAL FUNCTION integer2logical(integer_value) - IMPLICIT NONE - - ! Auxiliary function to convert integer values to - ! logical. THIS DOES NO TYPE CHECKING!!! - - - INTEGER, INTENT(IN) :: integer_value - - IF (integer_value .EQ. 0) THEN - integer2logical = .FALSE. - ELSE - integer2logical = .TRUE. - ENDIF - - RETURN - - END FUNCTION integer2logical - - -END MODULE fpmetbinary_mod diff --git a/flexpart_code/fpmetbinary_mod.F90.SAVE b/flexpart_code/fpmetbinary_mod.F90.SAVE deleted file mode 100644 index ce08967d455f3f76be24ee0f5e8acdd015781325..0000000000000000000000000000000000000000 --- a/flexpart_code/fpmetbinary_mod.F90.SAVE +++ /dev/null @@ -1,666 +0,0 @@ -MODULE fpmetbinary_mod - - !***************************************************************************** - ! * - ! Contains data and routines for dumping and loading processed met * - ! fields. * - ! Authors Don Morton (Don.Morton@borealscicomp.com) * - ! Delia Arnold (deliona.arnold@gmail.com) * - ! * - ! 07 Oct 2016 * - ! * - ! Most of the data structures from com_mod.f90 that are dumped and * - ! loaded have a final dimension of size two, so that they may hold data * - ! from two met files. When we dump the contents into a .fp file, we * - ! need to specify which of the two to dump. Likewise, when we load * - ! from a .fp file, we need to specify which of the two possible indices * - ! to load into. * - ! * - ! Note that these routines need more robustness. For example, what * - ! what happens if the filename can't be read or written. Or, what * - ! happens if a read or write fails in any way. Right now, it's crash * - ! city. * - ! * - ! Recent enhancements (07 Oct 2016) DJM: * - ! * - ! - file format changed so that compiled dimensions are output, and * - ! during input these same dimensions are compared with the dimensions * - ! compiled into the flexpart that is reading it. A discrepancy * - ! causes abort, so that time isn't wasted reading an incompatible * - ! file. * - ! * - ! - file format changed so that first item is an 8-character string * - ! depicting the version of the preprocessed file format. * - ! An inconsistency between a detected and expected string results * - ! in program abort. * - ! * - ! *** IMPORTANT *** - when the format of the preprocessed output is * - ! modified in any way, be sure to change the version string below, * - ! PREPROC_FORMAT_VERSION_STR, so that attempts to read the output * - ! with a different format version will cause an abort. * - ! * - !***************************************************************************** - - USE com_mod - USE conv_mod - USE par_mod, ONLY : nxmax, nymax, nzmax, nuvzmax, nwzmax - - IMPLICIT NONE - - ! Users may want to change these IO Unit values if they conflict with other parts - ! of code - INTEGER, PARAMETER :: IOUNIT_DUMP = 33, IOUNIT_LOAD = 34, & - IOUNIT_TEXTOUT = 35 - - ! When a change is made to the format of the preprocessed file, such that - ! this routine will not be able to read a previous version, this version - ! string should be modified - CHARACTER(LEN=12), PARAMETER :: PREPROC_FORMAT_VERSION_STR = 'FP_p-9.3.1'//char(0) - - PRIVATE IOUNIT_DUMP, IOUNIT_LOAD, IOUNIT_TEXTOUT, fpio, & -& PREPROC_FORMAT_VERSION_STR - - -CONTAINS - - !***************************************************************************** - ! * - ! Subroutines fpmetbinary_dump() and fpmetbinary_load() provide the * - ! public interface to * - ! this module functionality. I created the PRIVATE fpio() because I * - ! wanted all interactions with variables to be in one place. The read * - ! and write operations need to be done in exactly the same sequence, so * - ! I felt like keeping them in the same routine would at least allow for * - ! coders to more easily compare the two sequences than if they were * - ! separate. * - ! * - ! As mentioned above, the dumps and loads will, for most variables, * - ! need to refer to one of two index values for the last dimension of * - ! the array. * - ! * - !***************************************************************************** - - - SUBROUTINE fpmetbinary_dump(filename, cm_index) - CHARACTER(LEN=*), INTENT(IN) :: filename ! Full path for file - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - INTEGER millisecs_start, millisecs_stop, count_rate, count_max - - CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max) - OPEN(IOUNIT_DUMP, file=filename, action='WRITE', status='REPLACE', form="unformatted", access="stream") - CALL fpio(IOUNIT_DUMP, 'DUMP', cm_index) - CLOSE(IOUNIT_DUMP) - CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) - - !PRINT *, 'Dump walltime secs: ', (millisecs_stop-millisecs_start)/1000.0 - END SUBROUTINE fpmetbinary_dump - - SUBROUTINE fpmetbinary_load(filename, cm_index) - CHARACTER(LEN=*), INTENT(IN) :: filename ! Full path for file - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - INTEGER millisecs_start, millisecs_stop, count_rate, count_max - - CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max) - OPEN(IOUNIT_LOAD, file=filename, action='READ', status='OLD', form="unformatted", access="stream") - CALL fpio(IOUNIT_LOAD, 'LOAD', cm_index) - CLOSE(IOUNIT_LOAD) - CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) - !PRINT *, 'Load walltime secs: ', (millisecs_stop-millisecs_start)/1000.0 - END SUBROUTINE fpmetbinary_load - - SUBROUTINE fpmetbinary_zero(cm_index) - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - - ! Zeroes out, in local datastructures, the values dumped/loaded - ! This was written primarily as a testing mechanism. - ! The lines here correspond to READ and WRITE in the dump/load routines - - ! Scalar values - nx=0.0; ny=0.0; nxmin1=0.0; nymin1=0.0; nxfield=0.0 - nuvz=0.0; nwz=0.0; nz=0.0; nmixz=0.0; nlev_ec=0.0 - dx=0.0; dy=0.0; xlon0=0.0; ylat0=0.0; dxconst=0.0; dyconst=0.0 - - ! Fixed fields, static in time - oro=0.0; excessoro=0.0; lsm=0.0; xlanduse=0.0; height=0.0 - - ! 3d fields - uu(:,:,:,cm_index) = 0.0 - vv(:,:,:,cm_index) = 0.0 - uupol(:,:,:,cm_index) = 0.0 - vvpol(:,:,:,cm_index) = 0.0 - ww(:,:,:,cm_index) = 0.0 - tt(:,:,:,cm_index) = 0.0 - qv(:,:,:,cm_index) = 0.0 - pv(:,:,:,cm_index) = 0.0 - rho(:,:,:,cm_index) = 0.0 - drhodz(:,:,:,cm_index) = 0.0 - tth(:,:,:,cm_index) = 0.0 - qvh(:,:,:,cm_index) = 0.0 - pplev(:,:,:,cm_index) = 0.0 - clouds(:,:,:,cm_index) = 0.0 - cloudsh(:,:,cm_index) = 0.0 - - ! 2d fields - ps(:,:,:,cm_index) = 0.0 - sd(:,:,:,cm_index) = 0.0 - msl(:,:,:,cm_index) = 0.0 - tcc(:,:,:,cm_index) = 0.0 - u10(:,:,:,cm_index) = 0.0 - v10(:,:,:,cm_index) = 0.0 - tt2(:,:,:,cm_index) = 0.0 - td2(:,:,:,cm_index) = 0.0 - lsprec(:,:,:,cm_index) = 0.0 - convprec(:,:,:,cm_index) = 0.0 - sshf(:,:,:,cm_index) = 0.0 - ssr(:,:,:,cm_index) = 0.0 - surfstr(:,:,:,cm_index) = 0.0 - ustar(:,:,:,cm_index) = 0.0 - wstar(:,:,:,cm_index) = 0.0 - hmix(:,:,:,cm_index) = 0.0 - tropopause(:,:,:,cm_index) = 0.0 - oli(:,:,:,cm_index) = 0.0 - diffk(:,:,:,cm_index) = 0.0 - vdep(:,:,:,cm_index) = 0.0 - - ! 1d fields - z0(:) = 0.0 - akm(:) = 0.0 - bkm(:) = 0.0 - akz(:) = 0.0 - bkz(:) = 0.0 - aknew(:) = 0.0 - bknew(:) = 0.0 - - ! Nested, scalar values (for each nest) - nxn(:) = 0.0 - nyn(:) = 0.0 - dxn(:) = 0.0 - dyn(:) = 0.0 - xlon0n(:) = 0.0 - ylat0n(:) = 0.0 - - ! Nested fields, static in time - oron=0.0; excessoron=0.0; lsmn=0.0; xlandusen=0.0 - - ! 3d nested fields - uun(:,:,:,cm_index,:) = 0.0 - wwn(:,:,:,cm_index,:) = 0.0 - ttn(:,:,:,cm_index,:) = 0.0 - qvn(:,:,:,cm_index,:) = 0.0 - pvn(:,:,:,cm_index,:) = 0.0 - cloudsn(:,:,:,cm_index,:) = 0.0 - cloudsnh(:,:,cm_index,:) = 0.0 - rhon(:,:,:,cm_index,:) = 0.0 - drhodzn(:,:,:,cm_index,:) = 0.0 - tthn(:,:,:,cm_index,:) = 0.0 - qvhn(:,:,:,cm_index,:) = 0.0 - - ! 2d nested fields - psn(:,:,:,cm_index,:) = 0.0 - sdn(:,:,:,cm_index,:) = 0.0 - msln(:,:,:,cm_index,:) = 0.0 - tccn(:,:,:,cm_index,:) = 0.0 - u10n(:,:,:,cm_index,:) = 0.0 - v10n(:,:,:,cm_index,:) = 0.0 - tt2n(:,:,:,cm_index,:) = 0.0 - td2n(:,:,:,cm_index,:) = 0.0 - lsprecn(:,:,:,cm_index,:) = 0.0 - convprecn(:,:,:,cm_index,:) = 0.0 - sshfn(:,:,:,cm_index,:) = 0.0 - ssrn(:,:,:,cm_index,:) = 0.0 - surfstrn(:,:,:,cm_index,:) = 0.0 - ustarn(:,:,:,cm_index,:) = 0.0 - wstarn(:,:,:,cm_index,:) = 0.0 - hmixn(:,:,:,cm_index,:) = 0.0 - tropopausen(:,:,:,cm_index,:) = 0.0 - olin(:,:,:,cm_index,:) = 0.0 - diffkn(:,:,:,cm_index,:) = 0.0 - vdepn(:,:,:,cm_index,:) = 0.0 - - ! Auxiliary variables for nests - xresoln(:) = 0.0 - yresoln(:) = 0.0 - xln(:) = 0.0 - yln(:) = 0.0 - xrn(:) = 0.0 - yrn(:) = 0.0 - - ! Variables for polar stereographic projection - xglobal=.FALSE.; sglobal=.FALSE.; nglobal=.FALSE. - switchnorthg=0.0; switchsouthg=0.0 - southpolemap(:) = 0.0 - northpolemap(:) = 0.0 - - ! Variables declared in conv_mod (convection) - pconv(:) = 0.0 - phconv(:) = 0.0 - dpr(:) = 0.0 - pconv_hpa(:) = 0.0 - phconv_hpa(:) = 0.0 - ft(:) = 0.0 - fq(:) = 0.0 - fmass(:,:) = 0.0 - sub(:) = 0.0 - fmassfrac(:,:) = 0.0 - cbaseflux(:,:) = 0.0 - cbasefluxn(:,:,:) = 0.0 - tconv(:) = 0.0 - qconv(:) = 0.0 - qsconv(:) = 0.0 - psconv=0.0; tt2conv=0.0; td2conv=0.0 - nconvlev=0.0; nconvtop=0.0 - - END SUBROUTINE fpmetbinary_zero - - SUBROUTINE fpio(iounit, op, cm_index) - IMPLICIT NONE - INTEGER, INTENT(IN) :: iounit - CHARACTER(LEN=4), INTENT(IN) :: op ! Operation - DUMP or LOAD - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - ! These are temporary variables, used in the LOAD option, for - ! comparing against the current values in FLEXPART of nxmax, nymax, ... - INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, & -& temp_nuvzmax, temp_nwzmax - - CHARACTER(LEN=12) :: temp_preproc_format_version_str - - CHARACTER(LEN=128) :: errmesg - - if (op == 'DUMP') THEN - - - ! Write the preprocessing format version string - WRITE (iounit) PREPROC_FORMAT_VERSION_STR - - ! Write the compiled max dimensions from par_mod - these are - ! not meant to be reassigned during a LOAD, but used as "header" - ! information to provide the structure of arrays - WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax - - ! Scalar values - WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield - WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec - WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst - - ! Fixed fields, static in time - WRITE(iounit) oro, excessoro, lsm, xlanduse, height - - ! 3d fields - WRITE(iounit) uu(:,:,:,cm_index) - WRITE(iounit) vv(:,:,:,cm_index) - WRITE(iounit) uupol(:,:,:,cm_index) - WRITE(iounit) vvpol(:,:,:,cm_index) - WRITE(iounit) ww(:,:,:,cm_index) - WRITE(iounit) tt(:,:,:,cm_index) - WRITE(iounit) qv(:,:,:,cm_index) - WRITE(iounit) pv(:,:,:,cm_index) - WRITE(iounit) rho(:,:,:,cm_index) - WRITE(iounit) drhodz(:,:,:,cm_index) - WRITE(iounit) tth(:,:,:,cm_index) - WRITE(iounit) qvh(:,:,:,cm_index) - WRITE(iounit) pplev(:,:,:,cm_index) - WRITE(iounit) clouds(:,:,:,cm_index) - WRITE(iounit) cloudsh(:,:,cm_index) - - ! 2d fields - WRITE(iounit) ps(:,:,:,cm_index) - WRITE(iounit) sd(:,:,:,cm_index) - WRITE(iounit) msl(:,:,:,cm_index) - WRITE(iounit) tcc(:,:,:,cm_index) - WRITE(iounit) u10(:,:,:,cm_index) - WRITE(iounit) v10(:,:,:,cm_index) - WRITE(iounit) tt2(:,:,:,cm_index) - WRITE(iounit) td2(:,:,:,cm_index) - WRITE(iounit) lsprec(:,:,:,cm_index) - WRITE(iounit) convprec(:,:,:,cm_index) - WRITE(iounit) sshf(:,:,:,cm_index) - WRITE(iounit) ssr(:,:,:,cm_index) - WRITE(iounit) surfstr(:,:,:,cm_index) - WRITE(iounit) ustar(:,:,:,cm_index) - WRITE(iounit) wstar(:,:,:,cm_index) - WRITE(iounit) hmix(:,:,:,cm_index) - WRITE(iounit) tropopause(:,:,:,cm_index) - WRITE(iounit) oli(:,:,:,cm_index) - WRITE(iounit) diffk(:,:,:,cm_index) - WRITE(iounit) vdep(:,:,:,cm_index) - - ! 1d fields - WRITE(iounit) z0(:) - WRITE(iounit) akm(:) - WRITE(iounit) bkm(:) - WRITE(iounit) akz(:) - WRITE(iounit) bkz(:) - WRITE(iounit) aknew(:) - WRITE(iounit) bknew(:) - - ! Nested, scalar values (for each nest) - WRITE(iounit) nxn(:) - WRITE(iounit) nyn(:) - WRITE(iounit) dxn(:) - WRITE(iounit) dyn(:) - WRITE(iounit) xlon0n(:) - WRITE(iounit) ylat0n(:) - - ! Nested fields, static over time - WRITE(iounit) oron, excessoron, lsmn, xlandusen - - ! 3d nested fields - WRITE(iounit) uun(:,:,:,cm_index,:) - WRITE(iounit) vvn(:,:,:,cm_index,:) - WRITE(iounit) wwn(:,:,:,cm_index,:) - WRITE(iounit) ttn(:,:,:,cm_index,:) - WRITE(iounit) qvn(:,:,:,cm_index,:) - WRITE(iounit) pvn(:,:,:,cm_index,:) - WRITE(iounit) cloudsn(:,:,:,cm_index,:) - WRITE(iounit) cloudsnh(:,:,cm_index,:) - WRITE(iounit) rhon(:,:,:,cm_index,:) - WRITE(iounit) drhodzn(:,:,:,cm_index,:) - WRITE(iounit) tthn(:,:,:,cm_index,:) - WRITE(iounit) qvhn(:,:,:,cm_index,:) - - ! 2d nested fields - WRITE(iounit) psn(:,:,:,cm_index,:) - WRITE(iounit) sdn(:,:,:,cm_index,:) - WRITE(iounit) msln(:,:,:,cm_index,:) - WRITE(iounit) tccn(:,:,:,cm_index,:) - WRITE(iounit) u10n(:,:,:,cm_index,:) - WRITE(iounit) v10n(:,:,:,cm_index,:) - WRITE(iounit) tt2n(:,:,:,cm_index,:) - WRITE(iounit) td2n(:,:,:,cm_index,:) - WRITE(iounit) lsprecn(:,:,:,cm_index,:) - WRITE(iounit) convprecn(:,:,:,cm_index,:) - WRITE(iounit) sshfn(:,:,:,cm_index,:) - WRITE(iounit) ssrn(:,:,:,cm_index,:) - WRITE(iounit) surfstrn(:,:,:,cm_index,:) - WRITE(iounit) ustarn(:,:,:,cm_index,:) - WRITE(iounit) wstarn(:,:,:,cm_index,:) - WRITE(iounit) hmixn(:,:,:,cm_index,:) - WRITE(iounit) tropopausen(:,:,:,cm_index,:) - WRITE(iounit) olin(:,:,:,cm_index,:) - WRITE(iounit) diffkn(:,:,:,cm_index,:) - WRITE(iounit) vdepn(:,:,:,cm_index,:) - - ! Auxiliary variables for nests - WRITE(iounit) xresoln(:) - WRITE(iounit) yresoln(:) - WRITE(iounit) xln(:) - WRITE(iounit) yln(:) - WRITE(iounit) xrn(:) - WRITE(iounit) yrn(:) - - ! Variables for polar stereographic projection - WRITE(iounit) xglobal, sglobal, nglobal - WRITE(iounit) switchnorthg, switchsouthg - WRITE(iounit) southpolemap(:) - WRITE(iounit) northpolemap(:) - - ! Variables declared in conv_mod (convection) - WRITE(iounit) pconv(:) - WRITE(iounit) phconv(:) - WRITE(iounit) dpr(:) - WRITE(iounit) pconv_hpa(:) - WRITE(iounit) phconv_hpa(:) - WRITE(iounit) ft(:) - WRITE(iounit) fq(:) - WRITE(iounit) fmass(:,:) - WRITE(iounit) sub(:) - WRITE(iounit) fmassfrac(:,:) - WRITE(iounit) cbaseflux(:,:) - WRITE(iounit) cbasefluxn(:,:,:) - WRITE(iounit) tconv(:) - WRITE(iounit) qconv(:) - WRITE(iounit) qsconv(:) - WRITE(iounit) psconv, tt2conv, td2conv - WRITE(iounit) nconvlev, nconvtop - - ELSE IF (op == 'LOAD') THEN - - ! Read the preprocessed format version string and insure it - ! matches this version - READ (iounit) temp_preproc_format_version_str - PRINT *, 'Reading preprocessed file format version: ', & -& temp_preproc_format_version_str - - IF (TRIM(temp_preproc_format_version_str) == & -& TRIM(PREPROC_FORMAT_VERSION_STR)) THEN - CONTINUE - ELSE - ! PRINT *, '' GK: causes relocation truncated to fit: R_X86_64_32 - PRINT *, 'Inconsistent preprocessing format version' - PRINT *, 'Expected Version: ', PREPROC_FORMAT_VERSION_STR - PRINT *, 'Detected Version: ', temp_preproc_format_version_str - ! PRINT *, '' - STOP - END IF - - ! Read the compiled max dimensions that were dumped from par_mod - ! when creating the fp file, so that we can compare against - ! current FLEXPART dimensions - they need to be the same, or else - ! we abort. - READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, & -& temp_nuvzmax, temp_nwzmax - - - IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. & -& (temp_nzmax == nzmax) .AND. & -& (temp_nuvzmax == nuvzmax) .AND. & -& (temp_nwzmax == nwzmax) ) THEN - CONTINUE - ELSE - PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' - ! PRINT *, '' - PRINT *, ' FP file Compiled FP' - PRINT *, 'nxmax: ', temp_nxmax, ' ', nxmax - PRINT *, 'nymax: ', temp_nymax, ' ', nymax - PRINT *, 'nzmax: ', temp_nzmax, ' ', nzmax - PRINT *, 'nuvzmax: ', temp_nuvzmax, ' ', nuvzmax - PRINT *, 'nwzmax: ', temp_nwzmax, ' ', nwzmax - ! PRINT *, '' - STOP - END IF - - - ! Scalar values - READ(iounit) nx, ny, nxmin1, nymin1, nxfield - READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec - READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst - - ! Fixed fields, static in time - READ(iounit) oro, excessoro, lsm, xlanduse, height - - ! 3d fields - READ(iounit) uu(:,:,:,cm_index) - READ(iounit) vv(:,:,:,cm_index) - READ(iounit) uupol(:,:,:,cm_index) - READ(iounit) vvpol(:,:,:,cm_index) - READ(iounit) ww(:,:,:,cm_index) - READ(iounit) tt(:,:,:,cm_index) - READ(iounit) qv(:,:,:,cm_index) - READ(iounit) pv(:,:,:,cm_index) - READ(iounit) rho(:,:,:,cm_index) - READ(iounit) drhodz(:,:,:,cm_index) - READ(iounit) tth(:,:,:,cm_index) - READ(iounit) qvh(:,:,:,cm_index) - READ(iounit) pplev(:,:,:,cm_index) - READ(iounit) clouds(:,:,:,cm_index) - READ(iounit) cloudsh(:,:,cm_index) - - ! 2d fields - READ(iounit) ps(:,:,:,cm_index) - READ(iounit) sd(:,:,:,cm_index) - READ(iounit) msl(:,:,:,cm_index) - READ(iounit) tcc(:,:,:,cm_index) - READ(iounit) u10(:,:,:,cm_index) - READ(iounit) v10(:,:,:,cm_index) - READ(iounit) tt2(:,:,:,cm_index) - READ(iounit) td2(:,:,:,cm_index) - READ(iounit) lsprec(:,:,:,cm_index) - READ(iounit) convprec(:,:,:,cm_index) - READ(iounit) sshf(:,:,:,cm_index) - READ(iounit) ssr(:,:,:,cm_index) - READ(iounit) surfstr(:,:,:,cm_index) - READ(iounit) ustar(:,:,:,cm_index) - READ(iounit) wstar(:,:,:,cm_index) - READ(iounit) hmix(:,:,:,cm_index) - READ(iounit) tropopause(:,:,:,cm_index) - READ(iounit) oli(:,:,:,cm_index) - READ(iounit) diffk(:,:,:,cm_index) - READ(iounit) vdep(:,:,:,cm_index) - - ! 1d fields - READ(iounit) z0(:) - READ(iounit) akm(:) - READ(iounit) bkm(:) - READ(iounit) akz(:) - READ(iounit) bkz(:) - READ(iounit) aknew(:) - READ(iounit) bknew(:) - - - ! Nested, scalar values (for each nest) - READ(iounit) nxn(:) - READ(iounit) nyn(:) - READ(iounit) dxn(:) - READ(iounit) dyn(:) - READ(iounit) xlon0n(:) - READ(iounit) ylat0n(:) - - - ! Nested fields, static over time - READ(iounit) oron, excessoron, lsmn, xlandusen - - ! 3d nested fields - READ(iounit) uun(:,:,:,cm_index,:) - READ(iounit) vvn(:,:,:,cm_index,:) - READ(iounit) wwn(:,:,:,cm_index,:) - READ(iounit) ttn(:,:,:,cm_index,:) - READ(iounit) qvn(:,:,:,cm_index,:) - READ(iounit) pvn(:,:,:,cm_index,:) - READ(iounit) cloudsn(:,:,:,cm_index,:) - READ(iounit) cloudsnh(:,:,cm_index,:) - READ(iounit) rhon(:,:,:,cm_index,:) - READ(iounit) drhodzn(:,:,:,cm_index,:) - READ(iounit) tthn(:,:,:,cm_index,:) - READ(iounit) qvhn(:,:,:,cm_index,:) - - ! 2d nested fields - READ(iounit) psn(:,:,:,cm_index,:) - READ(iounit) sdn(:,:,:,cm_index,:) - READ(iounit) msln(:,:,:,cm_index,:) - READ(iounit) tccn(:,:,:,cm_index,:) - READ(iounit) u10n(:,:,:,cm_index,:) - READ(iounit) v10n(:,:,:,cm_index,:) - READ(iounit) tt2n(:,:,:,cm_index,:) - READ(iounit) td2n(:,:,:,cm_index,:) - READ(iounit) lsprecn(:,:,:,cm_index,:) - READ(iounit) convprecn(:,:,:,cm_index,:) - READ(iounit) sshfn(:,:,:,cm_index,:) - READ(iounit) ssrn(:,:,:,cm_index,:) - READ(iounit) surfstrn(:,:,:,cm_index,:) - READ(iounit) ustarn(:,:,:,cm_index,:) - READ(iounit) wstarn(:,:,:,cm_index,:) - READ(iounit) hmixn(:,:,:,cm_index,:) - READ(iounit) tropopausen(:,:,:,cm_index,:) - READ(iounit) olin(:,:,:,cm_index,:) - READ(iounit) diffkn(:,:,:,cm_index,:) - READ(iounit) vdepn(:,:,:,cm_index,:) - - ! Auxiliary variables for nests - READ(iounit) xresoln(:) - READ(iounit) yresoln(:) - READ(iounit) xln(:) - READ(iounit) yln(:) - READ(iounit) xrn(:) - READ(iounit) yrn(:) - - ! Variables for polar stereographic projection - READ(iounit) xglobal, sglobal, nglobal - READ(iounit) switchnorthg, switchsouthg - READ(iounit) southpolemap(:) - READ(iounit) northpolemap(:) - - ! Variables declared in conv_mod (convection) - READ(iounit) pconv(:) - READ(iounit) phconv(:) - READ(iounit) dpr(:) - READ(iounit) pconv_hpa(:) - READ(iounit) phconv_hpa(:) - READ(iounit) ft(:) - READ(iounit) fq(:) - READ(iounit) fmass(:,:) - READ(iounit) sub(:) - READ(iounit) fmassfrac(:,:) - READ(iounit) cbaseflux(:,:) - READ(iounit) cbasefluxn(:,:,:) - READ(iounit) tconv(:) - READ(iounit) qconv(:) - READ(iounit) qsconv(:) - READ(iounit) psconv, tt2conv, td2conv - READ(iounit) nconvlev, nconvtop - - ELSE - STOP 'fpio(): Illegal operation' - - ENDIF - END SUBROUTINE fpio - - SUBROUTINE fpmetbinary_filetext(filename, cm_index) - - ! This is a utility subroutine meant to be used for testing purposes. - ! It facilitates the text output of variables read in from the - ! specified .fp file. This routine will easily cause the program - ! to crash due memory allocation issues, particularly when you are - ! trying to text print 3d arrays in a single formatted statetment. - - CHARACTER(LEN=*), INTENT(IN) :: filename - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - !OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', status='REPLACE', & - ! form="formatted", access="stream") - OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', & - form="formatted", access="APPEND") - - WRITE(IOUNIT_TEXTOUT, *) 'oro: ', oro - WRITE(IOUNIT_TEXTOUT, *) 'excessoro: ', excessoro - WRITE(IOUNIT_TEXTOUT, *) 'lsm: ', lsm - WRITE(IOUNIT_TEXTOUT, *) 'xlanduse: ', xlanduse - WRITE(IOUNIT_TEXTOUT, *) 'height: ', height - - WRITE(IOUNIT_TEXTOUT, *) 'uu: ', uu(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vv: ', vv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'uupol: ', uupol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vvpol: ', vvpol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'ww: ', ww(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tt: ', tt(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qv: ', qv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pv: ', pv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'rho: ', rho(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'drhodz: ', drhodz(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tth: ', tth(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qvh: ', qvh(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pplev: ', pplev(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'clouds: ', clouds(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'cloudsh: ', cloudsh(:,:,cm_index) - - - - - CLOSE(IOUNIT_TEXTOUT) - END SUBROUTINE fpmetbinary_filetext - - -END MODULE fpmetbinary_mod diff --git a/flexpart_code/fpmetbinary_mod.F90.save.20170415 b/flexpart_code/fpmetbinary_mod.F90.save.20170415 deleted file mode 100644 index 876fcdf9c06a4a0e59fd47b724f1eec6fc9360a2..0000000000000000000000000000000000000000 --- a/flexpart_code/fpmetbinary_mod.F90.save.20170415 +++ /dev/null @@ -1,3328 +0,0 @@ -MODULE fpmetbinary_mod - - !***************************************************************************** - ! * - ! Contains data and routines for dumping and loading processed met * - ! fields. * - ! Authors Don Morton (Don.Morton@borealscicomp.com) * - ! Delia Arnold (deliona.arnold@gmail.com) * - ! * - ! 07 Oct 2016 * - ! * - ! Most of the data structures from com_mod.f90 that are dumped and * - ! loaded have a final dimension of size two, so that they may hold data * - ! from two met files. When we dump the contents into a .fp file, we * - ! need to specify which of the two to dump. Likewise, when we load * - ! from a .fp file, we need to specify which of the two possible indices * - ! to load into. * - ! * - ! Note that these routines need more robustness. For example, what * - ! what happens if the filename can't be read or written. Or, what * - ! happens if a read or write fails in any way. Right now, it's crash * - ! city. * - ! * - ! Recent enhancements (07 Oct 2016) DJM: * - ! * - ! - file format changed so that compiled dimensions are output, and * - ! during input these same dimensions are compared with the dimensions * - ! compiled into the flexpart that is reading it. A discrepancy * - ! causes abort, so that time isn't wasted reading an incompatible * - ! file. * - ! * - ! - file format changed so that first item is an 8-character string * - ! depicting the version of the preprocessed file format. * - ! An inconsistency between a detected and expected string results * - ! in program abort. * - ! * - ! *** IMPORTANT *** - when the format of the preprocessed output is * - ! modified in any way, be sure to change the version string below, * - ! PREPROC_FORMAT_VERSION_STR, so that attempts to read the output * - ! with a different format version will cause an abort. * - ! * - !***************************************************************************** - - USE com_mod - USE conv_mod - USE par_mod, ONLY : nxmax, nymax, nzmax, nuvzmax, nwzmax, numclass, maxspec, & -& maxnests, nxmaxn, nymaxn - - USE netcdf - - IMPLICIT NONE - - ! Users may want to change these IO Unit values if they conflict with other parts - ! of code - INTEGER, PARAMETER :: IOUNIT_DUMP = 33, IOUNIT_LOAD = 34, & - IOUNIT_TEXTOUT = 35 - - ! When a change is made to the format of the preprocessed file, such that - ! this routine will not be able to read a previous version, this version - ! string should be modified - CHARACTER(LEN=12), PARAMETER :: PREPROC_FORMAT_VERSION_STR = 'FP_p-9.3.1'//char(0) - - PRIVATE IOUNIT_DUMP, IOUNIT_LOAD, IOUNIT_TEXTOUT, fpio, & -& PREPROC_FORMAT_VERSION_STR - - -CONTAINS - - !***************************************************************************** - ! * - ! Subroutines fpmetbinary_dump() and fpmetbinary_load() provide the * - ! public interface to * - ! this module functionality. I created the PRIVATE fpio() because I * - ! wanted all interactions with variables to be in one place. The read * - ! and write operations need to be done in exactly the same sequence, so * - ! I felt like keeping them in the same routine would at least allow for * - ! coders to more easily compare the two sequences than if they were * - ! separate. * - ! * - ! As mentioned above, the dumps and loads will, for most variables, * - ! need to refer to one of two index values for the last dimension of * - ! the array. * - ! * - !***************************************************************************** - - - SUBROUTINE fpmetbinary_dump(filename, cm_index) - CHARACTER(LEN=*), INTENT(IN) :: filename ! Full path for file - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - INTEGER millisecs_start, millisecs_stop, count_rate, count_max - - INTEGER :: ncretval, ncid ! NetCDF func return value, file id - - CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max) - - ! Create and open NC4 file for writing - PRINT *, 'Opening NC4 file...' - ncretval = nf90_create(filename // ".nc4", & -& OR(NF90_CLOBBER, NF90_HDF5), & -& ncid) - - OPEN(IOUNIT_DUMP, file=filename, action='WRITE', status='REPLACE', form="unformatted", access="stream") - - - - - - - CALL fpio(IOUNIT_DUMP, ncid, 'DUMP', cm_index) - CLOSE(IOUNIT_DUMP) - - PRINT *, 'Closing NC4 file...' - ncretval = nf90_close(ncid) - - CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) - - !PRINT *, 'Dump walltime secs: ', (millisecs_stop-millisecs_start)/1000.0 - END SUBROUTINE fpmetbinary_dump - - SUBROUTINE fpmetbinary_load(filename, cm_index) - CHARACTER(LEN=*), INTENT(IN) :: filename ! Full path for file - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - INTEGER :: ncretval, ncid ! NetCDF func return value, file id - - INTEGER millisecs_start, millisecs_stop, count_rate, count_max - - CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max) - - print *, "Opening nc file for reading" - ncretval = nf90_open(filename // ".nc4", NF90_NOWRITE, ncid) - - - - OPEN(IOUNIT_LOAD, file=filename, action='READ', status='OLD', form="unformatted", access="stream") - CALL fpio(IOUNIT_LOAD, ncid, 'LOAD', cm_index) - CLOSE(IOUNIT_LOAD) - CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max) - !PRINT *, 'Load walltime secs: ', (millisecs_stop-millisecs_start)/1000.0 - END SUBROUTINE fpmetbinary_load - - SUBROUTINE fpmetbinary_zero(cm_index) - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - - ! Zeroes out, in local datastructures, the values dumped/loaded - ! This was written primarily as a testing mechanism. - ! DJM -- 17 February 2017 -- I don't think this routine has been used - ! for anything in recent past. Might want to consider 86'ing it. - ! The lines here correspond to READ and WRITE in the dump/load routines - - ! Scalar values - nx=0.0; ny=0.0; nxmin1=0.0; nymin1=0.0; nxfield=0.0 - nuvz=0.0; nwz=0.0; nz=0.0; nmixz=0.0; nlev_ec=0.0 - dx=0.0; dy=0.0; xlon0=0.0; ylat0=0.0; dxconst=0.0; dyconst=0.0 - - ! Fixed fields, static in time - oro=0.0; excessoro=0.0; lsm=0.0; xlanduse=0.0; height=0.0 - - ! 3d fields - uu(:,:,:,cm_index) = 0.0 - vv(:,:,:,cm_index) = 0.0 - uupol(:,:,:,cm_index) = 0.0 - vvpol(:,:,:,cm_index) = 0.0 - ww(:,:,:,cm_index) = 0.0 - tt(:,:,:,cm_index) = 0.0 - qv(:,:,:,cm_index) = 0.0 - pv(:,:,:,cm_index) = 0.0 - rho(:,:,:,cm_index) = 0.0 - drhodz(:,:,:,cm_index) = 0.0 - tth(:,:,:,cm_index) = 0.0 - qvh(:,:,:,cm_index) = 0.0 - pplev(:,:,:,cm_index) = 0.0 - clouds(:,:,:,cm_index) = 0.0 - cloudsh(:,:,cm_index) = 0.0 - - ! 2d fields - ps(:,:,:,cm_index) = 0.0 - sd(:,:,:,cm_index) = 0.0 - msl(:,:,:,cm_index) = 0.0 - tcc(:,:,:,cm_index) = 0.0 - u10(:,:,:,cm_index) = 0.0 - v10(:,:,:,cm_index) = 0.0 - tt2(:,:,:,cm_index) = 0.0 - td2(:,:,:,cm_index) = 0.0 - lsprec(:,:,:,cm_index) = 0.0 - convprec(:,:,:,cm_index) = 0.0 - sshf(:,:,:,cm_index) = 0.0 - ssr(:,:,:,cm_index) = 0.0 - surfstr(:,:,:,cm_index) = 0.0 - ustar(:,:,:,cm_index) = 0.0 - wstar(:,:,:,cm_index) = 0.0 - hmix(:,:,:,cm_index) = 0.0 - tropopause(:,:,:,cm_index) = 0.0 - oli(:,:,:,cm_index) = 0.0 - diffk(:,:,:,cm_index) = 0.0 - vdep(:,:,:,cm_index) = 0.0 - - ! 1d fields - z0(:) = 0.0 - akm(:) = 0.0 - bkm(:) = 0.0 - akz(:) = 0.0 - bkz(:) = 0.0 - aknew(:) = 0.0 - bknew(:) = 0.0 - - ! Nested, scalar values (for each nest) - nxn(:) = 0.0 - nyn(:) = 0.0 - dxn(:) = 0.0 - dyn(:) = 0.0 - xlon0n(:) = 0.0 - ylat0n(:) = 0.0 - - ! Nested fields, static in time - oron=0.0; excessoron=0.0; lsmn=0.0; xlandusen=0.0 - - ! 3d nested fields - uun(:,:,:,cm_index,:) = 0.0 - wwn(:,:,:,cm_index,:) = 0.0 - ttn(:,:,:,cm_index,:) = 0.0 - qvn(:,:,:,cm_index,:) = 0.0 - pvn(:,:,:,cm_index,:) = 0.0 - cloudsn(:,:,:,cm_index,:) = 0.0 - cloudsnh(:,:,cm_index,:) = 0.0 - rhon(:,:,:,cm_index,:) = 0.0 - drhodzn(:,:,:,cm_index,:) = 0.0 - tthn(:,:,:,cm_index,:) = 0.0 - qvhn(:,:,:,cm_index,:) = 0.0 - - ! 2d nested fields - psn(:,:,:,cm_index,:) = 0.0 - sdn(:,:,:,cm_index,:) = 0.0 - msln(:,:,:,cm_index,:) = 0.0 - tccn(:,:,:,cm_index,:) = 0.0 - u10n(:,:,:,cm_index,:) = 0.0 - v10n(:,:,:,cm_index,:) = 0.0 - tt2n(:,:,:,cm_index,:) = 0.0 - td2n(:,:,:,cm_index,:) = 0.0 - lsprecn(:,:,:,cm_index,:) = 0.0 - convprecn(:,:,:,cm_index,:) = 0.0 - sshfn(:,:,:,cm_index,:) = 0.0 - ssrn(:,:,:,cm_index,:) = 0.0 - surfstrn(:,:,:,cm_index,:) = 0.0 - ustarn(:,:,:,cm_index,:) = 0.0 - wstarn(:,:,:,cm_index,:) = 0.0 - hmixn(:,:,:,cm_index,:) = 0.0 - tropopausen(:,:,:,cm_index,:) = 0.0 - olin(:,:,:,cm_index,:) = 0.0 - diffkn(:,:,:,cm_index,:) = 0.0 - vdepn(:,:,:,cm_index,:) = 0.0 - - ! Auxiliary variables for nests - xresoln(:) = 0.0 - yresoln(:) = 0.0 - xln(:) = 0.0 - yln(:) = 0.0 - xrn(:) = 0.0 - yrn(:) = 0.0 - - ! Variables for polar stereographic projection - xglobal=.FALSE.; sglobal=.FALSE.; nglobal=.FALSE. - switchnorthg=0.0; switchsouthg=0.0 - southpolemap(:) = 0.0 - northpolemap(:) = 0.0 - - ! Variables declared in conv_mod (convection) - pconv(:) = 0.0 - phconv(:) = 0.0 - dpr(:) = 0.0 - pconv_hpa(:) = 0.0 - phconv_hpa(:) = 0.0 - ft(:) = 0.0 - fq(:) = 0.0 - fmass(:,:) = 0.0 - sub(:) = 0.0 - fmassfrac(:,:) = 0.0 - cbaseflux(:,:) = 0.0 - cbasefluxn(:,:,:) = 0.0 - tconv(:) = 0.0 - qconv(:) = 0.0 - qsconv(:) = 0.0 - psconv=0.0; tt2conv=0.0; td2conv=0.0 - nconvlev=0.0; nconvtop=0.0 - - END SUBROUTINE fpmetbinary_zero - - SUBROUTINE fpio(iounit, ncid, op, cm_index) - IMPLICIT NONE - INTEGER, INTENT(IN) :: ncid ! NetCDF file id - INTEGER, INTENT(IN) :: iounit - CHARACTER(LEN=4), INTENT(IN) :: op ! Operation - DUMP or LOAD - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - - ! Helper functions (in this module) - !INTEGER :: logical2integer - !LOGICAL :: integer2logical - - INTEGER :: temp_integer ! temporary value - INTEGER :: ncret ! Return value from NetCDF calls - INTEGER :: ncvarid ! NetCDF variable ID - - INTEGER :: nxmax_dimid, nymax_dimid, nzmax_dimid, nuvzmax_dimid, nwzmax_dimid, & -& maxspec_dimid, numclass_dimid, maxnests_dimid, nxmaxn_dimid, nymaxn_dimid, & -& zero_to_nzmax_dimid, zero_to_maxnests_dimid, polemap_dimid, & -& nconvlevmax_dimid, na_dimid - - - INTEGER, DIMENSION(1) :: dim1dids ! Dimension IDs for 1D arrays - INTEGER, DIMENSION(2) :: dim2dids ! Dimension IDs for 2D arrays - INTEGER, DIMENSION(3) :: dim3dids ! Dimension IDs for 3D arrays - INTEGER, DIMENSION(4) :: dim4dids ! Dimension IDs for 4D arrays - INTEGER, DIMENSION(5) :: dim5dids ! Dimension IDs for 5D arrays - - - - - ! These are used when loading in dimensions from NC file - CHARACTER(LEN=NF90_MAX_NAME) :: nxmax_dimname, nymax_dimname, nzmax_dimname, & -& nuvzmax_dimname, nwzmax_dimname,& -& maxspec_dimname, numclass_dimname,& -& maxnests_dimname, nxmaxn_dimname, nymaxn_dimname, & -& zero_to_nzmax_dimname, zero_to_maxnests_dimname, & -& polemap_dimname, nconvlevmax_dimname, na_dimname - - ! These are temporary variables, used in the LOAD option, for - ! comparing against the current values in FLEXPART of nxmax, nymax, ... - INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, & -& temp_nuvzmax, temp_nwzmax, & -& temp_maxspec, temp_numclass,& -& temp_maxnests, temp_nxmaxn, temp_nymaxn - - CHARACTER(LEN=12) :: temp_preproc_format_version_str - - CHARACTER(LEN=128) :: errmesg - - INTEGER, PARAMETER :: DEF_LEVEL = 3 - - if (op == 'DUMP') THEN - - - ! Write the preprocessing format version string - WRITE (iounit) PREPROC_FORMAT_VERSION_STR - - ! Write the compiled max dimensions from par_mod - these are - ! not meant to be reassigned during a LOAD, but used as "header" - ! information to provide the structure of arrays - WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax - - ncret = nf90_def_dim(ncid, 'nxmax', nxmax, nxmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nymax', nymax, nymax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nzmax', nzmax, nzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nuvzmax', nuvzmax, nuvzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nwzmax', nwzmax, nwzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'maxspec', maxspec, maxspec_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'numclass', numclass, numclass_dimid) - call handle_nf90_err(ncret) - - ! There are a handful of variables indexed from 0 to n, rather than 0 to n-1, - ! so these dimensions handle that. What a pain. - ncret = nf90_def_dim(ncid, 'zero_to_nzmax', nzmax+1, zero_to_nzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'zero_to_maxnests', maxnests+1, zero_to_maxnests_dimid) - call handle_nf90_err(ncret) - - ! This is for a couple of small arrays that store polar stereographic stuff - ncret = nf90_def_dim(ncid, 'polemap_dim', 9, polemap_dimid) - call handle_nf90_err(ncret) - - ! These two values come from conv_mod - ncret = nf90_def_dim(ncid, 'nconvlevmax_dim', nconvlevmax, nconvlevmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'na_dim', na, na_dimid) - call handle_nf90_err(ncret) - - ! Scalar values - WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield - WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec - WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst - - ncret = nf90_def_var(ncid, 'nx', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nx) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ny', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, ny) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nxmin1', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nxmin1) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nymin1', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nymin1) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nxfield', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nxfield) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nuvz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nuvz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nwz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nwz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nmixz', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nmixz) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nlev_ec', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nlev_ec) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dx', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dx) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dy', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dy) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'xlon0', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, xlon0) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ylat0', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, ylat0) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dxconst', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dxconst) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dyconst', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, dyconst) - call handle_nf90_err(ncret) - - - - ! Fixed fields, static in time - WRITE(iounit) oro, excessoro, lsm, xlanduse, height - - dim2dids = (/nxmax_dimid, nymax_dimid/) - - ncret = nf90_def_var(ncid, 'oro', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& oro(0:nxmax-1, 0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'excessoro', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& excessoro(0:nxmax-1, 0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsm', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsm(0:nxmax-1, 0:nymax-1)) - call handle_nf90_err(ncret) - - dim3dids = (/nxmax_dimid, nymax_dimid, numclass_dimid/) - ! numclass comes from par_mod - number of land use classes - ncret = nf90_def_var(ncid, 'xlanduse', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xlanduse(0:nxmax-1, 0:nymax-1, 1:numclass)) - call handle_nf90_err(ncret) - - dim1dids = (/nzmax_dimid/) - ncret = nf90_def_var(ncid, 'height', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& height(1:nzmax)) - call handle_nf90_err(ncret) - - - - - ! 3d fields - WRITE(iounit) uu(:,:,:,cm_index) - WRITE(iounit) vv(:,:,:,cm_index) - WRITE(iounit) uupol(:,:,:,cm_index) - WRITE(iounit) vvpol(:,:,:,cm_index) - WRITE(iounit) ww(:,:,:,cm_index) - WRITE(iounit) tt(:,:,:,cm_index) - WRITE(iounit) qv(:,:,:,cm_index) - WRITE(iounit) pv(:,:,:,cm_index) - WRITE(iounit) rho(:,:,:,cm_index) - WRITE(iounit) drhodz(:,:,:,cm_index) - WRITE(iounit) tth(:,:,:,cm_index) - WRITE(iounit) qvh(:,:,:,cm_index) - WRITE(iounit) pplev(:,:,:,cm_index) - WRITE(iounit) clouds(:,:,:,cm_index) - WRITE(iounit) cloudsh(:,:,cm_index) - - dim3dids = (/nxmax_dimid, nymax_dimid, nzmax_dimid/) - - ncret = nf90_def_var(ncid, 'uu', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& uu(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'vv', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'uupol', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& uupol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'vvpol', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vvpol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ww', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ww(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qv', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'pv', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& pv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'rho', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& rho(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'drhodz', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& drhodz(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'clouds', NF90_BYTE, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)) - call handle_nf90_err(ncret) - - - - ! Note the change in z dimension for the following - dim3dids = (/nxmax_dimid, nymax_dimid, nuvzmax_dimid/) - - ncret = nf90_def_var(ncid, 'tth', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tth(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qvh', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qvh(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'pplev', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& pplev(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index)) - call handle_nf90_err(ncret) - - - dim2dids = (/nxmax_dimid, nymax_dimid/) - ncret = nf90_def_var(ncid, 'cloudsh', NF90_INT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& cloudsh(0:nxmax-1, 0:nymax-1, cm_index)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - - - ! 2d fields - WRITE(iounit) ps(:,:,:,cm_index) - WRITE(iounit) sd(:,:,:,cm_index) - WRITE(iounit) msl(:,:,:,cm_index) - WRITE(iounit) tcc(:,:,:,cm_index) - WRITE(iounit) u10(:,:,:,cm_index) - WRITE(iounit) v10(:,:,:,cm_index) - WRITE(iounit) tt2(:,:,:,cm_index) - WRITE(iounit) td2(:,:,:,cm_index) - WRITE(iounit) lsprec(:,:,:,cm_index) - WRITE(iounit) convprec(:,:,:,cm_index) - WRITE(iounit) sshf(:,:,:,cm_index) - WRITE(iounit) ssr(:,:,:,cm_index) - WRITE(iounit) surfstr(:,:,:,cm_index) - WRITE(iounit) ustar(:,:,:,cm_index) - WRITE(iounit) wstar(:,:,:,cm_index) - WRITE(iounit) hmix(:,:,:,cm_index) - WRITE(iounit) tropopause(:,:,:,cm_index) - WRITE(iounit) oli(:,:,:,cm_index) - WRITE(iounit) diffk(:,:,:,cm_index) - WRITE(iounit) vdep(:,:,:,cm_index) - - dim2dids = (/nxmax_dimid, nymax_dimid/) - - ncret = nf90_def_var(ncid, 'ps', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ps(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sd', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sd(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'msl', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& msl(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tcc', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tcc(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'u10', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& u10(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'v10', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& v10(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt2', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tt2(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'td2', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& td2(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsprec', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsprec(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'convprec', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& convprec(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sshf', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sshf(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ssr', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ssr(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'surfstr', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& surfstr(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ustar', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ustar(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'wstar', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'hmix', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& hmix(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tropopause', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tropopause(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'oli', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& oli(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'diffk', NF90_FLOAT, & -& dim2dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& diffk(0:nxmax-1, 0:nymax-1, 1, cm_index)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) - - PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) - - - dim3dids = (/nxmax_dimid, nymax_dimid, maxspec_dimid/) - - ncret = nf90_def_var(ncid, 'vdep', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vdep(0:nxmax-1, 0:nymax-1, 1:maxspec, cm_index)) - call handle_nf90_err(ncret) - - - - ! 1d fields - WRITE(iounit) z0(:) - WRITE(iounit) akm(:) - WRITE(iounit) bkm(:) - WRITE(iounit) akz(:) - WRITE(iounit) bkz(:) - WRITE(iounit) aknew(:) - WRITE(iounit) bknew(:) - - dim1dids = (/numclass_dimid/) - - ncret = nf90_def_var(ncid, 'z0', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& z0(1:numclass)) - - - dim1dids = (/nwzmax_dimid/) - - ncret = nf90_def_var(ncid, 'akm', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& akm(1:nwzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'bkm', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& bkm(1:nwzmax)) - call handle_nf90_err(ncret) - - - dim1dids = (/nuvzmax_dimid/) - - ncret = nf90_def_var(ncid, 'akz', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& akz(1:nuvzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'bkz', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& bkz(1:nuvzmax)) - call handle_nf90_err(ncret) - - - dim1dids = (/nzmax_dimid/) - - ncret = nf90_def_var(ncid, 'aknew', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& aknew(1:nzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'bknew', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& bknew(1:nzmax)) - call handle_nf90_err(ncret) - - - PRINT *, 'SUM(bknew(1:nzmax)): ', & -& SUM(bknew(1:nzmax)) - - - - ! Getting ready to add in nested code - - ! These are compiled max dimensions from par_mod - these are - ! not meant to be reassigned during a LOAD, but used as "header" - ! information to provide the structure of arrays - ncret = nf90_def_dim(ncid, 'maxnests', maxnests, maxnests_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nxmaxn', nxmaxn, nxmaxn_dimid) - call handle_nf90_err(ncret) - ncret = nf90_def_dim(ncid, 'nymaxn', nymaxn, nymaxn_dimid) - call handle_nf90_err(ncret) - - WRITE(iounit) nxn(:) - WRITE(iounit) nyn(:) - WRITE(iounit) dxn(:) - WRITE(iounit) dyn(:) - WRITE(iounit) xlon0n(:) - WRITE(iounit) ylat0n(:) - - ! Nested, scalar values (for each nest) - - dim1dids = (/maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'nxn', NF90_INT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& nxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nyn', NF90_INT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& nyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dxn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& dxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'dyn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& dyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'xlon0n', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xlon0n(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ylat0n', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ylat0n(1:maxnests)) - call handle_nf90_err(ncret) - - - - - ! Nested fields, static over time - WRITE(iounit) oron, excessoron, lsmn, xlandusen - - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'oron', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& oron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'excessoron', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& excessoron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsmn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsmn(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests)) - call handle_nf90_err(ncret) - - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, numclass_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'xlandusen', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xlandusen(0:nxmaxn-1, 0:nymaxn-1, 1:numclass, 1:maxnests)) - call handle_nf90_err(ncret) - - PRINT *, 'SUM(oron): ', SUM(oron) - - - - ! 3d nested fields - WRITE(iounit) uun(:,:,:,cm_index,:) - WRITE(iounit) vvn(:,:,:,cm_index,:) - WRITE(iounit) wwn(:,:,:,cm_index,:) - WRITE(iounit) ttn(:,:,:,cm_index,:) - WRITE(iounit) qvn(:,:,:,cm_index,:) - WRITE(iounit) pvn(:,:,:,cm_index,:) - WRITE(iounit) cloudsn(:,:,:,cm_index,:) - WRITE(iounit) cloudsnh(:,:,cm_index,:) - WRITE(iounit) rhon(:,:,:,cm_index,:) - WRITE(iounit) drhodzn(:,:,:,cm_index,:) - WRITE(iounit) tthn(:,:,:,cm_index,:) - WRITE(iounit) qvhn(:,:,:,cm_index,:) - - - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nzmax_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'uun', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& uun(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'vvn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'wwn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& wwn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ttn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ttn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qvn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'pvn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& pvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'rhon', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& rhon(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'drhodzn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& drhodzn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - - ! Note the new dimensions - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nuvzmax_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'tthn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tthn(0:nxmaxn-1, 0:nymaxn-1, 1:nuvzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'qvhn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& qvhn(0:nxmaxn-1, 0:nymaxn-1, 1:nuvzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ! Note the new dimensions - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, zero_to_nzmax_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'cloudsn', NF90_INT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& cloudsn(0:nxmaxn-1, 0:nymaxn-1, 0:nzmax, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ! Note the new dimensions - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'cloudsnh', NF90_INT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& cloudsnh(0:nxmaxn-1, 0:nymaxn-1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - - - - - - - - - PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) - PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) - PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) - - - - ! 2d nested fields - WRITE(iounit) psn(:,:,:,cm_index,:) - WRITE(iounit) sdn(:,:,:,cm_index,:) - WRITE(iounit) msln(:,:,:,cm_index,:) - WRITE(iounit) tccn(:,:,:,cm_index,:) - WRITE(iounit) u10n(:,:,:,cm_index,:) - WRITE(iounit) v10n(:,:,:,cm_index,:) - WRITE(iounit) tt2n(:,:,:,cm_index,:) - WRITE(iounit) td2n(:,:,:,cm_index,:) - WRITE(iounit) lsprecn(:,:,:,cm_index,:) - WRITE(iounit) convprecn(:,:,:,cm_index,:) - WRITE(iounit) sshfn(:,:,:,cm_index,:) - WRITE(iounit) ssrn(:,:,:,cm_index,:) - WRITE(iounit) surfstrn(:,:,:,cm_index,:) - WRITE(iounit) ustarn(:,:,:,cm_index,:) - WRITE(iounit) wstarn(:,:,:,cm_index,:) - WRITE(iounit) hmixn(:,:,:,cm_index,:) - WRITE(iounit) tropopausen(:,:,:,cm_index,:) - WRITE(iounit) olin(:,:,:,cm_index,:) - WRITE(iounit) diffkn(:,:,:,cm_index,:) - WRITE(iounit) vdepn(:,:,:,cm_index,:) - - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'psn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& psn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sdn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sdn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'msln', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& msln(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tccn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tccn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'u10n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& u10n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'v10n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& v10n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt2n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tt2n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'td2n', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& td2n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'lsprecn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& lsprecn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'convprecn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& convprecn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sshfn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& sshfn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ssrn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ssrn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'surfstrn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& surfstrn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'ustarn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& ustarn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'wstarn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& wstarn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'hmixn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& hmixn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tropopausen', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& tropopausen(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'olin', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& olin(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'diffkn', NF90_FLOAT, & -& dim3dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& diffkn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - dim4dids = (/nxmaxn_dimid, nymaxn_dimid, maxspec_dimid, maxnests_dimid/) - - - - ncret = nf90_def_var(ncid, 'vdepn', NF90_FLOAT, & -& dim4dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& vdepn(0:nxmaxn-1, 0:nymaxn-1, 1:maxspec, cm_index, 1:maxnests)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) - PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) - PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) - - - - - - ! Auxiliary variables for nests - WRITE(iounit) xresoln(:) - WRITE(iounit) yresoln(:) - WRITE(iounit) xln(:) - WRITE(iounit) yln(:) - WRITE(iounit) xrn(:) - WRITE(iounit) yrn(:) - - dim1dids = (/zero_to_maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'xresoln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xresoln(0:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'yresoln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& yresoln(0:maxnests)) - call handle_nf90_err(ncret) - - dim1dids = (/maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'xln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'yln', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& yln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'xrn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& xrn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'yrn', NF90_FLOAT, & -& dim1dids, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, & -& yrn(1:maxnests)) - call handle_nf90_err(ncret) - - PRINT *, 'SUM(yresoln): ', SUM(yresoln) - PRINT *, 'SUM(xrn): ', SUM(xrn) - - - - ! Variables for polar stereographic projection - WRITE(iounit) xglobal, sglobal, nglobal - WRITE(iounit) switchnorthg, switchsouthg - WRITE(iounit) southpolemap(:) - WRITE(iounit) northpolemap(:) - - - - dim1dids = (/polemap_dimid/) - - ncret = nf90_def_var(ncid, 'southpolemap', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& southpolemap(:)) - - ncret = nf90_def_var(ncid, 'northpolemap', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& northpolemap(:)) - - - - ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted - ! to INTEGER for NetCDF storage - ncret = nf90_def_var(ncid, 'xglobal', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, logical2integer(xglobal)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'sglobal', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, logical2integer(sglobal)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nglobal', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, logical2integer(nglobal)) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'switchnorthg', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, switchnorthg) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'switchsouthg', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, switchsouthg) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) - PRINT *, 'xglobal: ', xglobal - PRINT *, 'sglobal: ', sglobal - PRINT *, 'nglobal: ', nglobal - PRINT *, 'switchsouthg: ', switchsouthg - - ! Variables declared in conv_mod (convection) - WRITE(iounit) pconv(:) - WRITE(iounit) phconv(:) - WRITE(iounit) dpr(:) - WRITE(iounit) pconv_hpa(:) - WRITE(iounit) phconv_hpa(:) - WRITE(iounit) ft(:) - WRITE(iounit) fq(:) - WRITE(iounit) fmass(:,:) - WRITE(iounit) sub(:) - WRITE(iounit) fmassfrac(:,:) - WRITE(iounit) cbaseflux(:,:) - WRITE(iounit) cbasefluxn(:,:,:) - WRITE(iounit) tconv(:) - WRITE(iounit) qconv(:) - WRITE(iounit) qsconv(:) - WRITE(iounit) psconv, tt2conv, td2conv - WRITE(iounit) nconvlev, nconvtop - - - dim1dids = (/nconvlevmax_dimid/) - - ncret = nf90_def_var(ncid, 'pconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& pconv(:)) - - ncret = nf90_def_var(ncid, 'dpr', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& dpr(:)) - - ncret = nf90_def_var(ncid, 'pconv_hpa', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& pconv_hpa(:)) - - ncret = nf90_def_var(ncid, 'ft', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& ft(:)) - - ncret = nf90_def_var(ncid, 'fq', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& fq(:)) - - ncret = nf90_def_var(ncid, 'sub', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& sub(:)) - - dim1dids = (/na_dimid/) - - ncret = nf90_def_var(ncid, 'phconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& phconv(:)) - - ncret = nf90_def_var(ncid, 'phconv_hpa', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& phconv_hpa(:)) - - ncret = nf90_def_var(ncid, 'tconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& tconv(:)) - - ncret = nf90_def_var(ncid, 'qconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& qconv(:)) - - ncret = nf90_def_var(ncid, 'qsconv', NF90_FLOAT, & -& dim1dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& qsconv(:)) - - ! New dimensions - dim2dids = (/nconvlevmax_dimid, nconvlevmax_dimid/) - - ncret = nf90_def_var(ncid, 'fmass', NF90_FLOAT, & -& dim2dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& fmass(:,:)) - - ncret = nf90_def_var(ncid, 'fmassfrac', NF90_FLOAT, & -& dim2dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& fmassfrac(:,:)) - - - ! New dimensions - dim2dids = (/nxmax_dimid, nymax_dimid/) - - ncret = nf90_def_var(ncid, 'cbaseflux', NF90_FLOAT, & -& dim2dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& cbaseflux(0:nxmax-1,0:nymax-1)) - - ! New dimensions - dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/) - - ncret = nf90_def_var(ncid, 'cbasefluxn', NF90_FLOAT, & -& dim3dids, ncvarid) - ncret = nf90_def_var_deflate(ncid, ncvarid, & -& shuffle=0, & -& deflate=1, & -& deflate_level=DEF_LEVEL) - ncret = nf90_put_var(ncid, ncvarid, & -& cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - - - ! Scalars - ncret = nf90_def_var(ncid, 'psconv', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, psconv) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'tt2conv', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, tt2conv) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'td2conv', NF90_FLOAT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, td2conv) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nconvlev', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nconvlev) - call handle_nf90_err(ncret) - - ncret = nf90_def_var(ncid, 'nconvtop', NF90_INT, ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_put_var(ncid, ncvarid, nconvtop) - call handle_nf90_err(ncret) - - PRINT *, 'SUM(pconv): ', SUM(pconv) - PRINT *, 'SUM(qconv): ', SUM(qconv) - PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) - PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) - PRINT *, 'tt2conv: ', tt2conv - PRINT *, 'nconvlev: ', nconvlev - - - - ELSE IF (op == 'LOAD') THEN - - ! Read the preprocessed format version string and insure it - ! matches this version - READ (iounit) temp_preproc_format_version_str - PRINT *, 'Reading preprocessed file format version: ', & -& temp_preproc_format_version_str - - IF (TRIM(temp_preproc_format_version_str) == & -& TRIM(PREPROC_FORMAT_VERSION_STR)) THEN - CONTINUE - ELSE - ! PRINT *, '' GK: causes relocation truncated to fit: R_X86_64_32 - PRINT *, 'Inconsistent preprocessing format version' - PRINT *, 'Expected Version: ', PREPROC_FORMAT_VERSION_STR - PRINT *, 'Detected Version: ', temp_preproc_format_version_str - ! PRINT *, '' - STOP - END IF - - ! Read the compiled max dimensions that were dumped from par_mod - ! when creating the fp file, so that we can compare against - ! current FLEXPART dimensions - they need to be the same, or else - ! we abort. - READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, & -& temp_nuvzmax, temp_nwzmax - - ! Get dimensions - ncret = nf90_inq_dimid(ncid, 'nxmax', nxmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nxmax_dimid, nxmax_dimname, & -& temp_nxmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nxmax: ', temp_nxmax - - ncret = nf90_inq_dimid(ncid, 'nymax', nymax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nymax_dimid, nymax_dimname, & -& temp_nymax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nymax: ', temp_nymax - - ncret = nf90_inq_dimid(ncid, 'nzmax', nzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nzmax_dimid, nzmax_dimname, & -& temp_nzmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nzmax: ', temp_nzmax - - ncret = nf90_inq_dimid(ncid, 'nuvzmax', nuvzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nuvzmax_dimid, nuvzmax_dimname, & -& temp_nuvzmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nuvzmax: ', temp_nuvzmax - - ncret = nf90_inq_dimid(ncid, 'nwzmax', nwzmax_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nwzmax_dimid, nwzmax_dimname, & -& temp_nwzmax) - call handle_nf90_err(ncret) - PRINT *, 'temp_nwzmax: ', temp_nwzmax - - ncret = nf90_inq_dimid(ncid, 'numclass', numclass_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, numclass_dimid, numclass_dimname, & -& temp_numclass) - call handle_nf90_err(ncret) - PRINT *, 'temp_numclass: ', temp_numclass - - ncret = nf90_inq_dimid(ncid, 'maxspec', maxspec_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, maxspec_dimid, maxspec_dimname, & -& temp_maxspec) - call handle_nf90_err(ncret) - PRINT *, 'temp_maxspec: ', temp_maxspec - - - - IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. & -& (temp_nzmax == nzmax) .AND. & -& (temp_nuvzmax == nuvzmax) .AND. & -& (temp_nwzmax == nwzmax) .AND. & -& (temp_numclass == numclass) .AND. & -& (temp_maxspec == maxspec) ) THEN - CONTINUE - ELSE - PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' - ! PRINT *, '' - PRINT *, ' FP file Compiled FP' - PRINT *, 'nxmax: ', temp_nxmax, ' ', nxmax - PRINT *, 'nymax: ', temp_nymax, ' ', nymax - PRINT *, 'nzmax: ', temp_nzmax, ' ', nzmax - PRINT *, 'nuvzmax: ', temp_nuvzmax, ' ', nuvzmax - PRINT *, 'nwzmax: ', temp_nwzmax, ' ', nwzmax - PRINT *, 'numclass: ', temp_numclass, ' ', numclass - PRINT *, 'maxspec: ', temp_maxspec, ' ', maxspec - ! PRINT *, '' - STOP - END IF - - - - - ! Scalar values - READ(iounit) nx, ny, nxmin1, nymin1, nxfield - READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec - READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst - - - - ! Get the varid , then read into scalar variable - ncret = nf90_inq_varid(ncid, 'nx', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nx) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ny', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ny) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nxmin1', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nxmin1) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nymin1', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nymin1) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nxfield', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nxfield) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nuvz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nuvz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nwz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nwz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nmixz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nmixz) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nlev_ec', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nlev_ec) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dx', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dx) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dy', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dy) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlon0', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlon0) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ylat0', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ylat0) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dxconst', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dxconst) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dyconst', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dyconst) - call handle_nf90_err(ncret) - - - - - - - ! Fixed fields, static in time - READ(iounit) oro, excessoro, lsm, xlanduse, height - - ncret = nf90_inq_varid(ncid, 'oro', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, oro(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'excessoro', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, excessoro(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsm', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsm(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlanduse', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlanduse(0:nxmax-1,0:nymax-1, 1:numclass)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'height', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, height(1:nzmax)) - call handle_nf90_err(ncret) - - - - - ! 3d fields - READ(iounit) uu(:,:,:,cm_index) - READ(iounit) vv(:,:,:,cm_index) - READ(iounit) uupol(:,:,:,cm_index) - READ(iounit) vvpol(:,:,:,cm_index) - READ(iounit) ww(:,:,:,cm_index) - READ(iounit) tt(:,:,:,cm_index) - READ(iounit) qv(:,:,:,cm_index) - READ(iounit) pv(:,:,:,cm_index) - READ(iounit) rho(:,:,:,cm_index) - READ(iounit) drhodz(:,:,:,cm_index) - READ(iounit) tth(:,:,:,cm_index) - READ(iounit) qvh(:,:,:,cm_index) - READ(iounit) pplev(:,:,:,cm_index) - READ(iounit) clouds(:,:,:,cm_index) - READ(iounit) cloudsh(:,:,cm_index) - - - - - ! Get the varid and read the variable into the array - ncret = nf90_inq_varid(ncid, 'uu', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, uu(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'uupol', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, uupol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vvpol', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vvpol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ww', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ww(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'rho', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, rho(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'drhodz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, drhodz(0:nxmax-1,0:nymax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'clouds', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, clouds(0:nxmax-1,0:nzmax-1,1:nzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tth', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tth(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qvh', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qvh(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pplev', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pplev(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cloudsh', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cloudsh(0:nxmax-1,0:nymax-1,cm_index)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - - PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', & -& SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index)) - - - - ! 2d fields - READ(iounit) ps(:,:,:,cm_index) - READ(iounit) sd(:,:,:,cm_index) - READ(iounit) msl(:,:,:,cm_index) - READ(iounit) tcc(:,:,:,cm_index) - READ(iounit) u10(:,:,:,cm_index) - READ(iounit) v10(:,:,:,cm_index) - READ(iounit) tt2(:,:,:,cm_index) - READ(iounit) td2(:,:,:,cm_index) - READ(iounit) lsprec(:,:,:,cm_index) - READ(iounit) convprec(:,:,:,cm_index) - READ(iounit) sshf(:,:,:,cm_index) - READ(iounit) ssr(:,:,:,cm_index) - READ(iounit) surfstr(:,:,:,cm_index) - READ(iounit) ustar(:,:,:,cm_index) - READ(iounit) wstar(:,:,:,cm_index) - READ(iounit) hmix(:,:,:,cm_index) - READ(iounit) tropopause(:,:,:,cm_index) - READ(iounit) oli(:,:,:,cm_index) - READ(iounit) diffk(:,:,:,cm_index) - READ(iounit) vdep(:,:,:,cm_index) - - ! Get the varid and read the variable into the array - ncret = nf90_inq_varid(ncid, 'ps', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ps(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sd', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sd(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'msl', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, msl(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tcc', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tcc(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'u10', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, u10(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'v10', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, v10(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt2', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt2(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'td2', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, td2(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsprec', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsprec(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'convprec', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, convprec(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sshf', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sshf(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ssr', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ssr(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'surfstr', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, surfstr(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ustar', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ustar(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'wstar', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, wstar(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'hmix', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, hmix(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tropopause', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tropopause(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'oli', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, oli(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'diffk', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, diffk(0:nxmax-1,0:nymax-1,1,cm_index)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index)) - - PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', & -& SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index)) - - - ncret = nf90_inq_varid(ncid, 'vdep', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vdep(0:nxmax-1,0:nymax-1,1:maxspec, cm_index)) - call handle_nf90_err(ncret) - - - - - - ! 1d fields - READ(iounit) z0(:) - READ(iounit) akm(:) - READ(iounit) bkm(:) - READ(iounit) akz(:) - READ(iounit) bkz(:) - READ(iounit) aknew(:) - READ(iounit) bknew(:) - - - ncret = nf90_inq_varid(ncid, 'z0', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, z0(1:numclass)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'akm', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, akm(1:nwzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'bkm', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, bkm(1:nwzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'akz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, akz(1:nuvzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'bkz', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, bkz(1:nuvzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'aknew', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, aknew(1:nzmax)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'bknew', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, bknew(1:nzmax)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(bknew(1:nzmax)): ', & -& SUM(bknew(1:nzmax)) - - - - - ! Now the nested input grid variables - ! Get the compiled values that were written into the FP file, and - ! make sure they are equal to the current compiled values, to make - ! sure we are working with consistent arrays - ncret = nf90_inq_dimid(ncid, 'maxnests', maxnests_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, maxnests_dimid, maxnests_dimname, & -& temp_maxnests) - call handle_nf90_err(ncret) - PRINT *, 'temp_maxnests: ', temp_maxnests - - ncret = nf90_inq_dimid(ncid, 'nxmaxn', nxmaxn_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nxmaxn_dimid, nxmaxn_dimname, & -& temp_nxmaxn) - call handle_nf90_err(ncret) - PRINT *, 'temp_nxmaxn: ', temp_nxmaxn - - ncret = nf90_inq_dimid(ncid, 'nymaxn', nymaxn_dimid) - call handle_nf90_err(ncret) - ncret = nf90_inquire_dimension(ncid, nymaxn_dimid, nymaxn_dimname, & -& temp_nymaxn) - call handle_nf90_err(ncret) - PRINT *, 'temp_nymaxn: ', temp_nymaxn - - ! Note that maxspec_dimid and numclass_dimid were checked above - - - - - IF ( (temp_nxmaxn == nxmaxn) .AND. (temp_nymaxn == nymaxn) .AND. & -& (temp_maxnests == maxnests) ) THEN - CONTINUE - ELSE - PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!' - ! PRINT *, '' - PRINT *, ' FP file Compiled FP' - PRINT *, 'nxmaxn: ', temp_nxmaxn, ' ', nxmaxn - PRINT *, 'nymaxn: ', temp_nymaxn, ' ', nymaxn - PRINT *, 'maxnests: ', temp_maxnests, ' ', maxnests - STOP - END IF - - - - ! Nested, scalar values (for each nest) - READ(iounit) nxn(:) - READ(iounit) nyn(:) - READ(iounit) dxn(:) - READ(iounit) dyn(:) - READ(iounit) xlon0n(:) - READ(iounit) ylat0n(:) - - - ncret = nf90_inq_varid(ncid, 'nxn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nyn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dxn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dxn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dyn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dyn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlon0n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlon0n(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ylat0n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ylat0n(1:maxnests)) - call handle_nf90_err(ncret) - - - - ! Nested fields, static over time - READ(iounit) oron, excessoron, lsmn, xlandusen - - ncret = nf90_inq_varid(ncid, 'oron', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, oron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'excessoron', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, excessoron(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsmn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsmn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xlandusen', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xlandusen(0:nxmaxn-1,0:nymaxn-1,1:numclass,1:maxnests)) - call handle_nf90_err(ncret) - - - PRINT *, 'SUM(oron): ', SUM(oron) - - - - - ! 3d nested fields - READ(iounit) uun(:,:,:,cm_index,:) - READ(iounit) vvn(:,:,:,cm_index,:) - READ(iounit) wwn(:,:,:,cm_index,:) - READ(iounit) ttn(:,:,:,cm_index,:) - READ(iounit) qvn(:,:,:,cm_index,:) - READ(iounit) pvn(:,:,:,cm_index,:) - READ(iounit) cloudsn(:,:,:,cm_index,:) - READ(iounit) cloudsnh(:,:,cm_index,:) - READ(iounit) rhon(:,:,:,cm_index,:) - READ(iounit) drhodzn(:,:,:,cm_index,:) - READ(iounit) tthn(:,:,:,cm_index,:) - READ(iounit) qvhn(:,:,:,cm_index,:) - - - ncret = nf90_inq_varid(ncid, 'uun', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, uun(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vvn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'wwn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, wwn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ttn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ttn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qvn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pvn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'rhon', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, rhon(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'drhodzn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, drhodzn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tthn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tthn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qvhn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qvhn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cloudsn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cloudsn(0:nxmaxn-1,0:nymaxn-1,0:nzmax,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cloudsnh', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cloudsnh(0:nxmaxn-1,0:nymaxn-1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:)) - PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:)) - PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:)) - - - - - ! 2d nested fields - READ(iounit) psn(:,:,:,cm_index,:) - READ(iounit) sdn(:,:,:,cm_index,:) - READ(iounit) msln(:,:,:,cm_index,:) - READ(iounit) tccn(:,:,:,cm_index,:) - READ(iounit) u10n(:,:,:,cm_index,:) - READ(iounit) v10n(:,:,:,cm_index,:) - READ(iounit) tt2n(:,:,:,cm_index,:) - READ(iounit) td2n(:,:,:,cm_index,:) - READ(iounit) lsprecn(:,:,:,cm_index,:) - READ(iounit) convprecn(:,:,:,cm_index,:) - READ(iounit) sshfn(:,:,:,cm_index,:) - READ(iounit) ssrn(:,:,:,cm_index,:) - READ(iounit) surfstrn(:,:,:,cm_index,:) - READ(iounit) ustarn(:,:,:,cm_index,:) - READ(iounit) wstarn(:,:,:,cm_index,:) - READ(iounit) hmixn(:,:,:,cm_index,:) - READ(iounit) tropopausen(:,:,:,cm_index,:) - READ(iounit) olin(:,:,:,cm_index,:) - READ(iounit) diffkn(:,:,:,cm_index,:) - READ(iounit) vdepn(:,:,:,cm_index,:) - - ncret = nf90_inq_varid(ncid, 'psn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, psn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sdn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sdn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'msln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, msln(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tccn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tccn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'u10n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, u10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'v10n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, v10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt2n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'td2n', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, td2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'lsprecn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, lsprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'convprecn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, convprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sshfn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sshfn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ssrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ssrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'surfstrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, surfstrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ustarn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ustarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'wstarn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, wstarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'hmixn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, hmixn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tropopausen', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tropopausen(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'olin', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, olin(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'diffkn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, diffkn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'vdepn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, vdepn(0:nxmaxn-1,0:nymaxn-1,1:maxspec,cm_index,1:maxnests)) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:)) - PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:)) - PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:)) - - - - ! Auxiliary variables for nests - READ(iounit) xresoln(:) - READ(iounit) yresoln(:) - READ(iounit) xln(:) - READ(iounit) yln(:) - READ(iounit) xrn(:) - READ(iounit) yrn(:) - - ncret = nf90_inq_varid(ncid, 'xresoln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xresoln(0:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'yresoln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, yresoln(0:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'yln', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, yln(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'xrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, xrn(1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'yrn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, yrn(1:maxnests)) - call handle_nf90_err(ncret) - - - - PRINT *, 'SUM(yresoln): ', SUM(yresoln) - PRINT *, 'SUM(xrn): ', SUM(xrn) - - - - ! Variables for polar stereographic projection - READ(iounit) xglobal, sglobal, nglobal - READ(iounit) switchnorthg, switchsouthg - READ(iounit) southpolemap(:) - READ(iounit) northpolemap(:) - - - ncret = nf90_inq_varid(ncid, 'southpolemap', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, southpolemap(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'northpolemap', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, northpolemap(:)) - call handle_nf90_err(ncret) - - ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted - ! to INTEGER for NetCDF storage - ncret = nf90_inq_varid(ncid, 'xglobal', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, temp_integer) - call handle_nf90_err(ncret) - xglobal = integer2logical(temp_integer) - - ncret = nf90_inq_varid(ncid, 'sglobal', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, temp_integer) - call handle_nf90_err(ncret) - sglobal = integer2logical(temp_integer) - - ncret = nf90_inq_varid(ncid, 'nglobal', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, temp_integer) - call handle_nf90_err(ncret) - nglobal = integer2logical(temp_integer) - - ncret = nf90_inq_varid(ncid, 'switchnorthg', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, switchnorthg) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'switchsouthg', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, switchsouthg) - call handle_nf90_err(ncret) - - - PRINT *, 'SUM(northpolemap): ', SUM(northpolemap) - PRINT *, 'xglobal: ', xglobal - PRINT *, 'sglobal: ', sglobal - PRINT *, 'nglobal: ', nglobal - PRINT *, 'switchsouthg: ', switchsouthg - - - - - ! Variables declared in conv_mod (convection) - READ(iounit) pconv(:) - READ(iounit) phconv(:) - READ(iounit) dpr(:) - READ(iounit) pconv_hpa(:) - READ(iounit) phconv_hpa(:) - READ(iounit) ft(:) - READ(iounit) fq(:) - READ(iounit) fmass(:,:) - READ(iounit) sub(:) - READ(iounit) fmassfrac(:,:) - READ(iounit) cbaseflux(:,:) - READ(iounit) cbasefluxn(:,:,:) - READ(iounit) tconv(:) - READ(iounit) qconv(:) - READ(iounit) qsconv(:) - READ(iounit) psconv, tt2conv, td2conv - READ(iounit) nconvlev, nconvtop - - ncret = nf90_inq_varid(ncid, 'pconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'dpr', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, dpr(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'pconv_hpa', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, pconv_hpa(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'ft', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, ft(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'fq', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, fq(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'sub', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, sub(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'phconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, phconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'phconv_hpa', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, phconv_hpa(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'qsconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, qsconv(:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'fmass', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, fmass(:,:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'fmassfrac', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, fmassfrac(:,:)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cbaseflux', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cbaseflux(0:nxmax-1,0:nymax-1)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'cbasefluxn', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests)) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'psconv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, psconv) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'tt2conv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, tt2conv) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'td2conv', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, td2conv) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nconvlev', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nconvlev) - call handle_nf90_err(ncret) - - ncret = nf90_inq_varid(ncid, 'nconvtop', ncvarid) - call handle_nf90_err(ncret) - ncret = nf90_get_var(ncid, ncvarid, nconvtop) - call handle_nf90_err(ncret) - - - - - PRINT *, 'SUM(pconv): ', SUM(pconv) - PRINT *, 'SUM(qconv): ', SUM(qconv) - PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac) - PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn) - PRINT *, 'tt2conv: ', tt2conv - PRINT *, 'nconvlev: ', nconvlev - - - - ELSE - STOP 'fpio(): Illegal operation' - - ENDIF - END SUBROUTINE fpio - - SUBROUTINE fpmetbinary_filetext(filename, cm_index) - - ! This is a utility subroutine meant to be used for testing purposes. - ! It facilitates the text output of variables read in from the - ! specified .fp file. This routine will easily cause the program - ! to crash due memory allocation issues, particularly when you are - ! trying to text print 3d arrays in a single formatted statetment. - - CHARACTER(LEN=*), INTENT(IN) :: filename - INTEGER, INTENT(IN) :: cm_index ! Index of last dimension in - ! most com_mod variables. - ! Should be 1 or 2 - - !OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', status='REPLACE', & - ! form="formatted", access="stream") - OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', & - form="formatted", access="APPEND") - - WRITE(IOUNIT_TEXTOUT, *) 'oro: ', oro - WRITE(IOUNIT_TEXTOUT, *) 'excessoro: ', excessoro - WRITE(IOUNIT_TEXTOUT, *) 'lsm: ', lsm - WRITE(IOUNIT_TEXTOUT, *) 'xlanduse: ', xlanduse - WRITE(IOUNIT_TEXTOUT, *) 'height: ', height - - WRITE(IOUNIT_TEXTOUT, *) 'uu: ', uu(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vv: ', vv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'uupol: ', uupol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'vvpol: ', vvpol(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'ww: ', ww(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tt: ', tt(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qv: ', qv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pv: ', pv(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'rho: ', rho(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'drhodz: ', drhodz(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'tth: ', tth(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'qvh: ', qvh(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'pplev: ', pplev(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'clouds: ', clouds(:,:,:,cm_index) - WRITE(IOUNIT_TEXTOUT, *) 'cloudsh: ', cloudsh(:,:,cm_index) - - - - - CLOSE(IOUNIT_TEXTOUT) - END SUBROUTINE fpmetbinary_filetext - - subroutine handle_nf90_err(status) - - ! Custom routine for checking NF90 error status - ! and aborting if necessary - use netcdf - implicit none - integer, intent (in) :: status - - if (status /= nf90_noerr) then - print *, trim(nf90_strerror(status)) - stop "Stopped..." - endif - end subroutine handle_nf90_err - - - INTEGER FUNCTION logical2integer(logical_value) - IMPLICIT NONE - - ! Auxiliary function to convert logical values to - ! integers. THIS DOES NO TYPE CHECKING!!! - - - LOGICAL, INTENT(IN) :: logical_value - - IF (logical_value .EQV. .TRUE.) THEN - logical2integer = 1 - ELSE - logical2integer = 0 - ENDIF - - RETURN - - END FUNCTION logical2integer - - - LOGICAL FUNCTION integer2logical(integer_value) - IMPLICIT NONE - - ! Auxiliary function to convert integer values to - ! logical. THIS DOES NO TYPE CHECKING!!! - - - INTEGER, INTENT(IN) :: integer_value - - IF (integer_value .EQ. 0) THEN - integer2logical = .FALSE. - ELSE - integer2logical = .TRUE. - ENDIF - - RETURN - - END FUNCTION integer2logical - - -END MODULE fpmetbinary_mod diff --git a/flexpart_code/fpmetbinary_mod_fullload.F90 b/flexpart_code/fpmetbinary_mod_fullload.F90 deleted file mode 100644 index 21d057e2b373c0f7d2cc95967777f2ecbfa5db47..0000000000000000000000000000000000000000 --- a/flexpart_code/fpmetbinary_mod_fullload.F90 +++ /dev/null @@ -1,177 +0,0 @@ -MODULE fpmetbinary_mod - - !***************************************************************************** - ! * - ! Contains data and routines for dumping and loading processed met * - ! fields. * - ! Authors Don Morton (Don.Morton@borealscicomp.com) * - ! Delia Arnold (deliona.arnold@gmail.com) * - ! * - ! 15 Sep 2015 * - ! * - ! Currently, the only data being dumped and loaded has data structures * - ! defined in com_mod.f90. In the future, perhaps it will be necessary * - ! to use data structures from other parts of the FLEXPART code system. * - ! * - ! Note that these routines need more robustness. For example, what * - ! what happens if the filename can't be read or written. Or, what * - ! happens if a read or write fails in any way. Right now, it's crash * - ! city. * - ! * - !***************************************************************************** - - USE com_mod - - IMPLICIT NONE - - ! Users may want to change these IO Unit values if they conflict with other parts - ! of code - INTEGER, PARAMETER :: IOUNIT_DUMP = 33, IOUNIT_LOAD = 34 - PRIVATE IOUNIT_DUMP, IOUNIT_LOAD, fpio - - -CONTAINS - - !***************************************************************************** - ! * - ! Subroutines fpdump() and fpload() provide the public interface to * - ! this module functionality. I created the PRIVATE fpio() because I * - ! wanted all interactions with variables to be in one place. The read * - ! and write operations need to be done in exactly the same sequence, so * - ! I felt like keeping them in the same routine would at least allow for * - ! coders to more easily compare the two sequences than if they were * - ! separate. * - ! * - !***************************************************************************** - - - SUBROUTINE fpdump(filename) - CHARACTER(LEN=*), INTENT(IN) :: filename - - OPEN(IOUNIT_DUMP, file=filename, action='WRITE', status='REPLACE', form="unformatted", access="stream") - CALL fpio(IOUNIT_DUMP, 'DUMP') - CLOSE(IOUNIT_DUMP) - END SUBROUTINE fpdump - - SUBROUTINE fpload(filename) - CHARACTER(LEN=*), INTENT(IN) :: filename - - OPEN(IOUNIT_LOAD, file=filename, action='READ', status='OLD', form="unformatted", access="stream") - CALL fpio(IOUNIT_LOAD, 'LOAD') - CLOSE(IOUNIT_LOAD) - END SUBROUTINE fpload - - - - - - SUBROUTINE fpio(iounit, op) - IMPLICIT NONE - INTEGER, INTENT(IN) :: iounit - CHARACTER(LEN=4), INTENT(IN) :: op - - if (op == 'DUMP') THEN -#ifndef QUICKDUMP - WRITE(iounit) path, length - WRITE(iounit) ibdate, ibtime, iedate, ietime, bdate, edate - WRITE(iounit) ldirect, ideltas, loutstep, loutaver, loutsample, method, lsynctime, outstep - WRITE(iounit) ctl, fine, ifine, iout, ipin, iflux, mdomainfill - WRITE(iounit) mquasilag,nested_output,ind_source,ind_receptor - WRITE(iounit) ind_rel,ind_samp,ioutputforeachrelease,linit_cond, turbswitch - WRITE(iounit) mintime,itsplit, lsubgrid,lconvection,lagespectra - WRITE(iounit) nageclass, lage, gdomainfill - WRITE(iounit) compoint, numpoint, specnum - WRITE(iounit) decay, weta, wetb, reldiff, henry, f0 - WRITE(iounit) density, dquer, dsigma, vsetaver, cunningham, weightmolar - WRITE(iounit) vset, schmi, fract, ri, rac, rcl ,rgs, rlu, rm, dryvel, kao, ohreact - WRITE(iounit) spec_ass, area_hour, point_hour, area_dow, point_dow - WRITE(iounit) nspec, maxpointspec_act, species - WRITE(iounit) nx_we, ny_sn, numcolumn, numcolumn_we, numcolumn_sn - WRITE(iounit) zcolumn_we, zcolumn_sn, xmassperparticle, acc_mass_we, acc_mass_sn - WRITE(iounit) numbwf, wftime, lwindinterv, wfname, wfspec - WRITE(iounit) memtime, memind - WRITE(iounit) nx,ny,nxmin1,nymin1,nxfield,nuvz,nwz,nz,nmixz,nlev_ec - WRITE(iounit) dx,dy,xlon0,ylat0,dxconst,dyconst,height - WRITE(iounit) akm, bkm, akz, bkz, aknew, bknew - WRITE(iounit) oro, excessoro, lsm, xlanduse - WRITE(iounit) uu, vv, uupol, vvpol, ww, tt, qv, pv, rho, drhodz, tth, qvh, pplev, clouds, cloudsh - WRITE(iounit) ps, sd, msl, tcc, u10, v10, tt2, td2, lsprec, convprec - WRITE(iounit) sshf, ssr, surfstr, ustar, wstar, hmix, tropopause, oli, diffk - WRITE(iounit) vdep, numbnests, wfnamen, wfspecn, nxn, nyn, dxn, dyn, xlon0n, ylat0n - WRITE(iounit) oron, excessoron, lsmn, xlandusen - WRITE(iounit) uun, vvn, wwn, ttn, qvn, pvn, cloudsn, cloudsnh, rhon, drhodzn, tthn, qvhn - WRITE(iounit) psn, sdn, msln, tccn, u10n, v10n, tt2n, td2n - WRITE(iounit) lsprecn, convprecn, sshfn, ssrn, surfstrn, ustarn, wstarn - WRITE(iounit) hmixn, tropopausen, olin, diffkn, vdepn - WRITE(iounit) xresoln, yresoln, xln, yln, xrn, yrn - WRITE(iounit) xglobal, sglobal, nglobal, switchnorthg, switchsouthg - WRITE(iounit) southpolemap, northpolemap - WRITE(iounit) landinvent, z0 - WRITE(iounit) numxgrid, numygrid, numzgrid, dxout, dyout, outlon0, outlat0, xoutshiftn, youtshiftn - WRITE(iounit) DEP, DRYDEP, DRYDEPSPEC, WETDEP, OHREA, ASSSPEC - WRITE(iounit) xreceptor, yreceptor, receptorarea, creceptor, receptorname, numreceptor - WRITE(iounit) numpart, itra1, npoint, nclass, idt, itramem, itrasplit, numparticlecount - WRITE(iounit) xtra1, ytra1, ztra1, xmass1, rannumb -#endif - - ! This IO was actually done above, but it's put in here to help serve to test this - ! routine. After all the writes and reads, it comes to this one, and a program that wants - ! to test all this can use this to insure that the values of uu, vv, ww read from the binary file - ! are the same as those that were written in - WRITE(iounit) uu, vv, ww - - - ELSE ! We assume op is 'LOAD' -#ifndef QUICKDUMP - READ(iounit) path, length - READ(iounit) ibdate, ibtime, iedate, ietime, bdate, edate - READ(iounit) ldirect, ideltas, loutstep, loutaver, loutsample, method, lsynctime, outstep - READ(iounit) ctl, fine, ifine, iout, ipin, iflux, mdomainfill - READ(iounit) mquasilag,nested_output,ind_source,ind_receptor - READ(iounit) ind_rel,ind_samp,ioutputforeachrelease,linit_cond, turbswitch - READ(iounit) mintime,itsplit, lsubgrid,lconvection,lagespectra - READ(iounit) nageclass, lage, gdomainfill - READ(iounit) compoint, numpoint, specnum - READ(iounit) decay, weta, wetb, reldiff, henry, f0 - READ(iounit) density, dquer, dsigma, vsetaver, cunningham, weightmolar - READ(iounit) vset, schmi, fract, ri, rac, rcl ,rgs, rlu, rm, dryvel, kao, ohreact - READ(iounit) spec_ass, area_hour, point_hour, area_dow, point_dow - READ(iounit) nspec, maxpointspec_act, species - READ(iounit) nx_we, ny_sn, numcolumn, numcolumn_we, numcolumn_sn - READ(iounit) zcolumn_we, zcolumn_sn, xmassperparticle, acc_mass_we, acc_mass_sn - READ(iounit) numbwf, wftime, lwindinterv, wfname, wfspec - READ(iounit) memtime, memind - READ(iounit) nx,ny,nxmin1,nymin1,nxfield,nuvz,nwz,nz,nmixz,nlev_ec - READ(iounit) dx,dy,xlon0,ylat0,dxconst,dyconst,height - READ(iounit) akm, bkm, akz, bkz, aknew, bknew - READ(iounit) oro, excessoro, lsm, xlanduse - READ(iounit) uu, vv, uupol, vvpol, ww, tt, qv, pv, rho, drhodz, tth, qvh, pplev, clouds, cloudsh - READ(iounit) ps, sd, msl, tcc, u10, v10, tt2, td2, lsprec, convprec - READ(iounit) sshf, ssr, surfstr, ustar, wstar, hmix, tropopause, oli, diffk - READ(iounit) vdep, numbnests, wfnamen, wfspecn, nxn, nyn, dxn, dyn, xlon0n, ylat0n - READ(iounit) oron, excessoron, lsmn, xlandusen - READ(iounit) uun, vvn, wwn, ttn, qvn, pvn, cloudsn, cloudsnh, rhon, drhodzn, tthn, qvhn - READ(iounit) psn, sdn, msln, tccn, u10n, v10n, tt2n, td2n - READ(iounit) lsprecn, convprecn, sshfn, ssrn, surfstrn, ustarn, wstarn - READ(iounit) hmixn, tropopausen, olin, diffkn, vdepn - READ(iounit) xresoln, yresoln, xln, yln, xrn, yrn - READ(iounit) xglobal, sglobal, nglobal, switchnorthg, switchsouthg - READ(iounit) southpolemap, northpolemap - READ(iounit) landinvent, z0 - READ(iounit) numxgrid, numygrid, numzgrid, dxout, dyout, outlon0, outlat0, xoutshiftn, youtshiftn - READ(iounit) DEP, DRYDEP, DRYDEPSPEC, WETDEP, OHREA, ASSSPEC - READ(iounit) xreceptor, yreceptor, receptorarea, creceptor, receptorname, numreceptor - READ(iounit) numpart, itra1, npoint, nclass, idt, itramem, itrasplit, numparticlecount - READ(iounit) xtra1, ytra1, ztra1, xmass1, rannumb -#endif - - ! This IO was actually done above, but it's put in here to help serve to test this - ! routine. After all the writes and reads, it comes to this one, and a program that wants - ! to test all this can use this to insure that the values of uu, vv, ww read from the binary file - ! are the same as those that were written in - READ(iounit) uu, vv, ww - ENDIF - END SUBROUTINE fpio - - -END MODULE fpmetbinary_mod diff --git a/flexpart_code/par_mod.F90 b/flexpart_code/par_mod.F90 index 81d8218a186c520c9311dfca0ab91dac97665f75..7e7b36b26d55eae9e3d4ab09c4dc830c5fae70af 100644 --- a/flexpart_code/par_mod.F90 +++ b/flexpart_code/par_mod.F90 @@ -156,8 +156,8 @@ module par_mod ! Maximum dimensions of the nested input grids !********************************************* - integer,parameter :: maxnests=1, nxmaxn=180, nymaxn=100 - !integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0 + !integer,parameter :: maxnests=1, nxmaxn=180, nymaxn=100 + integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0 !integer,parameter :: maxnests=1,nxmaxn=251,nymaxn=151 ! maxnests maximum number of nested grids diff --git a/flexpart_code/readwind_nests.F90 b/flexpart_code/readwind_nests.F90 index 90120ea7750da627a8c4c2bf70933229fc48b765..26c5bc3d98835b8c177d9f349bc815587f688a6c 100644 --- a/flexpart_code/readwind_nests.F90 +++ b/flexpart_code/readwind_nests.F90 @@ -274,7 +274,7 @@ subroutine readwind_nests(indj,n,uuhn,vvhn,wwhn) !!!!!!!!!!!!!!!!!!! VTABLE code ! Get the fpname fpname = vtable_get_fpname(igrib, my_vtable) - print *, 'readwind_nests(): fpname: ', trim(fpname) + !print *, 'readwind_nests(): fpname: ', trim(fpname) !!!!!!!!!!!!!!!!!!! VTABLE code