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(:,:)