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