diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index 15a91db7d..46b572b65 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -5437,7 +5437,7 @@ subroutine thermalz0(parameters,fveg,z0m,z0mg,zlvl,zpd,ezpd,ustarx, & ! z0ht = z0mt elseif (opt_trs == 2) then z0mt = fveg * z0m + (1.0 - fveg) * z0mg - czil1=10.0 ** (- (0.40/0.07) * parameters%hvt) + czil1=10.0 ** (- 0.4 * parameters%hvt) z0ht = fveg * z0m*exp(-czil1*0.4*258.2*sqrt(ustarx*z0m)) & +(1.0 - fveg) * z0mg*exp(-czil1*0.4*258.2*sqrt(ustarx*z0mg)) elseif (opt_trs == 3) then @@ -5473,7 +5473,7 @@ subroutine thermalz0(parameters,fveg,z0m,z0mg,zlvl,zpd,ezpd,ustarx, & ! if (opt_trs == 1) then z0ht = z0mt elseif (opt_trs == 2) then - czil1=10.0 ** (- (0.40/0.07) * parameters%hvt) + czil1=10.0 ** (- 0.4 * parameters%hvt) z0ht =z0mt*exp(-czil1*0.4*258.2*sqrt(ustarx*z0mt)) elseif (opt_trs == 3) then if (vegtyp.le.5) then @@ -5499,7 +5499,7 @@ subroutine thermalz0(parameters,fveg,z0m,z0mg,zlvl,zpd,ezpd,ustarx, & ! if (opt_trs == 1) then z0ht = z0mt elseif (opt_trs == 2) then - czil1= 10.0 ** (- (0.40/0.07) * parameters%hvt) + czil1= 10.0 ** (- 0.4 * parameters%hvt) z0ht = z0mt*exp(-czil1*0.4*258.2*sqrt(ustarx*z0mt)) elseif (opt_trs == 3) then if (vegtyp.le.5) then diff --git a/physics/noahmpdrv.F90 b/physics/noahmpdrv.F90 index 598a11b31..fed823ead 100644 --- a/physics/noahmpdrv.F90 +++ b/physics/noahmpdrv.F90 @@ -161,7 +161,7 @@ subroutine noahmpdrv_run & sncovr1, qsurf, gflux, drain, evap, hflx, ep, runoff, & cmm, chh, evbs, evcw, sbsno, pah, ecan, etran, edir, snowc,& stm, snohf,smcwlt2, smcref2, wet1, t2mmp, q2mp,zvfun, & - errmsg, errflg) + ztmax, errmsg, errflg) use machine , only : kind_phys use funcphys, only : fpvs @@ -360,6 +360,7 @@ subroutine noahmpdrv_run & real(kind=kind_phys), dimension(:) , intent(out) :: t2mmp ! combined T2m from tiles real(kind=kind_phys), dimension(:) , intent(out) :: q2mp ! combined q2m from tiles real(kind=kind_phys), dimension(:) , intent(out) :: zvfun ! + real(kind=kind_phys), dimension(:) , intent(out) :: ztmax ! thermal roughness length character(len=*) , intent(out) :: errmsg integer , intent(out) :: errflg @@ -956,6 +957,7 @@ subroutine noahmpdrv_run & cmxy (i) = cm_noahmp chxy (i) = ch_noahmp zorl (i) = z0_total * 100.0 ! convert to cm + ztmax (i) = z0h_total smc (i,:) = soil_moisture_vol slc (i,:) = soil_liquid_vol diff --git a/physics/noahmpdrv.meta b/physics/noahmpdrv.meta index 9ad9092ec..3235b7c90 100644 --- a/physics/noahmpdrv.meta +++ b/physics/noahmpdrv.meta @@ -1314,6 +1314,14 @@ type = real kind = kind_phys intent = out +[ztmax] + standard_name = bounded_surface_roughness_length_for_heat_over_land + long_name = bounded surface roughness length for heat over land + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP