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 61eef3d63..9b151064e 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -7358,7 +7358,7 @@ 915 1H_2YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7368,7 +7368,7 @@ 916 ACM_2YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7378,7 +7378,7 @@ 917 1H_5YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7388,7 +7388,7 @@ 918 ACM_5YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7398,7 +7398,7 @@ 919 1H_10YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7408,7 +7408,7 @@ 920 ACM_10YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7418,7 +7418,7 @@ 921 1H_100YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 @@ -7428,7 +7428,7 @@ 922 ACM_100YARI_EXCEEDANCE tmpl4_8 - FFLDRO + GWLOWS ACM surface 4.0 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 diff --git a/sorc/ncep_post.fd/CALHEL3.f b/sorc/ncep_post.fd/CALHEL3.f index 156911f17..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) @@ -373,7 +374,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 +442,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..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) @@ -115,6 +116,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..3115b57cc 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) @@ -3359,10 +3360,19 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) enddo ! if(debugprint)print*,'sample l',VarName,' = ',1,isltyp(isa,jsa) + 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) + 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=ista_2l,iend_2u - smstav(i,j) = spval ! GFS does not have soil moisture availability +! 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 diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 47df11479..7154b39b2 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: @@ -646,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)*100. + 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 @@ -815,11 +821,16 @@ 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)) - 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 @@ -845,11 +856,16 @@ 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)) - 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 @@ -2296,11 +2312,16 @@ 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)) - 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 +2332,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 @@ -5615,7 +5640,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) @@ -5623,7 +5648,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 @@ -6402,11 +6427,16 @@ 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)) - 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 @@ -6427,11 +6457,16 @@ 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)) - 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