From e1d7ee0e031a51bd5264fef6edd73c284e7bfd70 Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Mon, 5 Jan 2026 13:34:02 -0700 Subject: [PATCH 01/13] WRF changes for coupling with NoahMPv5.1.2 --- Makefile | 14 +- Registry/Registry.EM_COMMON | 23 +- Registry/registry.noahmp | 159 ++-- chem/depend.chem | 2 +- chem/module_uoc_dust.F | 2 +- clean | 7 +- dyn_em/module_first_rk_step_part1.F | 32 +- dyn_em/start_em.F | 18 +- main/depend.common | 1140 ++++++++++++++++++++++++++- phys/CMakeLists.txt | 166 +++- phys/Makefile | 188 ++++- phys/module_diag_misc.F | 6 +- phys/module_diagnostics_driver.F | 2 +- phys/module_physics_init.F | 113 ++- phys/module_sf_clm.F | 54 +- phys/module_surface_driver.F | 124 ++- run/README.namelist | 24 +- share/mediation_wrfmain.F | 2 +- share/output_wrf.F | 9 +- test/em_real/examples.namelist | 25 +- 20 files changed, 1864 insertions(+), 246 deletions(-) diff --git a/Makefile b/Makefile index 022538c088..2355002581 100644 --- a/Makefile +++ b/Makefile @@ -108,11 +108,13 @@ framework_only : configcheck wrf : framework_only $(MAKE) MODULE_DIRS="$(ALL_MODULES)" physics - @if [ \( ! -f run/MPTABLE.TBL \) -o \ - \( ! -f phys/module_sf_noahmpdrv.F \) -o \ - \( ! -f phys/module_sf_noahmp_glacier.F \) -o \ - \( ! -f phys/module_sf_noahmp_groundwater.F \) -o \ - \( ! -f phys/module_sf_noahmplsm.F \) ] ; then \ + @if [ \( ! -f run/NoahmpTable.TBL \) -o \ + \( ! -f phys/noahmp/drivers/wrf/NoahmpWRFmainMod.F90 \) -o \ + \( ! -f phys/noahmp/drivers/wrf/NoahmpIOVarType.F90 \) -o \ + \( ! -f phys/noahmp/drivers/wrf/GroundWaterMmfMod.F90 \) -o \ + \( ! -f phys/noahmp/src/NoahmpMainMod.F90 \) -o \ + \( ! -f phys/noahmp/src/NoahmpVarType.F90 \) -o \ + \( ! -f phys/noahmp/drivers/wrf/NoahmpUrbanDriverMainMod.F90 \) ] ; then \ echo " " ; \ echo "------------------------------------------------------------------------------" ; \ echo "Error Error Error NoahMP submodule files not populating WRF directories" ; \ @@ -126,7 +128,7 @@ wrf : framework_only fi @if [ \( ! -f phys/module_bl_mynnedmf.F \) -o \ \( ! -f phys/module_bl_mynnedmf_common.F \) -o \ - \( ! -f phys/module_bl_mynnedmf_common.F \) ] ; then \ + \( ! -f phys/module_bl_mynnedmf_driver.F \) ] ; then \ echo " " ; \ echo "------------------------------------------------------------------------------" ; \ echo "Error Error Error MYNN-EDMF submodule files not populating WRF directories" ; \ diff --git a/Registry/Registry.EM_COMMON b/Registry/Registry.EM_COMMON index 4d133c9bfa..a0fce7a146 100644 --- a/Registry/Registry.EM_COMMON +++ b/Registry/Registry.EM_COMMON @@ -2683,12 +2683,17 @@ rconfig integer madwrf_cldinit namelist,physics 1 rconfig integer dveg namelist,noah_mp 1 4 h "dveg" "dynamic vegetation (1 -> off ; 2 -> on)" "" rconfig integer opt_crs namelist,noah_mp 1 1 h "opt_crs" "canopy stomatal resistance (1-> Ball-Berry; 2->Jarvis)" "" rconfig integer opt_btr namelist,noah_mp 1 1 h "opt_btr" "soil moisture factor for stomatal resistance (1-> Noah; 2-> CLM; 3-> SSiB)" "" -rconfig integer opt_run namelist,noah_mp 1 3 h "opt_run" "runoff and groundwater (1->SIMGM; 2->SIMTOP; 3->Schaake96; 4->BATS; 5->Miguez-Macho & Fan; 6->VIC; 7->Xiananjiang; 8->Dynamic VIC)" "" +rconfig integer opt_runsrf namelist,noah_mp 1 3 h "opt_runsrf" "surface runoff (1->SIMGM; 2->SIMTOP; 3->Schaake96; 4->BATS; 5->Miguez-Macho & Fan; 6->VIC; 7->Xiananjiang; 8->Dynamic VIC)" "" +rconfig integer opt_runsub namelist,noah_mp 1 3 h "opt_runsub" "subsurface runoff and groundwater (1->SIMGM; 2->SIMTOP; 3->Schaake96; 4->BATS; 5->Miguez-Macho & Fan; 6->VIC; 7->Xiananjiang; 8->Dynamic VIC)" "" +rconfig integer opt_compact namelist,noah_mp 1 2 h "opt_compact" "snowpack compaction (1->Anderson1976; 2->Abolafia-Rosenzweig2024)" +rconfig integer opt_tksno namelist,noah_mp 1 1 h "opt_tksno" "snow thermal conductivity: 1 -> Stieglitz(yen,1965) scheme (default), 2 -> Anderson, 1976 scheme, 3 -> constant, 4 -> Verseghy (1991) scheme, 5 -> Douvill(Yen, 1981) scheme" +rconfig integer opt_scf namelist,noah_mp 1 1 h "opt_scf" "snow cover fraction (1->NiuYang07; 2->Abolafia-Rosenzweig2025)" +rconfig integer opt_wetland namelist,noah_mp 1 0 h "opt_wetland" "wetland model option (0->off; 1->Zhang2022 fixed parameter; 2->Zhang2022 read in 2D parameter)" rconfig integer opt_sfc namelist,noah_mp 1 1 h "opt_sfc" "surface layer drag coeff (CH & CM) (1->M-O; 2->Chen97)" "" rconfig integer opt_frz namelist,noah_mp 1 1 h "opt_frz" "supercooled liquid water (1-> NY06; 2->Koren99)" "" rconfig integer opt_inf namelist,noah_mp 1 1 h "opt_inf" "frozen soil permeability (1-> NY06; 2->Koren99)" "" rconfig integer opt_rad namelist,noah_mp 1 3 h "opt_rad" "radiation transfer (1->gap=F(3D,cosz); 2->gap=0; 3->gap=1-Fveg)" "" -rconfig integer opt_alb namelist,noah_mp 1 2 h "opt_alb" "snow surface albedo (1->BATS; 2->CLASS)" "" +rconfig integer opt_alb namelist,noah_mp 1 2 h "opt_alb" "snow surface albedo (1->BATS; 2->CLASS; 3->SNICAR)" "" rconfig integer opt_snf namelist,noah_mp 1 1 h "opt_snf" "rainfall & snowfall (1-Jordan91; 2->BATS; 3->Noah)" "" rconfig integer opt_tbot namelist,noah_mp 1 2 h "opt_tbot" "lower boundary of soil temperature (1->zero-flux; 2->Noah)" "" rconfig integer opt_stc namelist,noah_mp 1 1 h "opt_stc" "soil/snow temperature time scheme 1->semi-implicit; 2->full-implicit (original Noah)" "" @@ -2705,6 +2710,18 @@ rconfig real soiltstep namelist,noah_mp 1 0. h " rconfig real WTDDT namelist,physics max_domains 30. h "wtddt" "minutes between calls to lateral hydro" "" rconfig real noahmp_acc_dt namelist,noah_mp 1 0. h "noahmp_acc_dt" "bucket reset time interval between outputs for noah-mp accumulation" "minutes" rconfig integer noahmp_output namelist,noah_mp 1 1 h "noahmp_output" "noahmp output level" "" +### for Noah-MP SNICAR (opt_alb =3) +rconfig integer snicar_bandnumber_opt namelist,noah_mp 1 1 h "snicar_bandnumber_opt" "number of wavelength bands used in SNICAR" "" +rconfig integer snicar_solarspec_opt namelist,noah_mp 1 1 h "snicar_solarspec_opt" "type of downward solar radiation spectrum for SNICAR" "" +rconfig integer snicar_snowoptics_opt namelist,noah_mp 1 3 h "snicar_snowoptics_opt" "snow optics type using different refractive index databases in SNICAR" "" +rconfig integer snicar_dustoptics_opt namelist,noah_mp 1 1 h "snicar_dustoptics_opt" "dust optics type for SNICAR" "" +rconfig integer snicar_rtsolver_opt namelist,noah_mp 1 2 h "snicar_rtsolver_opt" "option for two different SNICAR radiative transfer solver" "" +rconfig integer snicar_snowshape_opt namelist,noah_mp 1 3 h "snicar_snowshape_opt" "option for snow grain shape in SNICAR" "" +rconfig logical snicar_use_aerosol namelist,noah_mp 1 .true. h "snicar_use_aerosol" "option to turn on/off aerosol deposition flux effect in snow in SNICAR" "" +rconfig logical snicar_snowbc_intmix namelist,noah_mp 1 .true. h "snicar_snowbc_intmix" "option to activate BC-snow internal mixing in SNICAR" "" +rconfig logical snicar_snowdust_intmix namelist,noah_mp 1 .false. h "snicar_snowdust_intmix" "option to activate dust-snow internal mixing in SNICAR" "" +rconfig logical snicar_use_oc namelist,noah_mp 1 .false. h "snicar_use_oc" "option to activate OC in snow in SNICAR" "" +rconfig logical snicar_aerosol_readtable namelist,noah_mp 1 .true. h "snicar_aerosol_readtable" "option to read aerosol deposition fluxes from table (on) or NetCDF forcing file (off)" "" # For WRF Hydro rconfig integer wrf_hydro derived 1 0 h "wrf_hydro" "descrip" "unit" @@ -3156,7 +3173,7 @@ package slabscheme sf_surface_physics==1 - - package lsmscheme sf_surface_physics==2 - state:flx4,fvb,fbur,fgsn,smcrel,xlaidyn package ruclsmscheme sf_surface_physics==3 - state:smfr3d,keepfr3dflag,soilt1,rhosnf,snowfallac,precipfr,acrunoff package clmscheme sf_surface_physics==5 - state:numc,nump,sabv,sabg,lwup,lhsoi,lhveg,lhtran,snl,snowdp,wtc,wtp,h2osno,t_grnd,t_veg,h2ocan,h2ocan_col,t2m_max,t2m_min,t2clm,t_ref2m,q_ref2m,h2osoi_liq_s1,h2osoi_liq_s2,h2osoi_liq_s3,h2osoi_liq_s4,h2osoi_liq_s5,h2osoi_liq1,h2osoi_liq2,h2osoi_liq3,h2osoi_liq4,h2osoi_liq5,h2osoi_liq6,h2osoi_liq7,h2osoi_liq8,h2osoi_liq9,h2osoi_liq10,h2osoi_ice_s1,h2osoi_ice_s2,h2osoi_ice_s3,h2osoi_ice_s4,h2osoi_ice_s5,h2osoi_ice1,h2osoi_ice2,h2osoi_ice3,h2osoi_ice4,h2osoi_ice5,h2osoi_ice6,h2osoi_ice7,h2osoi_ice8,h2osoi_ice9,h2osoi_ice10,t_soisno_s1,t_soisno_s2,t_soisno_s3,t_soisno_s4,t_soisno_s5,t_soisno1,t_soisno2,t_soisno3,t_soisno4,t_soisno5,t_soisno6,t_soisno7,t_soisno8,t_soisno9,t_soisno10,dzsnow1,dzsnow2,dzsnow3,dzsnow4,dzsnow5,snowrds1,snowrds2,snowrds3,snowrds4,snowrds5,t_lake1,t_lake2,t_lake3,t_lake4,t_lake5,t_lake6,t_lake7,t_lake8,t_lake9,t_lake10,h2osoi_vol1,h2osoi_vol2,h2osoi_vol3,h2osoi_vol4,h2osoi_vol5,h2osoi_vol6,h2osoi_vol7,h2osoi_vol8,h2osoi_vol9,h2osoi_vol10,albedosubgrid,lhsubgrid,hfxsubgrid,lwupsubgrid,q2subgrid,sabvsubgrid,sabgsubgrid,nrasubgrid,swupsubgrid,t_veg24,t_veg240,fsun,fsun24,fsun240,fsd24,fsd240,fsi24,fsi240,laip,pct_pft_input -package noahmpscheme sf_surface_physics==4 - state:isnowxy,tvxy,tgxy,canliqxy,canicexy,eahxy,tahxy,cmxy,chxy,fwetxy,sneqvoxy,alboldxy,qsnowxy,qrainxy,wslakexy,zwtxy,waxy,wtxy,tsnoxy,zsnsoxy,snicexy,snliqxy,lfmassxy,rtmassxy,stmassxy,woodxy,stblcpxy,fastcpxy,xsaixy,taussxy,t2mvxy,t2mbxy,q2mvxy,q2mbxy,tradxy,neexy,gppxy,nppxy,fvegxy,qinxy,runsfxy,runsbxy,ecanxy,edirxy,etranxy,fsaxy,firaxy,aparxy,psnxy,savxy,sagxy,rssunxy,rsshaxy,bgapxy,wgapxy,tgvxy,tgbxy,chvxy,chbxy,shgxy,shcxy,shbxy,evgxy,evbxy,ghvxy,ghbxy,irgxy,ircxy,irbxy,trxy,evcxy,chleafxy,chucxy,chv2xy,chb2xy,chstarxy,smoiseq,smcwtdxy,rechxy,deeprechxy,fdepthxy,areaxy,rivercondxy,riverbedxy,eqzwt,pexpxy,qrfxy,qrfsxy,qspringxy,qspringsxy,qslatxy,stepwtd,rechclim,gddxy,grainxy,croptype,planting,harvest,season_gdd,cropcat,pgsxy,soilcomp,soilcl1,soilcl2,soilcl3,soilcl4,irfract,sifract,mifract,fifract,irnumsi,irnummi,irnumfi,irwatsi,irwatmi,irwatfi,irsivol,irmivol,irfivol,ireloss,irrsplh,td_fraction,qtdrain,acrech,acqspring,qlatxy,qintsxy,qintrxy,qdripsxy,qdriprxy,qthrosxy,qthrorxy,qsnsubxy,qsnfroxy,qsubcxy,qfrocxy,qevacxy,qdewcxy,qfrzcxy,qmeltcxy,qsnbotxy,pondingxy,pahxy,pahgxy,pahvxy,pahbxy,fpicexy,rainlsm,snowlsm,acints,acintr,acdripr,acthror,acevac,acdewc,forctlsm,forcqlsm,forcplsm,forczlsm,forcwlsm,acrainlsm,acrunsb,acrunsf,acecan,acetran,acedir,acqlat,acqrf,acetlsm,acsnowlsm,acsubc,acfroc,acfrzc,acmeltc,acsnbot,acponding,acsnsub,acsnfro,acrainsnow,acdrips,acthros,acsagb,acirb,acshb,acevb,acghb,acpahb,acsagv,acirg,acshg,acevg,acghv,acpahg,acsav,acirc,acshc,acevc,actr,acpahv,acswdnlsm,acswuplsm,aclwdnlsm,aclwuplsm,acshflsm,aclhflsm,acghflsm,acpahlsm,accanhs,canhsxy,soilenergy,snowenergy,acc_ssoil,acc_qinsur,acc_qseva,acc_etrani,aceflxb,eflxbxy,acc_dwaterxy,acc_prcpxy,acc_ecanxy,acc_etranxy,acc_edirxy,qmeltxy,acsnmelt +package noahmpscheme sf_surface_physics==4 - state:isnowxy,tvxy,tgxy,canliqxy,canicexy,eahxy,tahxy,cmxy,chxy,fwetxy,sneqvoxy,alboldxy,qsnowxy,qrainxy,wslakexy,zwtxy,waxy,wtxy,tsnoxy,zsnsoxy,snicexy,snliqxy,lfmassxy,rtmassxy,stmassxy,woodxy,stblcpxy,fastcpxy,xsaixy,taussxy,t2mvxy,t2mbxy,q2mvxy,q2mbxy,tradxy,neexy,gppxy,nppxy,fvegxy,qinxy,runsfxy,runsbxy,ecanxy,edirxy,etranxy,fsaxy,firaxy,aparxy,psnxy,savxy,sagxy,rssunxy,rsshaxy,bgapxy,wgapxy,tgvxy,tgbxy,chvxy,chbxy,shgxy,shcxy,shbxy,evgxy,evbxy,ghvxy,ghbxy,irgxy,ircxy,irbxy,trxy,evcxy,chleafxy,chucxy,chv2xy,chb2xy,chstarxy,smoiseq,smcwtdxy,rechxy,deeprechxy,fdepthxy,areaxy,rivercondxy,riverbedxy,eqzwt,pexpxy,qrfxy,qrfsxy,qspringxy,qspringsxy,qslatxy,stepwtd,rechclim,gddxy,grainxy,croptype,planting,harvest,season_gdd,cropcat,pgsxy,soilcomp,soilcl1,soilcl2,soilcl3,soilcl4,irfract,sifract,mifract,fifract,irnumsi,irnummi,irnumfi,irwatsi,irwatmi,irwatfi,irsivol,irmivol,irfivol,ireloss,irrsplh,td_fraction,qtdrain,acrech,acqspring,qlatxy,qintsxy,qintrxy,qdripsxy,qdriprxy,qthrosxy,qthrorxy,qsnsubxy,qsnfroxy,qsubcxy,qfrocxy,qevacxy,qdewcxy,qfrzcxy,qmeltcxy,qsnbotxy,pondingxy,pahxy,pahgxy,pahvxy,pahbxy,fpicexy,rainlsm,snowlsm,acints,acintr,acdripr,acthror,acevac,acdewc,forctlsm,forcqlsm,forcplsm,forczlsm,forcwlsm,acrainlsm,acrunsb,acrunsf,acecan,acetran,acedir,acqlat,acqrf,acetlsm,acsnowlsm,acsubc,acfroc,acfrzc,acmeltc,acsnbot,acponding,acsnsub,acsnfro,acrainsnow,acdrips,acthros,acsagb,acirb,acshb,acevb,acghb,acpahb,acsagv,acirg,acshg,acevg,acghv,acpahg,acsav,acirc,acshc,acevc,actr,acpahv,acswdnlsm,acswuplsm,aclwdnlsm,aclwuplsm,acshflsm,aclhflsm,acghflsm,acpahlsm,accanhs,canhsxy,soilenergy,snowenergy,acc_ssoil,acc_qinsur,acc_qseva,acc_etrani,aceflxb,eflxbxy,acc_dwaterxy,acc_prcpxy,acc_ecanxy,acc_etranxy,acc_edirxy,qmeltxy,acsnmelt,fsatxy,wsurfxy,snrdsxy,snfrxy,bcphixy,bcphoxy,ocphixy,ocphoxy,dust1xy,dust2xy,dust3xy,dust4xy,dust5xy,massconcbcphixy,massconcbcphoxy,massconcocphixy,massconcocphoxy,massconcdust1xy,massconcdust2xy,massconcdust3xy,massconcdust4xy,massconcdust5xy package ctsmscheme sf_surface_physics==6 - - package pxlsmscheme sf_surface_physics==7 - state:t2_ndg_new,q2_ndg_new,t2_ndg_old,q2_ndg_old,t2obs,q2obs,vegf_px,imperv,canfra,lai_px,wwlt_px,wfc_px,wsat_px,clay_px,csand_px,fmsand_px package ssibscheme sf_surface_physics==8 - state:ssib_fm,ssib_fh,ssib_cm,ssibxdd,ssib_br,ssib_lhf,ssib_shf,ssib_ghf,ssib_egs,ssib_eci,ssib_ect,ssib_egi,ssib_egt,ssib_sdn,ssib_sup,ssib_ldn,ssib_lup,ssib_wat,ssib_shc,ssib_shg,ssib_lai,ssib_vcf,ssib_z00,ssib_veg,isnow,swe,snowden,snowdepth,tkair,dzo1,wo1,tssn1,tssno1,bwo1,bto1,cto1,fio1,flo1,bio1,blo1,ho1,dzo2,wo2,tssn2,tssno2,bwo2,bto2,cto2,fio2,flo2,bio2,blo2,ho2,dzo3,wo3,tssn3,tssno3,bwo3,bto3,cto3,fio3,flo3,bio3,blo3,ho3,dzo4,wo4,tssn4,tssno4,bwo4,bto4,cto4,fio4,flo4,bio4,blo4,ho4 diff --git a/Registry/registry.noahmp b/Registry/registry.noahmp index fbec3561bc..ec07ef4ba4 100644 --- a/Registry/registry.noahmp +++ b/Registry/registry.noahmp @@ -28,7 +28,7 @@ state real woodxy ij - 1 - i02rhd=(interp_mask_fiel state real stblcpxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "stblcp" "stable carbon pool" "g/m2" state real fastcpxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "fastcp" "short-lived carbon" "g/m2" state real xsaixy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "xsai" "stem area index" "-" -state real taussxy ij - 1 - rh "tauss" "non-dimensional snow age" "" +state real taussxy ij - 1 - r "tauss" "non-dimensional snow age" "" state real t2mvxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "t2v" "2 meter temperature over canopy" "K" state real t2mbxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "t2b" "2 meter temperature over bare ground" "K" state real q2mvxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "q2v" "2 meter mixing ratio over canopy" "kg kg-1" @@ -127,79 +127,78 @@ state real soilcl3 ij - 1 - i012rd=(interp_mask_fiel state real soilcl4 ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "SOILCL4" "soil texture class - level 4" "cat" # Some additional water movement -state real acints ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acints" "Accumulated canopy snow interception" "mm" -state real acintr ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acintr" "Accumulated canopy rain interception" "mm" -state real acdripr ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acdripr" "Accumulated canopy rain drip" "mm" -state real acthror ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acthror" "Accumulated rain throughfall" "mm" -state real acevac ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevac" "Accumulated canopy evaporation" "mm" -state real acdewc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acdewc" "Accumulated canopy dew" "mm" +state real acints ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acints" "Accumulated canopy snow interception" "mm" +state real acintr ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acintr" "Accumulated canopy rain interception" "mm" +state real acdripr ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acdripr" "Accumulated canopy rain drip" "mm" +state real acthror ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acthror" "Accumulated rain throughfall" "mm" +state real acevac ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevac" "Accumulated canopy evaporation" "mm" +state real acdewc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acdewc" "Accumulated canopy dew" "mm" # LSM forcing variables -state real forctlsm ij - 1 - i02hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forctlsm" "lowest model T into LSM" "K" -state real forcqlsm ij - 1 - i02hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forcqlsm" "lowest model Q into LSM" "kg/kg" -state real forcplsm ij - 1 - i02hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forcplsm" "lowest model P into LSM" "Pa" -state real forczlsm ij - 1 - i02hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forczlsm" "lowest model Z into LSM" "m" -state real forcwlsm ij - 1 - i02hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forcwlsm" "lowest model wind speed into LSM" "m/s" +state real forctlsm ij - 1 - i02d=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forctlsm" "lowest model T into LSM" "K" +state real forcqlsm ij - 1 - i02d=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forcqlsm" "lowest model Q into LSM" "kg/kg" +state real forcplsm ij - 1 - i02d=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forcplsm" "lowest model P into LSM" "Pa" +state real forczlsm ij - 1 - i02d=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forczlsm" "lowest model Z into LSM" "m" +state real forcwlsm ij - 1 - i02d=(interp_mask_land_field:lu_index)u=(copy_fcnm) "forcwlsm" "lowest model wind speed into LSM" "m/s" # Needed for water budget -state real acrainlsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrainlsm" "Accumulated liquid precipitation into LSM" "mm" -state real acrunsb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrunsb" "Accumulated subsurface runoff" "mm" -state real acrunsf ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrunsf" "Accumulated surface runoff" "mm" -state real acecan ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acecan" "Accumulated evaporation of intercepted water" "mm" -state real acetran ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acetran" "Accumulated transpiration" "mm" -state real acedir ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acedir" "Accumulated ground surface evaporation" "mm" -state real acqlat ij - 1 - rh "acqlat" "accumulated lateral flow" "mm" -state real acqrf ij - 1 - rh "acqrf" "accumulated baseflow" "mm" -state real acetlsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acetlsm" "Accumulated evaporation" "mm" +state real acrainlsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrainlsm" "Accumulated liquid precipitation into LSM" "mm" +state real acrunsb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrunsb" "Accumulated subsurface runoff" "mm" +state real acrunsf ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrunsf" "Accumulated surface runoff" "mm" +state real acecan ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acecan" "Accumulated evaporation of intercepted water" "mm" +state real acetran ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acetran" "Accumulated transpiration" "mm" +state real acedir ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acedir" "Accumulated ground surface evaporation" "mm" +state real acqlat ij - 1 - r "acqlat" "accumulated lateral flow" "mm" +state real acqrf ij - 1 - r "acqrf" "accumulated baseflow" "mm" +state real acetlsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acetlsm" "Accumulated evaporation" "mm" # Needed for snow water budget -state real acsnowlsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnowlsm" "Accumulated frozen precipitation into LSM" "mm" -state real acsubc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsubc" "Accumulated canopy sublimation" "mm" -state real acfroc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acfroc" "Accumulated canopy frost" "mm" -state real acfrzc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acfrzc" "Accumulated canopy liquid freeze" "mm" -state real acmeltc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acmeltc" "Accumulated canopy snow melt" "mm" +state real acsnowlsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnowlsm" "Accumulated frozen precipitation into LSM" "mm" +state real acsubc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsubc" "Accumulated canopy sublimation" "mm" +state real acfroc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acfroc" "Accumulated canopy frost" "mm" +state real acfrzc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acfrzc" "Accumulated canopy liquid freeze" "mm" +state real acmeltc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acmeltc" "Accumulated canopy snow melt" "mm" # Needed for snowpack water budget -state real acsnbot ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnbot" "Accumulated total liquid water (melt + rain through pack) out of snowpack bottom" "mm" -state real acsnmelt ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnmelt" "Accumulated snowmelt due to phase change" "mm" -state real acponding ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acponding" "Accumulated surface ponding from complete pack melt" "mm" -state real acsnsub ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnsub" "Accumulated snow pack sublimation" "mm" -state real acsnfro ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnfro" "Accumulated snow pack frost" "mm" -state real acrainsnow ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrainsnow" "accumulated rain on snow pack" "mm" -state real acdrips ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acdrips" "Accumulated canopy snow drip" "mm" -state real acthros ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acthros" "Accumulated snow throughfall" "mm" +state real acsnbot ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnbot" "Accumulated total liquid water (melt + rain through pack) out of snowpack bottom" "mm" +state real acsnmelt ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnmelt" "Accumulated snowmelt due to phase change" "mm" +state real acponding ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acponding" "Accumulated surface ponding from complete pack melt" "mm" +state real acsnsub ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnsub" "Accumulated snow pack sublimation" "mm" +state real acsnfro ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsnfro" "Accumulated snow pack frost" "mm" +state real acrainsnow ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acrainsnow" "accumulated rain on snow pack" "mm" +state real acdrips ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acdrips" "Accumulated canopy snow drip" "mm" +state real acthros ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acthros" "Accumulated snow throughfall" "mm" # Needed for energy budget -state real acsagb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsagb" "Accumulated solar radiation absorbed at bare fraction" "kJ/m2" -state real acirb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acirb" "Accumulated net longwave at bare fraction " "kJ/m2" -state real acshb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshb" "Accumulated sensible heat flux at bare fraction" "kJ/m2" -state real acevb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevb" "Accumulated latent heat flux at bare fraction" "kJ/m2" -state real acghb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acghb" "Accumulated heat flux into soil at bare fraction" "kJ/m2" -state real acpahb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahb" "Accumulated precipitation advected energy to bare ground" "kJ/m2" -state real acsagv ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsagv" "Accumulated solar radiation absorbed at vegetated fraction" "kJ/m2" -state real acirg ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acirg" "Accumulated net longwave below canopy surface" "kJ/m2" -state real acshg ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshg" "Accumulated sensible heat flux: ground to canopy" "kJ/m2" -state real acevg ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevg" "Accumulated latent heat flux: ground to canopy" "kJ/m2" -state real acghv ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acghv" "Accumulated heat flux into soil under canopy" "kJ/m2" -state real acpahg ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahg" "Accumulated precipitation advected energy to below canopy" "kJ/m2" -state real acsav ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsav" "Accumulated solar rad absorbed by vegetated fraction" "kJ/m2" -state real acirc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acirc" "Accumulated net longwave in canopy" "kJ/m2" -state real acshc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshc" "Accumulated sensible heat flux: canopy to atmosphere" "kJ/m2" -state real acevc ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevc" "Accumulated canopy evaporation" "kJ/m2" -state real actr ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "actr" "Accumulated transpiration" "kJ/m2" -state real acpahv ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahv" "Accumulated precipitation advected energy to vegetation" "kJ/m2" -state real acswdnlsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acswdnlsm" "Accumulated shortwave down at LSM" "kJ/m2" -state real acswuplsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acswuplsm" "Accumulated shortwave up at LSM" "kJ/m2" -state real aclwdnlsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aclwdnlsm" "Accumulated longwave down at LSM" "kJ/m2" -state real aclwuplsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aclwuplsm" "Accumulated longwave up at LSM" "kJ/m2" -state real acshflsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshflsm" "accumulated total sensible heat flux" "kJ/m2" -state real aclhflsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aclhflsm" "accumulated total latent heat flux" "kJ/m2" -state real acghflsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acghflsm" "accumulated total ground heat flux" "kJ/m2" -state real acpahlsm ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahlsm" "accumulated total precip heat flux" "kJ/m2" -state real accanhs ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "accanhs" "accumulated canopy storage change" "KJ/m2" - -state real soilenergy ij - 1 - hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "soilenergy" "energy content in soil relative to 273.16" "kJ/m2" -state real snowenergy ij - 1 - hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "snowenergy" "energy content in snow relative to 273.16" "kJ/m2" +state real acsagb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsagb" "Accumulated solar radiation absorbed at bare fraction" "kJ/m2" +state real acirb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acirb" "Accumulated net longwave at bare fraction " "kJ/m2" +state real acshb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshb" "Accumulated sensible heat flux at bare fraction" "kJ/m2" +state real acevb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevb" "Accumulated latent heat flux at bare fraction" "kJ/m2" +state real acghb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acghb" "Accumulated heat flux into soil at bare fraction" "kJ/m2" +state real acpahb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahb" "Accumulated precipitation advected energy to bare ground" "kJ/m2" +state real acsagv ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsagv" "Accumulated solar radiation absorbed at vegetated fraction" "kJ/m2" +state real acirg ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acirg" "Accumulated net longwave below canopy surface" "kJ/m2" +state real acshg ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshg" "Accumulated sensible heat flux: ground to canopy" "kJ/m2" +state real acevg ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevg" "Accumulated latent heat flux: ground to canopy" "kJ/m2" +state real acghv ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acghv" "Accumulated heat flux into soil under canopy" "kJ/m2" +state real acpahg ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahg" "Accumulated precipitation advected energy to below canopy" "kJ/m2" +state real acsav ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acsav" "Accumulated solar rad absorbed by vegetated fraction" "kJ/m2" +state real acirc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acirc" "Accumulated net longwave in canopy" "kJ/m2" +state real acshc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshc" "Accumulated sensible heat flux: canopy to atmosphere" "kJ/m2" +state real acevc ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acevc" "Accumulated canopy evaporation" "kJ/m2" +state real actr ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "actr" "Accumulated transpiration" "kJ/m2" +state real acpahv ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahv" "Accumulated precipitation advected energy to vegetation" "kJ/m2" +state real acswdnlsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acswdnlsm" "Accumulated shortwave down at LSM" "kJ/m2" +state real acswuplsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acswuplsm" "Accumulated shortwave up at LSM" "kJ/m2" +state real aclwdnlsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aclwdnlsm" "Accumulated longwave down at LSM" "kJ/m2" +state real aclwuplsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aclwuplsm" "Accumulated longwave up at LSM" "kJ/m2" +state real acshflsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acshflsm" "accumulated total sensible heat flux" "kJ/m2" +state real aclhflsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aclhflsm" "accumulated total latent heat flux" "kJ/m2" +state real acghflsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acghflsm" "accumulated total ground heat flux" "kJ/m2" +state real acpahlsm ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acpahlsm" "accumulated total precip heat flux" "kJ/m2" +state real accanhs ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "accanhs" "accumulated canopy storage change" "KJ/m2" +state real soilenergy ij - 1 - d=(interp_mask_land_field:lu_index)u=(copy_fcnm) "soilenergy" "energy content in soil relative to 273.16" "kJ/m2" +state real snowenergy ij - 1 - d=(interp_mask_land_field:lu_index)u=(copy_fcnm) "snowenergy" "energy content in snow relative to 273.16" "kJ/m2" state real acc_ssoil ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_ssoil" "accumulated SSOIL between dt_soil" "W/m2" state real acc_qinsur ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_qinsur" "accumulated QINSUR between dt_soil" "m/s*dt_soil/dt_noahmp" @@ -213,6 +212,32 @@ state real acc_ecanxy ij - 1 - rd=(interp_mask_land_ state real acc_etranxy ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_etran" "accumulated transpiration between dt_soil" "mm" state real acc_edirxy ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_edir" "accumulated net soil evaporation between dt_soil" "mm" +# Wetland model +state real fsatxy ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "fsat" "saturated fraction of the grid" "-" +state real wsurfxy ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "wsurf" "wetland water storage" "mm" + +# SNICAR snow albedo scheme +state real snrdsxy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "snrds" "snow layer effective grain radius" "micron" +state real snfrxy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "snfr" "snow layer rate of snow freezing" "mm/s" +state real bcphixy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "bcphi" "mass of hydrophillic Black Carbon in snow" "kg/m2" +state real bcphoxy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "bcpho" "mass of hydrophobic Black Carbon in snow" "kg/m2" +state real ocphixy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "ocphi" "mass of hydrophillic Organic Carbon in snow" "kg/m2" +state real ocphoxy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "ocpho" "mass of hydrophobic Organic Carbon in snow" "kg/m2" +state real dust1xy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "dust1s" "mass of dust species 1 in snow" "kg/m2" +state real dust2xy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "dust2s" "mass of dust species 2 in snow" "kg/m2" +state real dust3xy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "dust3s" "mass of dust species 3 in snow" "kg/m2" +state real dust4xy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "dust4s" "mass of dust species 4 in snow" "kg/m2" +state real dust5xy i{snly}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "dust5s" "mass of dust species 5 in snow" "kg/m2" +state real massconcbcphixy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concbcphi" "mass concentration of hydrophillic Black Carbon in snow" "kg/kg" +state real massconcbcphoxy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concbcpho" "mass concentration of hydrophobic Black Carbon in snow" "kg/kg" +state real massconcocphixy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concocphi" "mass concentration of hydrophillic Organic Carbon in snow" "kg/kg" +state real massconcocphoxy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concocpho" "mass concentration of hydrophobic Organic Carbon in snow" "kg/kg" +state real massconcdust1xy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concdust1" "mass concentration of dust species 1 in snow" "kg/kg" +state real massconcdust2xy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concdust2" "mass concentration of dust species 2 in snow" "kg/kg" +state real massconcdust3xy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concdust3" "mass concentration of dust species 3 in snow" "kg/kg" +state real massconcdust4xy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concdust4" "mass concentration of dust species 4 in snow" "kg/kg" +state real massconcdust5xy i{snly}j - 1 Z i02d=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "concdust5" "mass concentration of dust species 5 in snow" "kg/kg" + # Crop model only state real grainxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "grain" "mass of grain" "g/m2" state real gddxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "gdd" "growing degree days" "" @@ -238,9 +263,9 @@ state real FIFRACT ij - 1 - i012rd=(interp_mask_fiel state integer IRNUMSI ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMSI" "Sprinkler Irrigation Event Count" "" state integer IRNUMMI ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMMI" "Micro Irrigation Event Count" "" state integer IRNUMFI ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMFI" "Flood Irrigation Event Count" "" -state real IRWATSI ij - 1 - r "IRWATSI" "Sprinkler Irrigation Amount for the Event" "m" -state real IRWATMI ij - 1 - r "IRWATMI" "Micro Irrigation Amount for the Event" "m" -state real IRWATFI ij - 1 - r "IRWATFI" "Flood Irrigation Amount for the Event" "m" +state real IRWATSI ij - 1 - rh "IRWATSI" "Sprinkler Irrigation Amount for the Event" "m" +state real IRWATMI ij - 1 - rh "IRWATMI" "Micro Irrigation Amount for the Event" "m" +state real IRWATFI ij - 1 - rh "IRWATFI" "Flood Irrigation Amount for the Event" "m" state real IRSIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRSIVOL" "Sprinkler Irrigation Water Accumulated" "mm" state real IRMIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRMIVOL" "Micro Irrigation Water Accumulated" "mm" state real IRFIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRFIVOL" "Flood Irrigation Water Accumulated" "mm" diff --git a/chem/depend.chem b/chem/depend.chem index ffe9704bfc..faf92c4143 100644 --- a/chem/depend.chem +++ b/chem/depend.chem @@ -55,7 +55,7 @@ module_gocart_dust.o: ../phys/module_data_gocart_dust.o module_gocart_dust_afwa.o: ../phys/module_data_gocart_dust.o module_data_sorgam.o -module_uoc_dust.o: module_qf03.o module_soilpsd.o ../phys/module_sf_noahlsm.o ../phys/module_sf_noahmplsm.o ../phys/module_sf_ruclsm.o +module_uoc_dust.o: module_qf03.o module_soilpsd.o ../phys/module_sf_noahlsm.o ../phys/noahmp/drivers/wrf/NoahmpIOVarType.o ../phys/module_sf_ruclsm.o module_uoc_dustwd.o: module_data_uoc_wd.o diff --git a/chem/module_uoc_dust.F b/chem/module_uoc_dust.F index c0ebcd8edc..a05eb43260 100644 --- a/chem/module_uoc_dust.F +++ b/chem/module_uoc_dust.F @@ -16,7 +16,7 @@ MODULE uoc_dust USE qf03 USE module_soilpsd USE module_sf_noahlsm, ONLY:DRYSMC - USE NOAHMP_TABLES, ONLY: DRYSMC_nmp => SMCDRY_TABLE + USE NoahmpIOVarType, ONLY: DRYSMC_nmp => NoahmpIO%SMCDRY_TABLE USE module_sf_ruclsm, ONLY:DRYSMC_ruc => DRYSMC CONTAINS diff --git a/clean b/clean index bf063ba4d1..4ac15494cd 100755 --- a/clean +++ b/clean @@ -3,7 +3,7 @@ set nonomatch -foreach dir ( frame chem share dyn_em phys phys/physics_mmm cmaq main tools wrftladj ) +foreach dir ( frame chem share dyn_em phys phys/physics_mmm cmaq main tools wrftladj phys/noahmp/drivers/wrf phys/noahmp/src phys/noahmp/utility) if ( -d $dir ) then if ( $dir == cmaq ) then ( cd $dir ; echo $dir ; /bin/rm -f *.o *.mod ) >& /dev/null @@ -80,9 +80,8 @@ if ( "$arg" == '-a' || "$arg" == '-aa' ) then /bin/rm -f configure.wrf.backup /bin/rm -f Registry/Registry.backup /bin/rm -f run/namelist.input.backup.* - /bin/rm -f phys/module_sf_noahmpdrv.F phys/module_sf_noahmp_glacier.F \ - phys/module_sf_noahmp_groundwater.F phys/module_sf_noahmplsm.F \ - run/MPTABLE.TBL + /bin/rm -fr phys/noahmp + /bin/rm -fr run/NoahmpTable.TBL run/snicar_*.nc /bin/rm -f phys/module_bl_mynnedmf.F phys/module_bl_mynnedmf_common.F \ phys/module_bl_mynnedmf_driver.F endif diff --git a/dyn_em/module_first_rk_step_part1.F b/dyn_em/module_first_rk_step_part1.F index 9a56bb2414..0b65ac3861 100644 --- a/dyn_em/module_first_rk_step_part1.F +++ b/dyn_em/module_first_rk_step_part1.F @@ -540,7 +540,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & !gmm halo of wtd and riverflow for leafhydro #ifdef DM_PARALLEL - IF ( ( config_flags%sf_surface_physics.eq.NOAHMPSCHEME ) .and. ( config_flags%opt_run.eq.5 ) ) THEN + IF ( ( config_flags%sf_surface_physics.eq.NOAHMPSCHEME ) .and. (config_flags%opt_runsub.eq.5 ) ) THEN IF ( mod(grid%itimestep,grid%STEPWTD).eq.0 ) THEN # include "HALO_EM_HYDRO_NOAHMP.inc" ENDIF @@ -920,7 +920,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,CSAND_PX=grid%csand_px, FMSAND_PX=grid%fmsand_px & ! for Noah-MP LSM & ,idveg=config_flags%dveg, iopt_crs=config_flags%opt_crs & - & ,iopt_btr=config_flags%opt_btr, iopt_run=config_flags%opt_run & + & ,iopt_btr=config_flags%opt_btr,iopt_runsub=config_flags%opt_runsub & & ,iopt_sfc=config_flags%opt_sfc, iopt_frz=config_flags%opt_frz & & ,iopt_inf=config_flags%opt_inf, iopt_rad=config_flags%opt_rad & & ,iopt_alb=config_flags%opt_alb, iopt_snf=config_flags%opt_snf & @@ -930,7 +930,10 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,iopt_crop=config_flags%opt_crop, iopt_irr=config_flags%opt_irr & & ,iopt_irrm=config_flags%opt_irrm & & ,iopt_infdv=config_flags%opt_infdv,iopt_tdrn=config_flags%opt_tdrn & - & ,soiltstep=config_flags%soiltstep & + & ,soiltstep=config_flags%soiltstep & + & ,iopt_runsrf=config_flags%opt_runsrf,iopt_tksno=config_flags%opt_tksno & + & ,iopt_compact=config_flags%opt_compact, iopt_scf=config_flags%opt_scf & + & ,iopt_wetland=config_flags%opt_wetland & & , isnowxy=grid%isnowxy , tvxy=grid%tvxy , tgxy=grid%tgxy & & ,canicexy=grid%canicexy ,canliqxy=grid%canliqxy, eahxy=grid%eahxy & & , tahxy=grid%tahxy , cmxy=grid%cmxy , chxy=grid%chxy & @@ -980,6 +983,29 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & , soilenergy=grid%soilenergy ,snowenergy=grid%snowenergy, canhsxy=grid%canhsxy & & , ACC_DWATERXY=grid%ACC_DWATERXY, ACC_PRCPXY=grid%ACC_PRCPXY,ACC_ECANXY=grid%ACC_ECANXY & & , ACC_ETRANXY=grid%ACC_ETRANXY, ACC_EDIRXY=grid%ACC_EDIRXY & +! Noah-MP wetland + & , FSATXY=grid%FSATXY, WSURFXY=grid%WSURFXY & +! Noah-MP SNICAR snow albedo + & ,SNICAR_BANDNUMBER_OPT=config_flags%SNICAR_BANDNUMBER_OPT & + & ,SNICAR_SOLARSPEC_OPT=config_flags%SNICAR_SOLARSPEC_OPT & + & ,SNICAR_SNOWOPTICS_OPT=config_flags%SNICAR_SNOWOPTICS_OPT & + & ,SNICAR_DUSTOPTICS_OPT=config_flags%SNICAR_DUSTOPTICS_OPT & + & ,SNICAR_RTSOLVER_OPT=config_flags%SNICAR_RTSOLVER_OPT & + & ,SNICAR_SNOWSHAPE_OPT=config_flags%SNICAR_SNOWSHAPE_OPT & + & ,SNICAR_USE_AEROSOL=config_flags%SNICAR_USE_AEROSOL & + & ,SNICAR_SNOWBC_INTMIX=config_flags%SNICAR_SNOWBC_INTMIX & + & ,SNICAR_SNOWDUST_INTMIX=config_flags%SNICAR_SNOWDUST_INTMIX & + & ,SNICAR_USE_OC=config_flags%SNICAR_USE_OC & + & ,SNICAR_AEROSOL_READTABLE=config_flags%SNICAR_AEROSOL_READTABLE & + & ,SNRDSXY=grid%SNRDSXY, SNFRXY=grid%SNFRXY, BCPHIXY=grid%BCPHIXY & + & ,BCPHOXY=grid%BCPHOXY, OCPHIXY=grid%OCPHIXY, OCPHOXY=grid%OCPHOXY & + & ,DUST1XY=grid%DUST1XY, DUST2XY=grid%DUST2XY, DUST3XY=grid%DUST3XY & + & ,DUST4XY=grid%DUST4XY, DUST5XY=grid%DUST5XY & + & ,MassConcBCPHIXY=grid%MassConcBCPHIXY & + & ,MassConcBCPHOXY=grid%MassConcBCPHOXY, MassConcOCPHIXY=grid%MassConcOCPHIXY & + & ,MassConcOCPHOXY=grid%MassConcOCPHOXY, MassConcDUST1XY=grid%MassConcDUST1XY & + & ,MassConcDUST2XY=grid%MassConcDUST2XY, MassConcDUST3XY=grid%MassConcDUST3XY & + & ,MassConcDUST4XY=grid%MassConcDUST4XY, MassConcDUST5XY=grid%MassConcDUST5XY & ! Noah-MP irrigation & , IRFRACT=grid%IRFRACT , SIFRACT=grid%SIFRACT ,MIFRACT=grid%MIFRACT & & , FIFRACT=grid%FIFRACT , IRNUMSI=grid%IRNUMSI ,IRNUMMI=grid%IRNUMMI & diff --git a/dyn_em/start_em.F b/dyn_em/start_em.F index 700f0df38c..72a4082f8f 100644 --- a/dyn_em/start_em.F +++ b/dyn_em/start_em.F @@ -26,7 +26,7 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & USE module_comm_dm USE module_llxy, ONLY : proj_cassini USE module_physics_init - USE module_sf_noahmpdrv, ONLY : groundwater_init + USE NoahmpGroundwaterInitMod, ONLY: NoahmpGroundwaterInitMain USE module_lightning_driver, ONLY : lightning_init USE module_fr_fire_driver_wrf, ONLY : fire_driver_em_init USE module_firebrand_spotting, ONLY : firebrand_spotting_em_init @@ -1004,7 +1004,7 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & ! #ifdef DM_PARALLEL -if(config_flags%sf_surface_physics.eq.NOAHMPSCHEME.and.config_flags%opt_run.eq.5)then +if(config_flags%sf_surface_physics.eq.NOAHMPSCHEME.and.config_flags%opt_runsub.eq.5)then # include "HALO_EM_HYDRO_NOAHMP_INIT.inc" endif #endif @@ -1132,7 +1132,13 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & grid%IRRSPLH, grid%qtdrain, & ! Optional Noah-MP grid%gecros_state, & ! Optional gecros crop grid%XSAIXY,grid%LAI, & ! Optional Noah-MP - grid%T2MVXY, grid%T2MBXY, grid%CHSTARXY, & ! Optional Noah-MP + grid%T2MVXY, grid%T2MBXY, grid%CHSTARXY, grid%FSATXY, grid%WSURFXY, & ! Optional Noah-MP + grid%snrdsxy, grid%snfrxy, grid%bcphixy, grid%bcphoxy, grid%ocphixy, & ! Optional Noah-MP + grid%ocphoxy, grid%dust1xy, grid%dust2xy, grid%dust3xy, grid%dust4xy, & ! Optional Noah-MP + grid%dust5xy, grid%massconcbcphixy, grid%massconcbcphoxy, & ! Optional Noah-MP + grid%massconcocphixy, grid%massconcocphoxy, grid%massconcdust1xy, & ! Optional Noah-MP + grid%massconcdust2xy, grid%massconcdust3xy, grid%massconcdust4xy, & ! Optional Noah-MP + grid%massconcdust5xy, & ! Optional Noah-MP grid%SMOISEQ ,grid%SMCWTDXY ,grid%RECHXY, grid%DEEPRECHXY, grid%AREAXY, & ! Optional Noah-MP config_flags%wtddt ,grid%stepwtd ,grid%QRFSXY ,grid%QSPRINGSXY ,grid%QSLATXY, & ! Optional Noah-MP grid%FDEPTHXY, grid%RIVERBEDXY, grid%EQZWT, grid%RIVERCONDXY, grid%PEXPXY, & ! Optional Noah-MP @@ -1276,8 +1282,8 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & if(.not.grid%restart) then - if(config_flags%sf_surface_physics .eq. NOAHMPSCHEME .and. config_flags%opt_run .eq. 5) then - call groundwater_init ( grid , & + if(config_flags%sf_surface_physics .eq. NOAHMPSCHEME .and. config_flags%opt_runsub .eq. 5) then + call NoahmpGroundwaterInitMain ( grid , & config_flags%num_soil_layers, grid%dzs, grid%isltyp, grid%ivgtyp, config_flags%wtddt , & grid%fdepthxy , grid%ht , grid%riverbedxy, grid%eqzwt , & grid%rivercondxy, grid%pexpxy , grid%areaxy , grid%zwtxy , & @@ -1431,7 +1437,7 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & # include "PERIOD_BDY_EM_TKE.inc" # include "PERIOD_BDY_EM_SCALAR.inc" # include "PERIOD_BDY_EM_CHEM.inc" -if(config_flags%sf_surface_physics.eq.NOAHMPSCHEME.and.config_flags%opt_run.eq.5)then +if(config_flags%sf_surface_physics.eq.NOAHMPSCHEME.and.config_flags%opt_runsub.eq.5)then # include "HALO_EM_HYDRO_NOAHMP_INIT.inc" endif #endif diff --git a/main/depend.common b/main/depend.common index 0d34bd218b..e885c47c38 100644 --- a/main/depend.common +++ b/main/depend.common @@ -1132,36 +1132,1112 @@ module_sf_noah_seaice.o: \ ../share/module_model_constants.o -module_sf_noahmpdrv.o: \ - ../frame/module_comm_dm.o \ - ../frame/module_domain.o \ - module_ra_gfdleta.o \ - module_sf_noahmplsm.o \ - module_data_gocart_dust.o \ - module_sf_noahmp_glacier.o \ - module_sf_noahmp_groundwater.o \ - module_sf_gecros.o \ - ../share/module_model_constants.o \ - module_sf_urban.o \ - module_sf_bep.o \ - module_sf_bep_bem.o +module_sf_noahlsm_glacial_only.o: \ + ../share/module_model_constants.o \ + ../frame/module_wrf_error.o \ + module_sf_noahlsm.o -module_sf_noahlsm_glacial_only.o: \ - ../share/module_model_constants.o \ - ../frame/module_wrf_error.o \ - module_sf_noahlsm.o \ - module_sf_noahmplsm.o +noahmp/drivers/wrf/NoahmpWRFmainMod.o: \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/NoahmpDriverMainMod.o \ + module_sf_urban.o -module_sf_noahmplsm.o: \ - ../share/module_model_constants.o \ - module_sf_gecros.o \ - module_sf_myjsfc.o +noahmp/drivers/wrf/NoahmpWRFinitMod.o: \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/NoahmpIOVarInitMod.o \ + noahmp/drivers/wrf/NoahmpReadTableMod.o \ + noahmp/drivers/wrf/NoahmpInitMainMod.o \ + noahmp/src/SnowInputSnicarMod.o + + +noahmp/drivers/wrf/NoahmpUrbanDriverMainMod.o: \ + module_sf_urban.o \ + module_sf_bep.o \ + module_sf_bep_bem.o \ + module_ra_gfdleta.o \ + ../share/module_model_constants.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o + + +noahmp/drivers/wrf/NoahmpGroundwaterInitMod.o: \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/GroundWaterMmfMod.o \ + ../frame/module_comm_dm.o \ + ../frame/module_domain.o \ + ../frame/module_dm.o + + +noahmp/drivers/wrf/NoahmpDriverMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConfigVarInitMod.o \ + noahmp/src/EnergyVarInitMod.o \ + noahmp/src/ForcingVarInitMod.o \ + noahmp/src/WaterVarInitMod.o \ + noahmp/src/BiochemVarInitMod.o \ + noahmp/src/NoahmpMainMod.o \ + noahmp/src/NoahmpMainGlacierMod.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/ConfigVarOutTransferMod.o \ + noahmp/drivers/wrf/EnergyVarOutTransferMod.o \ + noahmp/drivers/wrf/WaterVarOutTransferMod.o \ + noahmp/drivers/wrf/BiochemVarOutTransferMod.o \ + noahmp/drivers/wrf/ForcingVarOutTransferMod.o \ + noahmp/drivers/wrf/ConfigVarInTransferMod.o \ + noahmp/drivers/wrf/ForcingVarInTransferMod.o \ + noahmp/drivers/wrf/EnergyVarInTransferMod.o \ + noahmp/drivers/wrf/WaterVarInTransferMod.o \ + noahmp/drivers/wrf/BiochemVarInTransferMod.o \ + module_ra_gfdleta.o + + +noahmp/drivers/wrf/NoahmpIOVarType.o: \ + noahmp/utility/Machine.o + + +noahmp/drivers/wrf/NoahmpIOVarInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o + + +noahmp/drivers/wrf/NoahmpReadTableMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o + + +noahmp/drivers/wrf/PedoTransferSR2006Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o + + +noahmp/drivers/wrf/ConfigVarOutTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/ForcingVarOutTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/EnergyVarOutTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/WaterVarOutTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/BiochemVarOutTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/ConfigVarInTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/ForcingVarInTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/EnergyVarInTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/BiochemVarInTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/drivers/wrf/WaterVarInTransferMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/PedoTransferSR2006Mod.o + + +noahmp/drivers/wrf/NoahmpSnowInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o + + +noahmp/drivers/wrf/NoahmpInitMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/NoahmpSnowInitMod.o + + +noahmp/drivers/wrf/GroundWaterMmfMod.o: \ + noahmp/drivers/wrf/NoahmpIOVarType.o + + +noahmp/utility/CheckNanMod.o: \ + noahmp/utility/Machine.o + + +noahmp/utility/PiecewiseLinearInterp1dMod.o: \ + noahmp/utility/Machine.o + + +noahmp/src/ConstantDefineMod.o: \ + noahmp/utility/Machine.o + + +noahmp/src/ConfigVarType.o: \ + noahmp/utility/Machine.o + + +noahmp/src/ForcingVarType.o: \ + noahmp/utility/Machine.o + + +noahmp/src/EnergyVarType.o: \ + noahmp/utility/Machine.o + + +noahmp/src/WaterVarType.o: \ + noahmp/utility/Machine.o + + +noahmp/src/BiochemVarType.o: \ + noahmp/utility/Machine.o + + +noahmp/src/NoahmpVarType.o: \ + noahmp/src/ConfigVarType.o \ + noahmp/src/ForcingVarType.o \ + noahmp/src/EnergyVarType.o \ + noahmp/src/WaterVarType.o \ + noahmp/src/BiochemVarType.o + + +noahmp/src/ConfigVarInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/src/ForcingVarInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/src/EnergyVarInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/src/WaterVarInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/src/BiochemVarInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o + + +noahmp/src/CanopyHydrologyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GroundWaterTopModelMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/IrrigationFloodMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/IrrigationInfilPhilipMod.o + + +noahmp/src/IrrigationInfilPhilipMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilHydraulicPropertyMod.o + + +noahmp/src/IrrigationMicroMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/IrrigationInfilPhilipMod.o + + +noahmp/src/MatrixSolverTriDiagonalMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSubSurfaceDrainageMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSubSurfaceEquiWaterTableMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/WaterTableEquilibriumMod.o + + +noahmp/src/RunoffSubSurfaceGroundWaterMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/GroundWaterTopModelMod.o + + +noahmp/src/RunoffSubSurfaceShallowMmfMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/ShallowWaterTableMmfMod.o + + +noahmp/src/RunoffSurfaceBatsMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSurfaceDynamicVicMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilWaterInfilPhilipMod.o \ + noahmp/src/RunoffSurfaceExcessDynamicVicMod.o \ + noahmp/src/SoilWaterInfilSmithParlangeMod.o \ + noahmp/src/SoilWaterInfilGreenAmptMod.o + + +noahmp/src/RunoffSurfaceExcessDynamicVicMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSurfaceFreeDrainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilHydraulicPropertyMod.o + + +noahmp/src/RunoffSurfaceTopModelEquiMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSurfaceTopModelGrdMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + +noahmp/src/RunoffSurfaceTopModelMmfMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSurfaceVicMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSurfaceXinAnJiangMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/RunoffSurfaceWetlandMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/WetlandWaterZhang22Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ShallowWaterTableMmfMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowfallBelowCanopyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowLayerCombineMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowLayerWaterComboMod.o + + +noahmp/src/SnowLayerDivideMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowLayerWaterComboMod.o + + +noahmp/src/SnowLayerWaterComboMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowpackCompactionMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowpackCompactionAR24Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowpackHydrologyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowLayerCombineMod.o + + +noahmp/src/SnowWaterMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowfallBelowCanopyMod.o \ + noahmp/src/SnowpackCompactionMod.o \ + noahmp/src/SnowLayerDivideMod.o \ + noahmp/src/SnowLayerCombineMod.o \ + noahmp/src/SnowpackHydrologyMod.o \ + noahmp/src/SnowpackCompactionAR24Mod.o \ + noahmp/src/SnowAerosolSnicarMod.o + + +noahmp/src/SoilHydraulicPropertyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SoilMoistureSolverMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/MatrixSolverTriDiagonalMod.o + + +noahmp/src/SoilWaterDiffusionRichardsMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilHydraulicPropertyMod.o + + +noahmp/src/SoilWaterInfilGreenAmptMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilHydraulicPropertyMod.o + + +noahmp/src/SoilWaterInfilPhilipMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilHydraulicPropertyMod.o + + +noahmp/src/SoilWaterInfilSmithParlangeMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilHydraulicPropertyMod.o + + +noahmp/src/SoilWaterMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/RunoffSurfaceTopModelGrdMod.o \ + noahmp/src/RunoffSurfaceTopModelEquiMod.o \ + noahmp/src/RunoffSurfaceFreeDrainMod.o \ + noahmp/src/RunoffSurfaceBatsMod.o \ + noahmp/src/RunoffSurfaceTopModelMmfMod.o \ + noahmp/src/RunoffSurfaceVicMod.o \ + noahmp/src/RunoffSurfaceXinAnJiangMod.o \ + noahmp/src/RunoffSurfaceDynamicVicMod.o \ + noahmp/src/RunoffSubSurfaceEquiWaterTableMod.o \ + noahmp/src/RunoffSubSurfaceGroundWaterMod.o \ + noahmp/src/RunoffSubSurfaceDrainageMod.o \ + noahmp/src/RunoffSubSurfaceShallowMmfMod.o \ + noahmp/src/SoilWaterDiffusionRichardsMod.o \ + noahmp/src/SoilMoistureSolverMod.o \ + noahmp/src/TileDrainageSimpleMod.o \ + noahmp/src/TileDrainageHooghoudtMod.o \ + noahmp/src/RunoffSurfaceWetlandMod.o + + +noahmp/src/TileDrainageEquiDepthMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/TileDrainageHooghoudtMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/TileDrainageEquiDepthMod.o \ + noahmp/src/WaterTableDepthSearchMod.o \ + noahmp/src/WaterTableEquilibriumMod.o + + +noahmp/src/TileDrainageSimpleMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/WaterMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/CanopyHydrologyMod.o \ + noahmp/src/SnowWaterMainMod.o \ + noahmp/src/IrrigationFloodMod.o \ + noahmp/src/IrrigationMicroMod.o \ + noahmp/src/SoilWaterMainMod.o \ + noahmp/src/WetlandWaterZhang22Mod.o + + +noahmp/src/WaterTableDepthSearchMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o -module_sf_noahmp_groundwater.o: \ - module_sf_noahmplsm.o +noahmp/src/WaterTableEquilibriumMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/IrrigationTriggerMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/IrrigationSprinklerMod.o: \ + noahmp/utility/Machine.o \ + noahmp/utility/CheckNanMod.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/IrrigationInfilPhilipMod.o + + +noahmp/src/CanopyWaterInterceptMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/PrecipitationHeatAdvectMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowThermalPropertyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SoilThermalPropertyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GroundThermalPropertyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowThermalPropertyMod.o \ + noahmp/src/SoilThermalPropertyMod.o + + +noahmp/src/CanopyRadiationTwoStreamMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GroundAlbedoMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowAerosolSnicarMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowAgingBatsMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowAgingSnicarMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowAlbedoBatsMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowAlbedoClassMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowAlbedoSnicarMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowRadiationSnicarMod.o + + +noahmp/src/SnowFreshRadiusMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowInputSnicarMod.o: \ + noahmp/utility/Machine.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o + + +noahmp/src/SnowRadiationSnicarMod.o: \ + noahmp/utility/Machine.o \ + noahmp/utility/PiecewiseLinearInterp1dMod.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SurfaceAlbedoMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowAgingBatsMod.o \ + noahmp/src/SnowAlbedoBatsMod.o \ + noahmp/src/SnowAlbedoClassMod.o \ + noahmp/src/SnowAlbedoSnicarMod.o \ + noahmp/src/GroundAlbedoMod.o \ + noahmp/src/CanopyRadiationTwoStreamMod.o \ + noahmp/src/SnowAgingSnicarMod.o \ + noahmp/src/SnowFreshRadiusMod.o + + +noahmp/src/SurfaceRadiationMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/EnergyMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/GroundThermalPropertyMod.o \ + noahmp/src/SurfaceEnergyFluxVegetatedMod.o \ + noahmp/src/SurfaceEnergyFluxBareGroundMod.o \ + noahmp/src/SoilSnowTemperatureMainMod.o \ + noahmp/src/SoilSnowWaterPhaseChangeMod.o \ + noahmp/src/SnowCoverGroundNiu07Mod.o \ + noahmp/src/SurfaceEmissivityMod.o \ + noahmp/src/GroundRoughnessPropertyMod.o \ + noahmp/src/PsychrometricVariableMod.o \ + noahmp/src/ResistanceGroundEvaporationMod.o \ + noahmp/src/SoilWaterTranspirationMod.o \ + noahmp/src/SurfaceAlbedoMod.o \ + noahmp/src/SurfaceRadiationMod.o \ + noahmp/src/SnowCoverGroundAR25Mod.o + + +noahmp/src/NoahmpMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/IrrigationPrepareMod.o \ + noahmp/src/IrrigationSprinklerMod.o \ + noahmp/src/CanopyWaterInterceptMod.o \ + noahmp/src/PrecipitationHeatAdvectMod.o \ + noahmp/src/EnergyMainMod.o \ + noahmp/src/WaterMainMod.o \ + noahmp/src/AtmosForcingMod.o \ + noahmp/src/BiochemCropMainMod.o \ + noahmp/src/BiochemNatureVegMainMod.o \ + noahmp/src/PhenologyMainMod.o \ + noahmp/src/BalanceErrorCheckMod.o \ + noahmp/src/GeneralInitMod.o + + +noahmp/src/HumiditySaturationMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ResistanceAboveCanopyChen97Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ResistanceAboveCanopyMostMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ResistanceCanopyStomataBallBerryMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ResistanceCanopyStomataJarvisMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/HumiditySaturationMod.o + + +noahmp/src/ResistanceLeafToGroundMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/VaporPressureSaturationMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SurfaceEnergyFluxVegetatedMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/VaporPressureSaturationMod.o \ + noahmp/src/ResistanceAboveCanopyMostMod.o \ + noahmp/src/ResistanceAboveCanopyChen97Mod.o \ + noahmp/src/ResistanceLeafToGroundMod.o \ + noahmp/src/ResistanceCanopyStomataBallBerryMod.o \ + noahmp/src/ResistanceCanopyStomataJarvisMod.o + + +noahmp/src/ResistanceBareGroundChen97Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ResistanceBareGroundMostMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SurfaceEnergyFluxBareGroundMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/VaporPressureSaturationMod.o \ + noahmp/src/ResistanceBareGroundMostMod.o \ + noahmp/src/ResistanceBareGroundChen97Mod.o + + +noahmp/src/SoilSnowTemperatureSolverMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/MatrixSolverTriDiagonalMod.o + + +noahmp/src/SoilSnowThermalDiffusionMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SoilSnowTemperatureMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilSnowTemperatureSolverMod.o \ + noahmp/src/SoilSnowThermalDiffusionMod.o + + +noahmp/src/SoilWaterSupercoolKoren99Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SoilWaterSupercoolNiu06Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SoilSnowWaterPhaseChangeMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SoilWaterSupercoolKoren99Mod.o \ + noahmp/src/SoilWaterSupercoolNiu06Mod.o + + +noahmp/src/GroundRoughnessPropertyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/PsychrometricVariableMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ResistanceGroundEvaporationMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowCoverGroundNiu07Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowCoverGroundAR25Mod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SoilWaterTranspirationMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SurfaceEmissivityMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/AtmosForcingMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/PhenologyMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/CropPhotosynthesisMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/CropGrowDegreeDayMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/CarbonFluxNatureVegMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/CarbonFluxCropMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/BiochemNatureVegMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/CarbonFluxNatureVegMod.o + + +noahmp/src/BiochemCropMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/CarbonFluxCropMod.o \ + noahmp/src/CropGrowDegreeDayMod.o \ + noahmp/src/CropPhotosynthesisMod.o + + +noahmp/src/IrrigationPrepareMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/IrrigationTriggerMod.o + + +noahmp/src/BalanceErrorCheckMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GeneralInitMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/BalanceErrorCheckGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/EnergyMainGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowCoverGlacierMod.o \ + noahmp/src/GroundRoughnessPropertyGlacierMod.o \ + noahmp/src/GroundThermalPropertyGlacierMod.o \ + noahmp/src/SurfaceAlbedoGlacierMod.o \ + noahmp/src/SurfaceRadiationGlacierMod.o \ + noahmp/src/SurfaceEmissivityGlacierMod.o \ + noahmp/src/ResistanceGroundEvaporationGlacierMod.o \ + noahmp/src/PsychrometricVariableGlacierMod.o \ + noahmp/src/SurfaceEnergyFluxGlacierMod.o \ + noahmp/src/GlacierTemperatureMainMod.o \ + noahmp/src/GlacierPhaseChangeMod.o + + +noahmp/src/GeneralInitGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GlacierIceThermalPropertyMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GlacierPhaseChangeMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GlacierTemperatureMainMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/GlacierTemperatureSolverMod.o \ + noahmp/src/GlacierThermalDiffusionMod.o + + +noahmp/src/GlacierTemperatureSolverMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/MatrixSolverTriDiagonalMod.o + + +noahmp/src/GlacierThermalDiffusionMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GroundAlbedoGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GroundRoughnessPropertyGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/GroundThermalPropertyGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowThermalPropertyMod.o \ + noahmp/src/GlacierIceThermalPropertyMod.o + + +noahmp/src/NoahmpMainGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/AtmosForcingMod.o \ + noahmp/src/GeneralInitGlacierMod.o \ + noahmp/src/PrecipitationHeatAdvectGlacierMod.o \ + noahmp/src/EnergyMainGlacierMod.o \ + noahmp/src/WaterMainGlacierMod.o \ + noahmp/src/BalanceErrorCheckGlacierMod.o + + +noahmp/src/PrecipitationHeatAdvectGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/PsychrometricVariableGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/ResistanceGroundEvaporationGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowCoverGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SnowWaterMainGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowfallBelowCanopyMod.o \ + noahmp/src/SnowpackCompactionMod.o \ + noahmp/src/SnowLayerCombineMod.o \ + noahmp/src/SnowLayerDivideMod.o \ + noahmp/src/SnowpackHydrologyGlacierMod.o \ + noahmp/src/SnowpackCompactionAR24Mod.o \ + noahmp/src/SnowAerosolSnicarMod.o + + +noahmp/src/SnowpackHydrologyGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowLayerCombineMod.o + + +noahmp/src/SurfaceAlbedoGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowAgingBatsMod.o \ + noahmp/src/SnowAlbedoBatsMod.o \ + noahmp/src/SnowAlbedoClassMod.o \ + noahmp/src/GroundAlbedoGlacierMod.o \ + noahmp/src/SnowAlbedoSnicarMod.o \ + noahmp/src/SnowAgingSnicarMod.o \ + noahmp/src/SnowFreshRadiusMod.o + + +noahmp/src/SurfaceEmissivityGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/SurfaceEnergyFluxGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/VaporPressureSaturationMod.o \ + noahmp/src/ResistanceBareGroundMostMod.o + + +noahmp/src/SurfaceRadiationGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o + + +noahmp/src/WaterMainGlacierMod.o: \ + noahmp/utility/Machine.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/SnowWaterMainGlacierMod.o module_sf_bep.o: \ @@ -1293,8 +2369,6 @@ module_physics_init.o: \ module_sf_clm.o \ module_sf_ctsm.o \ module_sf_ssib.o \ - module_sf_noahmplsm.o \ - module_sf_noahmpdrv.o \ module_sf_bep.o \ module_sf_bep_bem.o \ module_sf_ruclsm.o \ @@ -1366,7 +2440,9 @@ module_physics_init.o: \ ../frame/module_wrf_error.o \ ../frame/module_dm.o \ ../share/module_llxy.o \ - ../share/module_model_constants.o + ../share/module_model_constants.o \ + noahmp/drivers/wrf/NoahmpWRFinitMod.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o module_microphysics_driver.o: \ @@ -1550,12 +2626,10 @@ module_surface_driver.o: \ module_sf_pxsfclay.o \ module_sf_gfs.o \ module_sf_noah_seaice_drv.o \ - module_sf_noahmp_groundwater.o \ module_sf_noahdrv.o \ module_sf_clm.o \ module_sf_ctsm.o \ module_sf_ssib.o \ - module_sf_noahmpdrv.o \ module_sf_ruclsm.o \ module_sf_pxlsm.o \ module_sf_mynn.o \ @@ -1574,7 +2648,11 @@ module_surface_driver.o: \ ../frame/module_state_description.o \ ../frame/module_configure.o \ ../frame/module_cpl.o \ - ../share/module_model_constants.o + ../share/module_model_constants.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/NoahmpWRFmainMod.o \ + noahmp/drivers/wrf/NoahmpUrbanDriverMainMod.o \ + noahmp/drivers/wrf/GroundWaterMmfMod.o module_sf_ocean_driver.o: \ @@ -3197,7 +4275,7 @@ start_em.o : \ ../share/module_llxy.o \ ../share/module_model_constants.o \ ../phys/module_physics_init.o \ - ../phys/noahmp/drivers/wrf/module_sf_noahmpdrv.o \ + ../phys/noahmp/drivers/wrf/NoahmpGroundwaterInitMod.o \ module_stoch.o \ ../frame/module_tiles.o \ ../share/module_trajectory.o \ diff --git a/phys/CMakeLists.txt b/phys/CMakeLists.txt index eb58544ca5..1a45755afa 100644 --- a/phys/CMakeLists.txt +++ b/phys/CMakeLists.txt @@ -219,10 +219,166 @@ target_sources( module_sf_noahlsm.F module_sf_noahlsm_glacial_only.F # NoahMP Code - noahmp/drivers/wrf/module_sf_noahmpdrv.F - noahmp/src/module_sf_noahmp_glacier.F - noahmp/src/module_sf_noahmp_groundwater.F - noahmp/src/module_sf_noahmplsm.F + noahmp/drivers/wrf/NoahmpWRFinitMod.F90 + noahmp/drivers/wrf/NoahmpWRFmainMod.F90 + noahmp/drivers/wrf/NoahmpUrbanDriverMainMod.F90 + noahmp/drivers/wrf/NoahmpGroundwaterInitMod.F90 + noahmp/drivers/wrf/NoahmpSnowInitMod.F90 + noahmp/drivers/wrf/NoahmpInitMainMod.F90 + noahmp/drivers/wrf/NoahmpDriverMainMod.F90 + noahmp/drivers/wrf/NoahmpIOVarType.F90 + noahmp/drivers/wrf/NoahmpIOVarInitMod.F90 + noahmp/drivers/wrf/NoahmpReadTableMod.F90 + noahmp/drivers/wrf/ConfigVarOutTransferMod.F90 + noahmp/drivers/wrf/ForcingVarOutTransferMod.F90 + noahmp/drivers/wrf/EnergyVarOutTransferMod.F90 + noahmp/drivers/wrf/WaterVarOutTransferMod.F90 + noahmp/drivers/wrf/BiochemVarOutTransferMod.F90 + noahmp/drivers/wrf/ConfigVarInTransferMod.F90 + noahmp/drivers/wrf/ForcingVarInTransferMod.F90 + noahmp/drivers/wrf/EnergyVarInTransferMod.F90 + noahmp/drivers/wrf/WaterVarInTransferMod.F90 + noahmp/drivers/wrf/BiochemVarInTransferMod.F90 + noahmp/drivers/wrf/GroundWaterMmfMod.F90 + noahmp/drivers/wrf/PedoTransferSR2006Mod.F90 + noahmp/utility/Machine.F90 + noahmp/utility/CheckNanMod.F90 + noahmp/utility/PiecewiseLinearInterp1dMod.F90 + noahmp/src/ConstantDefineMod.F90 + noahmp/src/ConfigVarType.F90 + noahmp/src/ForcingVarType.F90 + noahmp/src/EnergyVarType.F90 + noahmp/src/WaterVarType.F90 + noahmp/src/BiochemVarType.F90 + noahmp/src/NoahmpVarType.F90 + noahmp/src/ConfigVarInitMod.F90 + noahmp/src/ForcingVarInitMod.F90 + noahmp/src/EnergyVarInitMod.F90 + noahmp/src/WaterVarInitMod.F90 + noahmp/src/BiochemVarInitMod.F90 + noahmp/src/CanopyHydrologyMod.F90 + noahmp/src/GroundWaterTopModelMod.F90 + noahmp/src/IrrigationFloodMod.F90 + noahmp/src/IrrigationInfilPhilipMod.F90 + noahmp/src/IrrigationMicroMod.F90 + noahmp/src/MatrixSolverTriDiagonalMod.F90 + noahmp/src/RunoffSubSurfaceDrainageMod.F90 + noahmp/src/RunoffSubSurfaceEquiWaterTableMod.F90 + noahmp/src/RunoffSubSurfaceGroundWaterMod.F90 + noahmp/src/RunoffSubSurfaceShallowMmfMod.F90 + noahmp/src/RunoffSurfaceBatsMod.F90 + noahmp/src/RunoffSurfaceDynamicVicMod.F90 + noahmp/src/RunoffSurfaceExcessDynamicVicMod.F90 + noahmp/src/RunoffSurfaceFreeDrainMod.F90 + noahmp/src/RunoffSurfaceTopModelEquiMod.F90 + noahmp/src/RunoffSurfaceTopModelGrdMod.F90 + noahmp/src/RunoffSurfaceTopModelMmfMod.F90 + noahmp/src/RunoffSurfaceVicMod.F90 + noahmp/src/RunoffSurfaceXinAnJiangMod.F90 + noahmp/src/RunoffSurfaceWetlandMod.F90 + noahmp/src/WetlandWaterZhang22Mod.F90 + noahmp/src/ShallowWaterTableMmfMod.F90 + noahmp/src/SnowfallBelowCanopyMod.F90 + noahmp/src/SnowLayerCombineMod.F90 + noahmp/src/SnowLayerDivideMod.F90 + noahmp/src/SnowLayerWaterComboMod.F90 + noahmp/src/SnowpackCompactionMod.F90 + noahmp/src/SnowpackCompactionAR24Mod.F90 + noahmp/src/SnowpackHydrologyMod.F90 + noahmp/src/SnowWaterMainMod.F90 + noahmp/src/SoilHydraulicPropertyMod.F90 + noahmp/src/SoilMoistureSolverMod.F90 + noahmp/src/SoilWaterDiffusionRichardsMod.F90 + noahmp/src/SoilWaterInfilGreenAmptMod.F90 + noahmp/src/SoilWaterInfilPhilipMod.F90 + noahmp/src/SoilWaterInfilSmithParlangeMod.F90 + noahmp/src/SoilWaterMainMod.F90 + noahmp/src/TileDrainageEquiDepthMod.F90 + noahmp/src/TileDrainageHooghoudtMod.F90 + noahmp/src/TileDrainageSimpleMod.F90 + noahmp/src/WaterMainMod.F90 + noahmp/src/WaterTableDepthSearchMod.F90 + noahmp/src/WaterTableEquilibriumMod.F90 + noahmp/src/IrrigationTriggerMod.F90 + noahmp/src/IrrigationSprinklerMod.F90 + noahmp/src/CanopyWaterInterceptMod.F90 + noahmp/src/PrecipitationHeatAdvectMod.F90 + noahmp/src/SnowThermalPropertyMod.F90 + noahmp/src/SoilThermalPropertyMod.F90 + noahmp/src/GroundThermalPropertyMod.F90 + noahmp/src/EnergyMainMod.F90 + noahmp/src/NoahmpMainMod.F90 + noahmp/src/SnowAerosolSnicarMod.F90 + noahmp/src/SnowAgingBatsMod.F90 + noahmp/src/SnowAgingSnicarMod.F90 + noahmp/src/SnowAlbedoBatsMod.F90 + noahmp/src/SnowAlbedoClassMod.F90 + noahmp/src/SnowAlbedoSnicarMod.F90 + noahmp/src/SnowFreshRadiusMod.F90 + noahmp/src/SnowInputSnicarMod.F90 + noahmp/src/SnowRadiationSnicarMod.F90 + noahmp/src/GroundAlbedoMod.F90 + noahmp/src/CanopyRadiationTwoStreamMod.F90 + noahmp/src/SurfaceAlbedoMod.F90 + noahmp/src/SurfaceRadiationMod.F90 + noahmp/src/HumiditySaturationMod.F90 + noahmp/src/ResistanceAboveCanopyChen97Mod.F90 + noahmp/src/ResistanceAboveCanopyMostMod.F90 + noahmp/src/ResistanceCanopyStomataBallBerryMod.F90 + noahmp/src/ResistanceCanopyStomataJarvisMod.F90 + noahmp/src/ResistanceLeafToGroundMod.F90 + noahmp/src/VaporPressureSaturationMod.F90 + noahmp/src/SurfaceEnergyFluxVegetatedMod.F90 + noahmp/src/ResistanceBareGroundChen97Mod.F90 + noahmp/src/ResistanceBareGroundMostMod.F90 + noahmp/src/SurfaceEnergyFluxBareGroundMod.F90 + noahmp/src/SoilSnowTemperatureMainMod.F90 + noahmp/src/SoilSnowTemperatureSolverMod.F90 + noahmp/src/SoilSnowThermalDiffusionMod.F90 + noahmp/src/SoilSnowWaterPhaseChangeMod.F90 + noahmp/src/SoilWaterSupercoolKoren99Mod.F90 + noahmp/src/SoilWaterSupercoolNiu06Mod.F90 + noahmp/src/SnowCoverGroundNiu07Mod.F90 + noahmp/src/SnowCoverGroundAR25Mod.F90 + noahmp/src/GroundRoughnessPropertyMod.F90 + noahmp/src/SurfaceEmissivityMod.F90 + noahmp/src/PsychrometricVariableMod.F90 + noahmp/src/ResistanceGroundEvaporationMod.F90 + noahmp/src/SoilWaterTranspirationMod.F90 + noahmp/src/AtmosForcingMod.F90 + noahmp/src/PhenologyMainMod.F90 + noahmp/src/BiochemCropMainMod.F90 + noahmp/src/BiochemNatureVegMainMod.F90 + noahmp/src/CarbonFluxCropMod.F90 + noahmp/src/CarbonFluxNatureVegMod.F90 + noahmp/src/CropGrowDegreeDayMod.F90 + noahmp/src/CropPhotosynthesisMod.F90 + noahmp/src/IrrigationPrepareMod.F90 + noahmp/src/BalanceErrorCheckMod.F90 + noahmp/src/GeneralInitMod.F90 + noahmp/src/BalanceErrorCheckGlacierMod.F90 + noahmp/src/EnergyMainGlacierMod.F90 + noahmp/src/GeneralInitGlacierMod.F90 + noahmp/src/GlacierIceThermalPropertyMod.F90 + noahmp/src/GlacierPhaseChangeMod.F90 + noahmp/src/GlacierTemperatureMainMod.F90 + noahmp/src/GlacierTemperatureSolverMod.F90 + noahmp/src/GlacierThermalDiffusionMod.F90 + noahmp/src/GroundAlbedoGlacierMod.F90 + noahmp/src/GroundRoughnessPropertyGlacierMod.F90 + noahmp/src/GroundThermalPropertyGlacierMod.F90 + noahmp/src/NoahmpMainGlacierMod.F90 + noahmp/src/PrecipitationHeatAdvectGlacierMod.F90 + noahmp/src/PsychrometricVariableGlacierMod.F90 + noahmp/src/ResistanceGroundEvaporationGlacierMod.F90 + noahmp/src/SnowCoverGlacierMod.F90 + noahmp/src/SnowWaterMainGlacierMod.F90 + noahmp/src/SnowpackHydrologyGlacierMod.F90 + noahmp/src/SurfaceAlbedoGlacierMod.F90 + noahmp/src/SurfaceEmissivityGlacierMod.F90 + noahmp/src/SurfaceEnergyFluxGlacierMod.F90 + noahmp/src/SurfaceRadiationGlacierMod.F90 + noahmp/src/WaterMainGlacierMod.F90 module_sf_ocean_driver.F module_sf_oml.F @@ -274,4 +430,4 @@ target_include_directories( ${PROJECT_NAME}_Core PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} - ) \ No newline at end of file + ) diff --git a/phys/Makefile b/phys/Makefile index 5eda61c111..5b1e478d63 100644 --- a/phys/Makefile +++ b/phys/Makefile @@ -152,11 +152,7 @@ MODULES = \ module_sf_noah_seaice.o \ module_sf_noah_seaice_drv.o \ module_sf_noahlsm_glacial_only.o \ - module_sf_noahmp_groundwater.o \ module_sf_gecros.o \ - module_sf_noahmpdrv.o \ - module_sf_noahmplsm.o \ - module_sf_noahmp_glacier.o \ module_sf_urban.o \ module_sf_bep.o \ module_sf_bep_bem.o \ @@ -245,6 +241,168 @@ PHYSMMM_MODULES = \ physics_mmm/bl_gwdo.o \ physics_mmm/bl_ysu.o +NOAHMP_MODULES = \ + noahmp/drivers/wrf/NoahmpWRFinitMod.o \ + noahmp/drivers/wrf/NoahmpWRFmainMod.o \ + noahmp/drivers/wrf/NoahmpUrbanDriverMainMod.o \ + noahmp/drivers/wrf/NoahmpGroundwaterInitMod.o \ + noahmp/drivers/wrf/NoahmpSnowInitMod.o \ + noahmp/drivers/wrf/NoahmpInitMainMod.o \ + noahmp/drivers/wrf/NoahmpDriverMainMod.o \ + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/drivers/wrf/NoahmpIOVarInitMod.o \ + noahmp/drivers/wrf/NoahmpReadTableMod.o \ + noahmp/drivers/wrf/ConfigVarOutTransferMod.o \ + noahmp/drivers/wrf/ForcingVarOutTransferMod.o \ + noahmp/drivers/wrf/EnergyVarOutTransferMod.o \ + noahmp/drivers/wrf/WaterVarOutTransferMod.o \ + noahmp/drivers/wrf/BiochemVarOutTransferMod.o \ + noahmp/drivers/wrf/ConfigVarInTransferMod.o \ + noahmp/drivers/wrf/ForcingVarInTransferMod.o \ + noahmp/drivers/wrf/EnergyVarInTransferMod.o \ + noahmp/drivers/wrf/WaterVarInTransferMod.o \ + noahmp/drivers/wrf/BiochemVarInTransferMod.o \ + noahmp/drivers/wrf/GroundWaterMmfMod.o \ + noahmp/drivers/wrf/PedoTransferSR2006Mod.o \ + noahmp/utility/Machine.o \ + noahmp/utility/CheckNanMod.o \ + noahmp/utility/PiecewiseLinearInterp1dMod.o \ + noahmp/src/ConstantDefineMod.o \ + noahmp/src/ConfigVarType.o \ + noahmp/src/ForcingVarType.o \ + noahmp/src/EnergyVarType.o \ + noahmp/src/WaterVarType.o \ + noahmp/src/BiochemVarType.o \ + noahmp/src/NoahmpVarType.o \ + noahmp/src/ConfigVarInitMod.o \ + noahmp/src/ForcingVarInitMod.o \ + noahmp/src/EnergyVarInitMod.o \ + noahmp/src/WaterVarInitMod.o \ + noahmp/src/BiochemVarInitMod.o \ + noahmp/src/CanopyHydrologyMod.o \ + noahmp/src/GroundWaterTopModelMod.o \ + noahmp/src/IrrigationFloodMod.o \ + noahmp/src/IrrigationInfilPhilipMod.o \ + noahmp/src/IrrigationMicroMod.o \ + noahmp/src/MatrixSolverTriDiagonalMod.o \ + noahmp/src/RunoffSubSurfaceDrainageMod.o \ + noahmp/src/RunoffSubSurfaceEquiWaterTableMod.o \ + noahmp/src/RunoffSubSurfaceGroundWaterMod.o \ + noahmp/src/RunoffSubSurfaceShallowMmfMod.o \ + noahmp/src/RunoffSurfaceBatsMod.o \ + noahmp/src/RunoffSurfaceDynamicVicMod.o \ + noahmp/src/RunoffSurfaceExcessDynamicVicMod.o \ + noahmp/src/RunoffSurfaceFreeDrainMod.o \ + noahmp/src/RunoffSurfaceTopModelEquiMod.o \ + noahmp/src/RunoffSurfaceTopModelGrdMod.o \ + noahmp/src/RunoffSurfaceTopModelMmfMod.o \ + noahmp/src/RunoffSurfaceVicMod.o \ + noahmp/src/RunoffSurfaceXinAnJiangMod.o \ + noahmp/src/RunoffSurfaceWetlandMod.o \ + noahmp/src/WetlandWaterZhang22Mod.o \ + noahmp/src/ShallowWaterTableMmfMod.o \ + noahmp/src/SnowfallBelowCanopyMod.o \ + noahmp/src/SnowLayerCombineMod.o \ + noahmp/src/SnowLayerDivideMod.o \ + noahmp/src/SnowLayerWaterComboMod.o \ + noahmp/src/SnowpackCompactionMod.o \ + noahmp/src/SnowpackCompactionAR24Mod.o \ + noahmp/src/SnowpackHydrologyMod.o \ + noahmp/src/SnowWaterMainMod.o \ + noahmp/src/SoilHydraulicPropertyMod.o \ + noahmp/src/SoilMoistureSolverMod.o \ + noahmp/src/SoilWaterDiffusionRichardsMod.o \ + noahmp/src/SoilWaterInfilGreenAmptMod.o \ + noahmp/src/SoilWaterInfilPhilipMod.o \ + noahmp/src/SoilWaterInfilSmithParlangeMod.o \ + noahmp/src/SoilWaterMainMod.o \ + noahmp/src/TileDrainageEquiDepthMod.o \ + noahmp/src/TileDrainageHooghoudtMod.o \ + noahmp/src/TileDrainageSimpleMod.o \ + noahmp/src/WaterMainMod.o \ + noahmp/src/WaterTableDepthSearchMod.o \ + noahmp/src/WaterTableEquilibriumMod.o \ + noahmp/src/IrrigationTriggerMod.o \ + noahmp/src/IrrigationSprinklerMod.o \ + noahmp/src/CanopyWaterInterceptMod.o \ + noahmp/src/PrecipitationHeatAdvectMod.o \ + noahmp/src/SnowThermalPropertyMod.o \ + noahmp/src/SoilThermalPropertyMod.o \ + noahmp/src/GroundThermalPropertyMod.o \ + noahmp/src/EnergyMainMod.o \ + noahmp/src/NoahmpMainMod.o \ + noahmp/src/SnowAerosolSnicarMod.o \ + noahmp/src/SnowAgingBatsMod.o \ + noahmp/src/SnowAgingSnicarMod.o \ + noahmp/src/SnowAlbedoBatsMod.o \ + noahmp/src/SnowAlbedoClassMod.o \ + noahmp/src/SnowAlbedoSnicarMod.o \ + noahmp/src/SnowFreshRadiusMod.o \ + noahmp/src/SnowInputSnicarMod.o \ + noahmp/src/SnowRadiationSnicarMod.o \ + noahmp/src/GroundAlbedoMod.o \ + noahmp/src/CanopyRadiationTwoStreamMod.o \ + noahmp/src/SurfaceAlbedoMod.o \ + noahmp/src/SurfaceRadiationMod.o \ + noahmp/src/HumiditySaturationMod.o \ + noahmp/src/ResistanceAboveCanopyChen97Mod.o \ + noahmp/src/ResistanceAboveCanopyMostMod.o \ + noahmp/src/ResistanceCanopyStomataBallBerryMod.o \ + noahmp/src/ResistanceCanopyStomataJarvisMod.o \ + noahmp/src/ResistanceLeafToGroundMod.o \ + noahmp/src/VaporPressureSaturationMod.o \ + noahmp/src/SurfaceEnergyFluxVegetatedMod.o \ + noahmp/src/ResistanceBareGroundChen97Mod.o \ + noahmp/src/ResistanceBareGroundMostMod.o \ + noahmp/src/SurfaceEnergyFluxBareGroundMod.o \ + noahmp/src/SoilSnowTemperatureMainMod.o \ + noahmp/src/SoilSnowTemperatureSolverMod.o \ + noahmp/src/SoilSnowThermalDiffusionMod.o \ + noahmp/src/SoilSnowWaterPhaseChangeMod.o \ + noahmp/src/SoilWaterSupercoolKoren99Mod.o \ + noahmp/src/SoilWaterSupercoolNiu06Mod.o \ + noahmp/src/SnowCoverGroundNiu07Mod.o \ + noahmp/src/SnowCoverGroundAR25Mod.o \ + noahmp/src/GroundRoughnessPropertyMod.o \ + noahmp/src/SurfaceEmissivityMod.o \ + noahmp/src/PsychrometricVariableMod.o \ + noahmp/src/ResistanceGroundEvaporationMod.o \ + noahmp/src/SoilWaterTranspirationMod.o \ + noahmp/src/AtmosForcingMod.o \ + noahmp/src/PhenologyMainMod.o \ + noahmp/src/BiochemCropMainMod.o \ + noahmp/src/BiochemNatureVegMainMod.o \ + noahmp/src/CarbonFluxCropMod.o \ + noahmp/src/CarbonFluxNatureVegMod.o \ + noahmp/src/CropGrowDegreeDayMod.o \ + noahmp/src/CropPhotosynthesisMod.o \ + noahmp/src/IrrigationPrepareMod.o \ + noahmp/src/BalanceErrorCheckMod.o \ + noahmp/src/GeneralInitMod.o \ + noahmp/src/BalanceErrorCheckGlacierMod.o \ + noahmp/src/EnergyMainGlacierMod.o \ + noahmp/src/GeneralInitGlacierMod.o \ + noahmp/src/GlacierIceThermalPropertyMod.o \ + noahmp/src/GlacierPhaseChangeMod.o \ + noahmp/src/GlacierTemperatureMainMod.o \ + noahmp/src/GlacierTemperatureSolverMod.o \ + noahmp/src/GlacierThermalDiffusionMod.o \ + noahmp/src/GroundAlbedoGlacierMod.o \ + noahmp/src/GroundRoughnessPropertyGlacierMod.o \ + noahmp/src/GroundThermalPropertyGlacierMod.o \ + noahmp/src/NoahmpMainGlacierMod.o \ + noahmp/src/PrecipitationHeatAdvectGlacierMod.o \ + noahmp/src/PsychrometricVariableGlacierMod.o \ + noahmp/src/ResistanceGroundEvaporationGlacierMod.o \ + noahmp/src/SnowCoverGlacierMod.o \ + noahmp/src/SnowWaterMainGlacierMod.o \ + noahmp/src/SnowpackHydrologyGlacierMod.o \ + noahmp/src/SurfaceAlbedoGlacierMod.o \ + noahmp/src/SurfaceEmissivityGlacierMod.o \ + noahmp/src/SurfaceEnergyFluxGlacierMod.o \ + noahmp/src/SurfaceRadiationGlacierMod.o \ + noahmp/src/WaterMainGlacierMod.o + OBJS = LIBTARGET = physics @@ -254,26 +412,28 @@ $(LIBTARGET) : (cd .. && ./tools/manage_externals/checkout_externals --externals ./arch/Externals.cfg) $(MAKE) $(J) non_nmm ; \ $(AR) $(ARFLAGS) ../main/$(LIBWRFLIB) $(MODULES) $(OBJS) \ - $(FIRE_MODULES) $(DIAGNOSTIC_MODULES_EM) $(PHYSMMM_MODULES) + $(FIRE_MODULES) $(DIAGNOSTIC_MODULES_EM) $(PHYSMMM_MODULES) $(NOAHMP_MODULES) include ../configure.wrf -non_nmm : $(MODULES) $(FIRE_MODULES) $(OBJS) $(DIAGNOSTIC_MODULES_EM) +non_nmm : $(MODULES) $(FIRE_MODULES) $(OBJS) $(DIAGNOSTIC_MODULES_EM) $(NOAHMP_MODULES) submodules : - @if [ \( ! -f module_sf_noahmpdrv.F \) -o \( ! -f module_sf_noahmp_glacier.F \) -o \ - \( ! -f module_sf_noahmp_groundwater.F \) -o \( ! -f module_sf_noahmplsm.F \) ] ; then \ + @if [ \( ! -f run/NoahmpTable.TBL \) -o \ + \( ! -f noahmp/drivers/wrf/NoahmpWRFmainMod.F90 \) -o \( ! -f noahmp/drivers/wrf/NoahmpWRFinitMod.F90 \) -o \ + \( ! -f noahmp/drivers/wrf/NoahmpIOVarInitMod.F90 \) -o \( ! -f noahmp/drivers/wrf/NoahmpIOVarType.F90 \) -o \ + \( ! -f noahmp/drivers/wrf/GroundWaterMmfMod.F90 \) -o \( ! -f noahmp/drivers/wrf/NoahmpUrbanDriverMainMod.F90 \) -o \ + \( ! -f noahmp/src/NoahmpMainMod.F90 \) -o \( ! -f noahmp/src/NoahmpVarType.F90 \) ] ; then \ echo Pulling in NoahMP submodule ; \ ( cd .. ; git submodule update --init --recursive ) ; \ - ln -sf noahmp/drivers/wrf/module_sf_noahmpdrv.F . ; \ - ln -sf noahmp/src/module_sf_noahmp_glacier.F . ; \ - ln -sf noahmp/src/module_sf_noahmp_groundwater.F . ; \ - ln -sf noahmp/src/module_sf_noahmplsm.F . ; \ - ( cd ../run ; ln -sf ../phys/noahmp/parameters/MPTABLE.TBL . ) ; \ + ( cd ../run ; ln -sf ../phys/noahmp/parameters/NoahmpTable.TBL . ) ; \ + ( cd ../run ; ln -sf ../phys/noahmp/parameters/snicar_drdt_bst_fit_60_c070416.nc . ) ; \ + ( cd ../run ; ln -sf ../phys/noahmp/parameters/snicar_optics_480bnd_c012422.nc . ) ; \ + ( cd ../run ; ln -sf ../phys/noahmp/parameters/snicar_optics_5bnd_c013122.nc . ) ; \ else \ echo No action required for NoahMP submodule ; \ fi - @if [ \( ! -f module_bl_mynnedmf.F \) -o \( ! -f module_bl_mynedmf_common.F \) -o \ + @if [ \( ! -f module_bl_mynnedmf.F \) -o \( ! -f module_bl_mynnedmf_common.F \) -o \ \( ! -f module_bl_mynnedmf_driver.F \) ] ; then \ echo Pulling in MYNN-EDMF submodule ; \ ( cd .. ; git submodule update --init --recursive ) ; \ diff --git a/phys/module_diag_misc.F b/phys/module_diag_misc.F index 54ba69e42d..02ef626370 100644 --- a/phys/module_diag_misc.F +++ b/phys/module_diag_misc.F @@ -644,7 +644,7 @@ END SUBROUTINE diagnostic_output_calc !-------------------------- NOAHMP model diagnostic output subroutine noahmp_output_calc( ims,ime, jms,jme ,& i_start ,i_end ,j_start ,j_end ,num_tiles ,& - dt ,noahmp_acc_dt ,curr_secs2,opt_run ,stepwtd ,itimestep ,& + dt ,noahmp_acc_dt ,curr_secs2,opt_runsub,stepwtd ,itimestep ,& acsagv ,acsagb ,acirg ,acshg ,acevg ,acghv ,acpahg ,acirb ,& acshb ,acevb ,acghb ,acpahb ,acsav ,acirc ,acshc ,acevc ,& actr ,acpahv ,acswdnlsm,acswuplsm, & @@ -674,7 +674,7 @@ subroutine noahmp_output_calc( ims,ime, jms,jme real , intent(in) :: dt real , optional, intent(in) :: noahmp_acc_dt, curr_secs2 - integer, optional, intent(in) :: opt_run, stepwtd, itimestep + integer, optional, intent(in) :: opt_runsub, stepwtd, itimestep real, dimension( ims:ime, jms:jme ), optional, intent(inout) :: & acsagv ,acsagb ,acirg ,acshg ,acevg ,acghv ,acpahg ,acirb ,& @@ -828,7 +828,7 @@ subroutine noahmp_output_calc( ims,ime, jms,jme acponding(i,j) = acponding(i,j) + ponding(i,j) acrainlsm(i,j) = acrainlsm(i,j) + dt * rainlsm(i,j) acsnowlsm(i,j) = acsnowlsm(i,j) + dt * snowlsm(i,j) - if(opt_run == 5) then + if(opt_runsub == 5) then if(mod(itimestep,stepwtd) == 0) then acqlat(i,j) = acqlat(i,j) + qlat(i,j) * 1000.0 acqrf(i,j) = acqrf(i,j) + qrf(i,j) * 1000.0 diff --git a/phys/module_diagnostics_driver.F b/phys/module_diagnostics_driver.F index aa583b505f..37f042005c 100644 --- a/phys/module_diagnostics_driver.F +++ b/phys/module_diagnostics_driver.F @@ -1114,7 +1114,7 @@ SUBROUTINE diagnostics_driver ( grid, config_flags, & num_tiles=grid%num_tiles ,& dt=grid%dt ,& noahmp_acc_dt=config_flags%noahmp_acc_dt ,& - opt_run=config_flags%opt_run ,& + opt_runsub=config_flags%opt_runsub ,& stepwtd=grid%stepwtd ,& itimestep=grid%itimestep ,& curr_secs2=curr_secs2 ,& diff --git a/phys/module_physics_init.F b/phys/module_physics_init.F index 8f94e171e2..7e2ba756cc 100644 --- a/phys/module_physics_init.F +++ b/phys/module_physics_init.F @@ -139,7 +139,11 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & IRRSPLH, qtdrain, & gecros_state, & ! Optional gecros crop XSAIXY, LAI, & ! Optional Noah-MP - T2MVXY, T2MBXY, CHSTARXY , & ! Optional Noah-MP + T2MVXY, T2MBXY, CHSTARXY, FSATXY, WSURFXY, & ! Optional Noah-MP + snrdsxy, snfrxy, bcphixy, bcphoxy, ocphixy, ocphoxy, dust1xy, & + dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& + massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & + massconcdust3xy, massconcdust4xy, massconcdust5xy, & SMOISEQ ,SMCWTDXY ,RECHXY, DEEPRECHXY, AREAXY, & ! Optional Noah-MP WTDDT , STEPWTD ,QRFSXY ,QSPRINGSXY ,QSLATXY, & ! Optional Noah-MP FDEPTHXY, RIVERBEDXY, EQZWT, RIVERCONDXY, PEXPXY, & ! Optional Noah-MP @@ -543,6 +547,28 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: T2MVXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: T2MBXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: CHSTARXY + REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: FSATXY + REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: WSURFXY + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: snrdsxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: snfrxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: bcphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: bcphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: ocphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: ocphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust1xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust2xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust3xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust4xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust5xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcbcphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcbcphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcocphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcocphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust1xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust2xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust3xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust4xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust5xy REAL, OPTIONAL, DIMENSION(ims:ime,1:num_soil_layers,jms:jme) :: SMOISEQ REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: SMCWTDXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: DEEPRECHXY @@ -862,7 +888,10 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & LOGICAL :: rdmaxalb INTEGER :: mfshconv INTEGER :: icloud_cu - INTEGER :: iopt_run + INTEGER :: iopt_runsub + INTEGER :: iopt_soil + INTEGER :: iopt_alb + INTEGER :: iopt_wetland INTEGER :: aercu_opt !PSH/TWG REAL :: aercu_fct !PSH/TWG @@ -963,10 +992,13 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & LakeModel = config_flags%sf_lake_physics mfshconv=config_flags%mfshconv IF(PRESENT(SMOISEQ)) THEN - iopt_run=config_flags%opt_run + iopt_runsub=config_flags%opt_runsub ELSE - iopt_run=-1 + iopt_runsub=-1 END IF + iopt_soil = config_flags%opt_soil + iopt_alb = config_flags%opt_alb + iopt_wetland = config_flags%opt_wetland #if ( EM_CORE == 1 ) obs_twindo_cg=model_config_rec%obs_twindo(1) obs_twindo=config_flags%obs_twindo @@ -1467,8 +1499,13 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & FDEPTHXY, RIVERBEDXY, EQZWT, RIVERCONDXY, PEXPXY, & rechclim , & ISICE, & - T2MVXY,T2MBXY,CHSTARXY , & - allowed_to_read , iopt_run , & + T2MVXY,T2MBXY,CHSTARXY, FSATXY, WSURFXY, & + snrdsxy, snfrxy, bcphixy, bcphoxy, ocphixy, ocphoxy, dust1xy, & + dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& + massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & + massconcdust3xy, massconcdust4xy, massconcdust5xy, & + allowed_to_read , iopt_runsub, & + iopt_soil, iopt_alb, iopt_wetland, & start_of_simulation , & lakedepth2d, savedtke12d, snowdp2d, h2osno2d, & !lake snl2d, t_grnd2d, t_lake3d, lake_icefrac3d, & !lake @@ -2498,9 +2535,14 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & WTDDT, STEPWTD,QRFSXY ,QSPRINGSXY ,QSLATXY, & FDEPTHXY, RIVERBEDXY, EQZWT, RIVERCONDXY, PEXPXY, & rechclim , & - ISICE, & - T2MVXY, T2MBXY ,CHSTARXY, & - allowed_to_read, iopt_run , & + ISICE, & + T2MVXY, T2MBXY ,CHSTARXY, FSATXY, WSURFXY, & + snrdsxy, snfrxy, bcphixy, bcphoxy, ocphixy, ocphoxy, dust1xy, & + dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& + massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & + massconcdust3xy, massconcdust4xy, massconcdust5xy, & + allowed_to_read, iopt_runsub, & + iopt_soil, iopt_alb, iopt_wetland, & start_of_simulation, & lakedepth2d, savedtke12d, snowdp2d, h2osno2d, & !lake snl2d, t_grnd2d, t_lake3d, lake_icefrac3d, & !lake @@ -2638,9 +2680,9 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & USE module_sf_myjsfc USE module_sf_qnsesfc USE module_sf_noahdrv - USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 - USE module_sf_noahmpdrv - USE noahmp_tables, ONLY: LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE,LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE,LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE + USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 + USE NoahmpWRFinitMod + USE NoahmpIOVarType #ifdef WRF_USE_CLM USE module_sf_clm, only : clminit #endif @@ -2690,7 +2732,8 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & its, ite, jts, jte, kts, kte INTEGER , INTENT(IN) :: num_soil_layers INTEGER , INTENT(IN) :: SF_URBAN_PHYSICS - INTEGER , INTENT(IN) :: IOPT_RUN + INTEGER , INTENT(IN) :: IOPT_RUNSUB + INTEGER , INTENT(IN) :: IOPT_SOIL,IOPT_ALB,IOPT_WETLAND INTEGER , INTENT(IN) :: itimestep ! INTEGER , INTENT(IN) :: LakeModel @@ -2814,6 +2857,28 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: T2MVXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: T2MBXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: CHSTARXY + REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: FSATXY + REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: WSURFXY + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: snrdsxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: snfrxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: bcphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: bcphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: ocphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: ocphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust1xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust2xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust3xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust4xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: dust5xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcbcphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcbcphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcocphixy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcocphoxy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust1xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust2xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust3xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust4xy + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust5xy REAL, OPTIONAL, DIMENSION(ims:ime,1:num_soil_layers,jms:jme) :: SMOISEQ REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: SMCWTDXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: DEEPRECHXY @@ -3403,7 +3468,7 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & CALL wrf_error_fatal ( 'NoahMP does not work with NLCD data. Stop.' ) ENDIF - CALL NOAHMP_INIT(MMINLU, SNOW,SNOWH,CANWAT,ISLTYP,IVGTYP,XLAT, & + CALL NoahmpWRFinit(MMINLU, SNOW,SNOWH,CANWAT,ISLTYP,IVGTYP,XLAT, & TSLB,SMOIS,SH2O,DZS, FNDSOILW, FNDSNOWH, & TSK,isnowxy ,tvxy ,tgxy ,canicexy ,TMN,XICE, & canliqxy ,eahxy ,tahxy ,cmxy ,chxy , & @@ -3415,11 +3480,16 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & irnumsi ,irnummi ,irnumfi ,irwatsi, & irwatmi ,irwatfi ,ireloss ,irsivol, & irmivol ,irfivol ,irrsplh , & - t2mvxy ,t2mbxy ,chstarxy , & + t2mvxy, t2mbxy, chstarxy, fsatxy, wsurfxy,& + snrdsxy, snfrxy, bcphixy, bcphoxy, ocphixy, ocphoxy, dust1xy, & + dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& + massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & + massconcdust3xy, massconcdust4xy, massconcdust5xy, & num_soil_layers, restart, & - allowed_to_read, iopt_run , iopt_crop, & + allowed_to_read, iopt_runsub, iopt_crop, & iopt_irr, iopt_irrm, & - sf_urban_physics, & ! urban scheme + sf_urban_physics, iopt_soil, iopt_alb, & + iopt_wetland, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte & @@ -3439,9 +3509,12 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & config_flags%slucm_distributed_drag) CALL urban_var_init(ISURBAN,TSK,TSLB,TMN,IVGTYP, & !urban ims,ime,jms,jme,kms,kme,num_soil_layers, & !urban - LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE, & !urban - LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE, & !urban - LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE, & !urban + NoahmpIO%LCZ_1_TABLE,NoahmpIO%LCZ_2_TABLE, & !urban + NoahmpIO%LCZ_3_TABLE,NoahmpIO%LCZ_4_TABLE, & !urban + NoahmpIO%LCZ_5_TABLE,NoahmpIO%LCZ_6_TABLE, & !urban + NoahmpIO%LCZ_7_TABLE,NoahmpIO%LCZ_8_TABLE, & !urban + NoahmpIO%LCZ_9_TABLE,NoahmpIO%LCZ_10_TABLE, & !urban + NoahmpIO%LCZ_11_TABLE, & !urban restart,sf_urban_physics, & !urban XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D, & !urban TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D, & !urban diff --git a/phys/module_sf_clm.F b/phys/module_sf_clm.F index 3a8c0d6006..70d45af76b 100644 --- a/phys/module_sf_clm.F +++ b/phys/module_sf_clm.F @@ -23455,7 +23455,7 @@ module SNICARMod ! ! ! !CALLED FROM: -! subroutine SurfaceAlbedo in module SurfaceAlbedoMod (CLM) +! subroutine SurfaceAlbedoClm in module SurfaceAlbedoClmMod (CLM) ! subroutine albice (CSIM) ! ! !REVISION HISTORY: @@ -27391,12 +27391,12 @@ end subroutine initAccClmtype end module accFldsMod -module SurfaceRadiationMod +module SurfaceRadiationClmMod !------------------------------------------------------------------------------ !BOP ! -! !MODULE: SurfaceRadiationMod +! !MODULE: SurfaceRadiationClmMod ! ! !DESCRIPTION: ! Calculate solar fluxes absorbed by vegetation and ground surface @@ -27411,7 +27411,7 @@ module SurfaceRadiationMod save ! ! !PUBLIC MEMBER FUNCTIONS: - public :: SurfaceRadiation ! Solar fluxes absorbed by veg and ground surface + public :: SurfaceRadiationClm ! Solar fluxes absorbed by veg and ground surface ! ! !REVISION HISTORY: ! Created by Mariana Vertenstein @@ -27429,10 +27429,10 @@ module SurfaceRadiationMod !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: SurfaceRadiation +! !IROUTINE: SurfaceRadiationClm ! ! !INTERFACE: - subroutine SurfaceRadiation(lbp, ubp, num_nourbanp, filter_nourbanp) + subroutine SurfaceRadiationClm(lbp, ubp, num_nourbanp, filter_nourbanp) ! ! !DESCRIPTION: ! Solar fluxes absorbed by vegetation and ground surface @@ -28194,16 +28194,16 @@ subroutine SurfaceRadiation(lbp, ubp, num_nourbanp, filter_nourbanp) end if end do - end subroutine SurfaceRadiation + end subroutine SurfaceRadiationClm -end module SurfaceRadiationMod +end module SurfaceRadiationClmMod -module SurfaceAlbedoMod +module SurfaceAlbedoClmMod !----------------------------------------------------------------------- !BOP ! -! !MODULE: SurfaceAlbedoMod +! !MODULE: SurfaceAlbedoClmMod ! ! !DESCRIPTION: ! Performs surface albedo calculations @@ -28221,7 +28221,7 @@ module SurfaceAlbedoMod save ! ! !PUBLIC MEMBER FUNCTIONS: - public :: SurfaceAlbedo ! Surface albedo and two-stream fluxes + public :: SurfaceAlbedoClm ! Surface albedo and two-stream fluxes ! ! !PRIVATE MEMBER FUNCTIONS: private :: SoilAlbedo ! Determine ground surface albedo @@ -28238,10 +28238,10 @@ module SurfaceAlbedoMod !----------------------------------------------------------------------- !BOP ! -! !IROUTINE: SurfaceAlbedo +! !IROUTINE: SurfaceAlbedoClm ! ! !INTERFACE: - subroutine SurfaceAlbedo(lbg, ubg, lbc, ubc, lbp, ubp, & + subroutine SurfaceAlbedoClm(lbg, ubg, lbc, ubc, lbp, ubp, & num_nourbanc, filter_nourbanc, & num_nourbanp, filter_nourbanp, & nextsw_cday, declinp1) @@ -28835,7 +28835,7 @@ subroutine SurfaceAlbedo(lbg, ubg, lbc, ubc, lbp, ubp, & end do end do - end subroutine SurfaceAlbedo + end subroutine SurfaceAlbedoClm !----------------------------------------------------------------------- @@ -28864,7 +28864,7 @@ subroutine SoilAlbedo (lbc, ubc, num_nourbanc, filter_nourbanc, coszen, albsnd, real(r8), intent(in) :: albsni(lbc:ubc,numrad) ! snow albedo (diffuse) ! ! !CALLED FROM: -! subroutine SurfaceAlbedo in this module +! subroutine SurfaceAlbedoClm in this module ! ! !REVISION HISTORY: ! Author: Gordon Bonan @@ -28963,7 +28963,7 @@ subroutine SoilAlbedo (lbc, ubc, num_nourbanc, filter_nourbanc, coszen, albsnd, albsoi(c,ib) = albsod(c,ib) end if - ! Weighting is done in SurfaceAlbedo, after the call to SNICAR_RT + ! Weighting is done in SurfaceAlbedoClm, after the call to SNICAR_RT ! This had to be done, because SoilAlbedo is called before SNICAR_RT, so at ! this point, snow albedo is not yet known. end if @@ -29006,7 +29006,7 @@ subroutine TwoStream (lbc, ubc, lbp, ubp, filter_vegsol, num_vegsol, & real(r8), intent(in) :: tau(lbp:ubp,numrad) ! leaf/stem tran weighted by fraction LAI and SAI ! ! !CALLED FROM: -! subroutine SurfaceAlbedo in this module +! subroutine SurfaceAlbedoClm in this module ! ! !REVISION HISTORY: ! Author: Gordon Bonan @@ -29254,7 +29254,7 @@ subroutine TwoStream (lbc, ubc, lbp, ubp, filter_vegsol, num_vegsol, & end subroutine TwoStream -end module SurfaceAlbedoMod +end module SurfaceAlbedoClmMod module SoilTemperatureMod @@ -56377,7 +56377,7 @@ subroutine iniTimeVar(snlx ,snowdpx ,dzclmx ,zclmx ,& use clm_varpar , only : nlevsoi,nlevgrnd, nlevsno, nlevlak,maxpatch use clm_varcon , only : denice, denh2o, zlnd,istsoil,isturb use FracWetMod , only : FracWet - use SurfaceAlbedoMod , only : SurfaceAlbedo + use SurfaceAlbedoClmMod , only : SurfaceAlbedoClm use globals , only : month, day, calday #if (defined CN) use CNEcosystemDynMod , only : CNEcosystemDyn @@ -56655,7 +56655,7 @@ subroutine iniTimeVar(snlx ,snowdpx ,dzclmx ,zclmx ,& end if end do - call SurfaceAlbedo(begg, endg, begc, endc, begp, endp,filter%num_nourbanc, filter%nourbanc, & + call SurfaceAlbedoClm(begg, endg, begc, endc, begp, endp,filter%num_nourbanc, filter%nourbanc, & filter%num_nourbanp, filter%nourbanp, calday,declin) @@ -57992,7 +57992,7 @@ subroutine driver (doalb,ilx,jlx,nextsw_cday, declinp1, declin, & ! + DGVMEcosystemDyn DGVM ecosystem dynamics: vegetation phenology [!DGVM] ! -> EcosystemDyn "static" ecosystem dynamics: vegetation phenology ! and soil carbon [!DGVM] -! -> SurfaceAlbedo albedos for next time step +! -> SurfaceAlbedoClm albedos for next time step ! -> Biogeophysics2 soil/snow & ground temp and update surface fluxes ! -> pft2col Average from PFT level to column level ! ==== End Loop 1 over clumps ==== @@ -58047,7 +58047,7 @@ subroutine driver (doalb,ilx,jlx,nextsw_cday, declinp1, declin, & use clm_varcon , only : set_caerdep_from_file,set_dustdep_from_file,zlnd, isturb, fpftdyn, fndepdyn !move fpftdyn, fndepdyn to clm_varcon.F use DriverInitMod , only : DriverInit use BalanceCheckMod , only : BalanceCheck, BeginWaterBalance - use SurfaceRadiationMod , only : SurfaceRadiation + use SurfaceRadiationClmMod , only : SurfaceRadiationClm use Hydrology1Mod , only : Hydrology1 use Hydrology2Mod , only : Hydrology2 use HydrologyLakeMod , only : HydrologyLake @@ -58056,7 +58056,7 @@ subroutine driver (doalb,ilx,jlx,nextsw_cday, declinp1, declin, & use CanopyFluxesMod , only : CanopyFluxes use Biogeophysics2Mod , only : Biogeophysics2 use BiogeophysicsLakeMod, only : BiogeophysicsLake - use SurfaceAlbedoMod , only : SurfaceAlbedo + use SurfaceAlbedoClmMod , only : SurfaceAlbedoClm use pft2colMod , only : pft2col ! use accFldsMod , only : updateAccFlds ! use accumulMod , only : accum_dealloc @@ -58357,8 +58357,8 @@ subroutine driver (doalb,ilx,jlx,nextsw_cday, declinp1, declin, & ! Surface Radiation ! ============================================================================ - call CLMDebug('SurfaceRadiation') !checked and modified according to CLM4 - call SurfaceRadiation(begp, endp, filter%num_nourbanp, filter%nourbanp) + call CLMDebug('SurfaceRadiationClm') !checked and modified according to CLM4 + call SurfaceRadiationClm(begp, endp, filter%num_nourbanp, filter%nourbanp) !ylu add urban module from CLM4 @@ -58703,8 +58703,8 @@ subroutine driver (doalb,ilx,jlx,nextsw_cday, declinp1, declin, & if (doalb) then ! Albedos for non-urban columns - call CLMDebug('SurfaceAlbedo') !checed and modified accoring to CLM4 --ylu - call SurfaceAlbedo(begg, endg, begc, endc, begp, endp, & + call CLMDebug('SurfaceAlbedoClm') !checed and modified accoring to CLM4 --ylu + call SurfaceAlbedoClm(begg, endg, begc, endc, begp, endp, & filter%num_nourbanc, filter%nourbanc, & filter%num_nourbanp, filter%nourbanp,nextsw_cday ,declinp1) diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index 036c006446..9a5411941f 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -43,10 +43,11 @@ SUBROUTINE surface_driver( & & ,pxlsm_smois_init, pxlsm_soil_nudge & ! PX-LSM & ,pxlsm_modis_veg, lai_px, wwlt_px, wfc_px & ! PX-LSM & ,wsat_px, clay_px, csand_px, fmsand_px & ! PX-LSM - & ,idveg ,iopt_crs ,iopt_btr ,iopt_run ,iopt_sfc ,iopt_frz & + & ,idveg ,iopt_crs ,iopt_btr ,iopt_runsub,iopt_sfc ,iopt_frz & & ,iopt_inf ,iopt_rad ,iopt_alb ,iopt_snf ,iopt_tbot ,iopt_stc & & ,iopt_gla ,iopt_rsf ,iopt_soil ,iopt_pedo ,iopt_crop ,iopt_irr & & ,iopt_irrm,iopt_infdv,iopt_tdrn ,soiltstep & + & ,iopt_runsrf, iopt_tksno, iopt_compact, iopt_scf, iopt_wetland & & ,soilcomp , soilcl1, soilcl2, soilcl3, soilcl4 & & ,isnowxy ,tvxy ,tgxy ,canicexy ,canliqxy ,eahxy & & ,tahxy ,cmxy ,chxy ,fwetxy ,sneqvoxy ,alboldxy & @@ -72,6 +73,18 @@ SUBROUTINE surface_driver( & & ,forczlsm ,forcwlsm ,acc_ssoil,acc_qinsur,acc_qseva ,acc_etrani & & ,eflxbxy ,soilenergy,snowenergy, canhsxy & & ,ACC_DWATERXY, ACC_PRCPXY, ACC_ECANXY, ACC_ETRANXY, ACC_EDIRXY & + & ,FSATXY, WSURFXY & + ! Noah-MP SNICAR snow albedo + & ,SNICAR_BANDNUMBER_OPT, SNICAR_SOLARSPEC_OPT & + & ,SNICAR_SNOWOPTICS_OPT, SNICAR_DUSTOPTICS_OPT & + & ,SNICAR_RTSOLVER_OPT, SNICAR_SNOWSHAPE_OPT & + & ,SNICAR_USE_AEROSOL, SNICAR_SNOWBC_INTMIX & + & ,SNICAR_SNOWDUST_INTMIX, SNICAR_USE_OC & + & ,SNICAR_AEROSOL_READTABLE, SNRDSXY, SNFRXY, BCPHIXY, BCPHOXY & + & ,OCPHIXY, OCPHOXY, DUST1XY, DUST2XY, DUST3XY, DUST4XY, DUST5XY & + & ,MassConcBCPHIXY, MassConcBCPHOXY, MassConcOCPHIXY & + & ,MassConcOCPHOXY, MassConcDUST1XY, MassConcDUST2XY & + & ,MassConcDUST3XY, MassConcDUST4XY, MassConcDUST5XY & ! Noah-MP irrigation & ,IRFRACT ,SIFRACT ,MIFRACT ,FIFRACT ,IRNUMSI ,IRNUMMI & & ,IRNUMFI ,IRWATSI ,IRWATMI ,IRWATFI ,IRELOSS ,IRSIVOL & @@ -326,7 +339,7 @@ SUBROUTINE surface_driver( & & ,irrigation,sf_surf_irr_scheme, irr_daily_amount & !IRRIG & ,irr_start_hour,irr_num_hours,irr_start_julianday & & ,irr_end_julianday,irr_freq,irr_ph,irr_rand_field & - & ) + & ) USE module_state_description, ONLY : SFCLAYSCHEME & ,SFCLAYREVSCHEME & @@ -363,9 +376,10 @@ SUBROUTINE surface_driver( & USE module_sf_gfs USE module_sf_noahdrv ! danli mosaic, the " ,only : lsm " needs to be deleted USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 - USE noahmp_tables, only : LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE,LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE,LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE - USE module_sf_noahmpdrv, only : noahmplsm, noahmp_urban - USE module_sf_noahmp_groundwater + USE NoahmpIOVarType + USE NoahmpWRFmainMod + USE NoahmpUrbanDriverMainMod, only : noahmp_urban + USE GroundWaterMmfMod USE module_sf_noah_seaice_drv #ifdef WRF_USE_CLM USE module_sf_clm @@ -880,10 +894,17 @@ SUBROUTINE surface_driver( & ! NoahMP specific fields - INTEGER, OPTIONAL, INTENT(IN) :: idveg, iopt_crs, iopt_btr, iopt_run, iopt_sfc , iopt_frz, & - iopt_inf, iopt_rad, iopt_alb, iopt_snf, iopt_tbot, iopt_stc, & - iopt_gla, iopt_rsf, iopt_soil,iopt_pedo,iopt_crop, iopt_irr, & - iopt_irrm,iopt_infdv,iopt_tdrn + INTEGER, OPTIONAL, INTENT(IN) :: idveg, iopt_crs, iopt_btr,iopt_runsub, iopt_sfc, iopt_frz, & + iopt_inf, iopt_rad, iopt_alb, iopt_snf, iopt_tbot, iopt_stc, & + iopt_gla, iopt_rsf, iopt_soil,iopt_pedo,iopt_crop, iopt_irr, & + iopt_irrm,iopt_infdv,iopt_tdrn, & + iopt_runsrf, iopt_tksno, iopt_compact, iopt_scf, iopt_wetland + ! SNICAR options + INTEGER, OPTIONAL, INTENT(IN) :: SNICAR_BANDNUMBER_OPT, SNICAR_SOLARSPEC_OPT, SNICAR_SNOWOPTICS_OPT, & + SNICAR_DUSTOPTICS_OPT, SNICAR_RTSOLVER_OPT, SNICAR_SNOWSHAPE_OPT + LOGICAL, OPTIONAL, INTENT(IN) :: SNICAR_USE_AEROSOL, SNICAR_SNOWBC_INTMIX, SNICAR_SNOWDUST_INTMIX, & + SNICAR_USE_OC, SNICAR_AEROSOL_READTABLE + REAL, OPTIONAL, INTENT(IN) :: soiltstep ! NoahMP soil timestep (s) REAL, OPTIONAL, DIMENSION(ims:ime ,8, jms:jme), INTENT(IN) :: SOILCOMP REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme) , INTENT(IN) :: SOILCL1,SOILCL2,SOILCL3,SOILCL4 @@ -903,6 +924,17 @@ SUBROUTINE surface_driver( & REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme) , INTENT(INOUT) :: acc_ssoil,acc_qinsur,acc_qseva REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme) , INTENT(INOUT) :: ACC_DWATERXY, ACC_PRCPXY, & ACC_ECANXY, ACC_ETRANXY, ACC_EDIRXY + REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme) , INTENT(INOUT) :: FSATXY, WSURFXY + ! SNICAR variables + REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme), INTENT(INOUT) :: SNRDSXY, SNFRXY, BCPHIXY, BCPHOXY, & + OCPHIXY, OCPHOXY, DUST1XY, DUST2XY, & + DUST3XY, DUST4XY, DUST5XY, & + MassConcBCPHIXY, MassConcBCPHOXY, & + MassConcOCPHIXY, MassConcOCPHOXY, & + MassConcDUST1XY, MassConcDUST2XY, & + MassConcDUST3XY, MassConcDUST4XY, & + MassConcDUST5XY + REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme) , INTENT( OUT) :: eflxbxy,soilenergy, snowenergy REAL, OPTIONAL, DIMENSION(ims:ime , 1:num_soil_layers, jms:jme), INTENT(INOUT) :: acc_etrani REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme), INTENT(INOUT) :: & @@ -3125,15 +3157,16 @@ SUBROUTINE surface_driver( & if(HYDRO_dt .ge. 0) HYDRO_dt = dtbl #endif CALL wrf_debug(100,'in NOAHMP DRV') - CALL noahmplsm(ITIMESTEP, YR, JULIAN_IN, COSZEN, XLAT,XLONG, & + CALL NoahmpWRFmain(ITIMESTEP, YR, JULIAN_IN, COSZEN, XLAT,XLONG, & DZ8W, DTBL, DZS, NUM_SOIL_LAYERS, DX, & IVGTYP, ISLTYP, VEGFRA, SHDMAX, TMN, & XLAND, XICE, XICE_THRESHOLD, CROPCAT, & - PLANTING, HARVEST,SEASON_GDD, & - IDVEG, IOPT_CRS, IOPT_BTR, IOPT_RUN, IOPT_SFC, IOPT_FRZ, & + PLANTING, HARVEST,SEASON_GDD, & + IDVEG, IOPT_CRS, IOPT_BTR, IOPT_RUNSUB, IOPT_SFC, IOPT_FRZ, & IOPT_INF, IOPT_RAD, IOPT_ALB, IOPT_SNF, IOPT_TBOT, IOPT_STC, & IOPT_GLA, IOPT_RSF, IOPT_SOIL,IOPT_PEDO,IOPT_CROP, IOPT_IRR, & - IOPT_IRRM, IOPT_INFDV, IOPT_TDRN, soiltstep, & + IOPT_IRRM, IOPT_INFDV, IOPT_TDRN, soiltstep, & + IOPT_RUNSRF, IOPT_TKSNO, IOPT_COMPACT, IOPT_SCF, IOPT_WETLAND, & IZ0TLND, SF_URBAN_PHYSICS, & SOILCOMP, SOILCL1, SOILCL2, SOILCL3, SOILCL4, & T_PHY, QV_CURR, U_PHY, V_PHY, SWDOWN, SWDDIR, & @@ -3171,6 +3204,17 @@ SUBROUTINE surface_driver( & fpicexy,RAINLSM,SNOWLSM,forctlsm,forcqlsm,forcplsm,forczlsm,forcwlsm,& acc_ssoil, acc_qinsur, acc_qseva, acc_etrani, eflxbxy, soilenergy, snowenergy, canhsxy,& ACC_DWATERXY, ACC_PRCPXY, ACC_ECANXY, ACC_ETRANXY, ACC_EDIRXY, & + FSATXY, WSURFXY, & + SNICAR_BANDNUMBER_OPT, SNICAR_SOLARSPEC_OPT, & ! SNICAR variable + SNICAR_SNOWOPTICS_OPT, SNICAR_DUSTOPTICS_OPT, & ! SNICAR variable + SNICAR_RTSOLVER_OPT, SNICAR_SNOWSHAPE_OPT, & ! SNICAR variable + SNICAR_USE_AEROSOL, SNICAR_SNOWBC_INTMIX, & ! SNICAR variable + SNICAR_SNOWDUST_INTMIX, SNICAR_USE_OC, & ! SNICAR variable + SNICAR_AEROSOL_READTABLE, SNRDSXY, SNFRXY, BCPHIXY, BCPHOXY, & ! SNICAR variable + OCPHIXY, OCPHOXY, DUST1XY, DUST2XY, DUST3XY, DUST4XY, DUST5XY, & ! SNICAR variable + MassConcBCPHIXY, MassConcBCPHOXY, MassConcOCPHIXY, & ! SNICAR variable + MassConcOCPHOXY, MassConcDUST1XY, MassConcDUST2XY, & ! SNICAR variable + MassConcDUST3XY, MassConcDUST4XY, MassConcDUST5XY, & ! SNICAR variable #ifdef WRF_HYDRO sfcheadrt,INFXSRT,soldrain,qtiledrain,ZWATBLE2D, & !O #endif @@ -3240,20 +3284,20 @@ SUBROUTINE surface_driver( & ENDIF - IF ( iopt_run .EQ. 5 ) THEN - IF ( MOD(itimestep,STEPWTD) .EQ. 0 ) THEN ! STEPWTD always and only non-zero for iopt_run == 5 + IF ( iopt_runsub .EQ. 5 ) THEN + IF ( MOD(itimestep,STEPWTD) .EQ. 0 ) THEN ! STEPWTD always and only non-zero for iopt_runsub == 5 CALL wrf_debug( 100, 'calling WTABLE' ) !gmm update wtable from lateral flow and shed water to rivers - CALL WTABLE_mmf_noahmp(num_soil_layers,xland,xice, xice_threshold, isice, & - isltyp,smoiseq,dzs,wtddt, & - fdepthxy,areaxy,ht,isurban,ivgtyp, & - rivercondxy,riverbedxy,eqzwt,pexpxy, & - smois,sh2o,smcwtdxy,zwtxy,qlatxy,qrfxy,deeprechxy,qspringxy, & - qslatxy,qrfsxy,qspringsxy,rechxy, & - ids,ide, jds,jde, kds,kde, & - ims,ime, jms,jme, kms,kme, & + CALL WTABLE_mmf_noahmp(num_soil_layers,xland,xice, xice_threshold, isice, & + isltyp,smoiseq,dzs,wtddt, & + fdepthxy,areaxy,ht,isurban,ivgtyp, & + rivercondxy,riverbedxy,eqzwt,pexpxy, & + smois,sh2o,smcwtdxy,zwtxy,qlatxy,qrfxy,deeprechxy,qspringxy,& + qslatxy,qrfsxy,qspringsxy,rechxy, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & i_start(ij),i_end(ij), j_start(ij),j_end(ij), kts,kte ) END IF @@ -3355,11 +3399,13 @@ SUBROUTINE surface_driver( & ENDIF TH2(I,J) = T2(I,J)*(1.E5/PSFC(I,J))**RCP ! ELSEIF (IVGTYP(I,J) == ISURBAN .OR. IVGTYP(I,J) == ISICE .OR. FVEGXY(I,J) == 0.0 ) THEN - ELSEIF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & - IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & - IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & - IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE .or. & - (IVGTYP(I,J) == ISICE .AND. XICE(I,J) .LT. XICE_THRESHOLD)) THEN + ELSEIF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIO%LCZ_1_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_3_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_5_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_7_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_9_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_11_TABLE .or. & + (IVGTYP(I,J) == ISICE .AND. XICE(I,J) .LT. XICE_THRESHOLD)) THEN Q2(I,J) = Q2MBXY(I,J) T2(I,J) = T2MBXY(I,J) @@ -3383,10 +3429,13 @@ SUBROUTINE surface_driver( & IF(SF_URBAN_PHYSICS.eq.1) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & - IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & - IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & - IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE )THEN + IF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIO%LCZ_1_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_3_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_5_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_7_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_9_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_11_TABLE) THEN + Q2(I,J) = (FVEGXY(I,J)*Q2MVXY(I,J) + (1.-FVEGXY(I,J))*Q2MBXY(I,J))*(1.-FRC_URB2D(I,J)) + & Q2_URB2D(I,J)*FRC_URB2D(I,J) T2(I,J) = (FVEGXY(I,J)*T2MVXY(I,J) + (1.-FVEGXY(I,J))*T2MBXY(I,J))*(1.-FRC_URB2D(I,J)) + & @@ -3407,10 +3456,13 @@ SUBROUTINE surface_driver( & IF((SF_URBAN_PHYSICS.eq.2).OR.(SF_URBAN_PHYSICS.eq.3)) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & - IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & - IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & - IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE )THEN + IF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIO%LCZ_1_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_3_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_5_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_7_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_9_TABLE .or. & + IVGTYP(I,J) == NoahmpIO%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_11_TABLE) THEN + T2(I,J) = TH_PHY(i,1,j)/((1.E5/PSFC(I,J))**RCP) !urban TH2(I,J) = TH_PHY(i,1,j) !urban Q2(I,J) = qv_curr(i,1,j) !urban diff --git a/run/README.namelist b/run/README.namelist index 4ce895b539..e8271e1d19 100644 --- a/run/README.namelist +++ b/run/README.namelist @@ -1310,7 +1310,7 @@ Options for use with the Noah-MP Land Surface Model (sf_surface_physics=4): 1 = Noah 2 = CLM 3 = SSiB - opt_run = 3, ! Noah-MP Runoff and Groundwater option + opt_runsrf = 3, ! Noah-MP Surface Runoff option 1 = TOPMODEL with groundwater 2 = TOPMODEL with equilibrium water table 3 = original surface and subsurface runoff (free drainage) - default @@ -1320,6 +1320,7 @@ Options for use with the Noah-MP Land Surface Model (sf_surface_physics=4): 6 = Variable Infiltration Capacity Model surface runoff scheme (Wood et al., 1992, JGR) 7 = Xiananjiang Infiltration and surface runoff scheme ((Jayawardena and Zhou, 2000) 8 = Dynamic VIC surface runoff scheme (Liang and Xie, 2001) + opt_runsub = 3, ! Noah-MP Subsurface Runoff option (Same option set as surface runoff option) opt_infdv = 0, ! Noah-MP infiltration option in dynamic VIC runoff scheme (only works for opt_run=8) 1 = Philip scheme 2 = Green-Ampt scheme @@ -1334,9 +1335,26 @@ Options for use with the Noah-MP Land Surface Model (sf_surface_physics=4): 1 = Modified two-stream (known to cause problems when vegetation fraction is small) 2 = Two-stream applied to grid-cell 3 = Two-stream applied to vegetated fraction - opt_alb = 2, ! Noah-MP Ground Surface Albedo option + opt_alb = 1, ! Noah-MP Ground Surface Albedo option 1 = BATS 2 = CLASS + 3 = SNICAR + opt_compact = 1, ! Noah-MP snowpack compaction option + 1 = Anderson 1976 scheme + 2 = Abolafia-Rosenzweig 2024 scheme + opt_tksno = 1, ! Noah-MP snow thermal conductivity option + 1 = Stieglitz(yen,1965) scheme + 2 = Anderson, 1976 scheme + 3 = constant + 4 = Verseghy (1991) scheme + 5 = Douvill(Yen, 1981) scheme + opt_scf = 1, ! Noah-MP snow cover fraction option + 1 = Niu & Yang 2007 scheme + 2 = Abolafia-Rosenzweig 2025 scheme + opt_wetland = 0, ! Noah-MP wetland option + 0 = off + 1 = Zhang 2022 fixed parameter + 2 = Zhang 2022 read in 2D parameter (not implemented) opt_snf = 1, ! Noah-MP Precipitation Partitioning between snow and rain 1 = Jordan (1991) 2 = BATS: Snow when SFCTMP < TFRZ+2.2 @@ -1371,8 +1389,6 @@ Options for use with the Noah-MP Land Surface Model (sf_surface_physics=4): geogrid must have been run with GEOGRID.TBL.ARW.noahmp, use with caution 0 = No crop model, will run default dynamic vegetation 1 = Liu, et al. 2016 - 2 = Gecros (Genotype-by-Environment interaction on CROp growth Simulator) Yin and van Laar, 2005 - opt_irr = 0, ! options for irrigation scheme geogrid must have been run with GEOGRID.TBL.ARW.noahmp, use with caution 0 = No irrigation diff --git a/share/mediation_wrfmain.F b/share/mediation_wrfmain.F index 2f32e261ba..7e6e4d1283 100644 --- a/share/mediation_wrfmain.F +++ b/share/mediation_wrfmain.F @@ -82,7 +82,7 @@ END SUBROUTINE start_domain ENDIF !gmm add input for noamp hydro model here - IF ( config_flags%opt_run.eq.5 ) THEN + IF ( config_flags%opt_runsub.eq.5 ) THEN CALL construct_filename2a ( inpname , config_flags%auxinput7_inname & ,grid%id , 2 , timestr) diff --git a/share/output_wrf.F b/share/output_wrf.F index 69ebcf31fc..2e8c346916 100644 --- a/share/output_wrf.F +++ b/share/output_wrf.F @@ -797,7 +797,8 @@ SUBROUTINE output_wrf ( fid , grid , config_flags, switch , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'DVEG', config_flags%dveg , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_CRS', config_flags%opt_crs , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_BTR', config_flags%opt_btr , 1 , ierr ) - CALL wrf_put_dom_ti_integer ( fid, 'OPT_RUN', config_flags%opt_run , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_RUNSUB', config_flags%opt_runsub , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_RUNSRF', config_flags%opt_runsrf , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_FRZ', config_flags%opt_frz , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_INF', config_flags%opt_inf , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_RAD', config_flags%opt_rad , 1 , ierr ) @@ -812,6 +813,12 @@ SUBROUTINE output_wrf ( fid , grid , config_flags, switch , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_CROP', config_flags%opt_crop , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_IRR', config_flags%opt_irr , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'OPT_IRRM', config_flags%opt_irrm , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_COMPACT', config_flags%opt_compact , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_TKSNO', config_flags%opt_tksno , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_SCF', config_flags%opt_scf , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_WETLAND', config_flags%opt_wetland , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_TDRN', config_flags%opt_tdrn , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'OPT_INFDV', config_flags%opt_infdv , 1 , ierr ) ENDIF CALL wrf_put_dom_ti_integer ( fid, 'DFI_OPT', config_flags%dfi_opt , 1 , ierr ) diff --git a/test/em_real/examples.namelist b/test/em_real/examples.namelist index 9dc6b8e87d..ab473b0ee4 100755 --- a/test/em_real/examples.namelist +++ b/test/em_real/examples.namelist @@ -53,18 +53,19 @@ Note, this is not a namelist.input file. Find what interests you, and cut and pa sf_surface_physics = 4 &noah_mp - dveg = 4, - opt_crs = 1, - opt_btr = 1, - opt_run = 1, - opt_sfc = 1, - opt_frz = 1, - opt_inf = 1, - opt_rad = 3, - opt_alb = 2, - opt_snf = 1, - opt_tbot = 2, - opt_stc = 1, + dveg = 4, + opt_crs = 1, + opt_btr = 1, + opt_runsub = 1, + opt_runsrf = 1, + opt_sfc = 1, + opt_frz = 1, + opt_inf = 1, + opt_rad = 3, + opt_alb = 2, + opt_snf = 1, + opt_tbot = 2, + opt_stc = 1, / ** Using UCM urban model From 7af09174b4d8d336d100797981549889bf69a75a Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Mon, 5 Jan 2026 13:35:46 -0700 Subject: [PATCH 02/13] update tag to correct NoahMP github branch --- phys/noahmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/noahmp b/phys/noahmp index e5c0859874..2b301911fc 160000 --- a/phys/noahmp +++ b/phys/noahmp @@ -1 +1 @@ -Subproject commit e5c0859874407859936739e8be8741f9aed369ee +Subproject commit 2b301911fcd2aaa577fbf8b176bbc35739c484ff From 53e4e39fd2bbe0ee3863bc924c5f01a1d90910fa Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Wed, 7 Jan 2026 19:07:24 -0700 Subject: [PATCH 03/13] WRF side bug fix for couple with NoahMPv511 --- CMakeLists.txt | 2 +- Makefile | 10 ++++++++-- Registry/Registry.EM_COMMON | 9 +++++---- Registry/registry.dimspec | 1 + Registry/registry.noahmp | 6 ++++-- arch/Config.pl | 2 +- chem/module_uoc_dust.F | 4 ++-- clean | 6 +++--- dyn_em/module_first_rk_step_part1.F | 1 + dyn_em/start_em.F | 1 + main/CMakeLists.txt | 5 ++++- phys/module_physics_init.F | 26 ++++++++++++++++++++++++++ phys/module_surface_driver.F | 3 +++ run/README.physics_files | 8 ++++---- test/em_real/CMakeLists.txt | 5 ++++- 15 files changed, 68 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 737844d489..f13257779d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -725,7 +725,7 @@ list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS # in code since cmake cannot handle basically any others :( # https://gitlab.kitware.com/cmake/cmake/-/issues/17398 if ( ${USE_DOUBLE} ) - list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS DOUBLE_PRECISION ) + list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS DOUBLE_PRECISION DOUBLE_PREC ) endif() if ( ${ENABLE_CHEM} ) list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_CHEM ) diff --git a/Makefile b/Makefile index 2355002581..3dc176af15 100644 --- a/Makefile +++ b/Makefile @@ -624,7 +624,10 @@ em_real : wrf ( cd test/em_esmf_exp ; /bin/rm -f URBPARM.TBL ; ln -s ../../run/URBPARM.TBL . ) ; \ ( cd test/em_esmf_exp ; /bin/rm -f URBPARM_LCZ.TBL ; ln -s ../../run/URBPARM_LCZ.TBL . ) ; \ ( cd test/em_esmf_exp ; /bin/rm -f VEGPARM.TBL ; ln -s ../../run/VEGPARM.TBL . ) ; \ - ( cd test/em_esmf_exp ; /bin/rm -f MPTABLE.TBL ; ln -s ../../run/MPTABLE.TBL . ) ; \ + ( cd test/em_esmf_exp ; /bin/rm -f NoahmpTable.TBL ; ln -s ../../run/NoahmpTable.TBL . ) ; \ + ( cd test/em_esmf_exp ; /bin/rm -f snicar_drdt_bst_fit_60_c070416.nc ; ln -s ../../run/snicar_drdt_bst_fit_60_c070416.nc . ) ; \ + ( cd test/em_esmf_exp ; /bin/rm -f snicar_optics_480bnd_c012422.nc ; ln -s ../../run/snicar_optics_480bnd_c012422.nc . ) ; \ + ( cd test/em_esmf_exp ; /bin/rm -f snicar_optics_5bnd_c013122.nc ; ln -s ../../run/snicar_optics_5bnd_c013122.nc . ) ; \ ( cd test/em_esmf_exp ; /bin/rm -f tr49t67 ; ln -s ../../run/tr49t67 . ) ; \ ( cd test/em_esmf_exp ; /bin/rm -f tr49t85 ; ln -s ../../run/tr49t85 . ) ; \ ( cd test/em_esmf_exp ; /bin/rm -f tr67t85 ; ln -s ../../run/tr67t85 . ) ; \ @@ -710,7 +713,10 @@ em_real : wrf ( cd test/em_real ; /bin/rm -f URBPARM.TBL ; ln -s ../../run/URBPARM.TBL . ) ( cd test/em_real ; /bin/rm -f URBPARM_LCZ.TBL ; ln -s ../../run/URBPARM_LCZ.TBL . ) ( cd test/em_real ; /bin/rm -f VEGPARM.TBL ; ln -s ../../run/VEGPARM.TBL . ) - ( cd test/em_real ; /bin/rm -f MPTABLE.TBL ; ln -s ../../run/MPTABLE.TBL . ) + ( cd test/em_real ; /bin/rm -f NoahmpTable.TBL ; ln -s ../../run/NoahmpTable.TBL . ) + ( cd test/em_real ; /bin/rm -f snicar_drdt_bst_fit_60_c070416.nc ; ln -s ../../run/snicar_drdt_bst_fit_60_c070416.nc . ) + ( cd test/em_real ; /bin/rm -f snicar_optics_480bnd_c012422.nc ; ln -s ../../run/snicar_optics_480bnd_c012422.nc . ) + ( cd test/em_real ; /bin/rm -f snicar_optics_5bnd_c013122.nc ; ln -s ../../run/snicar_optics_5bnd_c013122.nc . ) ( cd test/em_real ; /bin/rm -f tr49t67 ; ln -s ../../run/tr49t67 . ) ( cd test/em_real ; /bin/rm -f tr49t85 ; ln -s ../../run/tr49t85 . ) ( cd test/em_real ; /bin/rm -f tr67t85 ; ln -s ../../run/tr67t85 . ) diff --git a/Registry/Registry.EM_COMMON b/Registry/Registry.EM_COMMON index a0fce7a146..a09b0e5d51 100644 --- a/Registry/Registry.EM_COMMON +++ b/Registry/Registry.EM_COMMON @@ -1850,7 +1850,7 @@ state real ALBBCK ij misc 1 - i0124rh "A state real EMBCK ij misc 1 - r "EMBCK" "BACKGROUND EMISSIVITY" "" state real EMISS ij misc 1 - rh "EMISS" "SURFACE EMISSIVITY" "" state real SNOTIME ij misc 1 - r "SNOTIME" "SNOTIME" "" -state real NOAHRES ij misc 1 - h "NOAHRES" "RESIDUAL OF THE NOAH SURFACE ENERGY BUDGET" "W m{-2}" +state real NOAHRES ij misc 1 - - "NOAHRES" "RESIDUAL OF THE NOAH SURFACE ENERGY BUDGET" "W m{-2}" state real CLDEFI ij misc 1 - r "CLDEFI" "precipitation efficiency in BMJ SCHEME" "" state integer STEPRA - misc 1 - r "STEPRA" "NUMBER OF FUNDAMENTAL TIMESTEPS BETWEEN RADIATION CALLS" "" @@ -2509,8 +2509,9 @@ rconfig integer default_soiltype namelist,physics 1 8 rconfig integer num_pft_clm namelist,physics 1 17 - "num_pft_clm" "" "" rconfig logical input_pft namelist,physics 1 .false. h "input_pft_flag" "use input pft instead of USGS" "" rconfig integer maxpatch namelist,physics 1 10 irh "maxpatch" "" "" -rconfig integer num_snow_layers namelist,physics 1 3 irh "num_snow_layers" "" "" -rconfig integer num_snso_layers namelist,physics 1 7 irh "num_snso_layers" "" "" +rconfig integer num_snow_layers namelist,physics 1 3 irh "num_snow_layers" "number of snow layer noahmp" "" +rconfig integer num_snso_layers namelist,physics 1 7 irh "num_snso_layers" "number of snow & soil layers noahmp" "" +rconfig integer num_radn_layers namelist,physics 1 2 irh "num_radn_layers" "number of radiation band noahmp" "" rconfig integer num_urban_ndm derived 1 1 irh "num_urban_ndm" "maximum number of street dimensions (ndm in BEP or BEM header)" "" rconfig integer num_urban_ng derived 1 1 irh "num_urban_ng" "number of grid levels in the ground (ng_u in BEP or BEM header)" "" @@ -3173,7 +3174,7 @@ package slabscheme sf_surface_physics==1 - - package lsmscheme sf_surface_physics==2 - state:flx4,fvb,fbur,fgsn,smcrel,xlaidyn package ruclsmscheme sf_surface_physics==3 - state:smfr3d,keepfr3dflag,soilt1,rhosnf,snowfallac,precipfr,acrunoff package clmscheme sf_surface_physics==5 - state:numc,nump,sabv,sabg,lwup,lhsoi,lhveg,lhtran,snl,snowdp,wtc,wtp,h2osno,t_grnd,t_veg,h2ocan,h2ocan_col,t2m_max,t2m_min,t2clm,t_ref2m,q_ref2m,h2osoi_liq_s1,h2osoi_liq_s2,h2osoi_liq_s3,h2osoi_liq_s4,h2osoi_liq_s5,h2osoi_liq1,h2osoi_liq2,h2osoi_liq3,h2osoi_liq4,h2osoi_liq5,h2osoi_liq6,h2osoi_liq7,h2osoi_liq8,h2osoi_liq9,h2osoi_liq10,h2osoi_ice_s1,h2osoi_ice_s2,h2osoi_ice_s3,h2osoi_ice_s4,h2osoi_ice_s5,h2osoi_ice1,h2osoi_ice2,h2osoi_ice3,h2osoi_ice4,h2osoi_ice5,h2osoi_ice6,h2osoi_ice7,h2osoi_ice8,h2osoi_ice9,h2osoi_ice10,t_soisno_s1,t_soisno_s2,t_soisno_s3,t_soisno_s4,t_soisno_s5,t_soisno1,t_soisno2,t_soisno3,t_soisno4,t_soisno5,t_soisno6,t_soisno7,t_soisno8,t_soisno9,t_soisno10,dzsnow1,dzsnow2,dzsnow3,dzsnow4,dzsnow5,snowrds1,snowrds2,snowrds3,snowrds4,snowrds5,t_lake1,t_lake2,t_lake3,t_lake4,t_lake5,t_lake6,t_lake7,t_lake8,t_lake9,t_lake10,h2osoi_vol1,h2osoi_vol2,h2osoi_vol3,h2osoi_vol4,h2osoi_vol5,h2osoi_vol6,h2osoi_vol7,h2osoi_vol8,h2osoi_vol9,h2osoi_vol10,albedosubgrid,lhsubgrid,hfxsubgrid,lwupsubgrid,q2subgrid,sabvsubgrid,sabgsubgrid,nrasubgrid,swupsubgrid,t_veg24,t_veg240,fsun,fsun24,fsun240,fsd24,fsd240,fsi24,fsi240,laip,pct_pft_input -package noahmpscheme sf_surface_physics==4 - state:isnowxy,tvxy,tgxy,canliqxy,canicexy,eahxy,tahxy,cmxy,chxy,fwetxy,sneqvoxy,alboldxy,qsnowxy,qrainxy,wslakexy,zwtxy,waxy,wtxy,tsnoxy,zsnsoxy,snicexy,snliqxy,lfmassxy,rtmassxy,stmassxy,woodxy,stblcpxy,fastcpxy,xsaixy,taussxy,t2mvxy,t2mbxy,q2mvxy,q2mbxy,tradxy,neexy,gppxy,nppxy,fvegxy,qinxy,runsfxy,runsbxy,ecanxy,edirxy,etranxy,fsaxy,firaxy,aparxy,psnxy,savxy,sagxy,rssunxy,rsshaxy,bgapxy,wgapxy,tgvxy,tgbxy,chvxy,chbxy,shgxy,shcxy,shbxy,evgxy,evbxy,ghvxy,ghbxy,irgxy,ircxy,irbxy,trxy,evcxy,chleafxy,chucxy,chv2xy,chb2xy,chstarxy,smoiseq,smcwtdxy,rechxy,deeprechxy,fdepthxy,areaxy,rivercondxy,riverbedxy,eqzwt,pexpxy,qrfxy,qrfsxy,qspringxy,qspringsxy,qslatxy,stepwtd,rechclim,gddxy,grainxy,croptype,planting,harvest,season_gdd,cropcat,pgsxy,soilcomp,soilcl1,soilcl2,soilcl3,soilcl4,irfract,sifract,mifract,fifract,irnumsi,irnummi,irnumfi,irwatsi,irwatmi,irwatfi,irsivol,irmivol,irfivol,ireloss,irrsplh,td_fraction,qtdrain,acrech,acqspring,qlatxy,qintsxy,qintrxy,qdripsxy,qdriprxy,qthrosxy,qthrorxy,qsnsubxy,qsnfroxy,qsubcxy,qfrocxy,qevacxy,qdewcxy,qfrzcxy,qmeltcxy,qsnbotxy,pondingxy,pahxy,pahgxy,pahvxy,pahbxy,fpicexy,rainlsm,snowlsm,acints,acintr,acdripr,acthror,acevac,acdewc,forctlsm,forcqlsm,forcplsm,forczlsm,forcwlsm,acrainlsm,acrunsb,acrunsf,acecan,acetran,acedir,acqlat,acqrf,acetlsm,acsnowlsm,acsubc,acfroc,acfrzc,acmeltc,acsnbot,acponding,acsnsub,acsnfro,acrainsnow,acdrips,acthros,acsagb,acirb,acshb,acevb,acghb,acpahb,acsagv,acirg,acshg,acevg,acghv,acpahg,acsav,acirc,acshc,acevc,actr,acpahv,acswdnlsm,acswuplsm,aclwdnlsm,aclwuplsm,acshflsm,aclhflsm,acghflsm,acpahlsm,accanhs,canhsxy,soilenergy,snowenergy,acc_ssoil,acc_qinsur,acc_qseva,acc_etrani,aceflxb,eflxbxy,acc_dwaterxy,acc_prcpxy,acc_ecanxy,acc_etranxy,acc_edirxy,qmeltxy,acsnmelt,fsatxy,wsurfxy,snrdsxy,snfrxy,bcphixy,bcphoxy,ocphixy,ocphoxy,dust1xy,dust2xy,dust3xy,dust4xy,dust5xy,massconcbcphixy,massconcbcphoxy,massconcocphixy,massconcocphoxy,massconcdust1xy,massconcdust2xy,massconcdust3xy,massconcdust4xy,massconcdust5xy +package noahmpscheme sf_surface_physics==4 - state:isnowxy,tvxy,tgxy,canliqxy,canicexy,eahxy,tahxy,cmxy,chxy,fwetxy,sneqvoxy,alboldxy,qsnowxy,qrainxy,wslakexy,zwtxy,waxy,wtxy,tsnoxy,zsnsoxy,snicexy,snliqxy,lfmassxy,rtmassxy,stmassxy,woodxy,stblcpxy,fastcpxy,xsaixy,taussxy,t2mvxy,t2mbxy,q2mvxy,q2mbxy,tradxy,neexy,gppxy,nppxy,fvegxy,qinxy,runsfxy,runsbxy,ecanxy,edirxy,etranxy,fsaxy,firaxy,aparxy,psnxy,savxy,sagxy,rssunxy,rsshaxy,bgapxy,wgapxy,tgvxy,tgbxy,chvxy,chbxy,shgxy,shcxy,shbxy,evgxy,evbxy,ghvxy,ghbxy,irgxy,ircxy,irbxy,trxy,evcxy,chleafxy,chucxy,chv2xy,chb2xy,chstarxy,smoiseq,smcwtdxy,rechxy,deeprechxy,fdepthxy,areaxy,rivercondxy,riverbedxy,eqzwt,pexpxy,qrfxy,qrfsxy,qspringxy,qspringsxy,qslatxy,stepwtd,rechclim,gddxy,grainxy,croptype,planting,harvest,season_gdd,cropcat,pgsxy,soilcomp,soilcl1,soilcl2,soilcl3,soilcl4,irfract,sifract,mifract,fifract,irnumsi,irnummi,irnumfi,irwatsi,irwatmi,irwatfi,irsivol,irmivol,irfivol,ireloss,irrsplh,td_fraction,qtdrain,acrech,acqspring,qlatxy,qintsxy,qintrxy,qdripsxy,qdriprxy,qthrosxy,qthrorxy,qsnsubxy,qsnfroxy,qsubcxy,qfrocxy,qevacxy,qdewcxy,qfrzcxy,qmeltcxy,qsnbotxy,pondingxy,pahxy,pahgxy,pahvxy,pahbxy,fpicexy,rainlsm,snowlsm,acints,acintr,acdripr,acthror,acevac,acdewc,forctlsm,forcqlsm,forcplsm,forczlsm,forcwlsm,acrainlsm,acrunsb,acrunsf,acecan,acetran,acedir,acqlat,acqrf,acetlsm,acsnowlsm,acsubc,acfroc,acfrzc,acmeltc,acsnbot,acponding,acsnsub,acsnfro,acrainsnow,acdrips,acthros,acsagb,acirb,acshb,acevb,acghb,acpahb,acsagv,acirg,acshg,acevg,acghv,acpahg,acsav,acirc,acshc,acevc,actr,acpahv,acswdnlsm,acswuplsm,aclwdnlsm,aclwuplsm,acshflsm,aclhflsm,acghflsm,acpahlsm,accanhs,canhsxy,soilenergy,snowenergy,acc_ssoil,acc_qinsur,acc_qseva,acc_etrani,aceflxb,eflxbxy,acc_dwaterxy,acc_prcpxy,acc_ecanxy,acc_etranxy,acc_edirxy,qmeltxy,acsnmelt,fsatxy,wsurfxy,snrdsxy,snfrxy,bcphixy,bcphoxy,ocphixy,ocphoxy,dust1xy,dust2xy,dust3xy,dust4xy,dust5xy,massconcbcphixy,massconcbcphoxy,massconcocphixy,massconcocphoxy,massconcdust1xy,massconcdust2xy,massconcdust3xy,massconcdust4xy,massconcdust5xy,albsoildirxy,albsoildifxy package ctsmscheme sf_surface_physics==6 - - package pxlsmscheme sf_surface_physics==7 - state:t2_ndg_new,q2_ndg_new,t2_ndg_old,q2_ndg_old,t2obs,q2obs,vegf_px,imperv,canfra,lai_px,wwlt_px,wfc_px,wsat_px,clay_px,csand_px,fmsand_px package ssibscheme sf_surface_physics==8 - state:ssib_fm,ssib_fh,ssib_cm,ssibxdd,ssib_br,ssib_lhf,ssib_shf,ssib_ghf,ssib_egs,ssib_eci,ssib_ect,ssib_egi,ssib_egt,ssib_sdn,ssib_sup,ssib_ldn,ssib_lup,ssib_wat,ssib_shc,ssib_shg,ssib_lai,ssib_vcf,ssib_z00,ssib_veg,isnow,swe,snowden,snowdepth,tkair,dzo1,wo1,tssn1,tssno1,bwo1,bto1,cto1,fio1,flo1,bio1,blo1,ho1,dzo2,wo2,tssn2,tssno2,bwo2,bto2,cto2,fio2,flo2,bio2,blo2,ho2,dzo3,wo3,tssn3,tssno3,bwo3,bto3,cto3,fio3,flo3,bio3,blo3,ho3,dzo4,wo4,tssn4,tssno4,bwo4,bto4,cto4,fio4,flo4,bio4,blo4,ho4 diff --git a/Registry/registry.dimspec b/Registry/registry.dimspec index 6761de8f7b..93fb0dd15e 100644 --- a/Registry/registry.dimspec +++ b/Registry/registry.dimspec @@ -53,6 +53,7 @@ endif dimspec snly 2 namelist=num_snow_layers z snow_layers dimspec l 2 namelist=num_soil_layers z soil_layers dimspec snsl 2 namelist=num_snso_layers z snso_layers +dimspec radn 2 namelist=num_radn_layers z radn_layers dimspec umap0 2 namelist=num_urban_ndm z num_urban_ndm dimspec umap1 2 namelist=urban_map_zrd z urban_map_zrd diff --git a/Registry/registry.noahmp b/Registry/registry.noahmp index ec07ef4ba4..3be28e58b5 100644 --- a/Registry/registry.noahmp +++ b/Registry/registry.noahmp @@ -125,6 +125,8 @@ state real soilcl1 ij - 1 - i012rd=(interp_mask_fiel state real soilcl2 ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "SOILCL2" "soil texture class - level 2" "cat" state real soilcl3 ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "SOILCL3" "soil texture class - level 3" "cat" state real soilcl4 ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "SOILCL4" "soil texture class - level 4" "cat" +state real albsoildirxy i{radn}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "albsoildirxy" "soil albedo direct radiation" "-" +state real albsoildifxy i{radn}j - 1 Z i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "albsoildifxy" "soil albedo diffuse radiation" "-" # Some additional water movement state real acints ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acints" "Accumulated canopy snow interception" "mm" @@ -245,8 +247,8 @@ state real croptype i{crop}j - 1 Z i012rd=(interp_mask_fiel state real planting ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "planting" "planting date" "julian day" state real harvest ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "harvest" "harvest date" "julian day" state real season_gdd ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "season_gdd" "growing season GDD" "C" -state integer cropcat ij - 1 - rh "cropcat" "dominant crop category" "category" -state integer pgsxy ij - 1 - rh "pgs" "pgs" "" +state integer cropcat ij - 1 - r "cropcat" "dominant crop category" "category" +state integer pgsxy ij - 1 - r "pgs" "pgs" "" # Gecros crop model only state real gecros_state i{gecros}j - 1 Z rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "gecros" "gecros state array" "-" diff --git a/arch/Config.pl b/arch/Config.pl index 0c36ddcf12..fe9fd8acfd 100644 --- a/arch/Config.pl +++ b/arch/Config.pl @@ -323,7 +323,7 @@ $sw_rwordsize = "8" if ( $sw_wrfplus_core eq "-DWRFPLUS=1" ); if ( $sw_rwordsize eq "8" ) { - $sw_promotion = "-DDOUBLE_PRECISION" ; + $sw_promotion = "-DDOUBLE_PRECISION -DDOUBLE_PREC" ; } # A separately-installed ESMF library is required to build the ESMF diff --git a/chem/module_uoc_dust.F b/chem/module_uoc_dust.F index a05eb43260..32a662c4de 100644 --- a/chem/module_uoc_dust.F +++ b/chem/module_uoc_dust.F @@ -16,7 +16,7 @@ MODULE uoc_dust USE qf03 USE module_soilpsd USE module_sf_noahlsm, ONLY:DRYSMC - USE NoahmpIOVarType, ONLY: DRYSMC_nmp => NoahmpIO%SMCDRY_TABLE + USE NoahmpIOVarType USE module_sf_ruclsm, ONLY:DRYSMC_ruc => DRYSMC CONTAINS @@ -216,7 +216,7 @@ subroutine uoc_dust_driver(dt,config_flags, & if ( config_flags%sf_surface_physics .eq. 3 ) then DRYSMC = DRYSMC_ruc elseif ( config_flags%sf_surface_physics .eq. 4 ) then - DRYSMC = DRYSMC_nmp + DRYSMC = NoahmpIO%SMCDRY_TABLE elseif ( config_flags%sf_surface_physics .eq. 1 .or. & & config_flags%sf_surface_physics .eq. 5 .or. & & config_flags%sf_surface_physics .eq. 7 .or. & diff --git a/clean b/clean index 4ac15494cd..0d5d0458c6 100755 --- a/clean +++ b/clean @@ -56,8 +56,8 @@ if ( "$arg" == '-a' || "$arg" == '-aa' ) then /bin/rm -f namelist.input ) >& /dev/null ( cd test/exp_real ; /bin/rm -f gm* out* fort* real* ) >& /dev/null ( cd test ; rm -f */*.exe */ETAMPNEW_DATA* */GENPARM.TBL */LANDUSE.TBL */README.namelist */README.physics_files \ - */RRTM_DATA */SOILPARM.TBL */VEGPARM.TBL */MPTABLE.TBL */URBPARM.TBL */URBPARM_LCZ.TBL */grib2map.tbl \ - */CAM_ABS_DATA */CAM_AEROPT_DATA \ + */RRTM_DATA */SOILPARM.TBL */VEGPARM.TBL */NoahmpTable.TBL */URBPARM.TBL */URBPARM_LCZ.TBL */grib2map.tbl \ + */CAM_ABS_DATA */CAM_AEROPT_DATA */snicar_*.nc \ */CCN_ACTIVATE.BIN */STOCHPERT.TBL \ */CAMtr_volume_mixing_ratio.RCP4.5 */CAMtr_volume_mixing_ratio.RCP6 */CAMtr_volume_mixing_ratio.RCP8.5 \ */CAMtr_volume_mixing_ratio.A1B */CAMtr_volume_mixing_ratio.A2 */CAMtr_volume_mixing_ratio \ @@ -81,7 +81,7 @@ if ( "$arg" == '-a' || "$arg" == '-aa' ) then /bin/rm -f Registry/Registry.backup /bin/rm -f run/namelist.input.backup.* /bin/rm -fr phys/noahmp - /bin/rm -fr run/NoahmpTable.TBL run/snicar_*.nc + /bin/rm -f run/NoahmpTable.TBL run/snicar_*.nc /bin/rm -f phys/module_bl_mynnedmf.F phys/module_bl_mynnedmf_common.F \ phys/module_bl_mynnedmf_driver.F endif diff --git a/dyn_em/module_first_rk_step_part1.F b/dyn_em/module_first_rk_step_part1.F index 0b65ac3861..a3137c911f 100644 --- a/dyn_em/module_first_rk_step_part1.F +++ b/dyn_em/module_first_rk_step_part1.F @@ -1006,6 +1006,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,MassConcOCPHOXY=grid%MassConcOCPHOXY, MassConcDUST1XY=grid%MassConcDUST1XY & & ,MassConcDUST2XY=grid%MassConcDUST2XY, MassConcDUST3XY=grid%MassConcDUST3XY & & ,MassConcDUST4XY=grid%MassConcDUST4XY, MassConcDUST5XY=grid%MassConcDUST5XY & + & ,ALBSOILDIRXY=grid%ALBSOILDIRXY, ALBSOILDIFXY=grid%ALBSOILDIFXY & ! Noah-MP irrigation & , IRFRACT=grid%IRFRACT , SIFRACT=grid%SIFRACT ,MIFRACT=grid%MIFRACT & & , FIFRACT=grid%FIFRACT , IRNUMSI=grid%IRNUMSI ,IRNUMMI=grid%IRNUMMI & diff --git a/dyn_em/start_em.F b/dyn_em/start_em.F index 72a4082f8f..1584a968be 100644 --- a/dyn_em/start_em.F +++ b/dyn_em/start_em.F @@ -1139,6 +1139,7 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & grid%massconcocphixy, grid%massconcocphoxy, grid%massconcdust1xy, & ! Optional Noah-MP grid%massconcdust2xy, grid%massconcdust3xy, grid%massconcdust4xy, & ! Optional Noah-MP grid%massconcdust5xy, & ! Optional Noah-MP + grid%ALBSOILDIRXY, grid%ALBSOILDIFXY, & ! Optional Noah-MP grid%SMOISEQ ,grid%SMCWTDXY ,grid%RECHXY, grid%DEEPRECHXY, grid%AREAXY, & ! Optional Noah-MP config_flags%wtddt ,grid%stepwtd ,grid%QRFSXY ,grid%QSPRINGSXY ,grid%QSLATXY, & ! Optional Noah-MP grid%FDEPTHXY, grid%RIVERBEDXY, grid%EQZWT, grid%RIVERCONDXY, grid%PEXPXY, & ! Optional Noah-MP diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 78967e24f2..b7fa1ad005 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -145,7 +145,10 @@ wrf_setup_targets( # Re-setup this particular file wrf_setup_files( FILES - ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/MPTABLE.TBL + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/NoahmpTable.TBL + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/snicar_drdt_bst_fit_60_c070416.nc + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/snicar_optics_480bnd_c012422.nc + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/snicar_optics_5bnd_c013122.nc DEST_PATH ${CMAKE_INSTALL_PREFIX}/run/ ) diff --git a/phys/module_physics_init.F b/phys/module_physics_init.F index 7e2ba756cc..8f389999ba 100644 --- a/phys/module_physics_init.F +++ b/phys/module_physics_init.F @@ -144,6 +144,7 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & massconcdust3xy, massconcdust4xy, massconcdust5xy, & + ALBSOILDIRXY, ALBSOILDIFXY, & SMOISEQ ,SMCWTDXY ,RECHXY, DEEPRECHXY, AREAXY, & ! Optional Noah-MP WTDDT , STEPWTD ,QRFSXY ,QSPRINGSXY ,QSLATXY, & ! Optional Noah-MP FDEPTHXY, RIVERBEDXY, EQZWT, RIVERCONDXY, PEXPXY, & ! Optional Noah-MP @@ -569,6 +570,8 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust3xy REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust4xy REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust5xy + REAL, OPTIONAL, DIMENSION(ims:ime,1:2,jms:jme) :: ALBSOILDIRXY + REAL, OPTIONAL, DIMENSION(ims:ime,1:2,jms:jme) :: ALBSOILDIFXY REAL, OPTIONAL, DIMENSION(ims:ime,1:num_soil_layers,jms:jme) :: SMOISEQ REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: SMCWTDXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: DEEPRECHXY @@ -892,6 +895,10 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & INTEGER :: iopt_soil INTEGER :: iopt_alb INTEGER :: iopt_wetland + INTEGER :: SNICAR_SNOWOPTICS_OPT + INTEGER :: SNICAR_DUSTOPTICS_OPT + INTEGER :: SNICAR_SOLARSPEC_OPT + INTEGER :: SNICAR_BANDNUMBER_OPT INTEGER :: aercu_opt !PSH/TWG REAL :: aercu_fct !PSH/TWG @@ -999,6 +1006,10 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & iopt_soil = config_flags%opt_soil iopt_alb = config_flags%opt_alb iopt_wetland = config_flags%opt_wetland + SNICAR_SNOWOPTICS_OPT = config_flags%SNICAR_SNOWOPTICS_OPT + SNICAR_DUSTOPTICS_OPT = config_flags%SNICAR_DUSTOPTICS_OPT + SNICAR_SOLARSPEC_OPT = config_flags%SNICAR_SOLARSPEC_OPT + SNICAR_BANDNUMBER_OPT = config_flags%SNICAR_BANDNUMBER_OPT #if ( EM_CORE == 1 ) obs_twindo_cg=model_config_rec%obs_twindo(1) obs_twindo=config_flags%obs_twindo @@ -1504,8 +1515,11 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & massconcdust3xy, massconcdust4xy, massconcdust5xy, & + ALBSOILDIRXY, ALBSOILDIFXY, & allowed_to_read , iopt_runsub, & iopt_soil, iopt_alb, iopt_wetland, & + SNICAR_SNOWOPTICS_OPT, SNICAR_DUSTOPTICS_OPT, & ! optional SNICAR option + SNICAR_SOLARSPEC_OPT, SNICAR_BANDNUMBER_OPT, & ! optional SNICAR option start_of_simulation , & lakedepth2d, savedtke12d, snowdp2d, h2osno2d, & !lake snl2d, t_grnd2d, t_lake3d, lake_icefrac3d, & !lake @@ -2541,8 +2555,11 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & massconcdust3xy, massconcdust4xy, massconcdust5xy, & + ALBSOILDIRXY, ALBSOILDIFXY, & allowed_to_read, iopt_runsub, & iopt_soil, iopt_alb, iopt_wetland, & + SNICAR_SNOWOPTICS_OPT, SNICAR_DUSTOPTICS_OPT, & ! optional SNICAR option + SNICAR_SOLARSPEC_OPT, SNICAR_BANDNUMBER_OPT, & ! optional SNICAR option start_of_simulation, & lakedepth2d, savedtke12d, snowdp2d, h2osno2d, & !lake snl2d, t_grnd2d, t_lake3d, lake_icefrac3d, & !lake @@ -2734,6 +2751,10 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & INTEGER , INTENT(IN) :: SF_URBAN_PHYSICS INTEGER , INTENT(IN) :: IOPT_RUNSUB INTEGER , INTENT(IN) :: IOPT_SOIL,IOPT_ALB,IOPT_WETLAND + INTEGER , INTENT(IN), OPTIONAL :: SNICAR_SNOWOPTICS_OPT, & + SNICAR_DUSTOPTICS_OPT, & + SNICAR_SOLARSPEC_OPT, & + SNICAR_BANDNUMBER_OPT INTEGER , INTENT(IN) :: itimestep ! INTEGER , INTENT(IN) :: LakeModel @@ -2879,6 +2900,8 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust3xy REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust4xy REAL, OPTIONAL, DIMENSION(ims:ime,-2:0,jms:jme) :: massconcdust5xy + REAL, OPTIONAL, DIMENSION(ims:ime,1:2,jms:jme) :: ALBSOILDIRXY + REAL, OPTIONAL, DIMENSION(ims:ime,1:2,jms:jme) :: ALBSOILDIFXY REAL, OPTIONAL, DIMENSION(ims:ime,1:num_soil_layers,jms:jme) :: SMOISEQ REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: SMCWTDXY REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: DEEPRECHXY @@ -3485,11 +3508,14 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & massconcdust3xy, massconcdust4xy, massconcdust5xy, & + ALBSOILDIRXY, ALBSOILDIFXY, & num_soil_layers, restart, & allowed_to_read, iopt_runsub, iopt_crop, & iopt_irr, iopt_irrm, & sf_urban_physics, iopt_soil, iopt_alb, & iopt_wetland, & + SNICAR_SNOWOPTICS_OPT, SNICAR_DUSTOPTICS_OPT, & ! optional SNICAR option + SNICAR_SOLARSPEC_OPT, SNICAR_BANDNUMBER_OPT, & ! optional SNICAR option ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte & diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index 9a5411941f..18fe5c4efd 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -85,6 +85,7 @@ SUBROUTINE surface_driver( & & ,MassConcBCPHIXY, MassConcBCPHOXY, MassConcOCPHIXY & & ,MassConcOCPHOXY, MassConcDUST1XY, MassConcDUST2XY & & ,MassConcDUST3XY, MassConcDUST4XY, MassConcDUST5XY & + & ,ALBSOILDIRXY, ALBSOILDIFXY & ! Noah-MP irrigation & ,IRFRACT ,SIFRACT ,MIFRACT ,FIFRACT ,IRNUMSI ,IRNUMMI & & ,IRNUMFI ,IRWATSI ,IRWATMI ,IRWATFI ,IRELOSS ,IRSIVOL & @@ -934,6 +935,7 @@ SUBROUTINE surface_driver( & MassConcDUST1XY, MassConcDUST2XY, & MassConcDUST3XY, MassConcDUST4XY, & MassConcDUST5XY + REAL, OPTIONAL, DIMENSION(ims:ime,1:2,jms:jme), INTENT(INOUT) :: ALBSOILDIRXY, ALBSOILDIFXY REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme) , INTENT( OUT) :: eflxbxy,soilenergy, snowenergy REAL, OPTIONAL, DIMENSION(ims:ime , 1:num_soil_layers, jms:jme), INTENT(INOUT) :: acc_etrani @@ -3215,6 +3217,7 @@ SUBROUTINE surface_driver( & MassConcBCPHIXY, MassConcBCPHOXY, MassConcOCPHIXY, & ! SNICAR variable MassConcOCPHOXY, MassConcDUST1XY, MassConcDUST2XY, & ! SNICAR variable MassConcDUST3XY, MassConcDUST4XY, MassConcDUST5XY, & ! SNICAR variable + ALBSOILDIRXY, ALBSOILDIFXY, & ! SNICAR variable #ifdef WRF_HYDRO sfcheadrt,INFXSRT,soldrain,qtiledrain,ZWATBLE2D, & !O #endif diff --git a/run/README.physics_files b/run/README.physics_files index 2975df0505..746ade061f 100644 --- a/run/README.physics_files +++ b/run/README.physics_files @@ -57,10 +57,10 @@ RUC (Option 3): VEGPARM.TBL NoahMP (Option 4): - LANDUSE.TBL - GENPARTM.TBL - MPTABLE.TBL - SOILPARM.TBL + NoahmpTable.TBL + snicar_drdt_bst_fit_60_c070416.nc + snicar_optics_480bnd_c012422.nc + snicar_optics_5bnd_c013122.nc CLM (Option 5): LANDUSE.TBL diff --git a/test/em_real/CMakeLists.txt b/test/em_real/CMakeLists.txt index d68270361a..f11e5baefb 100644 --- a/test/em_real/CMakeLists.txt +++ b/test/em_real/CMakeLists.txt @@ -84,7 +84,10 @@ wrf_setup_files( ${PROJECT_SOURCE_DIR}/run/URBPARM.TBL ${PROJECT_SOURCE_DIR}/run/URBPARM_LCZ.TBL ${PROJECT_SOURCE_DIR}/run/VEGPARM.TBL - ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/MPTABLE.TBL + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/NoahmpTable.TBL + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/snicar_drdt_bst_fit_60_c070416.nc + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/snicar_optics_480bnd_c012422.nc + ${PROJECT_SOURCE_DIR}/phys/noahmp/parameters/snicar_optics_5bnd_c013122.nc ${PROJECT_SOURCE_DIR}/run/tr49t67 ${PROJECT_SOURCE_DIR}/run/tr49t85 ${PROJECT_SOURCE_DIR}/run/tr67t85 From e06a9cd24d3f20c62bc10fbb9b7444021af4912e Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Wed, 7 Jan 2026 19:08:17 -0700 Subject: [PATCH 04/13] sync with noahmp submodule for bug fix --- phys/noahmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/noahmp b/phys/noahmp index 2b301911fc..9618cb773f 160000 --- a/phys/noahmp +++ b/phys/noahmp @@ -1 +1 @@ -Subproject commit 2b301911fcd2aaa577fbf8b176bbc35739c484ff +Subproject commit 9618cb773fc81b64cf793b9659f13555fc0737fc From 0d520192e67161c07ed2a23b140739533406cb52 Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Fri, 16 Jan 2026 14:31:20 -0700 Subject: [PATCH 05/13] move NoahmpIO to local --- Registry/registry.noahmp | 34 +++++++++++++++++----------------- chem/depend.chem | 2 +- chem/module_uoc_dust.F | 3 +-- dyn_em/start_em.F | 6 ++++-- main/depend.common | 7 ++++++- phys/module_physics_init.F | 16 ++++++++++------ phys/module_surface_driver.F | 12 +++++++----- 7 files changed, 46 insertions(+), 34 deletions(-) diff --git a/Registry/registry.noahmp b/Registry/registry.noahmp index 3be28e58b5..b4f7819c4d 100644 --- a/Registry/registry.noahmp +++ b/Registry/registry.noahmp @@ -28,7 +28,7 @@ state real woodxy ij - 1 - i02rhd=(interp_mask_fiel state real stblcpxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "stblcp" "stable carbon pool" "g/m2" state real fastcpxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "fastcp" "short-lived carbon" "g/m2" state real xsaixy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "xsai" "stem area index" "-" -state real taussxy ij - 1 - r "tauss" "non-dimensional snow age" "" +state real taussxy ij - 1 - rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "tauss" "non-dimensional snow age" "" state real t2mvxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "t2v" "2 meter temperature over canopy" "K" state real t2mbxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "t2b" "2 meter temperature over bare ground" "K" state real q2mvxy ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "q2v" "2 meter mixing ratio over canopy" "kg kg-1" @@ -206,7 +206,7 @@ state real acc_ssoil ij - 1 - rd=(interp_mask_land_ state real acc_qinsur ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_qinsur" "accumulated QINSUR between dt_soil" "m/s*dt_soil/dt_noahmp" state real acc_qseva ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_qseva" "accumulated QSEVA between dt_soil" "m/s*dt_soil/dt_noahmp" state real acc_etrani ilj - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_etrani" "accumulated ETRANI between dt_soil" "m/s*dt_soil/dt_noahmp" -state real aceflxb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aceflxb " "accumulated bottom soil heat flux" "kJ/m2" +state real aceflxb ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aceflxb " "accumulated bottom soil heat flux" "kJ/m2" state real eflxbxy ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "eflxbxy " "bottom soil heat flux" "W/m2" state real acc_dwaterxy ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_dwater" "accumulated canopy,snow,soil water change between dt_soil" "mm" state real acc_prcpxy ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_prcp" "accumulated precipitation between dt_soil" "mm" @@ -247,29 +247,29 @@ state real croptype i{crop}j - 1 Z i012rd=(interp_mask_fiel state real planting ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "planting" "planting date" "julian day" state real harvest ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "harvest" "harvest date" "julian day" state real season_gdd ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "season_gdd" "growing season GDD" "C" -state integer cropcat ij - 1 - r "cropcat" "dominant crop category" "category" -state integer pgsxy ij - 1 - r "pgs" "pgs" "" +state integer cropcat ij - 1 - rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "cropcat" "dominant crop category" "category" +state integer pgsxy ij - 1 - rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "pgs" "pgs" "" # Gecros crop model only -state real gecros_state i{gecros}j - 1 Z rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "gecros" "gecros state array" "-" +state real gecros_state i{gecros}j - 1 Z rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "gecros" "gecros state array" "-" # NoahMP tile drainage state real TD_FRACTION ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "TD_FRACTION" "Tile drainage fraction" "" -state real QTDRAIN ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "QTDRAIN" "Accumulated tile drainage flux" "mm" +state real QTDRAIN ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "QTDRAIN" "Accumulated tile drainage flux" "mm" #Noah-MP Irrigation state real IRFRACT ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRFRACT" "Irrigation fraction" "" state real SIFRACT ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "SIFRACT" "Sprinkler Irrigation fraction" "" state real MIFRACT ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "MIFRACT" "Micro Irrigation fraction" "" state real FIFRACT ij - 1 - i012rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "FIFRACT" "Flood Irrigation fraction" "" -state integer IRNUMSI ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMSI" "Sprinkler Irrigation Event Count" "" -state integer IRNUMMI ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMMI" "Micro Irrigation Event Count" "" -state integer IRNUMFI ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMFI" "Flood Irrigation Event Count" "" -state real IRWATSI ij - 1 - rh "IRWATSI" "Sprinkler Irrigation Amount for the Event" "m" -state real IRWATMI ij - 1 - rh "IRWATMI" "Micro Irrigation Amount for the Event" "m" -state real IRWATFI ij - 1 - rh "IRWATFI" "Flood Irrigation Amount for the Event" "m" -state real IRSIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRSIVOL" "Sprinkler Irrigation Water Accumulated" "mm" -state real IRMIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRMIVOL" "Micro Irrigation Water Accumulated" "mm" -state real IRFIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRFIVOL" "Flood Irrigation Water Accumulated" "mm" -state real IRELOSS ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRELOSS" "Sprinkler Evaporation Loss Accumulated" "mm" -state real IRRSPLH ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRRSPLH" "Sprinkler Evaporation Loss Accumulated" "Joules m^-2" +state integer IRNUMSI ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMSI" "Sprinkler Irrigation Event Count" "" +state integer IRNUMMI ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMMI" "Micro Irrigation Event Count" "" +state integer IRNUMFI ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRNUMFI" "Flood Irrigation Event Count" "" +state real IRWATSI ij - 1 - rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRWATSI" "Sprinkler Irrigation Amount for the Event" "m" +state real IRWATMI ij - 1 - rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRWATMI" "Micro Irrigation Amount for the Event" "m" +state real IRWATFI ij - 1 - rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRWATFI" "Flood Irrigation Amount for the Event" "m" +state real IRSIVOL ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRSIVOL" "Sprinkler Irrigation Water Accumulated" "mm" +state real IRMIVOL ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRMIVOL" "Micro Irrigation Water Accumulated" "mm" +state real IRFIVOL ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRFIVOL" "Flood Irrigation Water Accumulated" "mm" +state real IRELOSS ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRELOSS" "Sprinkler Evaporation Loss Accumulated" "mm" +state real IRRSPLH ij - 1 - i02rd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRRSPLH" "Sprinkler Evaporation Loss Accumulated" "Joules m^-2" diff --git a/chem/depend.chem b/chem/depend.chem index faf92c4143..d7dcbaed18 100644 --- a/chem/depend.chem +++ b/chem/depend.chem @@ -55,7 +55,7 @@ module_gocart_dust.o: ../phys/module_data_gocart_dust.o module_gocart_dust_afwa.o: ../phys/module_data_gocart_dust.o module_data_sorgam.o -module_uoc_dust.o: module_qf03.o module_soilpsd.o ../phys/module_sf_noahlsm.o ../phys/noahmp/drivers/wrf/NoahmpIOVarType.o ../phys/module_sf_ruclsm.o +module_uoc_dust.o: module_qf03.o module_soilpsd.o ../phys/module_sf_noahlsm.o ../phys/module_sf_ruclsm.o module_uoc_dustwd.o: module_data_uoc_wd.o diff --git a/chem/module_uoc_dust.F b/chem/module_uoc_dust.F index 32a662c4de..e8961e40eb 100644 --- a/chem/module_uoc_dust.F +++ b/chem/module_uoc_dust.F @@ -16,7 +16,6 @@ MODULE uoc_dust USE qf03 USE module_soilpsd USE module_sf_noahlsm, ONLY:DRYSMC - USE NoahmpIOVarType USE module_sf_ruclsm, ONLY:DRYSMC_ruc => DRYSMC CONTAINS @@ -216,7 +215,7 @@ subroutine uoc_dust_driver(dt,config_flags, & if ( config_flags%sf_surface_physics .eq. 3 ) then DRYSMC = DRYSMC_ruc elseif ( config_flags%sf_surface_physics .eq. 4 ) then - DRYSMC = NoahmpIO%SMCDRY_TABLE + DRYSMC = DRYSMC elseif ( config_flags%sf_surface_physics .eq. 1 .or. & & config_flags%sf_surface_physics .eq. 5 .or. & & config_flags%sf_surface_physics .eq. 7 .or. & diff --git a/dyn_em/start_em.F b/dyn_em/start_em.F index 1584a968be..9a56e111d6 100644 --- a/dyn_em/start_em.F +++ b/dyn_em/start_em.F @@ -46,6 +46,7 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & USE module_diag_zld, ONLY : zld USE module_trad_fields, ONLY : trad_fields + USE NoahmpIOVarType !!debug !USE module_compute_geop @@ -96,6 +97,7 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & REAL :: spongeweight LOGICAL :: first_trip_for_this_domain, start_of_simulation, fill_w_flag LOGICAL, EXTERNAL :: wrf_dm_on_monitor + type(NoahmpIO_type) :: NoahmpIO #if (WRF_CHEM != 1) REAL,ALLOCATABLE,DIMENSION(:,:,:) :: cldfra_old @@ -1278,13 +1280,13 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & ,grid%NC_CU, grid%NI_CU, grid%NR_CU, grid%NS_CU,grid%CCN_CU & ,grid%alevsiz_cu,grid%num_months,grid%no_src_types_cu,grid%aeromcu & ,grid%aeropcu,grid%EFCG,grid%EFCS,grid%EFIG,grid%EFIS,grid%EFSG,grid%EFSS & - ) + ,NoahmpIO) ENDDO ! loop of tiles for phy_init if(.not.grid%restart) then if(config_flags%sf_surface_physics .eq. NOAHMPSCHEME .and. config_flags%opt_runsub .eq. 5) then - call NoahmpGroundwaterInitMain ( grid , & + call NoahmpGroundwaterInitMain (NoahmpIO, grid , & config_flags%num_soil_layers, grid%dzs, grid%isltyp, grid%ivgtyp, config_flags%wtddt , & grid%fdepthxy , grid%ht , grid%riverbedxy, grid%eqzwt , & grid%rivercondxy, grid%pexpxy , grid%areaxy , grid%zwtxy , & diff --git a/main/depend.common b/main/depend.common index e885c47c38..66c06de32a 100644 --- a/main/depend.common +++ b/main/depend.common @@ -1141,6 +1141,9 @@ module_sf_noahlsm_glacial_only.o: \ noahmp/drivers/wrf/NoahmpWRFmainMod.o: \ noahmp/drivers/wrf/NoahmpIOVarType.o \ noahmp/drivers/wrf/NoahmpDriverMainMod.o \ + noahmp/drivers/wrf/NoahmpIOVarInitMod.o \ + noahmp/drivers/wrf/NoahmpReadTableMod.o \ + noahmp/src/SnowInputSnicarMod.o \ module_sf_urban.o @@ -1209,7 +1212,8 @@ noahmp/drivers/wrf/NoahmpReadTableMod.o: \ noahmp/drivers/wrf/PedoTransferSR2006Mod.o: \ noahmp/utility/Machine.o \ - noahmp/drivers/wrf/NoahmpIOVarType.o + noahmp/drivers/wrf/NoahmpIOVarType.o \ + noahmp/src/NoahmpVarType.o noahmp/drivers/wrf/ConfigVarOutTransferMod.o: \ @@ -4272,6 +4276,7 @@ start_em.o : \ ../phys/module_firebrand_spotting.o \ ../phys/module_fr_fire_driver_wrf.o \ ../phys/module_lightning_driver.o \ + ../phys/noahmp/drivers/wrf/NoahmpIOVarType.o \ ../share/module_llxy.o \ ../share/module_model_constants.o \ ../phys/module_physics_init.o \ diff --git a/phys/module_physics_init.F b/phys/module_physics_init.F index 8f389999ba..770d4f1291 100644 --- a/phys/module_physics_init.F +++ b/phys/module_physics_init.F @@ -278,7 +278,7 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & ,alevsiz_cu,num_months,no_src_types_cu,aeromcu,aeropcu & ! PSH/TWG 06/10/16 ,EFCG,EFCS,EFIG,EFIS,EFSG,EFSS & ! TWG #endif - ) + ,NoahmpIO ) !----------------------------------------------------------------- USE module_domain @@ -290,6 +290,8 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & #endif USE module_wind_fitch USE module_wind_mav ! Yulong add for WLM + USE NoahmpIOVarType + IMPLICIT NONE !----------------------------------------------------------------- TYPE (grid_config_rec_type) :: config_flags @@ -328,6 +330,7 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & INTENT(INOUT) :: OZMIXM REAL, DIMENSION( ims:ime, alevsiz, jms:jme, n_ozmixm-1, no_src_types ), OPTIONAL, & INTENT(INOUT) :: aerodm + type(NoahmpIO_type), OPTIONAL, intent(inout) :: NoahmpIO #if ( EM_CORE == 1 ) !PSH/TWG 06/10/16 @@ -1515,7 +1518,7 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & massconcdust3xy, massconcdust4xy, massconcdust5xy, & - ALBSOILDIRXY, ALBSOILDIFXY, & + ALBSOILDIRXY, ALBSOILDIFXY, NoahmpIO, & allowed_to_read , iopt_runsub, & iopt_soil, iopt_alb, iopt_wetland, & SNICAR_SNOWOPTICS_OPT, SNICAR_DUSTOPTICS_OPT, & ! optional SNICAR option @@ -2555,7 +2558,7 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & dust2xy, dust3xy, dust4xy, dust5xy, massconcbcphixy, massconcbcphoxy,& massconcocphixy, massconcocphoxy, massconcdust1xy, massconcdust2xy, & massconcdust3xy, massconcdust4xy, massconcdust5xy, & - ALBSOILDIRXY, ALBSOILDIFXY, & + ALBSOILDIRXY, ALBSOILDIFXY, NoahmpIO, & allowed_to_read, iopt_runsub, & iopt_soil, iopt_alb, iopt_wetland, & SNICAR_SNOWOPTICS_OPT, SNICAR_DUSTOPTICS_OPT, & ! optional SNICAR option @@ -2938,6 +2941,8 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & INTEGER, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: IRNUMFI ! tile drainage REAL, OPTIONAL, DIMENSION(ims:ime,jms:jme) :: qtdrain +! new NoahmpIO variables + type(NoahmpIO_type), OPTIONAL, intent(inout) :: NoahmpIO !URBAN ! REAL, DIMENSION(1:num_roof_layers), INTENT(INOUT) :: DZR !Optional urban @@ -3491,7 +3496,7 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & CALL wrf_error_fatal ( 'NoahMP does not work with NLCD data. Stop.' ) ENDIF - CALL NoahmpWRFinit(MMINLU, SNOW,SNOWH,CANWAT,ISLTYP,IVGTYP,XLAT, & + CALL NoahmpWRFinit(NoahmpIO, MMINLU, SNOW,SNOWH,CANWAT,ISLTYP,IVGTYP,XLAT, & TSLB,SMOIS,SH2O,DZS, FNDSOILW, FNDSNOWH, & TSK,isnowxy ,tvxy ,tgxy ,canicexy ,TMN,XICE, & canliqxy ,eahxy ,tahxy ,cmxy ,chxy , & @@ -3523,8 +3528,7 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & ,smoiseq ,smcwtdxy ,rechxy ,deeprechxy, qtdrain, areaxy ,dx, dy, msftx, msfty,& wtddt ,stepwtd ,dt ,qrfsxy ,qspringsxy ,qslatxy, & fdepthxy ,ht ,riverbedxy ,eqzwt ,rivercondxy ,pexpxy, & - rechclim, & - gecros_state & ! Optional gecros crop + rechclim & #endif ) diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index 18fe5c4efd..bf6b6a413c 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -1291,6 +1291,9 @@ SUBROUTINE surface_driver( & REAL :: tconst,tprior,tnew,yrday,deltat REAL :: SWSAVE REAL, DIMENSION( ims:ime, jms:jme ) :: GSWSAVE +! new NoahmpIO variables + type(NoahmpIO_type) :: NoahmpIO + !------------------------------------------------- ! urban related variables are added to declaration !------------------------------------------------- @@ -3159,7 +3162,7 @@ SUBROUTINE surface_driver( & if(HYDRO_dt .ge. 0) HYDRO_dt = dtbl #endif CALL wrf_debug(100,'in NOAHMP DRV') - CALL NoahmpWRFmain(ITIMESTEP, YR, JULIAN_IN, COSZEN, XLAT,XLONG, & + CALL NoahmpWRFmain(NoahmpIO,ITIMESTEP,YR,JULIAN_IN,COSZEN,XLAT,XLONG, & DZ8W, DTBL, DZS, NUM_SOIL_LAYERS, DX, & IVGTYP, ISLTYP, VEGFRA, SHDMAX, TMN, & XLAND, XICE, XICE_THRESHOLD, CROPCAT, & @@ -3188,7 +3191,6 @@ SUBROUTINE surface_driver( & ZSNSOXY, SNICEXY, SNLIQXY, LFMASSXY, RTMASSXY, STMASSXY, & WOODXY, STBLCPXY, FASTCPXY, LAI, XSAIXY, TAUSSXY, & SMOISEQ, SMCWTDXY,DEEPRECHXY, RECHXY, GRAINXY, GDDXY,PGSXY, & ! IN/OUT Noah MP only - GECROS_STATE, & ! IN/OUT gecros model QTDRAIN, TD_FRACTION, & ! IN/OUT tile drainage T2MVXY, T2MBXY, Q2MVXY, Q2MBXY, & TRADXY, NEEXY, GPPXY, NPPXY, FVEGXY, RUNSFXY, & @@ -3230,7 +3232,7 @@ SUBROUTINE surface_driver( & IF(SF_URBAN_PHYSICS > 0 ) THEN !urban - call noahmp_urban (sf_urban_physics, NUM_SOIL_LAYERS, IVGTYP,ITIMESTEP, & ! IN : Model configuration + call noahmp_urban (NoahmpIO, sf_urban_physics,NUM_SOIL_LAYERS,IVGTYP,ITIMESTEP, & ! IN : Model configuration DTBL, COSZEN, XLAT_URB2D, & ! IN : Time/Space-related T_PHY, QV_CURR, U_PHY, V_PHY, SWDOWN, & ! IN : Forcing SWDDIR, SWDDIF, & @@ -3293,7 +3295,7 @@ SUBROUTINE surface_driver( & !gmm update wtable from lateral flow and shed water to rivers - CALL WTABLE_mmf_noahmp(num_soil_layers,xland,xice, xice_threshold, isice, & + CALL WTABLE_mmf_noahmp(NoahmpIO,num_soil_layers,xland,xice, xice_threshold, isice, & isltyp,smoiseq,dzs,wtddt, & fdepthxy,areaxy,ht,isurban,ivgtyp, & rivercondxy,riverbedxy,eqzwt,pexpxy, & @@ -3488,7 +3490,7 @@ SUBROUTINE surface_driver( & !------------------------------------------------------------------ ELSE - CALL wrf_error_fatal('Lacking arguments for NOAHMPLSM in surface driver') + CALL wrf_error_fatal('Lacking arguments for NoahmpWRFmain in surface driver') ENDIF CASE (RUCLSMSCHEME) From c40822aa132ca5360fc9bf2dada709e3e9ca49c1 Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Fri, 16 Jan 2026 14:33:11 -0700 Subject: [PATCH 06/13] link with noahmp github for bug fix --- phys/noahmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/noahmp b/phys/noahmp index 9618cb773f..9be98539b4 160000 --- a/phys/noahmp +++ b/phys/noahmp @@ -1 +1 @@ -Subproject commit 9618cb773fc81b64cf793b9659f13555fc0737fc +Subproject commit 9be98539b441068c8a47fb22d085542d3d0f0274 From 4c676bc997dd1b8a059fdb11f18130279f2e5017 Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Mon, 19 Jan 2026 08:57:13 -0700 Subject: [PATCH 07/13] update noahmp link for openMP bug fix --- phys/noahmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/noahmp b/phys/noahmp index 9be98539b4..694613a39a 160000 --- a/phys/noahmp +++ b/phys/noahmp @@ -1 +1 @@ -Subproject commit 9be98539b441068c8a47fb22d085542d3d0f0274 +Subproject commit 694613a39a8776c7501183a3e0801acb4068b6cd From 1bf4f5a8e474cf94d18d049942fad5569c4fedf6 Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Mon, 19 Jan 2026 09:00:48 -0700 Subject: [PATCH 08/13] bug fix for openMP WRF files --- dyn_em/start_em.F | 7 +++-- main/depend.common | 2 +- phys/module_physics_init.F | 4 +-- phys/module_surface_driver.F | 50 ++++++++++++++++++------------------ 4 files changed, 31 insertions(+), 32 deletions(-) diff --git a/dyn_em/start_em.F b/dyn_em/start_em.F index 9a56e111d6..2d49293e26 100644 --- a/dyn_em/start_em.F +++ b/dyn_em/start_em.F @@ -46,7 +46,7 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & USE module_diag_zld, ONLY : zld USE module_trad_fields, ONLY : trad_fields - USE NoahmpIOVarType + USE NoahmpIOVarType, only : NoahmpIOdom !!debug !USE module_compute_geop @@ -97,7 +97,6 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & REAL :: spongeweight LOGICAL :: first_trip_for_this_domain, start_of_simulation, fill_w_flag LOGICAL, EXTERNAL :: wrf_dm_on_monitor - type(NoahmpIO_type) :: NoahmpIO #if (WRF_CHEM != 1) REAL,ALLOCATABLE,DIMENSION(:,:,:) :: cldfra_old @@ -1280,13 +1279,13 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & ,grid%NC_CU, grid%NI_CU, grid%NR_CU, grid%NS_CU,grid%CCN_CU & ,grid%alevsiz_cu,grid%num_months,grid%no_src_types_cu,grid%aeromcu & ,grid%aeropcu,grid%EFCG,grid%EFCS,grid%EFIG,grid%EFIS,grid%EFSG,grid%EFSS & - ,NoahmpIO) + ,NoahmpIOdom(grid%id)) ENDDO ! loop of tiles for phy_init if(.not.grid%restart) then if(config_flags%sf_surface_physics .eq. NOAHMPSCHEME .and. config_flags%opt_runsub .eq. 5) then - call NoahmpGroundwaterInitMain (NoahmpIO, grid , & + call NoahmpGroundwaterInitMain (NoahmpIOdom(grid%id), grid , & config_flags%num_soil_layers, grid%dzs, grid%isltyp, grid%ivgtyp, config_flags%wtddt , & grid%fdepthxy , grid%ht , grid%riverbedxy, grid%eqzwt , & grid%rivercondxy, grid%pexpxy , grid%areaxy , grid%zwtxy , & diff --git a/main/depend.common b/main/depend.common index 66c06de32a..d613485e37 100644 --- a/main/depend.common +++ b/main/depend.common @@ -4066,7 +4066,7 @@ module_first_rk_step_part1.o: \ ../phys/module_pbl_driver.o \ ../phys/module_radiation_driver.o \ ../phys/module_shallowcu_driver.o \ - ../phys/module_surface_driver.o + ../phys/module_surface_driver.o module_first_rk_step_part2.o: \ diff --git a/phys/module_physics_init.F b/phys/module_physics_init.F index 770d4f1291..16f66b50a0 100644 --- a/phys/module_physics_init.F +++ b/phys/module_physics_init.F @@ -290,7 +290,7 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & #endif USE module_wind_fitch USE module_wind_mav ! Yulong add for WLM - USE NoahmpIOVarType + USE NoahmpIOVarType, only : NoahmpIO_type IMPLICIT NONE !----------------------------------------------------------------- @@ -2702,7 +2702,7 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & USE module_sf_noahdrv USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 USE NoahmpWRFinitMod - USE NoahmpIOVarType + USE NoahmpIOVarType, only : NoahmpIO_type #ifdef WRF_USE_CLM USE module_sf_clm, only : clminit #endif diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index bf6b6a413c..231bf56aa9 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -91,7 +91,7 @@ SUBROUTINE surface_driver( & & ,IRNUMFI ,IRWATSI ,IRWATMI ,IRWATFI ,IRELOSS ,IRSIVOL & & ,IRMIVOL ,IRFIVOL ,IRRSPLH & ! Noah-MP tile drainage - & ,QTDRAIN ,TD_FRACTION & + & ,QTDRAIN ,TD_FRACTION & ! Noah-MP ground water & ,smcwtdxy ,rechxy ,deeprechxy,fdepthxy,areaxy ,rivercondxy, riverbedxy & & ,eqzwt ,pexpxy ,qrfxy ,qspringxy,qslatxy ,qrfsxy, qlatxy, qspringsxy & @@ -377,7 +377,7 @@ SUBROUTINE surface_driver( & USE module_sf_gfs USE module_sf_noahdrv ! danli mosaic, the " ,only : lsm " needs to be deleted USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 - USE NoahmpIOVarType + USE NoahmpIOVarType, only : NoahmpIOdom USE NoahmpWRFmainMod USE NoahmpUrbanDriverMainMod, only : noahmp_urban USE GroundWaterMmfMod @@ -1291,8 +1291,6 @@ SUBROUTINE surface_driver( & REAL :: tconst,tprior,tnew,yrday,deltat REAL :: SWSAVE REAL, DIMENSION( ims:ime, jms:jme ) :: GSWSAVE -! new NoahmpIO variables - type(NoahmpIO_type) :: NoahmpIO !------------------------------------------------- ! urban related variables are added to declaration @@ -3162,7 +3160,8 @@ SUBROUTINE surface_driver( & if(HYDRO_dt .ge. 0) HYDRO_dt = dtbl #endif CALL wrf_debug(100,'in NOAHMP DRV') - CALL NoahmpWRFmain(NoahmpIO,ITIMESTEP,YR,JULIAN_IN,COSZEN,XLAT,XLONG, & +!$omp critical (noahmp_driver) + CALL NoahmpWRFmain(NoahmpIOdom(inest),ITIMESTEP,YR,JULIAN_IN,COSZEN,XLAT,XLONG, & DZ8W, DTBL, DZS, NUM_SOIL_LAYERS, DX, & IVGTYP, ISLTYP, VEGFRA, SHDMAX, TMN, & XLAND, XICE, XICE_THRESHOLD, CROPCAT, & @@ -3229,10 +3228,11 @@ SUBROUTINE surface_driver( & ! variables below are optional MP_RAINC = RAINCV, MP_RAINNC = RAINNCV, MP_SHCV = RAINSHV,& MP_SNOW = SNOWNCV, MP_GRAUP = GRAUPELNCV, MP_HAIL = HAILNCV ) +!$omp end critical (noahmp_driver) IF(SF_URBAN_PHYSICS > 0 ) THEN !urban - call noahmp_urban (NoahmpIO, sf_urban_physics,NUM_SOIL_LAYERS,IVGTYP,ITIMESTEP, & ! IN : Model configuration + call noahmp_urban (NoahmpIOdom(inest), sf_urban_physics,NUM_SOIL_LAYERS,IVGTYP,ITIMESTEP, & ! IN : Model configuration DTBL, COSZEN, XLAT_URB2D, & ! IN : Time/Space-related T_PHY, QV_CURR, U_PHY, V_PHY, SWDOWN, & ! IN : Forcing SWDDIR, SWDDIF, & @@ -3295,7 +3295,7 @@ SUBROUTINE surface_driver( & !gmm update wtable from lateral flow and shed water to rivers - CALL WTABLE_mmf_noahmp(NoahmpIO,num_soil_layers,xland,xice, xice_threshold, isice, & + CALL WTABLE_mmf_noahmp(NoahmpIOdom(inest),num_soil_layers,xland,xice, xice_threshold, isice, & isltyp,smoiseq,dzs,wtddt, & fdepthxy,areaxy,ht,isurban,ivgtyp, & rivercondxy,riverbedxy,eqzwt,pexpxy, & @@ -3404,12 +3404,12 @@ SUBROUTINE surface_driver( & ENDIF TH2(I,J) = T2(I,J)*(1.E5/PSFC(I,J))**RCP ! ELSEIF (IVGTYP(I,J) == ISURBAN .OR. IVGTYP(I,J) == ISICE .OR. FVEGXY(I,J) == 0.0 ) THEN - ELSEIF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIO%LCZ_1_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_3_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_5_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_7_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_9_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_11_TABLE .or. & + ELSEIF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_1_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_3_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_5_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_7_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_9_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_11_TABLE .or. & (IVGTYP(I,J) == ISICE .AND. XICE(I,J) .LT. XICE_THRESHOLD)) THEN Q2(I,J) = Q2MBXY(I,J) @@ -3434,12 +3434,12 @@ SUBROUTINE surface_driver( & IF(SF_URBAN_PHYSICS.eq.1) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIO%LCZ_1_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_3_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_5_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_7_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_9_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_11_TABLE) THEN + IF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_1_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_3_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_5_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_7_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_9_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_11_TABLE) THEN Q2(I,J) = (FVEGXY(I,J)*Q2MVXY(I,J) + (1.-FVEGXY(I,J))*Q2MBXY(I,J))*(1.-FRC_URB2D(I,J)) + & Q2_URB2D(I,J)*FRC_URB2D(I,J) @@ -3461,12 +3461,12 @@ SUBROUTINE surface_driver( & IF((SF_URBAN_PHYSICS.eq.2).OR.(SF_URBAN_PHYSICS.eq.3)) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIO%LCZ_1_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_3_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_5_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_7_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_9_TABLE .or. & - IVGTYP(I,J) == NoahmpIO%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIO%LCZ_11_TABLE) THEN + IF (IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_1_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_2_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_3_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_4_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_5_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_6_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_7_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_8_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_9_TABLE .or. & + IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_10_TABLE .or. IVGTYP(I,J) == NoahmpIOdom(inest)%LCZ_11_TABLE) THEN T2(I,J) = TH_PHY(i,1,j)/((1.E5/PSFC(I,J))**RCP) !urban TH2(I,J) = TH_PHY(i,1,j) !urban From 1957ed724b3ede4b5d9d2e1e5e68ca1fb9059bd4 Mon Sep 17 00:00:00 2001 From: Massimo D'isidoro <49653612+massimodisidoro@users.noreply.github.com> Date: Sat, 31 Jan 2026 02:37:49 +0100 Subject: [PATCH 09/13] Fix mismatch between Timeserie write FMT and actual variable list in WRITE statement (#2265) TYPE: bug fix KEYWORDS: time series, TS, format, write, wrf solar, solar_diagnostics SOURCE: Massimo D'Isidoro (ENEA - Italian National Agency for New Technologies, Energy and Sustainable Economic Development) DESCRIPTION OF CHANGES: Problem: When solar diagnostics is activated in namelist.input, the WRF time series output WRITE statement lists 55 variables but the Fortran FMT only specifies 54 fields. This causes the last variable (ts_swddnic2) to be written in a separate record in the output files *.TS , leading to inconsistent time series data. Solution: The WRITE statement FMT has been corrected to match all 55 variables, ensuring that they are written on the same record in the TS file. ISSUE: This fixes part of issue #2255 LIST OF MODIFIED FILES: M share/wrf_timeseries.F TESTS CONDUCTED: 1. A WRF run with solar_diagnostics activated, compared to previous version to confirm the fix. 2. The regression tests have passed. RELEASE NOTE: Corrected a bug in the WRF time series output, when solar_diagnostics is activated, where the last variable (ts_swddnic2) was written in a separate record. TS files now correctly includes all the 55 variables on the same record. --- share/wrf_timeseries.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/wrf_timeseries.F b/share/wrf_timeseries.F index 53ccb27d1f..3aa9f77317 100644 --- a/share/wrf_timeseries.F +++ b/share/wrf_timeseries.F @@ -907,7 +907,7 @@ SUBROUTINE write_ts( grid ) grid%ts_clw(n,i) ELSE !!! WRF-Solar diagnostics - WRITE(UNIT=iunit,FMT='(i2,f13.6,i5,i5,i5,1x,49(f13.5,1x))') & + WRITE(UNIT=iunit,FMT='(i2,f13.6,i5,i5,i5,1x,50(f13.5,1x))') & grid%id, grid%ts_hour(n,i), & grid%id_tsloc(i), ix, iy, & grid%ts_t(n,i), & From f15568ccc1447780e3bd664b9f0196edd784bf33 Mon Sep 17 00:00:00 2001 From: Yuxuan Xie <77427610+cug-xyx@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:16:19 +0800 Subject: [PATCH 10/13] Fix typo in comment (#2280) TYPE: text only KEYWORDS: WRF, diagnostics, WetBulbTemp, unit label, dewpoint, documentation SOURCE: Yuxuan Xie (IGSNRR, CAS) DESCRIPTION OF CHANGES: Problem: The WetBulbTemp utility variable tdC was documented with the wrong unit (K) in a comment, inconsistent with its Celsius usage. Solution: Update the unit in the comment to C in phys/module_diag_functions.F. LIST OF MODIFIED FILES: M phys/module_diag_functions.F RELEASE NOTE: Corrected the WetBulbTemp dewpoint temperature unit label to Celsius in comments. --- phys/module_diag_functions.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/module_diag_functions.F b/phys/module_diag_functions.F index 0466dff45f..9fc9de5b3e 100644 --- a/phys/module_diag_functions.F +++ b/phys/module_diag_functions.F @@ -1166,7 +1166,7 @@ FUNCTION WetBulbTemp ( p, tK, rh) result( wbt ) ! ----------------- real :: tdK !~ Dewpoint temperature ( K ) real :: tC !~ Temperature ( C ) - real :: tdC !~ Dewpoint temperature ( K ) + real :: tdC !~ Dewpoint temperature ( C ) real :: svapr !~ Saturation vapor pressure ( Pa ) real :: vapr !~ Ambient vapor pressure ( Pa ) real :: gamma !~ Dummy term From e64287c8370afeaa07ecb4fc3bbd3dfb717a2ec2 Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Fri, 13 Feb 2026 10:26:16 -0700 Subject: [PATCH 11/13] update noahmp to v5.2.0 branch --- phys/noahmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/noahmp b/phys/noahmp index 694613a39a..5da0b241e4 160000 --- a/phys/noahmp +++ b/phys/noahmp @@ -1 +1 @@ -Subproject commit 694613a39a8776c7501183a3e0801acb4068b6cd +Subproject commit 5da0b241e48ecfd9a2a1bd667ed554765856d589 From 0631b753826b0dada0c93a2a1abfcd9d086c973b Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Fri, 13 Feb 2026 12:11:27 -0700 Subject: [PATCH 12/13] bug fix for Makefile for mp_tempo scheme not NoahMP related --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index aec8b5c399..48661581f5 100644 --- a/Makefile +++ b/Makefile @@ -147,6 +147,7 @@ wrf : framework_only echo " " ; \ echo "------------------------------------------------------------------------------" ; \ echo "Error Error Error TEMPO submodule files not populating WRF directories" ; \ + fi @if [ \( ! -f phys/module_sf_mynnsfc_driver.F \) -o \ \( ! -f phys/module_sf_mynnsfc_land.F \) -o \ \( ! -f phys/module_sf_mynnsfc_water.F \) -o \ From f3053135afca1c3002f2ab7142bd14534756d74b Mon Sep 17 00:00:00 2001 From: cenlinhe Date: Fri, 13 Feb 2026 12:15:57 -0700 Subject: [PATCH 13/13] bug fix in Makefile for mp_tempo scheme not NoahMP related --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 48661581f5..6de91e2cef 100644 --- a/Makefile +++ b/Makefile @@ -147,7 +147,7 @@ wrf : framework_only echo " " ; \ echo "------------------------------------------------------------------------------" ; \ echo "Error Error Error TEMPO submodule files not populating WRF directories" ; \ - fi + fi @if [ \( ! -f phys/module_sf_mynnsfc_driver.F \) -o \ \( ! -f phys/module_sf_mynnsfc_land.F \) -o \ \( ! -f phys/module_sf_mynnsfc_water.F \) -o \