Photosynthesis.jl

Installation

using Pkg;
Pkg.add("Photosynthesis");

About

Photosynthesis models for C3 and C4 photosynthesis. Photosynthesis.jl supports foour photosynthesis models and three fluorescence models. The photosynthesis models are

  • C3-Jmax model based on classic C3 model, which is known as FvCB model (Farquhar et al. 1980)
  • C3-Vqmaxe model based on a new C3 model developed by Johnson and Berry (2021)
  • C4-Vcmax model based on classic C4 model, which is known as Collaz model (Collaz et al. 1992)
  • C4-Vpmax model based on PEP activity as in Boyd et al. (2015)

We, however, made some modifications by adding a product limited photosynthetic rate to the C3 models, and a Rubisco limited photosynthetic rate to the C4 model.

Besides the tranditional photosynthesis model, we also included functions to compute fluorescence related parameters, such as fluorescence quantum yield and non-photochemical quenching. he two implemented fluorescence models are

  • Van der Tol et al. (2013) fluorescence model to use with C3-Jmax and C4 models
  • Han et al. (2022) fluorescence model to used with C3-Jmax and C4 models
  • Johnson and Berry (2021) fluorescence model to use with C3Cytochrome model

Starting from v0.5, photosynthesis and fluorescence model selection is done by setting up the fields of a PhotosynthesisMethods struct (see the tutorial in the tests folder).

We aim to make Photosynthesis.jl a standalone package rather than just part of the Emerald model. Thus, in the documentations below, we will present examples of how to use Photosynthesis.jl at the leaf level. Same logic applies to canopy scale simulations.

Notes

In our model, we used PPAR, rather than PAR or APAR. PPAR is the photosynthetically active radiation (PAR) that goes to photosystems; PPAR is different from APAR (PAR absorbed by leaf, some APAR does not go to photosystems).

Photosynthesis Model Procedure

For all three photosynthesis+fluorescence combo models, photosynthetic rates are computed using the following procedure:

  • Update temperature dependent variables using photosystem_temperature_dependence!
  • Calculate electron transport rate using photosystem_electron_transport!
  • Calculate RubisCO limited rate using rubisco_limited_rate!
  • Calculate light limited rate using light_limited_rate!
  • Calculate product limited rate using product_limited_rate!
  • Calculate gross and net rates using colimit_photosynthesis!
  • Update fluorescence related variables using photosystem_coefficients!

Yet, for convenience, all the listed steps are combined in one function photosynthesis!.

0. Key Structures and Methods

Photosynthesis.C3TraitType
mutable struct C3Trait{FT}

Struct that contains the trait variables for C3 photosynthesis

Fields

  • K_OCS::Any: Multiplier to derive internal conductance for OCS [mol μmol⁻¹]

  • b₆f::Any: Total concentration of Cytochrome b₆f [μmol m⁻²]

  • j_max25::Any: Maximal electron transport rate at 298.15 K [μmol m⁻² s⁻¹]

  • r_d25::Any: Respiration rate at 298.15 K [μmol m⁻² s⁻¹]

  • v_cmax25::Any: Maximal carboxylation rate at 298.15 K [μmol m⁻² s⁻¹]

source
Photosynthesis.C4TraitType
mutable struct C4Trait{FT}

Struct that contains the trait variables for C4 photosynthesis

Fields

  • K_OCS::Any: Multiplier to derive internal conductance for OCS [mol μmol⁻¹]

  • r_d25::Any: Respiration rate at 298.15 K [μmol m⁻² s⁻¹]

  • v_cmax25::Any: Maximal carboxylation rate at 298.15 K [μmol m⁻² s⁻¹]

  • v_pmax25::Any: Maximal PEP carboxylation rate at 298.15 K [μmol m⁻² s⁻¹]

source
Photosynthesis.C3StateType
mutable struct C3State{FT}

Struct that contains the state variables for C3 photosynthesis (VJP model)

Fields

  • EFF_1::Any: Coefficient 4.0/4.5 for NADPH/ATP requirement stochiometry, respectively

  • EFF_2::Any: Coefficient 8.0/10.5 for NADPH/ATP requirement stochiometry, respectively

  • k_npq_sus::Any: Sustained NPQ rate constant (for seasonal changes, default is zero)

source
Photosynthesis.C4StateType
mutable struct C4State{FT}

Struct that contains the state variables for C4 photosynthesis (VJP model)

Fields

  • k_npq_sus::Any: Sustained NPQ rate constant (for seasonal changes, default is zero)
source
Photosynthesis.LeafPhotosystemAuxilType
mutable struct LeafPhotosystemAuxil{FT}

Struct that contains the auxiliary variables for leaf photosynthesis

Fields

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

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

  • a_i::Vector: Intermediate photosynthetic rate [μmol m⁻² s⁻¹]

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

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

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

  • e2c::Vector: Electron to CO₂ coefficient

  • f_psii::Any: Fraction of absorbed light used by PSII ETR

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

  • j_max::Any: Maximal electron transport rate at leaf temperature [μmol m⁻² s⁻¹]

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

  • j_psi::Vector: PSI electron transport rate after colimitation

  • k_c::Any: RubisCO coefficient Kc [Pa]

  • k_m::Any: Michaelis-Menten's coefficient [Pa]

  • k_o::Any: RubisCO coefficient Ko [Pa]

  • k_pep::Any: PEP coefficient Kpep [Pa]

  • k_pep_clm::Any: PEP coefficient Kpep fro CLM (different algorithm) [Pa]

  • k_q::Any: Maximal turnover rate of Cytochrome b₆f [e⁻ s⁻¹]

  • γ_star::Any: CO₂ compensation point with the absence of Rd [Pa]

  • r_d::Any: Respiration rate at leaf temperature [μmol m⁻² s⁻¹]

  • v_cmax::Any: Maximal carboxylation rate at leaf temperature [μmol m⁻² s⁻¹]

  • v_pmax::Any: Maximal PEP carboxylation rate at leaf temperature [μmol m⁻² s⁻¹]

  • v_qmax::Any: Maximal Cytochrome b₆f activity [μmol e⁻ m⁻² s⁻¹]

  • η::Vector: ratio between JP700 and JP680

  • η_c::Any: Coupling efficiency of cyclic electron flow [mol ATP mol⁻¹ e⁻]

  • η_l::Any: Coupling efficiency of linear electron flow [mol ATP mol⁻¹ e⁻]

  • ϕ_d::Vector: Heat dissipation yield

  • ϕ_f::Vector: Fluorescence yield

  • ϕ_n::Vector: Non-photochemical yield

  • ϕ_p::Vector: Photochemical yield

  • ϕ_f1::Vector: Fluorescence yield of PSI

  • ϕ_f2::Vector: Fluorescence yield of PSII

  • f_m::Any: Dark adapted yield (Kp=0)

  • f_m′::Vector: Light adapted yield (Kp=0)

  • f_o::Any: Dark-adapted fluorescence yield (Kp=max)

  • f_o′::Vector: Light-adapted fluorescence yield in the dark (Kp=max)

  • npq::Vector: Non-Photochemical quenching

  • q_e::Vector: Energy quenching

  • q_p::Vector: Photochemical quenching

  • k_d::Any: Rate constant for thermal dissipation

  • k_n::Vector: Reversible NPQ rate constant (initially zero)

  • k_p::Vector: Rate constant for photochemistry

  • ϕ_psi_max::Any: Maximal PS I photochemical yield

  • ϕ_psii_max::Any: max PSII yield (knpq_rev = 0, all RC open)

  • cache1::Vector

  • cache2::Vector

  • cache3::Vector

  • cache4::Vector

  • cache5::Vector

  • cache6::Vector

  • cache7::Vector

  • cache8::Vector

  • cache9::Vector

  • cache0::Vector

source
Photosynthesis.LeafPhotosystemType
mutable struct LeafPhotosystem{FT}

Struct that contains the fields for C3 photosynthesis

Fields

  • trait::Union{Photosynthesis.C3Trait{FT}, Photosynthesis.C4Trait{FT}} where FT: Trait variables

  • state::Union{Photosynthesis.C3State{FT}, Photosynthesis.C4State{FT}} where FT: State variables

  • auxil::Photosynthesis.LeafPhotosystemAuxil: Auxilary variables

source

1. Temperature Dependencies

Photosynthesis.ArrheniusPeakType

An ArrheniusPeak type struct using

\[Y_1 = Y_0 \cdot \exp \left( \dfrac{H_a}{R T_0} - \dfrac{H_a}{R T_1} \right) \cdot \dfrac{ 1 + \exp \left( \dfrac{S_v T_0 - H_d}{R T_0} \right) } { 1 + \exp \left( \dfrac{S_v T_1 - H_d}{R T_1} \right) }\]

source
Photosynthesis.ArrheniusPeak2Type

An ArrheniusPeak2 type struct using

\[Y_1 = Y_0 \cdot \min \left(1, \exp \left( \dfrac{H_a}{R T_0} - \dfrac{H_a}{R T_1} \right) \right) \cdot \min \left(1, \dfrac{ 1 + \exp \left( \dfrac{S_v T_0 - H_d}{R T_0} \right) } { 1 + \exp \left( \dfrac{S_v T_1 - H_d}{R T_1} \right) } \right)\]

source
Photosynthesis.Q10PeakType

A Q10Peak type struct using

\[Y_1 = Y_0 \cdot Q_{10} ^ \dfrac{T_1 - T_0}{10} \cdot \dfrac{ 1 + \exp \left( \dfrac{S_v T_0 - H_d}{R T_0} \right) } { 1 + \exp \left( \dfrac{S_v T_1 - H_d}{R T_1} \right) }\]

source
Photosynthesis.Q10PeakHTType

A Q10PeakHT type struct using

\[Y_1 = Y_0 \cdot Q_{10} ^ \dfrac{T_1 - T_0}{10} \cdot \dfrac{ 1 } { 1 + \exp \left( S_H * (T_1 - T_H) \right) }\]

source
Photosynthesis.Q10PeakLTHTType

A Q10PeakLTHT type struct using

\[Y_1 = Y_0 \cdot Q_{10} ^ \dfrac{T_1 - T_0}{10} \cdot \dfrac{ 1 }{ 1 + \exp \left( S_H * (T_1 - T_H) \right) } \cdot \dfrac{ 1 }{ 1 + \exp \left( S_L * (T_L - T_1) \right) }\]

source
Photosynthesis.temperature_correctionFunction
temperature_correction(
            td::AbstractTemperatureDependency{FT},
            t::FT;
            t_ref::FT = td.T_REF
    ) where {FT}

Return the correction ratio for a temperature dependent variable, given

  • td Arrhenius, ArrheniusPeak, ArrheniusPeak2, Q10, Q10Peak, Q10PeakHT, or Q10PeakLTHT type temperature dependency struture
  • t Target temperature in K
  • t_ref Reference temperature in K, default is td.T_REF (298.15 K)
source
Photosynthesis.temperature_corrected_valueFunction
temperature_corrected_value(td::AbstractTemperatureDependency{FT}, t::FT; t_ref::FT = td.T_REF) where {FT}

Return the temperature corrected value, given

  • td Arrhenius, ArrheniusPeak, ArrheniusPeak2, Q10, Q10Peak, Q10PeakHT, or Q10PeakLTHT type temperature dependency struture
  • t Target temperature in K
  • t_ref Reference temperature in K, default is td.T_REF (298.15 K)
source
Photosynthesis.photosystem_temperature_dependence!Function
photosystem_temperature_dependence!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_air::FT,
            t::FT) where {FT}

Update the temperature dependencies of C3 photosynthesis model, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem structure
  • p_air Surface atmosphere pressure in Pa
  • t Target temperature in K
source

2. Electron Transport

Photosynthesis.photosystem_electron_transport!Function
photosystem_electron_transport!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            ppar::Vector{FT},
            p_i::Union{FT,Vector{FT}};
            β::FT = FT(1)
    ) where {FT}

Update the electron transport rates, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem type struct
  • ppar Absorbed photosynthetically active radiation in μmol m⁻² s⁻¹
  • p_i Internal CO₂ partial pressure in Pa, used to compute etoc
  • β Tuning factor to downregulate effective Vmax, Jmax, and Rd
source

3. RubisCO Limited Rate

Photosynthesis.AcMethodC3VcmaxPiType

Method to compute rubisco-limited photosynthesis rate (Ac):

\[A_\text{c} = V_{\text{cmax}} \dfrac{(P_{\text{i}} - \Gamma)}{(P_{\text{i}} + K_{\text{m}})}\]

source
Photosynthesis.rubisco_limited_rate!Function
rubisco_limited_rate!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_air::FT,
            p_co2::FT,
            g_lc::Vector{FT};
            β::FT = FT(1)
    ) where {FT}
rubisco_limited_rate!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_i::Union{FT,Vector{FT}};
            β::FT = FT(1)
    ) where {FT}

Update the RubisCO limited photosynthetic rate, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem struct
  • p_air Surface atmosphere pressure in Pa
  • p_co2 Surface CO₂ partial pressure in Pa
  • g_lc Leaf diffusive conductance to CO₂ in [mol m⁻² s⁻¹] (if appears in the function signature, it is meant for conductance mode)
  • β Tuning factor to downregulate effective Vmax, Jmax, and Rd
  • p_i Internal CO₂ partial pressure in Pa
source

4. Light Limited Rate

Photosynthesis.AjMethodC3JmaxPiType

Method to compute electron transport-limited photosynthesis rate (Aj):

\[A_\text{j} = \dfrac{J}{4} \dfrac{(P_{\text{i}} - \Gamma)}{(P_{\text{i}} + 2 \Gamma)}\]

source
Photosynthesis.AjMethodC3VqmaxPiType

Method to compute electron transport-limited photosynthesis rate (Aj) using cytochrome b6f:

\[J = \dfrac{J_{\text{PSI}}}{\eta} A_{\text{j}} = \dfrac{J}{4} \dfrac{(P_{\text{i}} - \Gamma)}{(P_{\text{i}} + 2 \Gamma)}\]

source
Photosynthesis.light_limited_rate!Function
light_limited_rate!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_air::FT,
            p_co2::FT,
            g_lc::Vector{FT};
            β::FT = FT(1)
    ) where {FT}
light_limited_rate!(
            ps::LeafPhotosystem{FT}
    ) where {FT}

Update the electron transport limited photosynthetic rate, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem struct
  • p_air Surface atmosphere pressure in Pa
  • p_co2 Surface CO₂ partial pressure in Pa
  • g_lc Leaf diffusive conductance to CO₂ in [mol m⁻² s⁻¹] (if appears in the function signature, it is meant for conductance mode)
  • β Tuning factor to downregulate effective Vmax, Jmax, and Rd
source

5. Product Limited Rate

Photosynthesis.ApMethodC4VpmaxPiType

Method to compute product-limited photosynthesis rate (Ap) from Vpmax:

\[A_{\text{p}} = V_{\text{pmax}} \dfrac{P_{\text{i}}}{(P_{\text{i}} + K_{\text{pep}})}\]

source
Photosynthesis.product_limited_rate!Function
product_limited_rate!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_air::FT,
            p_co2::FT,
            g_lc::Vector{FT};
            β::FT = FT(1)
    ) where {FT}
product_limited_rate!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_i::Union{FT,Vector{FT}};
            β::FT = FT(1)
    ) where {FT}

Update the product limited photosynthetic rate, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem struct
  • p_air Surface atmosphere pressure in Pa
  • p_co2 Surface CO₂ partial pressure in Pa
  • g_lc Leaf diffusive conductance to CO₂ in [mol m⁻² s⁻¹] (if appears in the function signature, it is meant for conductance mode)
  • β Tuning factor to downregulate effective Vmax, Jmax, and Rd
  • p_i Internal CO₂ partial pressure in Pa
source

6. Colimitation

Photosynthesis.colimited_rateFunction
colimited_rate(
            a_1::FT,
            a_2::FT,
            colim::AbstractColimit{FT}
    ) where {FT}

Return the minimum of two rates, given

  • a_1 Rate 1
  • a_2 Rate 2
  • colim MinimumColimit, QuadraticColimit, SerialColimit, or SquareColimit type struct
source
Photosynthesis.colimited_rate!Function
colimited_rate!(
            a_1::Union{FT,Vector{FT}},
            a_2::Vector{FT},
            a_i::Vector{FT},
            colim::AbstractColimit{FT}
    ) where {FT}

Colimit the rates, given

  • a_1 Rate 1
  • a_2 Rate 2
  • a_i Intermediate rate (overwritten)
  • colim MinimumColimit, QuadraticColimit, SerialColimit, or SquareColimit type struct
source
Photosynthesis.colimit_photosynthesis!Function
colimit_photosynthesis!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT};
            β::FT = FT(1)
    ) where {FT}

Colimit the photosynthesis by rubisco-, light-, and product-limited photosynthetic rates, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem type photosynthesis model
  • β Tuning factor to downregulate effective Vmax, Jmax, and Rd (default is 1)
source
Photosynthesis.KNFluorescenceModelType

Structure that stores van der Tol et al. (2013) fluorescence model parameters.

  • van der Tol et al. (2013) Models of fluorescence and photosynthesis for interpreting measurements of solar-induced chlorophyll fluorescence
source
Photosynthesis.QLFluorescenceModelType

Structure that stores modified Han et al. (2022) fluorescence model parameters.

  • Han et al. (2022) The physiological basis for estimating photosynthesis from Chla fluorescence
source
Photosynthesis.QLFluorescenceModelHanType

Structure that stores original Han et al. (2022) fluorescence model parameters.

  • Han et al. (2022) The physiological basis for estimating photosynthesis from Chla fluorescence
source
Photosynthesis.photosystem_coefficients!Function
photosystem_coefficients!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            ppar::Vector{FT};
            β::FT = FT(1)
    ) where {FT}

Update the rate constants and coefficients in reaction center, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem type struct
  • ppar Absorbed photosynthetically active radiation in μmol m⁻² s⁻¹
  • β Tuning factor to downregulate effective Vmax, Jmax, and Rd
source

Full Pipeline

Photosynthesis.photosynthesis!Function
photosynthesis!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_air::FT,
            p_co2::FT,
            ppar::Vector{FT},
            t::FT,
            g_lc::Vector{FT}
    ) where {FT}
photosynthesis!(
            methods::PhotosynthesisMethods{FT},
            ps::LeafPhotosystem{FT},
            p_air::FT,
            ppar::Vector{FT},
            t::FT,
            p_i::Union{FT,Vector{FT}}
    ) where {FT}

Update the photosynthesis rate, given

  • methods PhotosynthesisMethods structure that contains rate constants, temperature dependency methods, colimitation methods, and model features
  • ps LeafPhotosystem struct
  • p_air Surface atmosphere pressure in Pa
  • p_co2 Surface CO₂ partial pressure in Pa
  • ppar Vector of photosynthetically active radiation
  • t Leaf temperature in K
  • g_lc Leaf diffusive conductance to CO₂ in [mol m⁻² s⁻¹] (if appears in the function signature, it is meant for conductance mode)
  • p_i Vector of intercellular CO₂ partial pressures
source