diff --git a/Registry/Registry.EM_COMMON b/Registry/Registry.EM_COMMON index 37ef5e1f93..d5ef0265ef 100644 --- a/Registry/Registry.EM_COMMON +++ b/Registry/Registry.EM_COMMON @@ -763,6 +763,7 @@ state integer IFNDSOILW - misc 1 - i "F state integer IFNDALBSI - misc 1 - ir "FNDALBSI" "ALBSI_LOGICAL" state integer IFNDSNOWSI - misc 1 - ir "FNDSNOWSI" "SNOWSI_LOGICAL" state integer IFNDICEDEPTH - misc 1 - ir "FNDICEDEPTH" "ICEDEPTH_LOGICAL" +state real XLAIDYN ij misc 1 - - "XLAIDYN" "Noah Dynamic LEAF AREA INDEX" "m-2/m-2" # SKIN SST state real SSTSK ij misc 1 - rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "SSTSK" "SKIN SEA SURFACE TEMPERATURE" "K" state real lake_depth ij misc 1 - i012rd=(interp_mask_water_field:lu_index,islake) "lake_depth" "lake depth" "m" @@ -883,7 +884,7 @@ state real ALSWNIRDIR ij misc 1 Z r "A state real ALSWNIRDIF ij misc 1 Z r "ALSWNIRDIF" "ALB NIR DIF component" "" -# Additional for P-X PBL and LSM +# From P-X PBL and LSM; RS (RC) and RA also from Noah and NoahMP state real RA ij misc 1 - r "RA" "AERODYNAMIC RESISTANCE" "s m-1" state real RS ij misc 1 - r "RS" "SURFACE RESISTANCE" "s m-1" state real LAI ij misc 1 - i0124rh "LAI" "LEAF AREA INDEX" "m-2/m-2" @@ -898,7 +899,7 @@ i1 real PSIM ij misc 1 - - "PSIM i1 real PSIH ij misc 1 - - "PSIH" "SIMILARITY FUNCTION FOR HEAT" "" state real FM ij misc 1 - - "FM" "INTEGRATED FUNCTION FOR MOMENTUM" "" state real FH ij misc 1 - - "FH" "INTEGRATED FUNCTION FOR HEAT" "" -i1 real WSPD ij misc 1 - - "WSPD" "Wind speed" "m s-1" +state real WSPD ij misc 1 - - "WSPD" "Wind Speed At Lowest Model Level (may contain vconv)" "m s-1" i1 real GZ1OZ0 ij misc 1 - - "GZ1OZ0" "LOG OF Z1 over Z0" "" state real BR ij misc 1 - - "BR" "Bulk Richardson" "" state real ZOL ij misc 1 - - "ZOL" "z/L" "" @@ -1561,7 +1562,8 @@ state real EMISS_mosaic i{mocat}j misc 1 - r state real EMBCK_mosaic i{mocat}j misc 1 - r "EMBCK_mosaic" "background emissivity" "" state real ZNT_mosaic i{mocat}j misc 1 - r "ZNT_mosaic" "time_varying roughness length" "m" state real Z0_mosaic i{mocat}j misc 1 - r "Z0_mosaic" "background roughness length" "m" - +state real LAI_mosaic i{mocat}j misc 1 - r "LAI_mosaic" "LEAF AREA INDEX" "m-2/m-2" +state real RS_mosaic i{mocat}j misc 1 - r "RS_mosaic" "CANOPY RESISTANCE" "s m-1" state real HFX_mosaic i{mocat}j misc 1 - r "HFX_mosaic" "UPWARD HEAT FLUX AT THE SURFACE" "W m-2" state real QFX_mosaic i{mocat}j misc 1 - r "QFX_mosaic" "UPWARD MOISTURE FLUX AT THE SURFACE" "kg m-2 s-1" state real LH_mosaic i{mocat}j misc 1 - r "LH_mosaic" "LATENT HEAT FLUX AT THE SURFACE" "W m-2" @@ -2640,14 +2642,14 @@ package bepscheme sf_urban_physics==2 - state:a_u_bep package bep_bemscheme sf_urban_physics==3 - state:a_u_bep,a_v_bep,a_t_bep,a_q_bep,a_e_bep,b_u_bep,b_v_bep,b_t_bep,b_q_bep,b_e_bep,dlg_bep,dl_u_bep,sf_bep,vl_bep,trb_urb4d,tw1_urb4d,tw2_urb4d,tgb_urb4d,tlev_urb3d,qlev_urb3d,tw1lev_urb3d,tw2lev_urb3d,tglev_urb3d,tflev_urb3d,sf_ac_urb3d,lf_ac_urb3d,cm_ac_urb3d,sfvent_urb3d,lfvent_urb3d,sfwin1_urb3d,sfwin2_urb3d,sfw1_urb3d,sfw2_urb3d,sfr_urb3d,sfg_urb3d,hi_urb2d,lp_urb2d,hgt_urb2d,lb_urb2d,trl_urb3d,tgl_urb3d,tbl_urb3d package slabscheme sf_surface_physics==1 - - -package lsmscheme sf_surface_physics==2 - state:flx4,fvb,fbur,fgsn,smcrel +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 noahmpscheme sf_surface_physics==4 - state:isnowxy,tvxy,tgxy,canliqxy,canicexy,eahxy,tahxy,cmxy,chxy,fwetxy,sneqvoxy,alboldxy,qsnowxy,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 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,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 package pxlsmscheme sf_surface_physics==7 - state:t2_ndg_new,q2_ndg_new,t2_ndg_old,q2_ndg_old,vegf_px,imperv,canfra 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 -package noahmosaicscheme sf_surface_mosaic==1 - state:TSK_mosaic,QSFC_mosaic,TSLB_mosaic,SMOIS_mosaic,SH2O_mosaic,CANWAT_mosaic,SNOW_mosaic,SNOWH_mosaic,SNOWC_mosaic,ALBEDO_mosaic,ALBBCK_mosaic,EMISS_mosaic,EMBCK_mosaic,ZNT_mosaic,Z0_mosaic,HFX_mosaic,QFX_mosaic,LH_mosaic,GRDFLX_mosaic,SNOTIME_mosaic,TR_URB2D_mosaic,TB_URB2D_mosaic,TG_URB2D_mosaic,TC_URB2D_mosaic,TS_URB2D_mosaic,TS_RUL2D_mosaic,QC_URB2D_mosaic,UC_URB2D_mosaic,TRL_URB3D_mosaic,TBL_URB3D_mosaic,TGL_URB3D_mosaic,SH_URB2D_mosaic,LH_URB2D_mosaic,G_URB2D_mosaic,RN_URB2D_mosaic,mosaic_cat_index,landusef2,smcrel +package noahmosaicscheme sf_surface_mosaic==1 - state:TSK_mosaic,QSFC_mosaic,TSLB_mosaic,SMOIS_mosaic,SH2O_mosaic,CANWAT_mosaic,SNOW_mosaic,SNOWH_mosaic,SNOWC_mosaic,ALBEDO_mosaic,ALBBCK_mosaic,EMISS_mosaic,EMBCK_mosaic,ZNT_mosaic,Z0_mosaic,HFX_mosaic,QFX_mosaic,LH_mosaic,GRDFLX_mosaic,SNOTIME_mosaic,TR_URB2D_mosaic,TB_URB2D_mosaic,TG_URB2D_mosaic,TC_URB2D_mosaic,TS_URB2D_mosaic,TS_RUL2D_mosaic,QC_URB2D_mosaic,UC_URB2D_mosaic,TRL_URB3D_mosaic,TBL_URB3D_mosaic,TGL_URB3D_mosaic,SH_URB2D_mosaic,LH_URB2D_mosaic,G_URB2D_mosaic,RN_URB2D_mosaic,mosaic_cat_index,landusef2,smcrel,RS_mosaic,LAI_mosaic package ysuscheme bl_pbl_physics==1 - - package myjpblscheme bl_pbl_physics==2 - state:tke_pbl,el_pbl diff --git a/dyn_em/module_first_rk_step_part1.F b/dyn_em/module_first_rk_step_part1.F index 215207ca55..284d4519a4 100644 --- a/dyn_em/module_first_rk_step_part1.F +++ b/dyn_em/module_first_rk_step_part1.F @@ -19,7 +19,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & , ph_tendf, mu_tendf & , tke_tend & , adapt_step_flag , curr_secs & - , psim , psih , wspd , gz1oz0 , chklowq & + , psim , psih , gz1oz0 , chklowq & , cu_act_flag , hol , th_phy & , pi_phy , p_phy , t_phy & , dz8w , p8w , t8w & @@ -89,7 +89,6 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_aerod),INTENT(INOUT) :: aerod REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih - REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wspd REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag @@ -495,7 +494,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,UOCE=grid%uoce ,VOCE=grid%voce & & ,VEGFRA=grid%vegfra ,VZ0=grid%vz0 ,V_FRAME=grid%v_frame & & ,V_PHY=grid%v_phy ,WARM_RAIN=grid%warm_rain & - & ,WSPD=wspd ,XICE=grid%xice ,XLAND=grid%xland & + & ,WSPD=grid%wspd ,XICE=grid%xice ,XLAND=grid%xland & & ,MAX_EDOM=grid%num_ext_model_couple_dom ,CPLMASK=grid%cplmask & & ,Z0=grid%z0 ,Z=grid%z ,ZNT=grid%znt & & ,ZS=grid%zs ,ALBSI=grid%albsi , ICEDEPTH=grid%icedepth & @@ -812,6 +811,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,ZNT_mosaic=grid%ZNT_mosaic, Z0_mosaic=grid%Z0_mosaic & !danli mosaic & ,HFX_mosaic=grid%HFX_mosaic,QFX_mosaic=grid%QFX_mosaic, LH_mosaic=grid%LH_mosaic & & ,GRDFLX_mosaic=grid%GRDFLX_mosaic,SNOTIME_mosaic=grid%SNOTIME_mosaic & !danli mosaic + & ,RS_mosaic=grid%RS_mosaic,LAI_mosaic=grid%LAI_mosaic & & ,TR_URB2D_mosaic=grid%TR_URB2D_mosaic,TB_URB2D_mosaic=grid%TB_URB2D_mosaic & !danli mosaic & ,TG_URB2D_mosaic=grid%TG_URB2D_mosaic,TC_URB2D_mosaic=grid%TC_URB2D_mosaic & !danli mosaic & ,QC_URB2D_mosaic=grid%QC_URB2D_mosaic,UC_URB2D_mosaic=grid%UC_URB2D_mosaic & !danli mosaic @@ -824,6 +824,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,ZOL=grid%ZOL & & ,SDA_HFX=grid%SDA_HFX, SDA_QFX=grid%SDA_QFX,HFX_BOTH=grid%HFX_BOTH & !fasdas & ,QFX_BOTH=grid%QFX_BOTH,QNORM=grid%QNORM,fasdas=config_flags%fasdas & !fasdas + & ,XLAIDYN=grid%XLAIDYN & & ,spp_lsm=config_flags%spp_lsm,pattern_spp_lsm=grid%pattern_spp_lsm & !SPP & ,field_sf=grid%field_sf & !SPP & ,spp_pbl=config_flags%spp_pbl,pattern_spp_pbl=grid%pattern_spp_pbl & !SPP @@ -877,7 +878,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,V10=grid%v10 ,VZ0=grid%vz0 ,V_FRAME=grid%v_frame ,V_PHY=grid%v_phy & & ,W=grid%w_2 ,UOCE=grid%uoce ,VOCE=grid%voce & ,T2=grid%t2 & - & ,WARM_RAIN=grid%warm_rain ,WSPD=wspd & + & ,WARM_RAIN=grid%warm_rain ,WSPD=grid%wspd & & ,XICE=grid%xice ,XLAND=grid%xland ,Z=grid%z & & ,ZNT=grid%znt & & ,ysu_topdown_pblmix=config_flags%ysu_topdown_pblmix & diff --git a/dyn_em/module_first_rk_step_part2.F b/dyn_em/module_first_rk_step_part2.F index 8e255a4f6a..bf76996e3e 100644 --- a/dyn_em/module_first_rk_step_part2.F +++ b/dyn_em/module_first_rk_step_part2.F @@ -18,7 +18,7 @@ SUBROUTINE first_rk_step_part2 ( grid , config_flags & , ph_tendf, mu_tendf & , tke_tend & , adapt_step_flag , curr_secs & - , psim , psih , wspd , gz1oz0 , chklowq & + , psim , psih , gz1oz0 , chklowq & , cu_act_flag , hol , th_phy & , pi_phy , p_phy , t_phy & , dz8w , p8w , t8w & @@ -90,7 +90,6 @@ SUBROUTINE first_rk_step_part2 ( grid , config_flags & REAL ,DIMENSION(ims:ime,1:1,jms:jme,num_fdda2d),INTENT(INOUT) :: fdda2d REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih - REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wspd REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag diff --git a/dyn_em/solve_em.F b/dyn_em/solve_em.F index 4eab5924b9..6d8407d075 100644 --- a/dyn_em/solve_em.F +++ b/dyn_em/solve_em.F @@ -735,7 +735,7 @@ SUBROUTINE solve_em ( grid , config_flags & , tke_tend & , config_flags%use_adaptive_time_step & , curr_secs & - , psim , psih , wspd , gz1oz0 & + , psim , psih , gz1oz0 & , chklowq & , cu_act_flag , hol , th_phy & , pi_phy , p_phy , grid%t_phy & @@ -769,7 +769,7 @@ SUBROUTINE solve_em ( grid , config_flags & , ph_tendf, mu_tendf & , tke_tend & , adapt_step_flag , curr_secs & - , psim , psih , wspd , gz1oz0 & + , psim , psih , gz1oz0 & , chklowq & , cu_act_flag , hol , th_phy & , pi_phy , p_phy , grid%t_phy & diff --git a/dyn_nmm/module_PHYSICS_CALLS.F b/dyn_nmm/module_PHYSICS_CALLS.F index c8c0d1ea66..b70c7a6445 100644 --- a/dyn_nmm/module_PHYSICS_CALLS.F +++ b/dyn_nmm/module_PHYSICS_CALLS.F @@ -1012,6 +1012,7 @@ SUBROUTINE TURBL(NTSD,DT,NPHS,RESTRT & & ,RSW_DN_SFC & & ,SFCEVPX,SFCZ,SNOW,SNOWC,SNOWH & & ,TH2X,THLOW,TLOW,VGFRCK & + & ,RS,XLAIDYN & & ,WSPD,XLAND,REGIME,HOL ! REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME) :: DUDT_PHY,DVDT_PHY,DZ & @@ -1563,7 +1564,7 @@ SUBROUTINE TURBL(NTSD,DT,NPHS,RESTRT & & , smoiseq=grid%smoiseq, smcwtdxy=grid%smcwtdxy, rechxy=grid%rechxy & & , deeprechxy=grid%deeprechxy & & ,coszen=grid%czen,xlat_urb2d=grid%hlat & - + & ,rs=rs,xlaidyn=xlaidyn & ! mosaic tiling for Noah & ,sf_surface_mosaic=config_flags%sf_surface_mosaic, mosaic_cat=config_flags%mosaic_cat & ! lake module diff --git a/phys/module_sf_noahdrv.F b/phys/module_sf_noahdrv.F index b14dc552ad..5ef15e8762 100644 --- a/phys/module_sf_noahdrv.F +++ b/phys/module_sf_noahdrv.F @@ -94,7 +94,8 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & b_t_bep,b_q_bep,b_e_bep,dlg_bep, & !O multi-layer urban dl_u_bep,sf_bep,vl_bep,sfcheadrt,INFXSRT, soldrain & !O multi-layer urban ,SDA_HFX, SDA_QFX, HFX_BOTH, QFX_BOTH, QNORM, fasdas & !fasdas - ) !O multi-layer urban + ,RC2,XLAI2 & + ) !---------------------------------------------------------------- IMPLICIT NONE @@ -151,6 +152,7 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & !-- SHDMIN minimum areal fractional coverage of annual green vegetation !-- SHDMAX maximum areal fractional coverage of annual green vegetation !-- XLAI leaf area index (dimensionless) +!-- XLAI2 leaf area index (same as XLAI) passed to output (dimensionless) !-- Z0BRD Background fixed roughness length (M) !-- Z0 Background vroughness length (M) as function !-- ZNT Time varying roughness length (M) as function @@ -196,6 +198,7 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & !UDRUNOFF Total Underground Runoff (mm), which is the sum of RUNOFF2 and RUNOFF3 ! ---------------------------------------------------------------------- !-- RC canopy resistance (s m-1) +!-- RC2 canopy resistance (same as RC) passed to output !-- PC plant coefficient (unitless fraction, 0-1) where PC*ETP = actual transp !-- RSMIN minimum canopy resistance (s m-1) !-- RCS incoming solar rc factor (dimensionless) @@ -338,6 +341,7 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & INTENT(OUT) :: CHKLOWQ REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: LAI REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: QZ0 + REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT) :: RC2, XLAI2 REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CMR_SFCDIF REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CHR_SFCDIF @@ -1084,6 +1088,8 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & ENDIF lai(i,j) = xlai + rc2(I,J) = RC ! for output + xlai2(I,J) = XLAI #if 0 IF(IPRINT) THEN @@ -2214,6 +2220,7 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & ZNT_mosaic, Z0_mosaic, & ! danli mosaic HFX_mosaic,QFX_mosaic, & ! danli mosaic LH_mosaic, GRDFLX_mosaic, SNOTIME_mosaic, & ! danli mosaic + RC_mosaic, LAI_mosaic, & ! Noah UA changes ua_phys,flx4_2d,fvb_2d,fbur_2d,fgsn_2d, & ids,ide, jds,jde, kds,kde, & @@ -2269,6 +2276,7 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & dl_u_bep,sf_bep,vl_bep & !O multi-layer urban ,sfcheadrt,INFXSRT, soldrain & !hydro ,SDA_HFX, SDA_QFX, HFX_BOTH, QFX_BOTH, QNORM, fasdas & !fasdas + ,RC2,XLAI2 & !O ) !---------------------------------------------------------------- @@ -2514,6 +2522,7 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & INTENT(OUT) :: CHKLOWQ REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: LAI REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: QZ0 + REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT) :: RC2, XLAI2 REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CMR_SFCDIF REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CHR_SFCDIF @@ -2819,10 +2828,13 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & HFX_mosaic,QFX_mosaic, LH_mosaic, GRDFLX_mosaic,SNOTIME_mosaic REAL, DIMENSION( ims:ime, 1:num_soil_layers*mosaic_cat, jms:jme ), OPTIONAL, INTENT(INOUT):: & TSLB_mosaic,SMOIS_mosaic,SH2O_mosaic + REAL, DIMENSION( ims:ime, 1:mosaic_cat, jms:jme ), OPTIONAL, INTENT(INOUT):: LAI_mosaic, RC_mosaic + REAL, DIMENSION( ims:ime, jms:jme ) :: TSK_mosaic_avg, QSFC_mosaic_avg, CANWAT_mosaic_avg,SNOW_mosaic_avg,SNOWH_mosaic_avg, & SNOWC_mosaic_avg, HFX_mosaic_avg, QFX_mosaic_avg, LH_mosaic_avg, GRDFLX_mosaic_avg, & ALBEDO_mosaic_avg, ALBBCK_mosaic_avg, EMISS_mosaic_avg, EMBCK_mosaic_avg, & - ZNT_mosaic_avg, Z0_mosaic_avg, SNOTIME_mosaic_avg, FAREA_mosaic_avg + ZNT_mosaic_avg, Z0_mosaic_avg, LAI_mosaic_avg, RC_mosaic_avg, SNOTIME_mosaic_avg, & + FAREA_mosaic_avg REAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ) :: & TSLB_mosaic_avg,SMOIS_mosaic_avg,SH2O_mosaic_avg @@ -2935,32 +2947,34 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & ! INITIALIZE THE AREA-AVERAGED FLUXES - TSK_mosaic_avg(i,j)= 0 ! from 3D to 2D - QSFC_mosaic_avg(i,j)= 0 - CANWAT_mosaic_avg(i,j)= 0 - SNOW_mosaic_avg(i,j)= 0 - SNOWH_mosaic_avg(i,j)= 0 - SNOWC_mosaic_avg(i,j)= 0 + TSK_mosaic_avg(i,j)= 0.0 ! from 3D to 2D + QSFC_mosaic_avg(i,j)= 0.0 + CANWAT_mosaic_avg(i,j)= 0.0 + SNOW_mosaic_avg(i,j)= 0.0 + SNOWH_mosaic_avg(i,j)= 0.0 + SNOWC_mosaic_avg(i,j)= 0.0 DO NS=1,NSOIL - TSLB_mosaic_avg(i,NS,j)=0 - SMOIS_mosaic_avg(i,NS,j)=0 - SH2O_mosaic_avg(i,NS,j)=0 + TSLB_mosaic_avg(i,NS,j)=0.0 + SMOIS_mosaic_avg(i,NS,j)=0.0 + SH2O_mosaic_avg(i,NS,j)=0.0 ENDDO - HFX_mosaic_avg(i,j)= 0 - QFX_mosaic_avg(i,j)= 0 - LH_mosaic_avg(i,j)= 0 - GRDFLX_mosaic_avg(i,j)= 0 - ALBEDO_mosaic_avg(i,j)=0 - ALBBCK_mosaic_avg(i,j)=0 - EMISS_mosaic_avg(i,j)=0 - EMBCK_mosaic_avg(i,j)=0 - ZNT_mosaic_avg(i,j)=0 - Z0_mosaic_avg(i,j)=0 - FAREA_mosaic_avg(i,j)=0 + HFX_mosaic_avg(i,j)= 0.0 + QFX_mosaic_avg(i,j)= 0.0 + LH_mosaic_avg(i,j)= 0.0 + GRDFLX_mosaic_avg(i,j)= 0.0 + ALBEDO_mosaic_avg(i,j)=0.0 + ALBBCK_mosaic_avg(i,j)=0.0 + EMISS_mosaic_avg(i,j)=0.0 + EMBCK_mosaic_avg(i,j)=0.0 + ZNT_mosaic_avg(i,j)=0.0 + Z0_mosaic_avg(i,j)=0.0 + LAI_mosaic_avg(i,j)=0.0 + RC_mosaic_avg(i,j)=0.0 + FAREA_mosaic_avg(i,j)=0.0 ! add a new loop for the mosaic_cat @@ -3368,9 +3382,7 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & & RIBB) ENDIF - lai(i,j) = xlai - #if 0 IF(IPRINT) THEN @@ -3819,6 +3831,8 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & EMBCK_mosaic(i,mosaic_i,j)=EMBCK(i,j) ZNT_mosaic(i,mosaic_i,j)=ZNT(i,j) Z0_mosaic(i,mosaic_i,j)=Z0(i,j) + LAI_mosaic(i,mosaic_i,j)=XLAI + RC_mosaic(i,mosaic_i,j)=RC HFX_mosaic(i,mosaic_i,j)=HFX(i,j) QFX_mosaic(i,mosaic_i,j)=QFX(i,j) @@ -3840,7 +3854,8 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & print*, 'mosaic_cat_index',mosaic_cat_index(I,mosaic_i,J), 'landusef2',landusef2(i,mosaic_i,j) print*, 'TSK_mosaic', TSK_mosaic(i,mosaic_i,j), 'HFX_mosaic', HFX_mosaic(i,mosaic_i,j), & 'LH_mosaic',LH_mosaic(i,mosaic_i,j),'GRDFLX_mosaic',GRDFLX_mosaic(i,mosaic_i,j) - print*, 'ZNT_mosaic', ZNT_mosaic(i, mosaic_i,j), 'Z0_mosaic', Z0_mosaic(i,mosaic_i,j) + print*, 'ZNT_mosaic', ZNT_mosaic(i, mosaic_i,j), 'Z0_mosaic', Z0_mosaic(i,mosaic_i,j) + print*, 'LAI_mosaic', LAI_mosaic(i, mosaic_i,j) print*, 'FRC_URB2D',FRC_URB2D(I,J) print*, 'TS_URB',TS_URB2D(I,J),'T1',T1 print*, 'SH_URB2D',SH_URB2D(I,J),'SHEAT',SHEAT @@ -3884,9 +3899,14 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & EMBCK_mosaic_avg(i,j)=EMBCK_mosaic_avg(i,j)+EMBCK_mosaic(i,mosaic_i,j)*FAREA ZNT_mosaic_avg(i,j)=ZNT_mosaic_avg(i,j)+ALOG(ZNT_mosaic(i,mosaic_i,j))*FAREA Z0_mosaic_avg(i,j)=Z0_mosaic_avg(i,j)+ALOG(Z0_mosaic(i,mosaic_i,j))*FAREA - - ENDDO ! ENDDO FOR mosaic_i = 1, mosaic_cat - + LAI_mosaic_avg(i,j)=LAI_mosaic_avg(i,j)+LAI_mosaic(i,mosaic_i,j)*FAREA + if(RC_mosaic(i,mosaic_i,j) .Gt. 0.0) Then + RC_mosaic_avg(i,j) = RC_mosaic_avg(i,j)+1.0/RC_mosaic(i,mosaic_i,j)*FAREA + else + RC_mosaic_avg(i,j) = RC_mosaic_avg(i,j) + RC_mosaic(i,mosaic_i,j)*FAREA + End If + ENDDO ! ENDDO FOR mosaic_i = 1, mosaic_cat + !----------------------------------------------------------------------- ! Now let's send the 3D values to the 2D variables that might be needed in other routines !----------------------------------------------------------------------- @@ -3898,7 +3918,13 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & EMBCK(i,j)= EMBCK_mosaic_avg(i,j) ZNT(i,j)= EXP(ZNT_mosaic_avg(i,j)/FAREA_mosaic_avg(i,j)) Z0(i,j)= EXP(Z0_mosaic_avg(i,j)/FAREA_mosaic_avg(i,j)) - + XLAI2(i,j)= LAI_mosaic_avg(i,j) + IF (RC_mosaic_avg(i,j) .Gt. 0.0) THEN + rc2(i,j) = 1.0/(RC_mosaic_avg(i,j)) + ELSE +!RC_mosaic_avg was zero for all tiles (cell over water), thus RC2 set to zero to avoid infinity + rc2(i,j) = RC_mosaic_avg(i,j) + END IF TSK(i,j)=(TSK_mosaic_avg(I,J)/EMISS_mosaic_avg(I,J))**(0.25) ! from 3D to 2D QSFC(i,j)=QSFC_mosaic_avg(I,J) CANWAT(i,j) = CANWAT_mosaic_avg(i,j) @@ -4246,7 +4272,7 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & ENDIF lai(i,j) = xlai - + #if 0 IF(IPRINT) THEN @@ -4974,7 +5000,7 @@ SUBROUTINE lsm_mosaic_init(IVGTYP,ISWATER,ISURBAN,ISICE, XLAND, XICE,fractional_ EMISS_mosaic(i,mosaic_i,j)=EMISS(i,j) EMBCK_mosaic(i,mosaic_i,j)=EMBCK(i,j) ZNT_mosaic(i,mosaic_i,j)=Z0(i,j) - Z0_mosaic(i,mosaic_i,j)=Z0(i,j) + Z0_mosaic(i,mosaic_i,j)=Z0(i,j) DO soil_k=1,num_soil_layers diff --git a/phys/module_sf_noahmpdrv.F b/phys/module_sf_noahmpdrv.F index 1cb95d20c3..6e549cf9fd 100644 --- a/phys/module_sf_noahmpdrv.F +++ b/phys/module_sf_noahmpdrv.F @@ -37,7 +37,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN BGAPXY, WGAPXY, TGVXY, TGBXY, CHVXY, CHBXY, & ! OUT Noah MP only SHGXY, SHCXY, SHBXY, EVGXY, EVBXY, GHVXY, & ! OUT Noah MP only GHBXY, IRGXY, IRCXY, IRBXY, TRXY, EVCXY, & ! OUT Noah MP only - CHLEAFXY, CHUCXY, CHV2XY, CHB2XY, & ! OUT Noah MP only + CHLEAFXY, CHUCXY, CHV2XY, CHB2XY, RS, & ! OUT Noah MP only ! BEXP_3D,SMCDRY_3D,SMCWLT_3D,SMCREF_3D,SMCMAX_3D, & ! placeholders to activate 3D soil ! DKSAT_3D,DWSAT_3D,PSISAT_3D,QUARTZ_3D, & ! REFDK_2D,REFKDT_2D, & @@ -165,8 +165,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QSFC ! bulk surface specific humidity REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: Z0 ! combined z0 sent to coupled model REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ZNT ! combined z0 sent to coupled model - -! INOUT (with no Noah LSM equivalent) + REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: RS ! Total stomatal resistance (s/m) INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ISNOWXY ! actual no. of snow layers REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TVXY ! vegetation leaf temperature @@ -362,6 +361,9 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN REAL :: SAG ! solar rad absorbed by ground (w/m2) REAL :: RSSUN ! sunlit leaf stomatal resistance (s/m) REAL :: RSSHA ! shaded leaf stomatal resistance (s/m) + REAL :: RB ! leaf boundary layer resistance (s/m) + REAL :: LAISUN ! sunlit leaf area index (m2/m2) + REAL :: LAISHA ! shaded leaf area index (m2/m2) REAL :: BGAP ! between gap fraction REAL :: WGAP ! within gap fraction REAL :: TGV ! under canopy ground temperature[K] @@ -740,6 +742,10 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN SAV = undefined_value RSSUN = undefined_value RSSHA = undefined_value + RB = undefined_value + LAISUN = undefined_value + LAISHA = undefined_value + RS(I,J)= undefined_value BGAP = undefined_value WGAP = undefined_value TGV = undefined_value @@ -798,7 +804,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN SHG , SHC , SHB , EVG , EVB , GHV , & ! OUT : GHB , IRG , IRC , IRB , TR , EVC , & ! OUT : CHLEAF , CHUC , CHV2 , CHB2 , FPICE , PAHV , & - PAHG , PAHB , PAH & + PAHG , PAHB , PAH , LAISUN , LAISHA ,RB & #ifdef WRF_HYDRO , sfcheadrt(i,j) & #endif @@ -898,6 +904,17 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN SAGXY (I,J) = SAG RSSUNXY (I,J) = RSSUN RSSHAXY (I,J) = RSSHA + LAISUN = MAX(LAISUN, 0.0) + LAISHA = MAX(LAISHA, 0.0) + RB = MAX(RB, 0.0) +! New Calculation of total Canopy/Stomatal Conductance Based on Bonan et al. (2011) +! -- Inverse of Canopy Resistance (below) + IF(RSSUN .le. 0.0 .and. RSSHA .le. 0.0) THEN + RS (I,J) = 0.0 + ELSE + RS (I,J) = ((1.0/(RSSUN+RB)*LAISUN) + ((1.0/(RSSHA+RB))*LAISHA)) + RS (I,J) = 1.0/RS(I,J) !Resistance + ENDIF BGAPXY (I,J) = BGAP WGAPXY (I,J) = WGAP TGVXY (I,J) = TGV diff --git a/phys/module_sf_noahmplsm.F b/phys/module_sf_noahmplsm.F index 32a8cd9772..422dac099a 100644 --- a/phys/module_sf_noahmplsm.F +++ b/phys/module_sf_noahmplsm.F @@ -363,7 +363,7 @@ SUBROUTINE NOAHMP_SFLX (parameters, & SHG , SHC , SHB , EVG , EVB , GHV , & ! OUT : GHB , IRG , IRC , IRB , TR , EVC , & ! OUT : CHLEAF , CHUC , CHV2 , CHB2 , FPICE , PAHV , & - PAHG , PAHB , PAH & + PAHG , PAHB , PAH , LAISUN , LAISHA , RB & ! OUT #ifdef WRF_HYDRO ,SFCHEADRT & ! IN/OUT : #endif @@ -486,6 +486,9 @@ SUBROUTINE NOAHMP_SFLX (parameters, & REAL , INTENT(OUT) :: PONDING!surface ponding [mm] REAL , INTENT(OUT) :: PONDING1!surface ponding [mm] REAL , INTENT(OUT) :: PONDING2!surface ponding [mm] + REAL , INTENT(OUT) :: RB ! leaf boundary layer resistance (s/m) + REAL , INTENT(OUT) :: LAISUN ! sunlit leaf area index (m2/m2) + REAL , INTENT(OUT) :: LAISHA ! shaded leaf area index (m2/m2) !jref:start; output REAL , INTENT(OUT) :: T2MV !2-m air temperature over vegetated part [k] @@ -708,7 +711,7 @@ SUBROUTINE NOAHMP_SFLX (parameters, & TV ,TG ,STC ,SNOWH ,EAH ,TAH , & !inout SNEQVO ,SNEQV ,SH2O ,SMC ,SNICE ,SNLIQ , & !inout ALBOLD ,CM ,CH ,DX ,DZ8W ,Q2 , & !inout - TAUSS , & !inout + TAUSS ,LAISUN ,LAISHA ,RB , & !inout !jref:start QC ,QSFC ,PSFC , & !in T2MV ,T2MB ,FSRV , & @@ -1446,7 +1449,7 @@ SUBROUTINE ENERGY (parameters,ICE ,VEGTYP ,IST ,NSNOW ,NSOIL , & !in TV ,TG ,STC ,SNOWH ,EAH ,TAH , & !inout SNEQVO ,SNEQV ,SH2O ,SMC ,SNICE ,SNLIQ , & !inout ALBOLD ,CM ,CH ,DX ,DZ8W ,Q2 , & !inout - TAUSS , & !inout + TAUSS ,LAISUN ,LAISHA ,RB , & !inout !jref:start QC ,QSFC ,PSFC , & !in T2MV ,T2MB ,FSRV , & @@ -1610,6 +1613,9 @@ SUBROUTINE ENERGY (parameters,ICE ,VEGTYP ,IST ,NSNOW ,NSOIL , & !in REAL , INTENT(INOUT) :: CM !momentum drag coefficient REAL , INTENT(INOUT) :: CH !sensible heat exchange coefficient REAL , INTENT(INOUT) :: Q1 + REAL , INTENT(INOUT) :: RB !leaf boundary layer resistance (s/m) + REAL , INTENT(INOUT) :: LAISUN !sunlit leaf area index (m2/m2) + REAL , INTENT(INOUT) :: LAISHA !shaded leaf area index (m2/m2) ! REAL :: Q2E REAL, INTENT(OUT) :: EMISSI REAL, INTENT(OUT) :: PAH !precipitation advected heat - total (W/m2) @@ -1620,7 +1626,7 @@ SUBROUTINE ENERGY (parameters,ICE ,VEGTYP ,IST ,NSNOW ,NSOIL , & !in REAL :: UR !wind speed at height ZLVL (m/s) REAL :: ZLVL !reference height (m) REAL :: FSUN !sunlit fraction of canopy [-] - REAL :: RB !leaf boundary layer resistance (s/m) + ! REAL :: RB !leaf boundary layer resistance (s/m) REAL :: RSURF !ground surface resistance (s/m) REAL :: L_RSURF!Dry-layer thickness for computing RSURF (Sakaguchi and Zeng, 2009) REAL :: D_RSURF!Reduced vapor diffusivity in soil for computing RSURF (SZ09) @@ -1636,8 +1642,6 @@ SUBROUTINE ENERGY (parameters,ICE ,VEGTYP ,IST ,NSNOW ,NSOIL , & !in REAL :: EMG !ground emissivity REAL :: FIRE !emitted IR (w/m2) - REAL :: LAISUN !sunlit leaf area index (m2/m2) - REAL :: LAISHA !shaded leaf area index (m2/m2) REAL :: PSNSUN !sunlit photosynthesis (umolco2/m2/s) REAL :: PSNSHA !shaded photosynthesis (umolco2/m2/s) !jref:start - for debug diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index 2c0eab06ea..f92cc2c361 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -261,6 +261,7 @@ SUBROUTINE surface_driver( & & ,CANWAT_mosaic,SNOW_mosaic,SNOWH_mosaic,SNOWC_mosaic & !danli mosaic & ,ALBEDO_mosaic,ALBBCK_mosaic, EMISS_mosaic, EMBCK_mosaic, ZNT_mosaic, Z0_mosaic & !danli mosaic & ,HFX_mosaic,QFX_mosaic, LH_mosaic, GRDFLX_mosaic,SNOTIME_mosaic & !danli mosaic + & ,RS_mosaic,LAI_mosaic & !mosaic & ,TR_URB2D_mosaic,TB_URB2D_mosaic & !danli mosaic & ,TG_URB2D_mosaic,TC_URB2D_mosaic & !danli mosaic & ,QC_URB2D_mosaic,UC_URB2D_mosaic & !danli mosaic @@ -274,6 +275,7 @@ SUBROUTINE surface_driver( & & ,SDA_HFX, SDA_QFX, HFX_BOTH, QFX_BOTH, QNORM, fasdas & !fasdas & ,spp_lsm,pattern_spp_lsm,field_sf & !SPP & ,spp_pbl,pattern_spp_pbl & !SPP + & ,XLAIDYN & & ) #if ( ! NMM_CORE == 1 ) @@ -508,7 +510,7 @@ SUBROUTINE surface_driver( & !-- SOILCTOP Top soil fraction ! P-X LSM !-- SOILCBOT Bottom soil fraction ! P-X LSM !-- RA Aerodynamic resistence ! P-X LSM -!-- RS Stomatal resistence ! P-X LSM +!-- RS Stomatal resistence ! P-X LSM, also from Noah lsm, lsm_mosaic, or noahmp !-- VEGF_PX PX LSM internal LU-based Veg Fraction ! P-X LSM !-- IMPERV Impervious surface fraction ! P-X LSM !-- CANFRA Canopy/Tree fraction ! P-X LSM @@ -1232,7 +1234,8 @@ SUBROUTINE surface_driver( & TSK_mosaic, QSFC_mosaic, CANWAT_mosaic, SNOW_mosaic,SNOWH_mosaic, SNOWC_mosaic REAL, DIMENSION( ims:ime, 1:mosaic_cat, jms:jme ) , OPTIONAL, INTENT(INOUT):: & ALBEDO_mosaic,ALBBCK_mosaic, EMISS_mosaic, EMBCK_mosaic, ZNT_mosaic, Z0_mosaic, & - HFX_mosaic,QFX_mosaic, LH_mosaic, GRDFLX_mosaic,SNOTIME_mosaic + HFX_mosaic,QFX_mosaic, LH_mosaic,GRDFLX_mosaic,SNOTIME_mosaic, & + RS_mosaic,LAI_mosaic REAL, DIMENSION( ims:ime, 1:num_soil_layers*mosaic_cat, jms:jme ), OPTIONAL, INTENT(INOUT):: & TSLB_mosaic,SMOIS_mosaic,SH2O_mosaic @@ -1336,6 +1339,8 @@ SUBROUTINE surface_driver( & REAL :: HFX_KAY, QFX_KAY ! local var for SPP_LSM INTEGER :: spp_lsm_loc + + real, optional, dimension(ims:ime,jms:jme ),intent(inout) :: XLAIDYN ! !------------------------------------------------------------------ ! Initialize local variables @@ -2542,7 +2547,8 @@ SUBROUTINE surface_driver( & EMISS_mosaic, EMBCK_mosaic, & ! danli mosaic ZNT_mosaic, Z0_mosaic, & ! danli mosaic HFX_mosaic,QFX_mosaic, & ! danli mosaic - LH_mosaic, GRDFLX_mosaic, SNOTIME_mosaic, & ! danli mosaic + LH_mosaic, GRDFLX_mosaic, SNOTIME_mosaic, & ! danli mosaic + RS_mosaic, LAI_mosaic, & ! mosaic ua_phys,flx4,fvb,fbur,fgsn, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & @@ -2597,8 +2603,7 @@ SUBROUTINE surface_driver( & dl_u_bep,sf_bep,vl_bep & !O multi-layer urban ,sfcheadrt,INFXSRT, soldrain & !hydro ,SDA_HFX, SDA_QFX, HFX_BOTH, QFX_BOTH, QNORM, fasdas & ! fasdas - ) - + ,RS,XLAIDYN) ELSE CALL wrf_error_fatal('Lack arguments to call lsm_mosaic') ENDIF @@ -2708,7 +2713,7 @@ SUBROUTINE surface_driver( & ! ! END FASDAS ! - ) + ,RS,XLAIDYN) ENDIF call seaice_noah( SEAICE_ALBEDO_OPT, SEAICE_ALBEDO_DEFAULT, SEAICE_THICKNESS_OPT, & @@ -2947,7 +2952,7 @@ SUBROUTINE surface_driver( & BGAPXY, WGAPXY, TGVXY, TGBXY, CHVXY, CHBXY, & SHGXY, SHCXY, SHBXY, EVGXY, EVBXY, GHVXY, & GHBXY, IRGXY, IRCXY, IRBXY, TRXY, EVCXY, & - CHLEAFXY, CHUCXY, CHV2XY, CHB2XY, & + CHLEAFXY, CHUCXY, CHV2XY, CHB2XY, RS, & #ifdef WRF_HYDRO sfcheadrt,INFXSRT,soldrain, & !O #endif @@ -3840,8 +3845,8 @@ SUBROUTINE surface_driver( & U10(i,j) = UV10*u_phytmp(i,1,j)/SQRT(u_phytmp(i,1,j)**2+v_phytmp(i,1,j)**2) V10(i,j) = UV10*v_phytmp(i,1,j)/SQRT(u_phytmp(i,1,j)**2+v_phytmp(i,1,j)**2) ! Overwrite WSPD to remove convective velocity (wspd=wspd1 in YSU) - WSPD(I,J)=sqrt( u_phytmp(i,1,j)*u_phytmp(i,1,j) + & - v_phytmp(i,1,j)*v_phytmp(i,1,j) ) + 1.e-9 +! WSPD(I,J)=sqrt( u_phytmp(i,1,j)*u_phytmp(i,1,j) + & +! v_phytmp(i,1,j)*v_phytmp(i,1,j) ) + 1.e-9 ! ENDIF ! diff --git a/share/output_wrf.F b/share/output_wrf.F index 757b60a751..b054c63404 100644 --- a/share/output_wrf.F +++ b/share/output_wrf.F @@ -664,6 +664,7 @@ SUBROUTINE output_wrf ( fid , grid , config_flags, switch , ierr ) ibuf(1) = gwd_opt CALL wrf_put_dom_ti_integer ( fid, 'GWD_OPT' , ibuf , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'SF_URBAN_PHYSICS', sf_urban_physics , 1 , ierr ) + CALL wrf_put_dom_ti_integer ( fid, 'SF_SURFACE_MOSAIC', config_flags%sf_surface_mosaic , 1 , ierr ) CALL wrf_put_dom_ti_integer ( fid, 'SF_OCEAN_PHYSICS', config_flags%sf_ocean_physics , 1 , ierr ) #endif