From c1cf9df4bdff408f6e2fd54ca9bf4e670333dd0a Mon Sep 17 00:00:00 2001 From: wx20hc Date: Mon, 15 Nov 2021 19:19:38 +0000 Subject: [PATCH 1/5] Add foundation temperature per request from coupling group --- parm/post_avblflds.xml | 8 ++++ parm/postcntrl_gfs_flux.xml | 5 +++ parm/postcntrl_gfs_flux_f00.xml | 5 +++ parm/postxconfig-NT-GFS-FLUX-F00.txt | 39 +++++++++++++++++++- parm/postxconfig-NT-GFS-FLUX.txt | 39 +++++++++++++++++++- sorc/ncep_post.fd/ALLOCATE_ALL.f | 2 + sorc/ncep_post.fd/DEALLOCATE.f | 1 + sorc/ncep_post.fd/FIXED.f | 18 ++++++++- sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f | 9 ++++- sorc/ncep_post.fd/RQSTFLD.F | 3 ++ sorc/ncep_post.fd/VRBLS2D_mod.f | 2 +- 11 files changed, 125 insertions(+), 6 deletions(-) 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_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/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/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..14a0cd2a2 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 @@ -331,6 +332,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 811a8d191..d02e37d4f 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/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F index 4dab5648b..06722b30f 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -2193,6 +2193,9 @@ module RQSTFLD_mod DATA IFILV(548),AVBL(548),IQ(548),IS(548),AVBLGRB2(548) & & /1,'SURFACE EQ POT TEMP ',014,001, & & 'SURFACE EQ POT TEMP '/ + DATA IFILV(549),AVBL(549),IQ(549),IS(549),AVBLGRB2(549) & + & /1,'FOUNDATION NSST ',014,001, & + & 'FDNSSTMP '/ DATA IFILV(755),AVBL(755),IQ(755),IS(755),AVBLGRB2(755) & & /1,'EQUIL LEVEL HEIGHT ',007,247, & & 'EQUIL LEVEL HEIGHT '/ 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(:,:) From 0601de0945e1fdbc83c4335e91e2fcbb9b6c7839 Mon Sep 17 00:00:00 2001 From: wx20hc Date: Tue, 16 Nov 2021 21:49:57 +0000 Subject: [PATCH 2/5] add founfation T to inline post control file --- parm/postcntrl_gfs_f00_two.xml | 5 ++++ parm/postcntrl_gfs_two.xml | 5 ++++ parm/postxconfig-NT-GFS-F00-TWO.txt | 39 ++++++++++++++++++++++++++++- parm/postxconfig-NT-GFS-TWO.txt | 39 ++++++++++++++++++++++++++++- 4 files changed, 86 insertions(+), 2 deletions(-) diff --git a/parm/postcntrl_gfs_f00_two.xml b/parm/postcntrl_gfs_f00_two.xml index 1fdb74000..e51933641 100755 --- a/parm/postcntrl_gfs_f00_two.xml +++ b/parm/postcntrl_gfs_f00_two.xml @@ -186,6 +186,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..9d669427d 100755 --- a/parm/postcntrl_gfs_two.xml +++ b/parm/postcntrl_gfs_two.xml @@ -186,6 +186,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..a27e93934 100644 --- a/parm/postxconfig-NT-GFS-F00-TWO.txt +++ b/parm/postxconfig-NT-GFS-F00-TWO.txt @@ -1,6 +1,6 @@ 2 46 -150 +151 GFSPRS 0 ncep_nco @@ -1016,6 +1016,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..5c166a232 100644 --- a/parm/postxconfig-NT-GFS-TWO.txt +++ b/parm/postxconfig-NT-GFS-TWO.txt @@ -1,6 +1,6 @@ 2 111 -197 +198 GFSPRS 0 ncep_nco @@ -1016,6 +1016,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 ? From 6ac0f9f7bab26063d1691455249ecc1e42d852d5 Mon Sep 17 00:00:00 2001 From: wx20hc Date: Tue, 16 Nov 2021 22:08:54 +0000 Subject: [PATCH 3/5] add founfation T to inline post control file flux file part instead --- parm/postcntrl_gfs_f00_two.xml | 10 ++-- parm/postcntrl_gfs_two.xml | 10 ++-- parm/postxconfig-NT-GFS-F00-TWO.txt | 78 ++++++++++++++--------------- parm/postxconfig-NT-GFS-TWO.txt | 78 ++++++++++++++--------------- 4 files changed, 88 insertions(+), 88 deletions(-) diff --git a/parm/postcntrl_gfs_f00_two.xml b/parm/postcntrl_gfs_f00_two.xml index e51933641..4923112df 100755 --- a/parm/postcntrl_gfs_f00_two.xml +++ b/parm/postcntrl_gfs_f00_two.xml @@ -186,11 +186,6 @@ 4.0 - - FDNSSTMP_ON_SURFACE - 4.0 - - TSOIL_ON_DEPTH_BEL_LAND_SFC 2 2 2 2 @@ -968,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_two.xml b/parm/postcntrl_gfs_two.xml index 9d669427d..dab3a8ee2 100755 --- a/parm/postcntrl_gfs_two.xml +++ b/parm/postcntrl_gfs_two.xml @@ -186,11 +186,6 @@ 4.0 - - FDNSSTMP_ON_SURFACE - 4.0 - - TSOIL_ON_DEPTH_BEL_LAND_SFC 2 2 2 2 @@ -1220,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 a27e93934..73e131734 100644 --- a/parm/postxconfig-NT-GFS-F00-TWO.txt +++ b/parm/postxconfig-NT-GFS-F00-TWO.txt @@ -1,6 +1,6 @@ 2 -46 -151 +47 +150 GFSPRS 0 ncep_nco @@ -1016,43 +1016,6 @@ 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 ? @@ -5879,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-TWO.txt b/parm/postxconfig-NT-GFS-TWO.txt index 5c166a232..9a40bb467 100644 --- a/parm/postxconfig-NT-GFS-TWO.txt +++ b/parm/postxconfig-NT-GFS-TWO.txt @@ -1,6 +1,6 @@ 2 -111 -198 +112 +197 GFSPRS 0 ncep_nco @@ -1016,43 +1016,6 @@ 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 ? @@ -7618,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 ? From 3cc969abeb5df39a1d46b1f1e0c5daf060392cf8 Mon Sep 17 00:00:00 2001 From: wx20hc Date: Tue, 23 Nov 2021 21:34:54 +0000 Subject: [PATCH 4/5] Change sea ice threshold for identifying sea ice from .1 to 0 --- sorc/ncep_post.fd/FIXED.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/ncep_post.fd/FIXED.f b/sorc/ncep_post.fd/FIXED.f index 14a0cd2a2..aa1986d39 100644 --- a/sorc/ncep_post.fd/FIXED.f +++ b/sorc/ncep_post.fd/FIXED.f @@ -110,7 +110,7 @@ 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(SICE(I,J) /= SPVAL .AND. SICE(I,J) > 0.0) GRID1(I,J) = 0. ! if(j==jm/2)print*,'i,mask= ',i,grid1(i,j) ENDDO ENDDO From dbc6f480deecb89f9d08db841a477645e82a31cd Mon Sep 17 00:00:00 2001 From: wx20hc Date: Thu, 2 Dec 2021 16:03:50 +0000 Subject: [PATCH 5/5] made updates to only use new ice fraction threshold to identify sea ice grid point for GFS and RRFS so that legacy models land masks won't be affected by this change. --- sorc/ncep_post.fd/FIXED.f | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sorc/ncep_post.fd/FIXED.f b/sorc/ncep_post.fd/FIXED.f index aa1986d39..356a7f403 100644 --- a/sorc/ncep_post.fd/FIXED.f +++ b/sorc/ncep_post.fd/FIXED.f @@ -110,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.0) 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