From 49eaec10bc6ebfc362e6a7a86eb348855cd5bb08 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Sat, 11 Sep 2021 13:45:39 -0400 Subject: [PATCH 1/8] add some extra surface fields to the model output --- parm/params_grib2_tbl_new | 8 + parm/params_grib2_tbl_new.text | 10 + parm/post_avblflds.xml | 70 +++++ parm/postcntrl_gfs.xml | 35 +++ parm/postxconfig-NT-GFS.txt | 261 ++++++++++++++++++- sorc/ncep_post.fd/ALLOCATE_ALL.f | 14 + sorc/ncep_post.fd/DEALLOCATE.f | 7 + sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f | 84 +++++- sorc/ncep_post.fd/RQSTFLD.F | 28 +- sorc/ncep_post.fd/SURFCE.f | 103 +++++++- sorc/ncep_post.fd/VRBLS2D_mod.f | 3 +- 11 files changed, 613 insertions(+), 10 deletions(-) diff --git a/parm/params_grib2_tbl_new b/parm/params_grib2_tbl_new index 07db84e1e..70dc69cf5 100755 --- a/parm/params_grib2_tbl_new +++ b/parm/params_grib2_tbl_new @@ -294,6 +294,7 @@ 0 7 204 1 EFHL 0 3 222 1 EFSH 0 7 9 0 EHLX + 2 0 237 1 EIWATER 4 2 1 0 ELCDEN 4 0 1 0 ELECTMP 10 3 194 1 ELEV @@ -461,6 +462,8 @@ 10 0 43 0 KSSEDW 0 7 2 0 KX 0 7 198 1 LAI + 2 0 234 1 LAKEFRC + 2 0 233 1 LANDFRC 1 2 8 0 LANDIL 2 0 218 1 LANDN 2 0 8 0 LANDU @@ -642,6 +645,7 @@ 0 14 200 1 OZMAX1 0 14 201 1 OZMAX8 10 3 196 1 P2OMLT + 2 0 235 1 PAHFLX 3 3 2 0 PBINFRC 3 3 1 0 PBLIFRC 0 19 12 0 PBLREG @@ -658,6 +662,7 @@ 0 1 200 1 PEVPR 0 4 10 0 PHOTAR 3 0 8 0 PIXST + 2 0 238 1 PLANTTR 0 7 0 0 PLI 0 3 200 1 PLPL 4 2 0 0 PLSMDEN @@ -914,6 +919,7 @@ 2 0 3 0 SOILM 2 0 22 0 SOILM 2 3 15 0 SOILP + 2 0 239 1 SOILSE 2 3 18 0 SOILTMP 2 0 38 0 SOILVIC 2 0 192 1 SOILW @@ -947,6 +953,7 @@ 0 3 22 0 SSGSO 10 3 195 1 SSHG 3 5 2 0 SSKSSTMP + 3 192 62 0 SSMIS17 0 1 86 0 SSNOWW 1 0 6 0 SSRUN 1 0 193 1 SSRUN @@ -1197,6 +1204,7 @@ 0 2 192 1 VWSH 10 4 17 0 WATDENA 10 4 16 0 WATERDEN + 2 0 236 1 WATERSA 10 4 20 0 WATPDENA 10 4 19 0 WATPDEN 10 4 18 0 WATPTEMP diff --git a/parm/params_grib2_tbl_new.text b/parm/params_grib2_tbl_new.text index bb1ac971b..29853b237 100755 --- a/parm/params_grib2_tbl_new.text +++ b/parm/params_grib2_tbl_new.text @@ -1033,6 +1033,14 @@ 2 0 230 1 TRANS 2 0 231 1 VEGMIN 2 0 232 1 VEGMAX +! Added more parameters in 7/14/2021 + 2 0 233 1 LANDFRC + 2 0 234 1 LAKEFRC + 2 0 235 1 PAHFLX + 2 0 236 1 WATERSA + 2 0 237 1 EIWATER + 2 0 238 1 PLANTTR + 2 0 239 1 SOILSE ! ! GRIB2 - TABLE 4.2-2-1 PARAMETERS FOR DISCIPLINE 2 CATEGORY 1 ! @@ -1289,6 +1297,8 @@ 3 192 59 0 SBTAGR14 3 192 60 0 SBTAGR15 3 192 61 0 SBTAGR16 +! Added more parameters in 07/16/2021 + 3 192 62 0 SSMIS17 ! ! GRIB2 - TABLE 4.2-4-0 PARAMETERS FOR DISCIPLINE 4 CATEGORY 0 ! diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 2bdb0f090..4b5471dd9 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -7709,6 +7709,76 @@ 6.0 + + 994 + LAND_FRAC + LANDFRC + NCEP + surface + 3.0 + + + + 995 + INST_PREC_ADVEC_HEAT + PAHFLX + NCEP + surface + 3.0 + + + + 996 + WATER_AQUIFER + WATERSA + NCEP + surface + 3.0 + + + + 997 + ACM_EIWATER_ON_SURFACE + tmpl4_8 + EIWATER + NCEP + ACM + surface + 3.0 + + + + 998 + ACM_PLANTTR_ON_SURFACE + tmpl4_8 + PLANTTR + NCEP + ACM + surface + 3.0 + + + + 999 + ACM_SOILSE_ON_SURFACE + tmpl4_8 + SOILSE + NCEP + ACM + surface + 3.0 + + + + 1000 + AVE_PREC_ADVEC_HEAT + tmpl4_8 + PAHFLX + NCEP + AVE + surface + 3.0 + diff --git a/parm/postcntrl_gfs.xml b/parm/postcntrl_gfs.xml index 4fe5bb0f8..25a1fc670 100755 --- a/parm/postcntrl_gfs.xml +++ b/parm/postcntrl_gfs.xml @@ -1154,6 +1154,41 @@ 4.0 + + LAND_FRAC + 3.0 + + + + INST_PREC_ADVEC_HEAT + 3.0 + + + + WATER_AQUIFER + 3.0 + + + + ACM_EIWATER_ON_SURFACE + 3.0 + + + + ACM_PLANTTR_ON_SURFACE + 3.0 + + + + ACM_SOILSE_ON_SURFACE + 3.0 + + + + AVE_PREC_ADVEC_HEAT + 3.0 + + diff --git a/parm/postxconfig-NT-GFS.txt b/parm/postxconfig-NT-GFS.txt index dd2922259..683a4fc38 100644 --- a/parm/postxconfig-NT-GFS.txt +++ b/parm/postxconfig-NT-GFS.txt @@ -1,5 +1,5 @@ 1 -196 +203 GFSPRS 0 ncep_nco @@ -7268,3 +7268,262 @@ spec_pres_above_grnd ? ? ? +994 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +995 +INST_PREC_ADVEC_HEAT +? +1 +tmpl4_0 +PAHFLX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +996 +WATER_AQUIFER +? +1 +tmpl4_0 +WATERSA +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +997 +ACM_EIWATER_ON_SURFACE +? +1 +tmpl4_8 +EIWATER +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +998 +ACM_PLANTTR_ON_SURFACE +? +1 +tmpl4_8 +PLANTTR +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +999 +ACM_SOILSE_ON_SURFACE +? +1 +tmpl4_8 +SOILSE +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +1000 +AVE_PREC_ADVEC_HEAT +? +1 +tmpl4_8 +PAHFLX +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f index 322ccb8ad..a882f1913 100644 --- a/sorc/ncep_post.fd/ALLOCATE_ALL.f +++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f @@ -946,6 +946,13 @@ SUBROUTINE ALLOCATE_ALL() allocate(su_aod550(im,jsta_2l:jend_2u)) allocate(oc_aod550(im,jsta_2l:jend_2u)) allocate(bc_aod550(im,jsta_2l:jend_2u)) + allocate(landfrac(im,jsta_2l:jend_2u)) + allocate(paha(im,jsta_2l:jend_2u)) + allocate(pahi(im,jsta_2l:jend_2u)) + allocate(tecan(im,jsta_2l:jend_2u)) + allocate(tetran(im,jsta_2l:jend_2u)) + allocate(tedir(im,jsta_2l:jend_2u)) + allocate(twa(im,jsta_2l:jend_2u)) !Initialization !$omp parallel do private(i,j) do j=jsta_2l,jend_2u @@ -988,6 +995,13 @@ SUBROUTINE ALLOCATE_ALL() su_aod550(i,j)=spval oc_aod550(i,j)=spval bc_aod550(i,j)=spval + landfrac(i,j)=spval + paha(i,j)=spval + pahi(i,j)=spval + tecan(i,j)=spval + tetran(i,j)=spval + tedir(i,j)=spval + twa(i,j)=spval enddo enddo ! diff --git a/sorc/ncep_post.fd/DEALLOCATE.f b/sorc/ncep_post.fd/DEALLOCATE.f index bb80f4496..1b11b863a 100644 --- a/sorc/ncep_post.fd/DEALLOCATE.f +++ b/sorc/ncep_post.fd/DEALLOCATE.f @@ -377,6 +377,13 @@ SUBROUTINE DE_ALLOCATE deallocate(su_aod550) deallocate(bc_aod550) deallocate(oc_aod550) + deallocate(landfrac) + deallocate(paha) + deallocate(pahi) + deallocate(tecan) + deallocate(tetran) + deallocate(tedir) + deallocate(twa) ! GSD deallocate(rainc_bucket) deallocate(rainc_bucket1) diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f index 3f7cab8f7..811a8d191 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF_PARA.f @@ -48,7 +48,7 @@ SUBROUTINE INITPOST_GFS_NETCDF_PARA(ncid3d) wh, qqg, ref_10cm use vrbls2d, only: f, pd, fis, pblh, ustar, z0, ths, qs, twbs, qwbs, avgcprate, & cprate, avgprec, prec, lspa, sno, si, cldefi, th10, q10, tshltr, pshltr, & - tshltr, albase, avgalbedo, avgtcdc, czen, czmean, mxsnal, radot, sigt4, & + tshltr, albase, avgalbedo, avgtcdc, czen, czmean, mxsnal, landfrac, radot, sigt4, & cfrach, cfracl, cfracm, avgcfrach, qshltr, avgcfracl, avgcfracm, cnvcfr, & islope, cmc, grnflx, vegfrc, acfrcv, ncfrcv, acfrst, ncfrst, ssroff, & bgroff, rlwin, rlwtoa, cldwork, alwin, alwout, alwtoa, rswin, rswinc, & @@ -56,12 +56,13 @@ SUBROUTINE INITPOST_GFS_NETCDF_PARA(ncid3d) snopcx, sfcux, sfcvx, sfcuxi, sfcvxi, sfcuvx, gtaux, gtauy, potevp, u10, v10, smstav, & 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, maxtshltr, mintshltr, maxrhshltr, & + ptoph, pboth, pblcfr, ttoph, runoff, tecan, tetran, tedir, twa, maxtshltr, & + mintshltr, maxrhshltr, & 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, & up_heli_max,up_heli_min,up_heli_max03,up_heli_min03,rel_vort_max01,u10max, v10max, & - avgedir,avgecan,avgetrans,avgesnow,avgprec_cont,avgcprate_cont,rel_vort_max, & + avgedir,avgecan,paha,pahi,avgetrans,avgesnow,avgprec_cont,avgcprate_cont,rel_vort_max, & avisbeamswin,avisdiffswin,airbeamswin,airdiffswin,refdm10c_max,wspd10max, & alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, & ti,aod550,du_aod550,ss_aod550,su_aod550,oc_aod550,bc_aod550 @@ -1270,6 +1271,11 @@ SUBROUTINE INITPOST_GFS_NETCDF_PARA(ncid3d) enddo ! if(debugprint)print*,'sample ',VarName,' = ',mxsnal(isa,jsa) +! land fraction + VarName='lfrac' + call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,landfrac) + ! GFS probably does not use sigt4, set it to sig*t^4 !$omp parallel do private(i,j,tlmh) Do j=jsta,jend @@ -2130,7 +2136,55 @@ SUBROUTINE INITPOST_GFS_NETCDF_PARA(ncid3d) enddo enddo ! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,runoff(isa,jsa) + +! accumulated evaporation of intercepted water + VarName='ecan_acc' + call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,tecan) +! mask water areas +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= 0.0) tecan(i,j) = spval + enddo + enddo +! accumulated plant transpiration + VarName='etran_acc' + call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,tetran) +! mask water areas +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= 0.0) tetran(i,j) = spval + enddo + enddo + +! accumulated soil surface evaporation + VarName='edir_acc' + call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,tedir) +! mask water areas +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= 0.0) tedir(i,j) = spval + enddo + enddo + +! total water storage in aquifer + VarName='wa_acc' + call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,twa) +! mask water areas +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= 0.0) twa(i,j) = spval + enddo + enddo + ! retrieve shelter max temperature using nemsio VarName='tmax_max2m' call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & @@ -2299,6 +2353,30 @@ SUBROUTINE INITPOST_GFS_NETCDF_PARA(ncid3d) enddo enddo +! retrieve AVERAGED PRECIP ADVECTED HEAT FLUX + VarName='pah_ave' + call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,paha) +! mask water areas +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= 0.0) paha(i,j) = spval + enddo + enddo + +! retrieve nstantaneous PRECIP ADVECTED HEAT FLUX + VarName='pahi' + call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,pahi) +! mask water areas +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= 0.0) pahi(i,j) = spval + enddo + enddo + ! retrieve PLANT TRANSPIRATION VarName='trans_ave' call read_netcdf_2d_para(ncid2d,im,jsta,jsta_2l,jend,jend_2u, & diff --git a/sorc/ncep_post.fd/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F index 6e06972eb..39f44e892 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -25,7 +25,7 @@ module RQSTFLD_mod implicit none ! ! increase MXFLD each time you add a new field - INTEGER, PARAMETER :: MXFLD=999 + INTEGER, PARAMETER :: MXFLD=1000 #ifdef COMMCODE INTEGER, PARAMETER :: MXLVL=70 #else @@ -2699,11 +2699,33 @@ module RQSTFLD_mod & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(992),AVBL(992),IQ(992),IS(992),AVBLGRB2(992) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & - & 'VESH ON effbot_lvl'/ + & /1,'',205,217, & + & 'VESH ON effbot_lvl'/ DATA IFILV(993),AVBL(993),IQ(993),IS(993),AVBLGRB2(993) & & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ + DATA IFILV(994),AVBL(994),IQ(994),IS(994),AVBLGRB2(994) & + & /1,'LAND FRACTION',205,217, & + & 'LANDFRAC ON surface'/ + DATA IFILV(995),AVBL(995),IQ(995),IS(995),AVBLGRB2(995) & + & /1,'INST PREC ADVEC HEAT',205,217, & + & 'PAHFLX ON surface'/ + DATA IFILV(996),AVBL(996),IQ(996),IS(996),AVBLGRB2(996) & + & /1,'WATER IN AQUIFER',205,217, & + & 'WATERSA ON surface'/ + DATA IFILV(997),AVBL(997),IQ(997),IS(997),AVBLGRB2(997) & + & /1,'ACM EIWATER',205,217, & + & 'EIWATER ON surface'/ + DATA IFILV(998),AVBL(998),IQ(998),IS(998),AVBLGRB2(992) & + & /1,'ACM PLANTTR',205,217, & + & 'PLANTTR ON surface'/ + DATA IFILV(999),AVBL(999),IQ(999),IS(999),AVBLGRB2(992) & + & /1,'ACM SOILSE',205,217, & + & 'SOILSE ON surface'/ + DATA IFILV(1000),AVBL(1000),IQ(1000),IS(1000),AVBLGRB2(1000) & + & /1,'AVE PREC ADVEC HEAT',205,217, & + & 'SOILSE ON surface'/ + !end initialization diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 3af081583..ba5779ee4 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -88,7 +88,8 @@ SUBROUTINE SURFCE acond,maxqshltr,minqshltr,avgpotevp,AVGPREC_CONT, & AVGCPRATE_CONT,sst,pcp_bucket1,rainnc_bucket1, & snow_bucket1, rainc_bucket1, graup_bucket1, & - shdmin, shdmax, lai, ch10,cd10 + shdmin, shdmax, lai, ch10,cd10,landfrac,paha,pahi, & + tecan,tetran,tedir,twa use soil, only: stc, sllevel, sldpth, smc, sh2o use masks, only: lmh, sm, sice, htm, gdlat, gdlon use physcons_post,only: CON_EPS, CON_EPSM1 @@ -167,7 +168,7 @@ SUBROUTINE SURFCE IF ( (IGET(024)>0).OR.(IGET(025)>0).OR. & (IGET(026)>0).OR.(IGET(027)>0).OR. & (IGET(028)>0).OR.(IGET(029)>0).OR. & - (IGET(154)>0).OR. & + (IGET(154)>0).OR. & (IGET(034)>0).OR.(IGET(076)>0) ) THEN ! allocate(zsfc(im,jsta:jend), psfc(im,jsta:jend), tsfc(im,jsta:jend)& @@ -1219,6 +1220,104 @@ SUBROUTINE SURFCE endif ENDIF + IF ( IGET(994)>0 )THEN + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(994)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = LANDFRAC(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(995)>0 )THEN + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(995)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = PAHI(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(996)>0 )THEN + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(996)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = TWA(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(997)>0 )THEN + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(997)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = TECAN(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(998)>0 )THEN + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(998)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = TETRAN(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(999)>0 )THEN + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(999)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = TEDIR(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(1000)>0 )THEN + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(1000)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = PAHA(i,jj) + enddo + enddo + endif + ENDIF + ! ! ! diff --git a/sorc/ncep_post.fd/VRBLS2D_mod.f b/sorc/ncep_post.fd/VRBLS2D_mod.f index 1067d1432..5d2a0f772 100644 --- a/sorc/ncep_post.fd/VRBLS2D_mod.f +++ b/sorc/ncep_post.fd/VRBLS2D_mod.f @@ -81,7 +81,8 @@ module vrbls2d ,etrans(:,:),esnow(:,:),avgedir(:,:),avgecan(:,:),avgetrans(:,:)& ,avgesnow(:,:),avgpotevp(:,:),avgprec_cont(:,:),avgcprate_cont(:,:)& ,ti(:,:),aod550(:,:),du_aod550(:,:),ss_aod550(:,:),su_aod550(:,:) & - ,bc_aod550(:,:),oc_aod550(:,:) + ,bc_aod550(:,:),oc_aod550(:,:),landfrac(:,:),paha(:,:),pahi(:,:) & + ,tecan(:,:),tetran(:,:),tedir(:,:),twa(:,:) integer, allocatable :: IVGTYP(:,:),ISLTYP(:,:),ISLOPE(:,:) ! Add 2d aerosol diagnosis fields for GOCART (NGAC) real, allocatable :: & From f6af0a389debccec4e98f0890d9c51fa0062c3fd Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Sat, 11 Sep 2021 15:01:06 -0400 Subject: [PATCH 2/8] correct the name of the variable --- sorc/ncep_post.fd/RQSTFLD.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/ncep_post.fd/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F index ab45ee229..4dab5648b 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -2746,7 +2746,7 @@ module RQSTFLD_mod & 'SOILSE ON surface'/ DATA IFILV(1002),AVBL(1002),IQ(1002),IS(1002),AVBLGRB2(1002) & & /1,'AVE PREC ADVEC HEAT',205,217, & - & 'SOILSE ON surface'/ + & 'AVE PAHFLX ON surface'/ !end initialization ! From f86a3687da45706bb9bd245247ae6996efc0089e Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Sun, 12 Sep 2021 20:00:50 -0400 Subject: [PATCH 3/8] fix typo --- parm/post_avblflds.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 29676c3f0..dd5126d18 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -7749,7 +7749,7 @@ 7.0 - + 995 PM25TOT_ON_HYBRID_LVL PMTF From 02a82901d70ce1d4b1e43772a7c1774fb7ceb272 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Mon, 13 Sep 2021 22:15:35 -0400 Subject: [PATCH 4/8] correct the index in the surface.f --- sorc/ncep_post.fd/SURFCE.f | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index a1254cfef..94b1d6463 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -1221,7 +1221,7 @@ SUBROUTINE SURFCE endif ENDIF - IF ( IGET(994)>0 )THEN + IF ( IGET(996)>0 )THEN if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(994)) @@ -1235,7 +1235,7 @@ SUBROUTINE SURFCE endif ENDIF - IF ( IGET(995)>0 )THEN + IF ( IGET(997)>0 )THEN if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(995)) @@ -1249,7 +1249,7 @@ SUBROUTINE SURFCE endif ENDIF - IF ( IGET(996)>0 )THEN + IF ( IGET(998)>0 )THEN if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(996)) @@ -1263,7 +1263,7 @@ SUBROUTINE SURFCE endif ENDIF - IF ( IGET(997)>0 )THEN + IF ( IGET(999)>0 )THEN if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(997)) @@ -1277,7 +1277,7 @@ SUBROUTINE SURFCE endif ENDIF - IF ( IGET(998)>0 )THEN + IF ( IGET(1000)>0 )THEN if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(998)) @@ -1291,7 +1291,7 @@ SUBROUTINE SURFCE endif ENDIF - IF ( IGET(999)>0 )THEN + IF ( IGET(1001)>0 )THEN if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(999)) @@ -1305,7 +1305,7 @@ SUBROUTINE SURFCE endif ENDIF - IF ( IGET(1000)>0 )THEN + IF ( IGET(1002)>0 )THEN if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(1000)) From 3d0818942e8b67142d25f9d7763b98ba6328d361 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Tue, 14 Sep 2021 09:03:03 -0400 Subject: [PATCH 5/8] fix the time stamp --- sorc/ncep_post.fd/SURFCE.f | 211 +++++++++++++++++++++++++++++-------- 1 file changed, 168 insertions(+), 43 deletions(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 94b1d6463..eae3dd529 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -1224,7 +1224,7 @@ SUBROUTINE SURFCE IF ( IGET(996)>0 )THEN if(grib=='grib2') then cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(994)) + fld_info(cfld)%ifld=IAVBLFLD(IGET(996)) !$omp parallel do private(i,j,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -1238,7 +1238,7 @@ SUBROUTINE SURFCE IF ( IGET(997)>0 )THEN if(grib=='grib2') then cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(995)) + fld_info(cfld)%ifld=IAVBLFLD(IGET(997)) !$omp parallel do private(i,j,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -1252,7 +1252,7 @@ SUBROUTINE SURFCE IF ( IGET(998)>0 )THEN if(grib=='grib2') then cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(996)) + fld_info(cfld)%ifld=IAVBLFLD(IGET(998)) !$omp parallel do private(i,j,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -1264,61 +1264,186 @@ SUBROUTINE SURFCE ENDIF IF ( IGET(999)>0 )THEN - if(grib=='grib2') then - cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(997)) +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = TECAN(I,J) + ENDDO + ENDDO + ID(1:25) = 0 + ITPREC = NINT(TPREC) +!mp + if (ITPREC /= 0) then + IFINCR = MOD(IFHR,ITPREC) + IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) + else + IFINCR = 0 + endif +!mp + ID(18) = 0 + ID(19) = IFHR + IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN + ID(20) = 4 + IF (IFINCR==0) THEN + ID(18) = IFHR-ITPREC + ELSE + ID(18) = IFHR-IFINCR + IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR + ENDIF + IF (ID(18)<0) ID(18) = 0 + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(999)) + fld_info(cfld)%ntrange=1 + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,jj) do j=1,jend-jsta+1 jj = jsta+j-1 do i=1,im - datapd(i,j,cfld) = TECAN(i,jj) + datapd(i,j,cfld) = GRID1(i,jj) enddo enddo endif ENDIF IF ( IGET(1000)>0 )THEN - if(grib=='grib2') then - cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(998)) +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = TETRAN(I,J) + ENDDO + ENDDO + ID(1:25) = 0 + ITPREC = NINT(TPREC) +!mp + if (ITPREC /= 0) then + IFINCR = MOD(IFHR,ITPREC) + IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) + else + IFINCR = 0 + endif +!mp + ID(18) = 0 + ID(19) = IFHR + IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN + ID(20) = 4 + IF (IFINCR==0) THEN + ID(18) = IFHR-ITPREC + ELSE + ID(18) = IFHR-IFINCR + IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR + ENDIF + IF (ID(18)<0) ID(18) = 0 + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(1000)) + fld_info(cfld)%ntrange=1 + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,jj) - do j=1,jend-jsta+1 - jj = jsta+j-1 - do i=1,im - datapd(i,j,cfld) = TETRAN(i,jj) - enddo - enddo - endif - ENDIF - + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + ENDIF +! IF ( IGET(1001)>0 )THEN - if(grib=='grib2') then - cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(999)) +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = TEDIR(I,J) + ENDDO + ENDDO + ID(1:25) = 0 + ITPREC = NINT(TPREC) +!mp + if (ITPREC /= 0) then + IFINCR = MOD(IFHR,ITPREC) + IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) + else + IFINCR = 0 + endif +!mp + ID(18) = 0 + ID(19) = IFHR + IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN + ID(20) = 4 + IF (IFINCR==0) THEN + ID(18) = IFHR-ITPREC + ELSE + ID(18) = IFHR-IFINCR + IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR + ENDIF + IF (ID(18)<0) ID(18) = 0 + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(1001)) + fld_info(cfld)%ntrange=1 + fld_info(cfld)%tinvstat=IFHR-ID(18) !$omp parallel do private(i,j,jj) - do j=1,jend-jsta+1 - jj = jsta+j-1 - do i=1,im - datapd(i,j,cfld) = TEDIR(i,jj) - enddo - enddo - endif - ENDIF + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + ENDIF +! - IF ( IGET(1002)>0 )THEN - if(grib=='grib2') then - cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(1000)) -!$omp parallel do private(i,j,jj) - do j=1,jend-jsta+1 - jj = jsta+j-1 - do i=1,im - datapd(i,j,cfld) = PAHA(i,jj) - enddo - enddo + IF (IGET(1002)>0) THEN + IF(MODELNAME == 'NCAR'.OR.MODELNAME=='RSM' .OR. & + MODELNAME=='RAPR')THEN + GRID1=SPVAL + ID(1:25)=0 + ELSE + IF(ASRFC>0.)THEN + RRNUM=1./ASRFC + ELSE + RRNUM=0. + ENDIF + DO J=JSTA,JEND + DO I=1,IM + IF(PAHA(I,J)/=SPVAL)THEN + GRID1(I,J)=-1.*PAHA(I,J)*RRNUM !change the sign to conform with Grib + ELSE + GRID1(I,J)=PAHA(I,J) + END IF + ENDDO + ENDDO + ID(1:25) = 0 + ITSRFC = NINT(TSRFC) + IF(ITSRFC /= 0) then + IFINCR = MOD(IFHR,ITSRFC) + IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITSRFC*60) + ELSE + IFINCR = 0 endif - ENDIF - + ID(19) = IFHR + IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN + ID(20) = 3 + IF (IFINCR==0) THEN + ID(18) = IFHR-ITSRFC + ELSE + ID(18) = IFHR-IFINCR + IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR + ENDIF + IF (ID(18)<0) ID(18) = 0 + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(1002)) + 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:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend) + endif + END IF + ENDIF ! ! ! From bb128c42eaaa5d29cf2ffd0fe6cc46322ecc0f92 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Fri, 17 Sep 2021 12:55:28 -0400 Subject: [PATCH 6/8] put most extra fields to the flux instead of the master file --- parm/postcntrl_gfs.xml | 30 --- parm/postcntrl_gfs_flux.xml | 35 ++++ parm/postcntrl_gfs_flux_f00.xml | 5 + parm/postxconfig-NT-GFS-FLUX-F00.txt | 39 +++- parm/postxconfig-NT-GFS-FLUX.txt | 261 ++++++++++++++++++++++++++- parm/postxconfig-NT-GFS.txt | 226 +---------------------- 6 files changed, 340 insertions(+), 256 deletions(-) diff --git a/parm/postcntrl_gfs.xml b/parm/postcntrl_gfs.xml index 25a1fc670..b7733a62d 100755 --- a/parm/postcntrl_gfs.xml +++ b/parm/postcntrl_gfs.xml @@ -1159,36 +1159,6 @@ 3.0 - - INST_PREC_ADVEC_HEAT - 3.0 - - - - WATER_AQUIFER - 3.0 - - - - ACM_EIWATER_ON_SURFACE - 3.0 - - - - ACM_PLANTTR_ON_SURFACE - 3.0 - - - - ACM_SOILSE_ON_SURFACE - 3.0 - - - - AVE_PREC_ADVEC_HEAT - 3.0 - - diff --git a/parm/postcntrl_gfs_flux.xml b/parm/postcntrl_gfs_flux.xml index c5c18210e..7bd9203e5 100755 --- a/parm/postcntrl_gfs_flux.xml +++ b/parm/postcntrl_gfs_flux.xml @@ -613,6 +613,41 @@ 4.0 + + LAND_FRAC + 3.0 + + + + INST_PREC_ADVEC_HEAT + 3.0 + + + + WATER_AQUIFER + 3.0 + + + + ACM_EIWATER_ON_SURFACE + 3.0 + + + + ACM_PLANTTR_ON_SURFACE + 3.0 + + + + ACM_SOILSE_ON_SURFACE + 3.0 + + + + AVE_PREC_ADVEC_HEAT + 3.0 + + diff --git a/parm/postcntrl_gfs_flux_f00.xml b/parm/postcntrl_gfs_flux_f00.xml index 26b5bdc2a..42195b196 100755 --- a/parm/postcntrl_gfs_flux_f00.xml +++ b/parm/postcntrl_gfs_flux_f00.xml @@ -286,6 +286,11 @@ 4.0 + + LAND_FRAC + 3.0 + + diff --git a/parm/postxconfig-NT-GFS-FLUX-F00.txt b/parm/postxconfig-NT-GFS-FLUX-F00.txt index b21e83277..a532af969 100644 --- a/parm/postxconfig-NT-GFS-FLUX-F00.txt +++ b/parm/postxconfig-NT-GFS-FLUX-F00.txt @@ -1,5 +1,5 @@ 1 -45 +46 GFSPRS 0 ncep_nco @@ -1681,3 +1681,40 @@ depth_bel_land_sfc ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-FLUX.txt b/parm/postxconfig-NT-GFS-FLUX.txt index 6847ad0dc..760fb95a8 100644 --- a/parm/postxconfig-NT-GFS-FLUX.txt +++ b/parm/postxconfig-NT-GFS-FLUX.txt @@ -1,5 +1,5 @@ 1 -104 +111 GFSPRS 0 ncep_nco @@ -3864,3 +3864,262 @@ surface ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +997 +INST_PREC_ADVEC_HEAT +? +1 +tmpl4_0 +PAHFLX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +998 +WATER_AQUIFER +? +1 +tmpl4_0 +WATERSA +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +999 +ACM_EIWATER_ON_SURFACE +? +1 +tmpl4_8 +EIWATER +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +1000 +ACM_PLANTTR_ON_SURFACE +? +1 +tmpl4_8 +PLANTTR +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +1001 +ACM_SOILSE_ON_SURFACE +? +1 +tmpl4_8 +SOILSE +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +1002 +AVE_PREC_ADVEC_HEAT +? +1 +tmpl4_8 +PAHFLX +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS.txt b/parm/postxconfig-NT-GFS.txt index 683a4fc38..c7d4dccb7 100644 --- a/parm/postxconfig-NT-GFS.txt +++ b/parm/postxconfig-NT-GFS.txt @@ -1,5 +1,5 @@ 1 -203 +197 GFSPRS 0 ncep_nco @@ -7268,7 +7268,7 @@ spec_pres_above_grnd ? ? ? -994 +996 LAND_FRAC ? 1 @@ -7305,225 +7305,3 @@ surface ? ? ? -995 -INST_PREC_ADVEC_HEAT -? -1 -tmpl4_0 -PAHFLX -NCEP -? -surface -0 -? -0 -? -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? -996 -WATER_AQUIFER -? -1 -tmpl4_0 -WATERSA -NCEP -? -surface -0 -? -0 -? -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? -997 -ACM_EIWATER_ON_SURFACE -? -1 -tmpl4_8 -EIWATER -NCEP -ACM -surface -0 -? -0 -? -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? -998 -ACM_PLANTTR_ON_SURFACE -? -1 -tmpl4_8 -PLANTTR -NCEP -ACM -surface -0 -? -0 -? -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? -999 -ACM_SOILSE_ON_SURFACE -? -1 -tmpl4_8 -SOILSE -NCEP -ACM -surface -0 -? -0 -? -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? -1000 -AVE_PREC_ADVEC_HEAT -? -1 -tmpl4_8 -PAHFLX -NCEP -AVE -surface -0 -? -0 -? -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? From 42549df78d1ecc46ba7d6a4677a0b0e5314864f7 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Mon, 20 Sep 2021 13:02:07 -0400 Subject: [PATCH 7/8] update control file --- parm/postcntrl_gfs_anl.xml | 5 + parm/postcntrl_gfs_f00.xml | 5 + parm/postcntrl_gfs_f00_two.xml | 10 + parm/postcntrl_gfs_two.xml | 40 ++++ parm/postxconfig-NT-GFS-ANL.txt | 39 +++- parm/postxconfig-NT-GFS-F00-TWO.txt | 78 +++++++- parm/postxconfig-NT-GFS-F00.txt | 39 +++- parm/postxconfig-NT-GFS-TWO.txt | 300 +++++++++++++++++++++++++++- 8 files changed, 510 insertions(+), 6 deletions(-) diff --git a/parm/postcntrl_gfs_anl.xml b/parm/postcntrl_gfs_anl.xml index 42d88f330..1306d2e9f 100755 --- a/parm/postcntrl_gfs_anl.xml +++ b/parm/postcntrl_gfs_anl.xml @@ -553,6 +553,11 @@ 5.0 + + LAND_FRAC + 3.0 + + diff --git a/parm/postcntrl_gfs_f00.xml b/parm/postcntrl_gfs_f00.xml index 6792f1a4e..69e151ea2 100755 --- a/parm/postcntrl_gfs_f00.xml +++ b/parm/postcntrl_gfs_f00.xml @@ -902,6 +902,11 @@ 4.0 + + LAND_FRAC + 3.0 + + diff --git a/parm/postcntrl_gfs_f00_two.xml b/parm/postcntrl_gfs_f00_two.xml index 13cefa2e8..1fdb74000 100755 --- a/parm/postcntrl_gfs_f00_two.xml +++ b/parm/postcntrl_gfs_f00_two.xml @@ -902,6 +902,11 @@ 4.0 + + LAND_FRAC + 3.0 + + @@ -1190,6 +1195,11 @@ 4.0 + + LAND_FRAC + 3.0 + + diff --git a/parm/postcntrl_gfs_two.xml b/parm/postcntrl_gfs_two.xml index 803799027..2d37396dd 100755 --- a/parm/postcntrl_gfs_two.xml +++ b/parm/postcntrl_gfs_two.xml @@ -1154,6 +1154,11 @@ 4.0 + + LAND_FRAC + 3.0 + + @@ -1769,6 +1774,41 @@ 4.0 + + LAND_FRAC + 3.0 + + + + INST_PREC_ADVEC_HEAT + 3.0 + + + + WATER_AQUIFER + 3.0 + + + + ACM_EIWATER_ON_SURFACE + 3.0 + + + + ACM_PLANTTR_ON_SURFACE + 3.0 + + + + ACM_SOILSE_ON_SURFACE + 3.0 + + + + AVE_PREC_ADVEC_HEAT + 3.0 + + diff --git a/parm/postxconfig-NT-GFS-ANL.txt b/parm/postxconfig-NT-GFS-ANL.txt index bab9d8bc8..83c13293b 100644 --- a/parm/postxconfig-NT-GFS-ANL.txt +++ b/parm/postxconfig-NT-GFS-ANL.txt @@ -1,5 +1,5 @@ 1 -92 +93 GFSPRS 0 ncep_nco @@ -3420,3 +3420,40 @@ surface ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-F00-TWO.txt b/parm/postxconfig-NT-GFS-F00-TWO.txt index 52e08dde7..18ac45613 100644 --- a/parm/postxconfig-NT-GFS-F00-TWO.txt +++ b/parm/postxconfig-NT-GFS-F00-TWO.txt @@ -1,6 +1,6 @@ 2 -45 -149 +46 +150 GFSPRS 0 ncep_nco @@ -5530,6 +5530,43 @@ spec_pres_above_grnd ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? GFSFLX 0 ncep_nco @@ -7211,3 +7248,40 @@ depth_bel_land_sfc ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-F00.txt b/parm/postxconfig-NT-GFS-F00.txt index 68bfb92cc..9ff346568 100644 --- a/parm/postxconfig-NT-GFS-F00.txt +++ b/parm/postxconfig-NT-GFS-F00.txt @@ -1,5 +1,5 @@ 1 -149 +150 GFSPRS 0 ncep_nco @@ -5529,3 +5529,40 @@ spec_pres_above_grnd ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-TWO.txt b/parm/postxconfig-NT-GFS-TWO.txt index 4bd605e54..7507a0de7 100644 --- a/parm/postxconfig-NT-GFS-TWO.txt +++ b/parm/postxconfig-NT-GFS-TWO.txt @@ -1,6 +1,6 @@ 2 -104 -196 +111 +197 GFSPRS 0 ncep_nco @@ -7269,6 +7269,43 @@ spec_pres_above_grnd ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? GFSFLX 0 ncep_nco @@ -11133,3 +11170,262 @@ surface ? ? ? +996 +LAND_FRAC +? +1 +tmpl4_0 +LANDFRC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +997 +INST_PREC_ADVEC_HEAT +? +1 +tmpl4_0 +PAHFLX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +998 +WATER_AQUIFER +? +1 +tmpl4_0 +WATERSA +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +999 +ACM_EIWATER_ON_SURFACE +? +1 +tmpl4_8 +EIWATER +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +1000 +ACM_PLANTTR_ON_SURFACE +? +1 +tmpl4_8 +PLANTTR +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +1001 +ACM_SOILSE_ON_SURFACE +? +1 +tmpl4_8 +SOILSE +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +1002 +AVE_PREC_ADVEC_HEAT +? +1 +tmpl4_8 +PAHFLX +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? From e8fb7fe633d967d40749ee0516a306f918bf6d89 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Tue, 21 Sep 2021 19:30:23 -0400 Subject: [PATCH 8/8] clean the code --- sorc/ncep_post.fd/SURFCE.f | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index eae3dd529..e6c547baa 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -1272,14 +1272,12 @@ SUBROUTINE SURFCE ENDDO ID(1:25) = 0 ITPREC = NINT(TPREC) -!mp if (ITPREC /= 0) then IFINCR = MOD(IFHR,ITPREC) IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) else IFINCR = 0 endif -!mp ID(18) = 0 ID(19) = IFHR IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN @@ -1315,14 +1313,12 @@ SUBROUTINE SURFCE ENDDO ID(1:25) = 0 ITPREC = NINT(TPREC) -!mp if (ITPREC /= 0) then IFINCR = MOD(IFHR,ITPREC) IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) else IFINCR = 0 endif -!mp ID(18) = 0 ID(19) = IFHR IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN @@ -1358,14 +1354,12 @@ SUBROUTINE SURFCE ENDDO ID(1:25) = 0 ITPREC = NINT(TPREC) -!mp if (ITPREC /= 0) then IFINCR = MOD(IFHR,ITPREC) IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) else IFINCR = 0 endif -!mp ID(18) = 0 ID(19) = IFHR IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN @@ -1394,11 +1388,6 @@ SUBROUTINE SURFCE ! IF (IGET(1002)>0) THEN - IF(MODELNAME == 'NCAR'.OR.MODELNAME=='RSM' .OR. & - MODELNAME=='RAPR')THEN - GRID1=SPVAL - ID(1:25)=0 - ELSE IF(ASRFC>0.)THEN RRNUM=1./ASRFC ELSE @@ -1442,7 +1431,6 @@ SUBROUTINE SURFCE fld_info(cfld)%tinvstat=IFHR-ID(18) datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend) endif - END IF ENDIF ! !