update_zetar Subroutine

public subroutine update_zetar(mp, iterplus, NITER, canopy_zetar, iter, nrb, CVONK, CGRAV, CCAPP, CLAI_THRESH, CZETmul, CZETPOS, CZETNEG, cable_user_soil_struc, air_rho, met_tk, met_fsd, rough_zref_tq, rough_hruff, rough_term6a, rough_z0soilsn, canopy_vlaiw, canopy_zetash, canopy_us, canopy_fh, canopy_fe, canopy_fhs, canopy_fes)

Purpose

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.

Method

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.

References

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.

Arguments

Type IntentOptional 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)


Called by

proc~~update_zetar~~CalledByGraph proc~update_zetar update_zetar proc~define_canopy define_canopy proc~define_canopy->proc~update_zetar proc~cbm cbm proc~cbm->proc~define_canopy proc~mpidrv_worker~2 mpidrv_worker proc~mpidrv_worker~2->proc~cbm proc~serialdrv serialdrv proc~serialdrv->proc~cbm program~cable_offline_driver cable_offline_driver program~cable_offline_driver->proc~serialdrv