diff --git a/parm/params_grib2_tbl_new b/parm/params_grib2_tbl_new index 2f4c34577..65da702fb 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 @@ -1201,6 +1207,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 1ab29afb1..6fa402120 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 ! diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index e3b8cb98e..dd5126d18 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -7740,6 +7740,7 @@ level_free_convection 6.0 + 994 OZCON_ON_HYBRID_LVL @@ -7747,7 +7748,7 @@ hybrid_lvl 7.0 - + 995 PM25TOT_ON_HYBRID_LVL @@ -7755,5 +7756,76 @@ hybrid_lvl 7.0 + + + 996 + LAND_FRAC + LANDFRC + NCEP + surface + 3.0 + + + + 997 + INST_PREC_ADVEC_HEAT + PAHFLX + NCEP + surface + 3.0 + + + + 998 + WATER_AQUIFER + WATERSA + NCEP + surface + 3.0 + + + + 999 + ACM_EIWATER_ON_SURFACE + tmpl4_8 + EIWATER + NCEP + ACM + surface + 3.0 + + + + 1000 + ACM_PLANTTR_ON_SURFACE + tmpl4_8 + PLANTTR + NCEP + ACM + surface + 3.0 + + + + 1001 + ACM_SOILSE_ON_SURFACE + tmpl4_8 + SOILSE + NCEP + ACM + surface + 3.0 + + + + 1002 + 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..b7733a62d 100755 --- a/parm/postcntrl_gfs.xml +++ b/parm/postcntrl_gfs.xml @@ -1154,6 +1154,11 @@ 4.0 + + LAND_FRAC + 3.0 + + 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_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/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-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-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 +? +? +? diff --git a/parm/postxconfig-NT-GFS.txt b/parm/postxconfig-NT-GFS.txt index dd2922259..c7d4dccb7 100644 --- a/parm/postxconfig-NT-GFS.txt +++ b/parm/postxconfig-NT-GFS.txt @@ -1,5 +1,5 @@ 1 -196 +197 GFSPRS 0 ncep_nco @@ -7268,3 +7268,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/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f index 14ef0c17f..c63ba43b1 100644 --- a/sorc/ncep_post.fd/ALLOCATE_ALL.f +++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f @@ -962,6 +962,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 @@ -1004,6 +1011,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 aba65050a..54f246042 100644 --- a/sorc/ncep_post.fd/DEALLOCATE.f +++ b/sorc/ncep_post.fd/DEALLOCATE.f @@ -378,6 +378,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 f5b82ad04..4dab5648b 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -26,7 +26,9 @@ module RQSTFLD_mod implicit none ! ! increase MXFLD each time you add a new field + INTEGER, PARAMETER :: MXFLD=1200 + #ifdef COMMCODE INTEGER, PARAMETER :: MXLVL=70 #else @@ -2723,6 +2725,28 @@ module RQSTFLD_mod DATA IFILV(995),AVBL(995),IQ(995),IS(995), AVBLGRB2(995) & & /1,'PMTF ',167,109, & !table 141 & 'PM25TOT ON Hybrid level'/ + + DATA IFILV(996),AVBL(996),IQ(996),IS(996),AVBLGRB2(996) & + & /1,'LAND FRACTION',205,217, & + & 'LANDFRAC ON surface'/ + DATA IFILV(997),AVBL(997),IQ(997),IS(997),AVBLGRB2(997) & + & /1,'INST PREC ADVEC HEAT',205,217, & + & 'PAHFLX ON surface'/ + DATA IFILV(998),AVBL(998),IQ(998),IS(998),AVBLGRB2(998) & + & /1,'WATER IN AQUIFER',205,217, & + & 'WATERSA ON surface'/ + DATA IFILV(999),AVBL(999),IQ(999),IS(999),AVBLGRB2(999) & + & /1,'ACM EIWATER',205,217, & + & 'EIWATER ON surface'/ + DATA IFILV(1000),AVBL(1000),IQ(1000),IS(1000),AVBLGRB2(1000) & + & /1,'ACM PLANTTR',205,217, & + & 'PLANTTR ON surface'/ + DATA IFILV(1001),AVBL(1001),IQ(1001),IS(1001),AVBLGRB2(1001) & + & /1,'ACM SOILSE',205,217, & + & 'SOILSE ON surface'/ + DATA IFILV(1002),AVBL(1002),IQ(1002),IS(1002),AVBLGRB2(1002) & + & /1,'AVE PREC ADVEC HEAT',205,217, & + & 'AVE PAHFLX ON surface'/ !end initialization ! diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 749e5cdd0..e6c547baa 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -89,7 +89,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 @@ -168,7 +169,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)& @@ -1220,6 +1221,217 @@ SUBROUTINE SURFCE 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) = LANDFRAC(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) = PAHI(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) = TWA(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(999)>0 )THEN +!$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) + if (ITPREC /= 0) then + IFINCR = MOD(IFHR,ITPREC) + IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) + else + IFINCR = 0 + endif + 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) = GRID1(i,jj) + enddo + enddo + endif + ENDIF + + IF ( IGET(1000)>0 )THEN +!$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) + if (ITPREC /= 0) then + IFINCR = MOD(IFHR,ITPREC) + IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) + else + IFINCR = 0 + endif + 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) = GRID1(i,jj) + enddo + enddo + endif + ENDIF +! + IF ( IGET(1001)>0 )THEN +!$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) + if (ITPREC /= 0) then + IFINCR = MOD(IFHR,ITPREC) + IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60) + else + IFINCR = 0 + endif + 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) = GRID1(i,jj) + enddo + enddo + endif + ENDIF +! + + IF (IGET(1002)>0) THEN + 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 + 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 + ENDIF ! ! ! diff --git a/sorc/ncep_post.fd/VRBLS2D_mod.f b/sorc/ncep_post.fd/VRBLS2D_mod.f index 11c542b1d..31eef7a90 100644 --- a/sorc/ncep_post.fd/VRBLS2D_mod.f +++ b/sorc/ncep_post.fd/VRBLS2D_mod.f @@ -81,9 +81,11 @@ 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(:,:) & ,IEQL(:,:) + ! Add 2d aerosol diagnosis fields for GOCART (NGAC) real, allocatable :: & DUSMASS(:,:),DUCMASS(:,:),DUSMASS25(:,:),DUCMASS25(:,:) &