This SUBROUTINE updates the value of the stability parameter
during the iteration loop of the Monin-Obukhov (MO) similarity theory in define_canopy.
quantifies the role that the surface fluxes play in setting the
efficiency of turbulent transfer from the land to the atmosphere, and hence
the aerodynamic component of the resistance network for those same surface
fluxes (an implicit problem which requires iteration to solve).
This SUBROUTINE forms part of the codebase to evaluate the surface energy balance on a sub-diurnal basis (i.e. every CABLE time step). It resides in the canopy science directory.
The two outputs of the SUBROUTINE are:
canopy_zetar
, the local (in space, time and by iteration counter) value of
(Equation 9). It is evaluated from the total land (soil+canopy)
surface fluxes of momentum, sensible heat and latent heat.canopy_zetash
is the equivalent variable evaluated from the soil
contribution to those fluxes only. canopy_zetash
is used in conjunction
with the sli_main_mod soil model to moderate the fluxes from the soil
underneath a canopy.canopy_zetar
and canopy_zetash
are initialised to CZETA0
=0 in
define_canopy and updated NITER
(>1) times during the calculation
of the energy balance. The value of the variables at each iteration are
stored in memory to aid in the diagnosis of convergence.
A special case applies if NITER
=2.
canopy_zetar
and canopy_zetash
are also bounded by the interval
[CZETNEG, CZETPOS]
.
The outputs canopy_zetar
and canopy_zetash
are known as canopy%zetar
and canopy%zetash
elsewhere in the code.
NITER
(=4) is defined in cable_types_mod; CZETMUL
, CZET0
,
CZETPOS
and CZETNEG
in cable_phys_constants_mod.
Kowalczyk et al. (2006) - section 3.1, equations 1-9.
WARNING The INTENT statements for canopy_zetar
and canopy_zetash
need to be INTENT(INOUT): currently previous values are reset at each call
of the subroutine. It means the initialisations in define_canopy are
useless (the ITER=1 values are lost) and for SLI, on bare soils,
canopy_zetash
gets crazy values for all iterations.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mp |
number of land points (-) |
||
integer, | intent(out) | :: | iterplus | |||
integer, | intent(in) | :: | NITER |
number of MO-iterations (-) |
||
real, | intent(out) | :: | canopy_zetar(mp,NITER) |
stability parameter (-) |
||
integer, | intent(in) | :: | iter |
iteration counter (-) |
||
integer, | intent(in) | :: | nrb |
number of radiation bands (-) |
||
real, | intent(in) | :: | CVONK | |||
real, | intent(in) | :: | CGRAV | |||
real, | intent(in) | :: | CCAPP | |||
real, | intent(in) | :: | CLAI_THRESH | |||
real, | intent(in) | :: | CZETmul | |||
real, | intent(in) | :: | CZETPOS | |||
real, | intent(in) | :: | CZETNEG | |||
character(len=1), | intent(in) | :: | cable_user_soil_struc |
name of soil model used |
||
real, | intent(in) | :: | air_rho(mp) |
air density (kg m) |
||
real, | intent(in) | :: | met_tk(mp) |
reference level air temperature (K) |
||
real, | intent(in) | :: | met_fsd(mp,nrb) |
downwelling shortwave (Wm) |
||
real, | intent(in) | :: | rough_zref_tq(mp) |
reference height for T and q (m) |
||
real, | intent(in) | :: | rough_hruff(mp) |
height of canopy (above snow) (m) |
||
real, | intent(in) | :: | rough_term6a(mp) |
term from ruff_resist (-) |
||
real, | intent(in) | :: | rough_z0soilsn(mp) |
roughness length of soil or snow (m) |
||
real, | intent(in) | :: | canopy_vlaiw(mp) |
canopy leaf area (mm) |
||
real, | intent(out) | :: | canopy_zetash(mp,NITER) |
stability parameter for soil (-) |
||
real, | intent(in) | :: | canopy_us(mp) |
friction velocity (ms) |
||
real, | intent(in) | :: | canopy_fh(mp) |
sensible heat flux (Wm) |
||
real, | intent(in) | :: | canopy_fe(mp) |
latent heat flux (Wm) |
||
real, | intent(in) | :: | canopy_fhs(mp) |
soil sensible heat flux (Wm) |
||
real, | intent(in) | :: | canopy_fes(mp) |
soil latent heat flux (Wm) |