StomtaModels API

Stomatal model schemes

The StomataModels module relies mainly on Photosynthesis and PlantHydraulics modules to predict stomatal behavior from plant physiology. This module has both empirical and optimal stomatal models. These stomatal models are abstractized to an abstract AbstractStomatalModel, which further has subtypes EmpiricalStomatalModel and OptimizationStomatalModel.

Currently, the StomataModels module has four empirical model schemes, and they are

Land.StomataModels.ESMBallBerryType
struct ESMBallBerry{FT}

An empirical model parameter set type for Ball-Berry type model. The equation used for Ball-Berry type model is

\[gs = g0 + g1 ⋅ RH ⋅ \dfrac{A}{Cs}\]

Fields

  • g0::Any

: minimal stomatal conductance g0 [mol m⁻² s⁻¹]

  • g1::Any

: slope of conductance-photosynthesis correlation [unitless]

source
Land.StomataModels.ESMGentineType
struct ESMGentine{FT}

An empirical model parameter set type for Gentine type model. The equation used for Gentine type model is

\[gs = g0 + g1 ⋅ \dfrac{k_{leaf}}{k_{max}} ⋅ \dfrac{A}{Ca}.\]

Note it that the Gentine model does not require for a β function to tune the soil drought response, but the use of k_leaf also does not permit post-drought stomatal response unless k_leaf can be recovered.

Fields

  • g0::Any

: minimal stomatal conductance g0 [mol m⁻² s⁻¹]

  • g1::Any

: slope of conductance-photosynthesis correlation [unitless]

source
Land.StomataModels.ESMLeuningType
struct ESMLeuning{FT}

An empirical model parameter set type for Leuning type model. The equation used for Leuning type model is

\[gs = g0 + g1 ⋅ \dfrac{A}{Cs - Γ^{*}} ⋅ \dfrac{1}{1 + \dfrac{VPD}{d0}}\]

Fields

  • g0::Any

: minimal stomatal conductance g0 [mol m⁻² s⁻¹]

  • g1::Any

: slope of conductance-photosynthesis correlation [unitless]

  • d0::Any

: fitting parameter of d/d0 below the fraction, same unit as vpd [Pa]

source
Land.StomataModels.ESMMedlynType
struct ESMMedlyn{FT}

An empirical model parameter set type for Medlyn type model. The equation used in Medlyn type model is

\[gs = g0 + 1.6 ⋅ \left( 1 + \dfrac{g1}{\sqrt{VPD}} \right) ⋅ \dfrac{A}{Ca}\]

Fields

  • g0::Any

: minimal stomatal conductance g0 [mol m⁻² s⁻¹]

  • g1::Any

: slope of conductance-photosynthesis correlation [Pa⁽⁵⁾]

source

All the empirical models rely on beta functions to make corrections over stomatal conductance to account for the stomatal closure with drier soil. We have the following prescribed beta function types, and they are:

Some beta functions make correction over the g1 parameter as in the empitical models, and they are:

Land.StomataModels.BetaGLinearPleafType
mutable struct BetaGLinearPleaf{FT}

Linear β function for g1 based on soil water potential.

Fields

  • p_max::Any

: Upper bound of Pleaf [MPa]

  • p_min::Any

: Lower bound of Pleaf [MPa]

source
Land.StomataModels.BetaGLinearPsoilType
mutable struct BetaGLinearPsoil{FT}

Linear β function for g1 based on soil water potential.

Fields

  • p_max::Any

: Upper bound of Psoil [MPa]

  • p_min::Any

: Lower bound of Psoil [MPa]

source
Land.StomataModels.BetaGLinearSWCType
mutable struct BetaGLinearSWC{FT}

Linear β function for g1 based on soil water content.

Fields

  • swc_max::Any

: Upper bound of SWC

  • swc_min::Any

: Lower bound of SWC

source

Some beta functions make correction over the photosynthetic capacity as in the Photosynthesis module, and they are:

Land.StomataModels.BetaVLinearPleafType
mutable struct BetaVLinearPleaf{FT}

Linear β function for Vcmax based on soil water potential.

Fields

  • p_max::Any

: Upper bound of Pleaf [MPa]

  • p_min::Any

: Lower bound of Pleaf [MPa]

source
Land.StomataModels.BetaVLinearPsoilType
mutable struct BetaVLinearPsoil{FT}

Linear β function for Vcmax based on soil water potential.

Fields

  • p_max::Any

: Upper bound of Psoil [MPa]

  • p_min::Any

: Lower bound of Psoil [MPa]

source
Land.StomataModels.BetaVLinearSWCType
mutable struct BetaVLinearSWC{FT}

Linear β function for Vcmax based on soil water content.

Fields

  • swc_max::Any

: Upper bound of SWC

  • swc_min::Any

: Lower bound of SWC

source

The beta functions are generalized with

Land.StomataModels.β_factorFunction
β_factor(hs::LeafHydraulics{FT},
         svc::AbstractSoilVC{FT},
         bt::AbstractBetaFunction{FT},
         p_leaf::FT,
         p_soil::FT,
         swc::FT
) where {FT<:AbstractFloat}

Calculate the β correction factor, given

  • hs LeafHydraulics structure
  • svc Soil vulnerability curve
  • bt AbstractBetaFunction type struct
  • p_leaf Leaf water potential [MPa]
  • p_soil Soil water potential [MPa]
  • swc Soil water content
source

The StomataModels module also contains five optimization model schemes:

Land.StomataModels.OSMEllerType
struct OSMEller

An optimization model parameter set type for Eller model. The equation used for Eller model is

\[\dfrac{∂Θ}{∂E} = -\dfrac{∂K}{∂E} ⋅ \dfrac{A}{K}\]

where K is $\dfrac{∂E}{∂P}$.

Fields

source
Land.StomataModels.OSMSperryType
struct OSMSperry

An optimization model parameter set type for Sperry model. The equation used for Sperry model is

\[\dfrac{∂Θ}{∂E} = -\dfrac{∂K}{∂E} ⋅ \dfrac{A_{max}}{K_{max}}\]

where K is $\dfrac{∂E}{∂P}$.

Fields

source
Land.StomataModels.OSMWangType
struct OSMWang

An optimization model parameter set type for Eller type model. The equation used for Wang model is

\[\dfrac{∂Θ}{∂E} = \dfrac{A}{E_{crit} - E}\]

Fields

source
Land.StomataModels.OSMWAPType
struct OSMWAP{FT}

An optimization model parameter set type for Wolf-Anderegg-Pacala type model. The equation used for Wolf-Anderegg-Pacala model is

\[\dfrac{∂Θ}{∂E} = \dfrac{2aP + b}{K}\]

where K is ∂P/∂E.

Fields

  • a::Any

: Quadratic equation parameter [μmol m⁻² s⁻¹ MPa⁻²]

  • b::Any

: Quadratic equation parameter [μmol m⁻² s⁻¹ MPa⁻¹]

source
Land.StomataModels.OSMWAPModType
struct OSMWAPMod{FT}

An optimization model parameter set type for Wolf-Anderegg-Pacala type model, modified by adding a photosynthesis component while set b and c = 0. The equation used for modified Wolf-Anderegg-Pacala model is

\[\dfrac{∂Θ}{∂E} = \dfrac{aAP}{K}\]

where P is absolute value of leaf xylem pressure.

Fields

  • a::Any

: Quadratic equation parameter [mol mol⁻¹ MPa⁻¹]

source

CanopyLayer

The StomataModels module is designed for multi-layer canopies, and each canopy has multiple leaves. The stomatal behaviors are modeled per layer basis, and the layer may contain any number of leaves starting from 1. Photosynthesis-related information is stored in CanopyLayer struct, but be aware that the leaves have uniform photosynthetic parameters and temperature (conductances are different in response to light environment).

Land.StomataModels.CanopyLayerType
struct CanopyLayer{FT}

Struct to store leaf information (multi-dimensional).

Fields

  • ps::Land.Photosynthesis.Leaf

: leaf photosynthesis system

  • ps_m::Land.Photosynthesis.Leaf

: Memory leaf photosynthesis system

  • LA::AbstractFloat

: Total leaf area [m²]

  • LAI::AbstractFloat

: Leaf area index in the layer

  • tLAI::AbstractFloat

: Total leaf area index in the layer

  • APAR_m::AbstractFloat

: Memory APAR [μmol m⁻² s⁻¹]

  • envir_m::Land.Photosynthesis.AirLayer

: Memory environment

  • n_leaf::Int64

  • H::Vector{FT} where FT<:AbstractFloat

: Sensible Heat Flux [W m⁻²]

  • LE::Vector{FT} where FT<:AbstractFloat

: Latent Heat Flux [W m⁻²]

  • Rn::Vector{FT} where FT<:AbstractFloat

: Net Radiation Balance [W m⁻²]

  • LV::AbstractFloat

: Latent Heat of evaporation [J mol⁻¹]

  • T::AbstractFloat

: Temperature [K]

  • T_old::AbstractFloat

: Old temperature [K]

  • width::AbstractFloat

: Leaf width [m]

  • g_bc::Vector{FT} where FT<:AbstractFloat

: Boundary layer conductance to CO₂ [mol m⁻² s⁻¹]

  • g_bh::Vector{FT} where FT<:AbstractFloat

: Boundary layer conductance to heat [mol m⁻² s⁻¹]

  • g_bw::Vector{FT} where FT<:AbstractFloat

: Boundary layer conductance to H₂O [mol m⁻² s⁻¹]

  • g_lc::Vector{FT} where FT<:AbstractFloat

: Leaf diffusive conductance to water CO₂ [mol m⁻² s⁻¹]

  • g_lw::Vector{FT} where FT<:AbstractFloat

: Leaf diffusive conductance to water H₂O [mol m⁻² s⁻¹]

  • g_m::Vector{FT} where FT<:AbstractFloat

: Mesophyll conductance for CO₂ [mol m⁻² s⁻¹]

  • g_sc::Vector{FT} where FT<:AbstractFloat

: Stomatal conductance to water CO₂ [mol m⁻² s⁻¹]

  • g_sw::Vector{FT} where FT<:AbstractFloat

: Stomatal conductance to water H₂O [mol m⁻² s⁻¹]

  • g_ias_c::AbstractFloat

: Gias correction constant

  • g_ias_e::AbstractFloat

: Gias correction exponent

  • g_max::AbstractFloat

: Maximal leaf diffusive conductance [mol m⁻² s⁻¹]

  • g_max25::AbstractFloat

: Maximal leaf diffusive conductance at 298.15 K [mol m⁻² s⁻¹]

  • g_min::AbstractFloat

: Minimal leaf diffusive conductance [mol m⁻² s⁻¹]

  • g_min25::AbstractFloat

: Minimal leaf diffusive conductance at 298.15 K [mol m⁻² s⁻¹]

  • p_i::Vector{FT} where FT<:AbstractFloat

: Leaf internal CO₂ partial pressure [Pa]

  • p_s::Vector{FT} where FT<:AbstractFloat

: Leaf surface CO₂ partial pressure [Pa]

  • p_sat::AbstractFloat

: Leaf saturation vapor pressure [Pa]

  • Ac::Vector{FT} where FT<:AbstractFloat

: RubisCO limited photosynthetic rate [μmol m⁻² s⁻¹]

  • Aj::Vector{FT} where FT<:AbstractFloat

: Light limited photosynthetic rate [μmol m⁻² s⁻¹]

  • Ag::Vector{FT} where FT<:AbstractFloat

: Gross photosynthetic rate [μmol m⁻² s⁻¹]

  • An::Vector{FT} where FT<:AbstractFloat

: Net photosynthetic rate [μmol m⁻² s⁻¹]

  • Ap::Vector{FT} where FT<:AbstractFloat

: Product limited photosynthetic rate [μmol m⁻² s⁻¹]

  • J::Vector{FT} where FT<:AbstractFloat

: Electron transport [μmol m⁻² s⁻¹]

  • J_pot::Vector{FT} where FT<:AbstractFloat

: Potential Electron Transport Rate [μmol m⁻² s⁻¹]

  • e2c::Vector{FT} where FT<:AbstractFloat

: Total efficiency, incl. photorespiration [mol CO₂ mol⁻¹ e-]

  • Fm′::Vector{FT} where FT<:AbstractFloat

: light adapted yield (Kp=0)

  • Fo′::Vector{FT} where FT<:AbstractFloat

: light-adapted fluorescence yield in the dark (Kp=max)

  • Ja::Vector{FT} where FT<:AbstractFloat

: Actual electron transport rate [μmol m⁻² s⁻¹]

  • NPQ::Vector{FT} where FT<:AbstractFloat

: Non-Photochemical quenching

  • qQ::Vector{FT} where FT<:AbstractFloat

: Photochemical quenching

  • qE::Vector{FT} where FT<:AbstractFloat

: energy quenching

  • φ::Vector{FT} where FT<:AbstractFloat

: PSII yield

  • φs::Vector{FT} where FT<:AbstractFloat

: Steady-state (light-adapted) yield (aka Fs)

  • Fm::AbstractFloat

: dark adapted yield (Kp=0)

  • Fo::AbstractFloat

: dark-adapted fluorescence yield (Kp=max)

  • APAR::Vector{FT} where FT<:AbstractFloat

: Absorbed photosynthetic active radiation [μmol m⁻² s⁻¹]

  • LAIx::Vector{FT} where FT<:AbstractFloat

: Leaf area fractions

  • a_max::Vector{FT} where FT<:AbstractFloat

: Maximal photosynthetic rate [μmol m⁻² s⁻¹]

  • e::Vector{FT} where FT<:AbstractFloat

: Flow rate [mol m⁻² s⁻¹]

  • ec::AbstractFloat

: Critical flow rate [mol m⁻² s⁻¹]

  • kr_max::AbstractFloat

: Maximal hydraulic conductance ratio

  • p_ups::AbstractFloat

: Base xylem pressre [MPa]

  • p_old::AbstractFloat

: Base xylem pressre memory [MPa]

  • ff::AbstractFloat

: Fitness factor for nighttime stomtal conductance

  • τ_esm::AbstractFloat

: τ for empirical stomatal models [-], Δg/Δt = (g_ss - gsw) / τ

  • τ_osm::AbstractFloat

: τ for optimal stomatal models [μmol⁻¹], Δg/Δt = (∂A/∂E - ∂Θ/∂E) * τ

  • τ_noc::AbstractFloat

: τ for nighttime optimal stomatal models [μmol⁻¹]

source

Stomatal conductance

For empirical stomatal models, the stomatal conductance is computed as the intercept of two functions: an empirical function that describe stomatal responses to the physiological and environmental cues and an function that follows the diffusion nature of H₂O and CO₂. The abstractized function for the empirical correlation is

Land.StomataModels.stomatal_conductanceFunction
stomatal_conductance(
            model::EmpiricalStomatalModel{FT},
            leaf::Leaf{FT},
            envir::AirLayer{FT},
            β::FT
) where {FT<:AbstractFloat}
stomatal_conductance(
            model::EmpiricalStomatalModel{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            β::FT
) where {FT<:AbstractFloat}
stomatal_conductance(
            model::EmpiricalStomatalModel{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            β::FT,
            ind::Int
) where {FT<:AbstractFloat}

Steady state gsw from empirical approach given

  • model EmpiricalStomatalModel type empirical model parameter set
  • leaf [Leaf] type struct
  • canopyi CanopyLayer type struct
  • envir [AirLayer] type struct
  • β Correction factor over the g1 part of an empirical model
  • ind Nth leaf in the canopy layer
source

For optimization stomatal models, the stomatal conductance is computed as the point where the marginal carbon gains equals the marginal carbon risk. The marginal carbon gain and risk are generally numerically computed by marginally increasing transpiration rate.

This module uses ConstrainedRootSolver module to iterate through the two functions to find the solution. The aim is to find the stomatal conductance when the solution_diff! function equals 0. The solution_diff! returns the diference between real and model-predicted conductances for empirical stomatal models, and the difference between marginal carbon gain and risk for optimization stomatal models.

Land.StomataModels.solution_diff!Function
solution_diff!(x::FT,
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            svc::AbstractSoilVC{FT},
            psoil::FT,
            swc::FT,
            envir::AirLayer{FT},
            sm::OptimizationStomatalModel{FT},
            bt::AbstractBetaFunction{FT},
            mode::GlcDrive,
            ind::Int
) where {FT<:AbstractFloat}
solution_diff!(x::FT,
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            envir::AirLayer{FT},
            sm::AbstractStomatalModel{FT},
            mode::AbstractDrive,
            ind::Int
) where {FT<:AbstractFloat}

Calculate the difference to be minimized for a given

The former function works for all empirical stomatal models, and the latter works for all optimization based models.

source

In the solution_diff! function, leaf photosynthetic rates is modeled using gas_exchange!, which calculates the gas exchange rates from a known total leaf diffusive conductance using GlcDrive mode.

However, these functions do not force stomatal conductance to stay in its ranges. For example, the stomatal conductance solution is set to be zero if light is lower than the compensation point. In this case, the solution_diff! function has to be used along with a control function to guarantee realistic stomatal conductance.

Land.StomataModels.gsw_control!Function
gsw_control!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            ind::Int
) where {FT<:AbstractFloat}
gsw_control!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT}
) where {FT<:AbstractFloat}

make sure g_sw is in its physiological range limited by diffusion, given

  • photo_set [C3ParaSet] or [C4ParaSet] type parameter set
  • canopyi CanopyLayer type struct
  • envir [AirLayer] type struct
  • ind Nth leaf

Note that this function is meant to use jointly with gas_exchange! when computing optimal stomtal conductance.

source

To facilitate the use of the StomataModels module, an abstractized function is provided for conveniently obtaining stomatal conductance from given environmental conditions.

Land.StomataModels.gas_exchange!Function
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            psoil::FT,
            swc::FT,
            envir::AirLayer{FT},
            sm::EmpiricalStomatalModel{FT},
            bt::AbstractBetaFunction{FT}
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            psoil::FT,
            swc::FT,
            envir::AirLayer{FT},
            sm::EmpiricalStomatalModel{FT},
            bt::AbstractBetaFunction{FT},
            ind::Int
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            envir::AirLayer{FT},
            sm::AbstractStomatalModel{FT}
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            envir::AirLayer{FT},
            sm::AbstractStomatalModel{FT},
            ind::Int
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::TreeSimple{FT},
            envir::AirLayer{FT},
            sm::OSMWang{FT}
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            drive::GlcDrive,
            ind::Int,
            glc::FT
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            drive::GlcDrive,
            ind::Int
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            drive::GlcDrive
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            drive::GswDrive,
            ind::Int,
            gsw::FT
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            drive::GswDrive,
            ind::Int
) where {FT<:AbstractFloat}
gas_exchange!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            envir::AirLayer{FT},
            drive::GswDrive
) where {FT<:AbstractFloat}

Calculate steady state gas exchange rates, given

Note 1: When there is no drive mode in the parameter list, the function calculates the steady state stomatal conductance first, and then the gas exchange rates.

Note 2: When using GlcDrive mode, gas exchange rates are computed using the given glc. However, this option does not make the gsw control, so it is not guaranteed that gsw is within the physiological range. Thus, gsw control should be made outside this function. This option is supposed to be used in the optimal stomatl conductance models only, because optimal conductance can be outside the physiological stomatal conductance range. Thus, using this option for other purposes need to be cautious. In this case, it is recommended to use the GswDrive mode.

Note 3: When using GswDrive mode, gas exchange rates are computed using the given gsw. Moreover, gsw control so that gsw is within the physiological range.

source

To speed up the calculations, leaf physiological parameters are updated only if the environmental conditions changes. For example, PAR (photosyntheis active radiation) is constant when we iterate solution_diff!, and the electron transport is only updated once. Similar to the cases of leaf temperature and soil moisture. This kind of functions used in the present module are

Land.StomataModels.update_leaf_TP!Function
update_leaf_TP!(
            photo_set::AbstractPhotoModelParaSet{FT},
            canopyi::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            envir::AirLayer{FT}
) where {FT<:AbstractFloat}

Update leaf physiological parameters if temperature or pressure changes in the daytime, given

  • photo_set [C3ParaSet] or [C4ParaSet] type parameter set
  • canopyi CanopyLayer type struct
  • hs Leaf hydraulic system
  • envir [AirLayer] type struct
source
Land.StomataModels.update_leaf_AK!Function
update_leaf_AK!(
        photo_set::AbstractPhotoModelParaSet{FT},
        canopyi::CanopyLayer{FT},
        hs::LeafHydraulics{FT},
        envir::AirLayer{FT}
) where {FT<:AbstractFloat}

Update leaf maximal A and K for Sperry model, given

  • photo_set [C3ParaSet] or [C4ParaSet] type parameter set
  • canopyi CanopyLayer type struct
  • envir [AirLayer] type struct
source

I'd like to emphasize it here that the gas_exchange! function only applies to the case of constant leaf temperature because leaf energy budget is not calculated, and thus gas_exchange! is only applicable to (1) known leaf temperature, and (2) prognostically modeling the non-steady state stomatal behaviors. As to the steady state case, leaf energy budget has to be considered. For the prognotic stomatal conductance, it is recommended to use gas_exchange! function at GswDrive mode.

Note it here that stomtal conductance is controlled in this function, and thus no additional control like gsw_control! is required if gas_exchange! is used.

Other functions

Land.StomataModels.dRdEFunction
dRdE(photo_set::AbstractPhotoModelParaSet{FT},
     clayer::CanopyLayer{FT},
     envir::AirLayer{FT},
     LAI::FT
) where {FT<:AbstractFloat}

Calculate the marginal decrease of respiration rate, given

  • photo_set AbstractPhotoModelParaSet type struct
  • clayer CanopyLayer type of struct
  • envir AirLayer type struct
  • LAI Total leaf area index of whole canopy
source
Land.StomataModels.dTdEFunction
dTdE(clayer::CanopyLayer{FT},
     envir::AirLayer{FT}
) where {FT<:AbstractFloat}

Calculate the margian decrease in leaf temperature, given

  • clayer CanopyLayer type of struct
  • envir AirLayer type struct
  • LAI Total leaf area index of whole canopy
source
Land.StomataModels.dΘdEFunction
dΘdE(photo_set::AbstractPhotoModelParaSet{FT},
     clayer::CanopyLayer{FT},
     sm::OSMWang{FT}(),
     g_sw::FT
) where {FT<:AbstractFloat}

Calculate the margian carbon cost related to nighttime transpiration, given

  • photo_set AbstractPhotoModelParaSet type struct
  • clayer CanopyLayer type of struct
  • sm OSMWang type stomatal model
  • g_sw Given leaf level stomatal conductance
source
Land.StomataModels.nocturnal_diff!Function
nocturnal_diff!(
            x::FT,
            photo_set::AbstractPhotoModelParaSet{FT},
            clayer::CanopyLayer{FT},
            envir::AirLayer{FT},
            sm::OSMWang{FT}()
) where {FT<:AbstractFloat}

Calculate the difference between marginal gain and risk of nighttime transpiration, given

  • x Given leaf level stomatal conductance
  • photo_set AbstractPhotoModelParaSet type struct
  • clayer CanopyLayer type of struct
  • envir AirLayer type struct
  • sm OSMWang type stomatal model
source
Land.StomataModels.prognostic_gsw!Function
prognostic_gsw!(
            clayer::CanopyLayer{FT},
            envir::AirLayer{FT},
            sm::EmpiricalStomatalModel{FT},
            β::FT,
            Δt::FT
) where {FT<:AbstractFloat}
prognostic_gsw!(
            photo_set::AbstractPhotoModelParaSet{FT},
            clayer::CanopyLayer{FT},
            hs::LeafHydraulics{FT},
            envir::AirLayer{FT},
            sm::OSMWang{FT},
            Δt::FT
) where {FT<:AbstractFloat}

Update g_sw prognostically, given

  • clayer A CanopyLayer type struct
  • envir AirLayer type environmental conditions
  • sm EmpiricalStomatalModel or OSMWang type stomatal model
  • β Tune factor to stomatal g1. 1 for AbstractBetaV mode
  • Δt Time interval for prognostic stomatal conductance
  • photo_set AbstractPhotoModelParaSet type photosynthesis model, currently supports OSMWang model only
  • hs Leaf hydraulic system
source