From 3fb1d18ffc98b853ea1cbc7572e4390a9916f96b Mon Sep 17 00:00:00 2001 From: eric james Date: Fri, 2 Dec 2022 17:59:09 +0000 Subject: [PATCH 1/5] Bug fixes for RRFS snow accumulation variables. --- parm/fv3lam_rrfs.xml | 5 ++++ parm/postxconfig-NT-fv3lam_rrfs.txt | 39 ++++++++++++++++++++++++++++- sorc/ncep_post.fd/INITPOST_NETCDF.f | 28 +++++++++++++++++++-- sorc/ncep_post.fd/SURFCE.f | 10 +++++--- 4 files changed, 76 insertions(+), 6 deletions(-) diff --git a/parm/fv3lam_rrfs.xml b/parm/fv3lam_rrfs.xml index b96977d87..2e88f07b7 100755 --- a/parm/fv3lam_rrfs.xml +++ b/parm/fv3lam_rrfs.xml @@ -534,6 +534,11 @@ 6.0 + + GSD_ACM_SNOD_ON_SURFACE + 5.0 + + SMDRY_ON_SURFACE SMDRY diff --git a/parm/postxconfig-NT-fv3lam_rrfs.txt b/parm/postxconfig-NT-fv3lam_rrfs.txt index fb436bdd7..2ff3a4ea3 100644 --- a/parm/postxconfig-NT-fv3lam_rrfs.txt +++ b/parm/postxconfig-NT-fv3lam_rrfs.txt @@ -1,6 +1,6 @@ 2 241 -283 +284 PRSLEV 32769 ncep_nco @@ -2681,6 +2681,43 @@ surface ? ? ? +725 +GSD_ACM_SNOD_ON_SURFACE +? +1 +tmpl4_8 +ASNOW +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? 232 SMDRY_ON_SURFACE ? diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 673871a35..04c59bba7 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -40,7 +40,7 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) wh, qqg, ref_10cm, qqnifa, qqnwfa, pmtf, ozcon, aextc55, taod5503d use vrbls2d, only: f, pd, fis, pblh, ustar, z0, ths, qs, twbs, qwbs, avgcprate, & - cprate, avgprec, prec, lspa, sno, si, cldefi, th10, q10, tshltr, pshltr, & + cprate, avgprec, prec, lspa, sno, sndepac, si, cldefi, th10, q10, tshltr, pshltr, & tshltr, albase, avgalbedo, avgtcdc, czen, czmean, mxsnal, landfrac, radot, sigt4, & cfrach, cfracl, cfracm, avgcfrach, qshltr, avgcfracl, avgcfracm, cnvcfr, & islope, cmc, grnflx, vegfrc, acfrcv, ncfrcv, acfrst, ncfrst, ssroff, & @@ -162,6 +162,7 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) real*8, allocatable :: pm2d(:,:), pi2d(:,:) real, allocatable :: tmp(:) real :: buf(ista_2l:iend_2u,jsta_2l:jend_2u) + real :: buf2(ista_2l:iend_2u,jsta_2l:jend_2u) real :: buf3d(ista_2l:iend_2u,jsta_2l:jend_2u,lm) real :: chem_2d(ista_2l:iend_2u,jsta_2l:jend_2u) real :: chemT(ista_2l:iend_2u,jsta_2l:jend_2u,lm) @@ -3424,13 +3425,36 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) smstav(i,j) = buf(i,j) enddo enddo + VarName='accswe_land' + call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,buf) + VarName='accswe_ice' + call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,buf2) +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i=ista,iend + acsnow(i,j) = buf(i,j) + buf2(i,j) + enddo + enddo + VarName='snacc_land' + call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,buf) + VarName='snacc_ice' + call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,buf2) +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i=ista,iend + sndepac(i,j) = buf(i,j) + buf2(i,j) + enddo + enddo !$omp parallel do private(i,j) do j=jsta_2l,jend_2u do i=ista_2l,iend_2u ! smstav(i,j) = spval ! GFS does not have soil moisture availability ! smstot(i,j) = spval ! GFS does not have total soil moisture sfcevp(i,j) = spval ! GFS does not have accumulated surface evaporation - acsnow(i,j) = spval ! GFS does not have averaged accumulated snow acsnom(i,j) = spval ! GFS does not have snow melt ! sst(i,j) = spval ! GFS does not have sst???? thz0(i,j) = ths(i,j) ! GFS does not have THZ0, use THS to substitute diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index d2fd2fc26..6c7a5ddd9 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -469,13 +469,17 @@ SUBROUTINE SURFCE cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(725)) fld_info(cfld)%ntrange=1 - fld_info(cfld)%tinvstat=IFHR-ID(18) + fld_info(cfld)%tinvstat=IFHR !$omp parallel do private(i,j,ii,jj) do j=1,jend-jsta+1 jj = jsta+j-1 do i=1,iend-ista+1 ii = ista+i-1 - datapd(i,j,cfld) = SNDEPAC(ii,jj) + if(SNDEPAC(ii,jj) Date: Mon, 5 Dec 2022 17:11:09 +0000 Subject: [PATCH 2/5] Adding check to only divide var density snow by 1000 if we are dealing with RRFS. --- sorc/ncep_post.fd/SURFCE.f | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 6c7a5ddd9..4fbf777ab 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -476,7 +476,10 @@ SUBROUTINE SURFCE do i=1,iend-ista+1 ii = ista+i-1 if(SNDEPAC(ii,jj) Date: Mon, 5 Dec 2022 17:17:40 +0000 Subject: [PATCH 3/5] Bug fix for missing endif --- sorc/ncep_post.fd/SURFCE.f | 1 + 1 file changed, 1 insertion(+) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 4fbf777ab..bba111b86 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -480,6 +480,7 @@ SUBROUTINE SURFCE datapd(i,j,cfld) = SNDEPAC(ii,jj)/(1E3) else datapd(i,j,cfld) = SNDEPAC(ii,jj) + endif else datapd(i,j,cfld) = spval endif From 8df3d87bb24e64450e4c7167aa9dbb95d84d0aa7 Mon Sep 17 00:00:00 2001 From: eric james Date: Fri, 16 Dec 2022 17:17:42 +0000 Subject: [PATCH 4/5] Updating RRFS control files to make MAXUVV and MAXDVV GRIB2 labeling consistent with calculation in FV3. --- parm/fv3lam.xml | 4 +- parm/fv3lam_rrfs.xml | 4 +- parm/post_avblflds.xml | 12 ++-- parm/postxconfig-NT-fv3lam_rrfs.txt | 88 +++-------------------------- 4 files changed, 17 insertions(+), 91 deletions(-) diff --git a/parm/fv3lam.xml b/parm/fv3lam.xml index 2e78a58a5..e3a422ea3 100755 --- a/parm/fv3lam.xml +++ b/parm/fv3lam.xml @@ -1703,7 +1703,7 @@ - MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa MAXUVV NCEP isobaric_sfc @@ -1712,7 +1712,7 @@ - MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa MAXDVV NCEP isobaric_sfc diff --git a/parm/fv3lam_rrfs.xml b/parm/fv3lam_rrfs.xml index 2e88f07b7..d42417ddd 100755 --- a/parm/fv3lam_rrfs.xml +++ b/parm/fv3lam_rrfs.xml @@ -1725,14 +1725,14 @@ - MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa MAXUVV NCEP -3.0 - MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa MAXDVV NCEP -3.0 diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 68592827d..81649651a 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -3678,30 +3678,30 @@ 423 - MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Upward Vertical Velocity between 100-1000hpa tmpl4_8 MAXUVV NCEP MAX - spec_pres_above_grnd + isobaric_sfc 10000. - spec_pres_above_grnd + isobaric_sfc 100000. -3.0 424 - MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Downward Vertical Velocity between 100-1000hpa tmpl4_8 MAXDVV MAX NCEP - spec_pres_above_grnd + isobaric_sfc 10000. - spec_pres_above_grnd + isobaric_sfc 100000. -3.0 diff --git a/parm/postxconfig-NT-fv3lam_rrfs.txt b/parm/postxconfig-NT-fv3lam_rrfs.txt index 2ff3a4ea3..7d1a191cd 100644 --- a/parm/postxconfig-NT-fv3lam_rrfs.txt +++ b/parm/postxconfig-NT-fv3lam_rrfs.txt @@ -1,5 +1,5 @@ 2 -241 +239 284 PRSLEV 32769 @@ -9342,19 +9342,19 @@ spec_hgt_lvl_above_grnd ? ? 423 -MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa +MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Upward Vertical Velocity between 100-1000hpa 1 tmpl4_8 MAXUVV NCEP MAX -spec_pres_above_grnd +isobaric_sfc 0 ? 1 10000. -spec_pres_above_grnd +isobaric_sfc 0 ? 1 @@ -9379,19 +9379,19 @@ spec_pres_above_grnd ? ? 424 -MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa +MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Downward Vertical Velocity between 100-1000hpa 1 tmpl4_8 MAXDVV NCEP MAX -spec_pres_above_grnd +isobaric_sfc 0 ? 1 10000. -spec_pres_above_grnd +isobaric_sfc 0 ? 1 @@ -11725,80 +11725,6 @@ surface ? ? ? -423 -MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa -hourly maximum Upward Vertical Velocity between 100-1000hpa -1 -tmpl4_8 -MAXUVV -NCEP -MAX -spec_pres_above_grnd -0 -? -1 -10000. -spec_pres_above_grnd -0 -? -1 -100000. -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 --3.0 -0 -0 -0 -? -? -? -424 -MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa -hourly maximum Downward Vertical Velocity between 100-1000hpa -1 -tmpl4_8 -MAXDVV -NCEP -MAX -spec_pres_above_grnd -0 -? -1 -10000. -spec_pres_above_grnd -0 -? -1 -100000. -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 --3.0 -0 -0 -0 -? -? -? 790 GSD_MAX_UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_0-3km ? From 2c708c29f4872b479e61c8f535dd1de4a4d20670 Mon Sep 17 00:00:00 2001 From: eric james Date: Fri, 16 Dec 2022 17:32:40 +0000 Subject: [PATCH 5/5] Correcting missed MAXUVV / MAXDVV fields in NATLEV files. --- parm/fv3lam.xml | 4 +- parm/fv3lam_rrfs.xml | 4 +- parm/postxconfig-NT-fv3lam.txt | 8 +-- parm/postxconfig-NT-fv3lam_rrfs.txt | 76 ++++++++++++++++++++++++++++- 4 files changed, 83 insertions(+), 9 deletions(-) diff --git a/parm/fv3lam.xml b/parm/fv3lam.xml index e3a422ea3..853973dd7 100755 --- a/parm/fv3lam.xml +++ b/parm/fv3lam.xml @@ -2074,7 +2074,7 @@ - MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa MAXUVV NCEP isobaric_sfc @@ -2083,7 +2083,7 @@ - MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa MAXDVV NCEP isobaric_sfc diff --git a/parm/fv3lam_rrfs.xml b/parm/fv3lam_rrfs.xml index d42417ddd..2cf4a76c6 100755 --- a/parm/fv3lam_rrfs.xml +++ b/parm/fv3lam_rrfs.xml @@ -2166,14 +2166,14 @@ - MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa MAXUVV NCEP -3.0 - MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa + MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa MAXDVV NCEP -3.0 diff --git a/parm/postxconfig-NT-fv3lam.txt b/parm/postxconfig-NT-fv3lam.txt index 0e0401d86..baf81d216 100644 --- a/parm/postxconfig-NT-fv3lam.txt +++ b/parm/postxconfig-NT-fv3lam.txt @@ -9009,7 +9009,7 @@ spec_hgt_lvl_above_grnd ? ? 423 -MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa +MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Upward Vertical Velocity between 100-1000hpa 1 tmpl4_8 @@ -9046,7 +9046,7 @@ isobaric_sfc ? ? 424 -MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa +MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Downward Vertical Velocity between 100-1000hpa 1 tmpl4_8 @@ -10801,7 +10801,7 @@ surface ? ? 423 -MAX_MAXUVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa +MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Upward Vertical Velocity between 100-1000hpa 1 tmpl4_8 @@ -10838,7 +10838,7 @@ isobaric_sfc ? ? 424 -MAX_MAXDVV_ON_SPEC_PRES_LVL_ABOVE_GRND_100-1000hpa +MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa hourly maximum Downward Vertical Velocity between 100-1000hpa 1 tmpl4_8 diff --git a/parm/postxconfig-NT-fv3lam_rrfs.txt b/parm/postxconfig-NT-fv3lam_rrfs.txt index 7d1a191cd..273cc9c54 100644 --- a/parm/postxconfig-NT-fv3lam_rrfs.txt +++ b/parm/postxconfig-NT-fv3lam_rrfs.txt @@ -1,5 +1,5 @@ 2 -239 +241 284 PRSLEV 32769 @@ -11725,6 +11725,80 @@ surface ? ? ? +423 +MAX_MAXUVV_ON_ISOBARIC_SFC_100-1000hpa +hourly maximum Upward Vertical Velocity between 100-1000hpa +1 +tmpl4_8 +MAXUVV +NCEP +MAX +isobaric_sfc +0 +? +1 +10000. +isobaric_sfc +0 +? +1 +100000. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +-3.0 +0 +0 +0 +? +? +? +424 +MAX_MAXDVV_ON_ISOBARIC_SFC_100-1000hpa +hourly maximum Downward Vertical Velocity between 100-1000hpa +1 +tmpl4_8 +MAXDVV +NCEP +MAX +isobaric_sfc +0 +? +1 +10000. +isobaric_sfc +0 +? +1 +100000. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +-3.0 +0 +0 +0 +? +? +? 790 GSD_MAX_UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_0-3km ?