diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml
index dd5126d18..d36cc14fc 100755
--- a/parm/post_avblflds.xml
+++ b/parm/post_avblflds.xml
@@ -4719,6 +4719,14 @@
3.0
+
+ 549
+ FDNSSTMP_ON_SURFACE
+ FDNSSTMP
+ surface
+ 4.0
+
+
551
CSNOW_ON_SURFACE
diff --git a/parm/postcntrl_gfs_f00_two.xml b/parm/postcntrl_gfs_f00_two.xml
index 1fdb74000..4923112df 100755
--- a/parm/postcntrl_gfs_f00_two.xml
+++ b/parm/postcntrl_gfs_f00_two.xml
@@ -963,6 +963,11 @@
4.0
+
+ FDNSSTMP_ON_SURFACE
+ 4.0
+
+
TSOIL_ON_DEPTH_BEL_LAND_SFC
2 2 2 2
diff --git a/parm/postcntrl_gfs_flux.xml b/parm/postcntrl_gfs_flux.xml
index 7bd9203e5..2511c3e48 100755
--- a/parm/postcntrl_gfs_flux.xml
+++ b/parm/postcntrl_gfs_flux.xml
@@ -54,6 +54,11 @@
4.0
+
+ FDNSSTMP_ON_SURFACE
+ 4.0
+
+
TSOIL_ON_DEPTH_BEL_LAND_SFC
2 2 2 2
diff --git a/parm/postcntrl_gfs_flux_f00.xml b/parm/postcntrl_gfs_flux_f00.xml
index 42195b196..c8c6c1008 100755
--- a/parm/postcntrl_gfs_flux_f00.xml
+++ b/parm/postcntrl_gfs_flux_f00.xml
@@ -54,6 +54,11 @@
4.0
+
+ FDNSSTMP_ON_SURFACE
+ 4.0
+
+
TSOIL_ON_DEPTH_BEL_LAND_SFC
2 2 2 2
diff --git a/parm/postcntrl_gfs_two.xml b/parm/postcntrl_gfs_two.xml
index 2d37396dd..dab3a8ee2 100755
--- a/parm/postcntrl_gfs_two.xml
+++ b/parm/postcntrl_gfs_two.xml
@@ -1215,6 +1215,11 @@
4.0
+
+ FDNSSTMP_ON_SURFACE
+ 4.0
+
+
TSOIL_ON_DEPTH_BEL_LAND_SFC
2 2 2 2
diff --git a/parm/postxconfig-NT-GFS-F00-TWO.txt b/parm/postxconfig-NT-GFS-F00-TWO.txt
index 18ac45613..73e131734 100644
--- a/parm/postxconfig-NT-GFS-F00-TWO.txt
+++ b/parm/postxconfig-NT-GFS-F00-TWO.txt
@@ -1,5 +1,5 @@
2
-46
+47
150
GFSPRS
0
@@ -5842,6 +5842,43 @@ surface
?
?
?
+549
+FDNSSTMP_ON_SURFACE
+?
+1
+tmpl4_0
+FDNSSTMP
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
116
TSOIL_ON_DEPTH_BEL_LAND_SFC
?
diff --git a/parm/postxconfig-NT-GFS-FLUX-F00.txt b/parm/postxconfig-NT-GFS-FLUX-F00.txt
index a532af969..26b7058c8 100644
--- a/parm/postxconfig-NT-GFS-FLUX-F00.txt
+++ b/parm/postxconfig-NT-GFS-FLUX-F00.txt
@@ -1,5 +1,5 @@
1
-46
+47
GFSPRS
0
ncep_nco
@@ -275,6 +275,43 @@ surface
?
?
?
+549
+FDNSSTMP_ON_SURFACE
+?
+1
+tmpl4_0
+FDNSSTMP
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
116
TSOIL_ON_DEPTH_BEL_LAND_SFC
?
diff --git a/parm/postxconfig-NT-GFS-FLUX.txt b/parm/postxconfig-NT-GFS-FLUX.txt
index 760fb95a8..d5f224d47 100644
--- a/parm/postxconfig-NT-GFS-FLUX.txt
+++ b/parm/postxconfig-NT-GFS-FLUX.txt
@@ -1,5 +1,5 @@
1
-111
+112
GFSPRS
0
ncep_nco
@@ -275,6 +275,43 @@ surface
?
?
?
+549
+FDNSSTMP_ON_SURFACE
+?
+1
+tmpl4_0
+FDNSSTMP
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
116
TSOIL_ON_DEPTH_BEL_LAND_SFC
?
diff --git a/parm/postxconfig-NT-GFS-TWO.txt b/parm/postxconfig-NT-GFS-TWO.txt
index 7507a0de7..9a40bb467 100644
--- a/parm/postxconfig-NT-GFS-TWO.txt
+++ b/parm/postxconfig-NT-GFS-TWO.txt
@@ -1,5 +1,5 @@
2
-111
+112
197
GFSPRS
0
@@ -7581,6 +7581,43 @@ surface
?
?
?
+549
+FDNSSTMP_ON_SURFACE
+?
+1
+tmpl4_0
+FDNSSTMP
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
116
TSOIL_ON_DEPTH_BEL_LAND_SFC
?
diff --git a/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f
index c63ba43b1..4643f84a5 100644
--- a/sorc/ncep_post.fd/ALLOCATE_ALL.f
+++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f
@@ -969,6 +969,7 @@ SUBROUTINE ALLOCATE_ALL()
allocate(tetran(im,jsta_2l:jend_2u))
allocate(tedir(im,jsta_2l:jend_2u))
allocate(twa(im,jsta_2l:jend_2u))
+ allocate(fdnsst(im,jsta_2l:jend_2u))
!Initialization
!$omp parallel do private(i,j)
do j=jsta_2l,jend_2u
@@ -1018,6 +1019,7 @@ SUBROUTINE ALLOCATE_ALL()
tetran(i,j)=spval
tedir(i,j)=spval
twa(i,j)=spval
+ fdnsst(i,j)=spval
enddo
enddo
!
diff --git a/sorc/ncep_post.fd/DEALLOCATE.f b/sorc/ncep_post.fd/DEALLOCATE.f
index 54f246042..c6cf34ad9 100644
--- a/sorc/ncep_post.fd/DEALLOCATE.f
+++ b/sorc/ncep_post.fd/DEALLOCATE.f
@@ -385,6 +385,7 @@ SUBROUTINE DE_ALLOCATE
deallocate(tetran)
deallocate(tedir)
deallocate(twa)
+ deallocate(fdnsst)
! GSD
deallocate(rainc_bucket)
deallocate(rainc_bucket1)
diff --git a/sorc/ncep_post.fd/FIXED.f b/sorc/ncep_post.fd/FIXED.f
index 64c549d7c..356a7f403 100644
--- a/sorc/ncep_post.fd/FIXED.f
+++ b/sorc/ncep_post.fd/FIXED.f
@@ -45,7 +45,8 @@ SUBROUTINE FIXED
!
use vrbls3d, only: pint
- use vrbls2d, only: albedo, avgalbedo, albase, mxsnal, sst, ths, epsr, ti
+ use vrbls2d, only: albedo, avgalbedo, albase, mxsnal, sst, ths, epsr, ti&
+ , fdnsst
use masks, only: gdlat, gdlon, sm, sice, lmh, lmv
use params_mod, only: small, p1000, capa
use lookup_mod, only: ITB,JTB,ITBQ,JTBQ
@@ -109,7 +110,11 @@ SUBROUTINE FIXED
DO I = 1,IM
GRID1(I,J) = SPVAL
IF(SM(I,J) /= SPVAL) GRID1(I,J) = 1. - SM(I,J)
- IF(SICE(I,J) /= SPVAL .AND. SICE(I,J) > 0.1) GRID1(I,J) = 0.
+ If(MODELNAME == 'GFS' .or. MODELNAME == 'FV3R')then
+ IF(SICE(I,J) /= SPVAL .AND. SICE(I,J) > 0.0)GRID1(I,J)=0.
+ else
+ IF(SICE(I,J) /= SPVAL .AND. SICE(I,J) > 0.1)GRID1(I,J)=0.
+ end if
! if(j==jm/2)print*,'i,mask= ',i,grid1(i,j)
ENDDO
ENDDO
@@ -331,6 +336,21 @@ SUBROUTINE FIXED
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
+!
+! FOUNDATION TEMPERAURE.
+ IF (IGET(549)>0) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = FDNSST(I,J)
+ ENDDO
+ ENDDO
+ if(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(549))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
! EMISSIVIT.
IF (IGET(248)>0) THEN
diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f
index d4049ebb1..624807426 100644
--- a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f
+++ b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f
@@ -57,7 +57,7 @@ SUBROUTINE INITPOST_GFS_NETCDF_PARA(ncid3d)
smstot, ivgtyp, isltyp, sfcevp, sfcexc, acsnow, acsnom, sst, thz0, qz0, &
uz0, vz0, ptop, htop, pbot, hbot, ptopl, pbotl, ttopl, ptopm, pbotm, ttopm, &
ptoph, pboth, pblcfr, ttoph, runoff, tecan, tetran, tedir, twa, maxtshltr, &
- mintshltr, maxrhshltr, &
+ mintshltr, maxrhshltr, fdnsst, &
minrhshltr, dzice, smcwlt, suntime, fieldcapa, htopd, hbotd, htops, hbots, &
cuppt, dusmass, ducmass, dusmass25, ducmass25, aswintoa,rel_vort_maxhy1, &
maxqshltr, minqshltr, acond, sr, u10h, v10h,refd_max, w_up_max, w_dn_max, &
@@ -1021,7 +1021,12 @@ SUBROUTINE INITPOST_GFS_NETCDF_PARA(ncid3d)
enddo
if(debugprint)print*,'sample ',VarName,' = ',ths(isa,jsa)
-
+! foundation temperature
+ VarName='tref'
+ call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, &
+ spval,VarName,fdnsst)
+ if(debugprint)print*,'sample ',VarName,' = ',fdnsst(isa,jsa)
+
! GFS does not have time step and physics time step, make up ones since they
! are not really used anyway
! NPHS=1.
diff --git a/sorc/ncep_post.fd/VRBLS2D_mod.f b/sorc/ncep_post.fd/VRBLS2D_mod.f
index 31eef7a90..aa3231177 100644
--- a/sorc/ncep_post.fd/VRBLS2D_mod.f
+++ b/sorc/ncep_post.fd/VRBLS2D_mod.f
@@ -82,7 +82,7 @@ module vrbls2d
,avgesnow(:,:),avgpotevp(:,:),avgprec_cont(:,:),avgcprate_cont(:,:)&
,ti(:,:),aod550(:,:),du_aod550(:,:),ss_aod550(:,:),su_aod550(:,:) &
,bc_aod550(:,:),oc_aod550(:,:),landfrac(:,:),paha(:,:),pahi(:,:) &
- ,tecan(:,:),tetran(:,:),tedir(:,:),twa(:,:)
+ ,tecan(:,:),tetran(:,:),tedir(:,:),twa(:,:),fdnsst(:,:)
integer, allocatable :: IVGTYP(:,:),ISLTYP(:,:),ISLOPE(:,:) &
,IEQL(:,:)