Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrapper for #808 and #816 #818

Merged
merged 10 commits into from
Dec 23, 2021
18 changes: 10 additions & 8 deletions physics/sfc_diff.f
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ end subroutine sfc_diff_finalize
!! in Zeng et al. (1998) \cite zeng_et_al_1998).
!! - Calculate Zeng's momentum roughness length formulation over land and sea ice.
!! - Calculate the new vegetation-dependent formulation of thermal roughness length
!! (Zheng et al.(2009) \cite zheng_et_al_2009).
!! Zheng et al. (2009) \cite zheng_et_al_2009 proposed a new formulation on
!! (Zheng et al.(2012) \cite zheng_et_al_2012).
!! Zheng et al. (2012) \cite zheng_et_al_2012 proposed a new formulation on
!! \f$ln(Z_{0m}^,/Z_{0t})\f$ as follows:
!! \f[
!! ln(Z_{0m}^,/Z_{0t})=(1-GVF)^2C_{zil}k(u*Z_{0g}/\nu)^{0.5}
Expand Down Expand Up @@ -305,12 +305,14 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in)
tem2 = tem1 * tem1
tem1 = one - tem2

if( ivegsrc == 1 ) then

z0max = exp( tem2*log01 + tem1*log(z0max) )
elseif (ivegsrc == 2 ) then
z0max = exp( tem2*log01 + tem1*log(z0max) )
endif
! Removed the following lines by W. Zheng, for effective z0m (z0max) is applied only
! for land.
!wz if( ivegsrc == 1 ) then
!wz
!wz z0max = exp( tem2*log01 + tem1*log(z0max) )
!wz elseif (ivegsrc == 2 ) then
!wz z0max = exp( tem2*log01 + tem1*log(z0max) )
!wz endif

z0max = max(z0max, zmin)

Expand Down
4 changes: 3 additions & 1 deletion physics/sfc_noahmp_drv.F90
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ subroutine noahmpdrv_run &

! --- in/outs:
weasd, snwdph, tskin, tprcp, srflag, smc, stc, slc, &
canopy, trans, zorl, &
canopy, trans, tsurf, zorl, &
rb1, fm1, fh1, ustar1, stress1, fm101, fh21, &

! --- Noah MP specific
Expand Down Expand Up @@ -245,6 +245,7 @@ subroutine noahmpdrv_run &
real(kind=kind_phys), dimension(:,:) , intent(inout) :: slc ! liquid soil moisture [m3/m3]
real(kind=kind_phys), dimension(:) , intent(inout) :: canopy ! canopy moisture content [mm]
real(kind=kind_phys), dimension(:) , intent(inout) :: trans ! total plant transpiration [m/s]
real(kind=kind_phys), dimension(:) , intent(inout) :: tsurf ! surface skin temperature [K]
real(kind=kind_phys), dimension(:) , intent(inout) :: zorl ! surface roughness [cm]

real(kind=kind_phys), dimension(:) , intent(inout) :: rb1 ! bulk richardson #
Expand Down Expand Up @@ -921,6 +922,7 @@ subroutine noahmpdrv_run &
sncovr1 (i) = snow_cover_fraction

! qsurf (i) = spec_humidity_surface
tsurf (i) = tskin(i)

tvxy (i) = temperature_leaf
tgxy (i) = temperature_ground
Expand Down
8 changes: 8 additions & 0 deletions physics/sfc_noahmp_drv.meta
Original file line number Diff line number Diff line change
Expand Up @@ -662,6 +662,14 @@
type = real
kind = kind_phys
intent = inout
[tsurf]
standard_name = surface_skin_temperature_after_iteration_over_land
long_name = surface skin temperature after iteration over land
units = K
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[zorl]
standard_name = surface_roughness_length_over_land
long_name = surface roughness length over land (temporary use as interstitial)
Expand Down