From 8548751e9e64824f0d460d8b1a0f6b3f25a1697f Mon Sep 17 00:00:00 2001 From: eric james Date: Thu, 20 Oct 2022 20:42:33 +0000 Subject: [PATCH 01/12] Miscellaneous GSL changes / bug fixes. --- parm/fv3lam_rrfs.xml | 4 --- parm/post_avblflds.xml | 16 ++++----- sorc/ncep_post.fd/CALHEL3.f | 2 -- sorc/ncep_post.fd/CALUPDHEL.f | 4 +++ sorc/ncep_post.fd/INITPOST_NETCDF.f | 25 ++++++++++++++ sorc/ncep_post.fd/SURFCE.f | 52 +++++++++++++++++++++-------- 6 files changed, 75 insertions(+), 28 deletions(-) diff --git a/parm/fv3lam_rrfs.xml b/parm/fv3lam_rrfs.xml index 70d3f5dae..f82f7c9f1 100755 --- a/parm/fv3lam_rrfs.xml +++ b/parm/fv3lam_rrfs.xml @@ -1834,8 +1834,6 @@ 5.0 - - diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 34b3e379e..3bd996524 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -7339,7 +7339,7 @@ 915 1H_2YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7349,7 +7349,7 @@ 916 ACM_2YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7359,7 +7359,7 @@ 917 1H_5YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7369,7 +7369,7 @@ 918 ACM_5YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7379,7 +7379,7 @@ 919 1H_10YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7389,7 +7389,7 @@ 920 ACM_10YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7399,7 +7399,7 @@ 921 1H_100YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7409,7 +7409,7 @@ 922 ACM_100YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 diff --git a/sorc/ncep_post.fd/CALHEL3.f b/sorc/ncep_post.fd/CALHEL3.f index 156911f17..abebc0013 100644 --- a/sorc/ncep_post.fd/CALHEL3.f +++ b/sorc/ncep_post.fd/CALHEL3.f @@ -373,7 +373,6 @@ SUBROUTINE CALHEL3(LLOW,LUPP,UST,VST,HELI) ! COMPUTE STORM-RELATIVE HELICITY ! !!$omp parallel do private(i,j,n,l,du1,du2,dv1,dv2,dz,dz1,dz2,dzabv,ie,iw,jn,js,z1,z2,z3) - DO N=1,2 ! for dfferent helicity depth DO L = 2,LM-1 if(GRIDTYPE /= 'A')then call exch(ZINT(1,jsta_2l,L)) @@ -442,7 +441,6 @@ SUBROUTINE CALHEL3(LLOW,LUPP,UST,VST,HELI) ENDDO ENDDO ENDDO - END DO ! end of different helicity depth ! END OF ROUTINE. ! diff --git a/sorc/ncep_post.fd/CALUPDHEL.f b/sorc/ncep_post.fd/CALUPDHEL.f index 17ee6b81c..fed2481b3 100644 --- a/sorc/ncep_post.fd/CALUPDHEL.f +++ b/sorc/ncep_post.fd/CALUPDHEL.f @@ -115,6 +115,10 @@ SUBROUTINE CALUPDHEL(UPDHEL) UPDHEL(I,J)=UPDHEL(I,J)+(DVDX-DUDY)*WH(I,J,L)*DZ + IF (UPDHEL(I,J) < -9E10 .OR. UPDHEL(I,J) > 9E10) THEN + UPDHEL(I,J) = spval + ENDIF + ENDIF ENDDO l_loop diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index abdd0a1c7..0df190818 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -3359,6 +3359,31 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) enddo ! if(debugprint)print*,'sample l',VarName,' = ',1,isltyp(isa,jsa) + IF(MODELNAME == 'FV3R')THEN + VarName='wet1' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,buf) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + smstav(i,j) = buf(i,j) + enddo + enddo +!$omp parallel do private(i,j) + do j=jsta_2l,jend_2u + do i=1,im +! 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 + qz0(i,j) = spval ! GFS does not output humidity at roughness length + uz0(i,j) = spval ! GFS does not output u at roughness length + vz0(i,j) = spval ! GFS does not output humidity at roughness length + enddo + enddo + ELSE !$omp parallel do private(i,j) do j=jsta_2l,jend_2u do i=ista_2l,iend_2u diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 47df11479..40801412d 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -818,8 +818,12 @@ SUBROUTINE SURFCE if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(501)) - fld_info(cfld)%ntrange=IFHR-ID(18) - fld_info(cfld)%tinvstat=1 + if(ITSRFC>0) then + fld_info(cfld)%ntrange=1 + else + fld_info(cfld)%ntrange=0 + endif + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,ii,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -848,8 +852,12 @@ SUBROUTINE SURFCE if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(502)) - fld_info(cfld)%ntrange=IFHR-ID(18) - fld_info(cfld)%tinvstat=1 + if(ITSRFC>0) then + fld_info(cfld)%ntrange=1 + else + fld_info(cfld)%ntrange=0 + endif + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,ii,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -2299,8 +2307,12 @@ SUBROUTINE SURFCE if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(506)) - fld_info(cfld)%ntrange=IFHR-ID(18) - fld_info(cfld)%tinvstat=1 + if(ITSRFC>0) then + fld_info(cfld)%ntrange=1 + else + fld_info(cfld)%ntrange=0 + endif + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,ii,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -2311,8 +2323,12 @@ SUBROUTINE SURFCE enddo cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(507)) - fld_info(cfld)%ntrange=IFHR-ID(18) - fld_info(cfld)%tinvstat=1 + if(ITSRFC>0) then + fld_info(cfld)%ntrange=1 + else + fld_info(cfld)%ntrange=0 + endif + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,ii,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -2635,12 +2651,12 @@ SUBROUTINE SURFCE cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(508)) fld_info(cfld)%lvl=LVLSXML(1,IGET(508)) - fld_info(cfld)%tinvstat=1 - if (IFHR > 0) then + if(ITSRFC>0) then fld_info(cfld)%ntrange=1 else fld_info(cfld)%ntrange=0 endif + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,ii,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -6405,8 +6421,12 @@ SUBROUTINE SURFCE if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(503)) - fld_info(cfld)%ntrange=IFHR-ID(18) - fld_info(cfld)%tinvstat=1 + if(ITSRFC>0) then + fld_info(cfld)%ntrange=1 + else + fld_info(cfld)%ntrange=0 + endif + fld_info(cfld)%tinvstat=IFHR-ID(18) datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=GRID1(ista:iend,jsta:jend) endif ENDIF @@ -6430,8 +6450,12 @@ SUBROUTINE SURFCE if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(504)) - fld_info(cfld)%ntrange=IFHR-ID(18) - fld_info(cfld)%tinvstat=1 + if(ITSRFC>0) then + fld_info(cfld)%ntrange=1 + else + fld_info(cfld)%ntrange=0 + endif + fld_info(cfld)%tinvstat=IFHR-ID(18) datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=GRID1(ista:iend,jsta:jend) endif From 29246f4f651889698039e6686e507550f5931418 Mon Sep 17 00:00:00 2001 From: eric james Date: Thu, 20 Oct 2022 20:44:06 +0000 Subject: [PATCH 02/12] Including postxconfig file --- parm/postxconfig-NT-fv3lam_rrfs.txt | 298 +++++++++++++++++++++++++++- 1 file changed, 297 insertions(+), 1 deletion(-) diff --git a/parm/postxconfig-NT-fv3lam_rrfs.txt b/parm/postxconfig-NT-fv3lam_rrfs.txt index e6ba35ddb..e3f408538 100644 --- a/parm/postxconfig-NT-fv3lam_rrfs.txt +++ b/parm/postxconfig-NT-fv3lam_rrfs.txt @@ -1,6 +1,6 @@ 2 239 -268 +276 PRSLEV 32769 ncep_nco @@ -9933,6 +9933,302 @@ surface ? ? ? +915 +1H_2YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +916 +ACM_2YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +917 +1H_5YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +918 +ACM_5YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +919 +1H_10YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +920 +ACM_10YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +921 +1H_100YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +922 +ACM_100YARI_EXCEEDANCE +? +1 +tmpl4_8 +GWLOWS +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? NATLEV 32769 ncep_nco From 05c5e320449cbb87f5406acf611619156b4b3e94 Mon Sep 17 00:00:00 2001 From: eric james Date: Thu, 20 Oct 2022 20:58:44 +0000 Subject: [PATCH 03/12] Bug fix for if statement --- sorc/ncep_post.fd/INITPOST_NETCDF.f | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 0df190818..9d5a8c8fa 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -3361,8 +3361,8 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) IF(MODELNAME == 'FV3R')THEN VarName='wet1' - call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & - ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,buf) + call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,buf) !$omp parallel do private(i,j) do j=jsta,jend do i=1,im @@ -3399,6 +3399,7 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) vz0(i,j) = spval ! GFS does not output humidity at roughness length enddo enddo + ENDIF do l=1,lm !$omp parallel do private(i,j) do j=jsta_2l,jend_2u From 2caab744b6e2d98db6815032fc4fe01b24644dfa Mon Sep 17 00:00:00 2001 From: eric james Date: Mon, 24 Oct 2022 18:22:48 +0000 Subject: [PATCH 04/12] Reverting change to max precip rate encoding. --- sorc/ncep_post.fd/SURFCE.f | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 40801412d..538dd012a 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -2651,7 +2651,8 @@ SUBROUTINE SURFCE cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(508)) fld_info(cfld)%lvl=LVLSXML(1,IGET(508)) - if(ITSRFC>0) then + fld_info(cfld)%tinvstat=1 + if (IFHR > 0) then fld_info(cfld)%ntrange=1 else fld_info(cfld)%ntrange=0 From 54ecccfd9abb01635df6dd5ef43b502b4585cfb9 Mon Sep 17 00:00:00 2001 From: eric james Date: Mon, 24 Oct 2022 18:38:46 +0000 Subject: [PATCH 05/12] Minor bug fix. --- sorc/ncep_post.fd/SURFCE.f | 1 - 1 file changed, 1 deletion(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 538dd012a..240279a69 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -2657,7 +2657,6 @@ SUBROUTINE SURFCE else fld_info(cfld)%ntrange=0 endif - fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,ii,jj) do j=1,jend-jsta+1 jj = jsta+j-1 From ea8b65dc9f5bd29b1d9a91698a9ad704047643a8 Mon Sep 17 00:00:00 2001 From: eric james Date: Fri, 28 Oct 2022 15:05:43 +0000 Subject: [PATCH 06/12] Adding change log entries for code modifications from GSL RRFS_dev --- sorc/ncep_post.fd/CALHEL3.f | 1 + sorc/ncep_post.fd/CALUPDHEL.f | 1 + sorc/ncep_post.fd/INITPOST_NETCDF.f | 1 + sorc/ncep_post.fd/SURFCE.f | 2 ++ 4 files changed, 5 insertions(+) diff --git a/sorc/ncep_post.fd/CALHEL3.f b/sorc/ncep_post.fd/CALHEL3.f index abebc0013..c56718cfb 100644 --- a/sorc/ncep_post.fd/CALHEL3.f +++ b/sorc/ncep_post.fd/CALHEL3.f @@ -40,6 +40,7 @@ !> 2019-09-03 | J Meng | Modified to compute effective helicity and critical angle !> 2021-03-15 | E Colon | CALHEL2 modified to compute effective rather than fixed layer helicity !> 2021-09-02 | Bo Cui | Decompose UPP in X direction +!> 2022-05-12 | E Colon | Resolved a bug which looped over the calculation of SRH at two fixed levels, erroneously doubling the magnitude. !> !> @author Michael Baldwin W/NP2 @date 1994-08-22 SUBROUTINE CALHEL3(LLOW,LUPP,UST,VST,HELI) diff --git a/sorc/ncep_post.fd/CALUPDHEL.f b/sorc/ncep_post.fd/CALUPDHEL.f index fed2481b3..d5718455f 100644 --- a/sorc/ncep_post.fd/CALUPDHEL.f +++ b/sorc/ncep_post.fd/CALUPDHEL.f @@ -12,6 +12,7 @@ !> 2011-04-05 | H Chuang | added B grid option !> 2020-11-06 | J Meng | Use UPP_MATH Module !> 2021-10-31 | J Meng | 2D DECOMPOSITION +!> 2022-05-12 | E James | Adding a check for extremely large positive or negative UH values !> !> @author M Pyle W/NP2 @date 2007-10-22 SUBROUTINE CALUPDHEL(UPDHEL) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 9d5a8c8fa..514786fb6 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -21,6 +21,7 @@ !> 2022-07-10 | Wen Meng | Output lat/lon on four coner points of rotated lat-lon grids in text file. !> 2022-07-18 | Wen Meng | Read instant top of atmos ULWRF from model !> 2022-09-18 | Li(Kate) Zhang| Add aerosol fileds for GEFS-Aerosols (gocart_on) and UFS-Aerosols(nasa_on) model +!> 2022-10-28 | Eric James | Modifications to allow passing through soil moisture availability field from RUC LSM for RRFS !> !> @author Hui-Ya Chuang @date 2016-03-04 SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 240279a69..cdd89d38b 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -40,6 +40,8 @@ !! - 21-04-01 J MENG - COMPUTATION ON DEFINED POINTS ONLY !! - 21-07-26 W Meng - Restrict computation from undefined grids !! - 21-10-31 J MENG - 2D DECOMPOSITION +!! - 22-02-01 E JAMES - Cleaning up GRIB2 encoding for six variables +!! that cause issues with newer wgrib2 builds in RRFS system. !! !! USAGE: CALL SURFCE !! INPUT ARGUMENT LIST: From a25ab21dec230739ae91cbaeb9d14babeba08302 Mon Sep 17 00:00:00 2001 From: eric james Date: Mon, 31 Oct 2022 21:09:25 +0000 Subject: [PATCH 07/12] Fixing error with multiple variables using the same IGET value (922) in SURFCE. --- sorc/ncep_post.fd/SURFCE.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index cdd89d38b..75770b69d 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -5633,7 +5633,7 @@ SUBROUTINE SURFCE endif ENDIF - write_cd: IF(IGET(922)>0) THEN + write_cd: IF(IGET(924)>0) THEN DO J=JSTA,JEND DO I=ISTA,IEND GRID1(I,J)=CD10(I,J) @@ -5641,7 +5641,7 @@ SUBROUTINE SURFCE ENDDO if(grib=='grib2') then cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(922)) + fld_info(cfld)%ifld=IAVBLFLD(IGET(924)) datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=GRID1(ista:iend,jsta:jend) endif ENDIF write_cd From d1fffeb77dbb3665db43f53e44c76c47facb9774 Mon Sep 17 00:00:00 2001 From: eric james Date: Tue, 1 Nov 2022 20:24:36 +0000 Subject: [PATCH 08/12] Getting rid of unnecessary IF statement --- sorc/ncep_post.fd/INITPOST_NETCDF.f | 34 +++++++---------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 514786fb6..fc05013a8 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -3360,35 +3360,18 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) enddo ! if(debugprint)print*,'sample l',VarName,' = ',1,isltyp(isa,jsa) - IF(MODELNAME == 'FV3R')THEN - VarName='wet1' - call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & - spval,VarName,buf) -!$omp parallel do private(i,j) - do j=jsta,jend - do i=1,im - smstav(i,j) = buf(i,j) - enddo - enddo + VarName='wet1' + call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,buf) !$omp parallel do private(i,j) - do j=jsta_2l,jend_2u - do i=1,im -! 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 - qz0(i,j) = spval ! GFS does not output humidity at roughness length - uz0(i,j) = spval ! GFS does not output u at roughness length - vz0(i,j) = spval ! GFS does not output humidity at roughness length - enddo + do j=jsta,jend + do i=1,im + smstav(i,j) = buf(i,j) enddo - ELSE + 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 + do i=1,im ! 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 @@ -3400,7 +3383,6 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) vz0(i,j) = spval ! GFS does not output humidity at roughness length enddo enddo - ENDIF do l=1,lm !$omp parallel do private(i,j) do j=jsta_2l,jend_2u From e0e6a3db545aefcd632c29c26c21b489255872cb Mon Sep 17 00:00:00 2001 From: eric james Date: Tue, 1 Nov 2022 20:27:55 +0000 Subject: [PATCH 09/12] Commenting out setting smstav to missing --- sorc/ncep_post.fd/INITPOST_NETCDF.f | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index fc05013a8..8d0b80da6 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -3371,7 +3371,8 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) enddo !$omp parallel do private(i,j) do j=jsta_2l,jend_2u - do i=1,im + 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 From 90947f34d7c317f6e0a4b92b40fcdaf1222cdc29 Mon Sep 17 00:00:00 2001 From: eric james Date: Tue, 1 Nov 2022 22:25:08 +0000 Subject: [PATCH 10/12] Changing name of soil moisture availability to be consistent with latest RRFS --- sorc/ncep_post.fd/INITPOST_NETCDF.f | 2 +- sorc/ncep_post.fd/SURFCE.f | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 8d0b80da6..3115b57cc 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -3360,7 +3360,7 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) enddo ! if(debugprint)print*,'sample l',VarName,' = ',1,isltyp(isa,jsa) - VarName='wet1' + VarName='wetness' call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & spval,VarName,buf) !$omp parallel do private(i,j) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 75770b69d..e3c0874fa 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -648,7 +648,7 @@ SUBROUTINE SURFCE DO J=JSTA,JEND DO I=ISTA,IEND IF(SMSTAV(I,J) /= SPVAL)THEN - GRID1(I,J) = SMSTAV(I,J)*100. + GRID1(I,J) = SMSTAV(I,J) ELSE GRID1(I,J) = 0. ENDIF From 42c3b1f4b785055aaca9282fbc83d463e2d6431f Mon Sep 17 00:00:00 2001 From: eric james Date: Wed, 2 Nov 2022 16:28:01 +0000 Subject: [PATCH 11/12] Adding check for model type before multiplying MSTAV by 100 --- sorc/ncep_post.fd/SURFCE.f | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index e3c0874fa..cd7a6f786 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -648,7 +648,11 @@ SUBROUTINE SURFCE DO J=JSTA,JEND DO I=ISTA,IEND IF(SMSTAV(I,J) /= SPVAL)THEN - GRID1(I,J) = SMSTAV(I,J) + IF ( MODELNAME == 'FV3R') THEN + GRID1(I,J) = SMSTAV(I,J) + ELSE + GRID1(I,J) = SMSTAV(I,J)*100. + ENDIF ELSE GRID1(I,J) = 0. ENDIF From b1b2b337ad6771c770f718edf66d77059b3f4baa Mon Sep 17 00:00:00 2001 From: eric james Date: Thu, 3 Nov 2022 15:30:35 +0000 Subject: [PATCH 12/12] Adding definition for ITSRFC in GRIB2 bug fix sections. --- sorc/ncep_post.fd/SURFCE.f | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index cd7a6f786..7154b39b2 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -821,6 +821,7 @@ SUBROUTINE SURFCE ID(18) = IFHR - 1 ENDIF ID(20) = 3 + ITSRFC = NINT(TSRFC) if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(501)) @@ -855,6 +856,7 @@ SUBROUTINE SURFCE ISVALUE = 10 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) + ITSRFC = NINT(TSRFC) if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(502)) @@ -2310,6 +2312,7 @@ SUBROUTINE SURFCE GRID2(I,J) = V10MAX(I,J) ENDDO ENDDO + ITSRFC = NINT(TSRFC) if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(506)) @@ -6424,6 +6427,7 @@ SUBROUTINE SURFCE ID(18) = IFHR - 1 ENDIF ID(20) = 3 + ITSRFC = NINT(TSRFC) if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(503)) @@ -6453,6 +6457,7 @@ SUBROUTINE SURFCE ID(18) = IFHR - 1 ENDIF ID(20) = 3 + ITSRFC = NINT(TSRFC) if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(504))