LeafGasExchange.jl

LeafGasExchange.jl implements a coupled leaf gas-exchange model using Cropbox modeling framework. Biochemical photosynthesis models (C₃, C₄) are coupled with empirical stomatal conductance models (Ball–Berry, Medlyn) in addition to radiative energy balance model. Users can run model simulations with custom configuration and visualize simulation results. Model parameters may be calibrated with observation dataset if provided.

Installation

using Pkg
Pkg.add("LeafGasExchange")

Getting Started

using Cropbox
using LeafGasExchange

The package exports four combinations of model (ModelC3BB, ModelC3MD, ModelC4BB, ModelC4MD) from two photosynthesis models (C3, C4) and two stomatal conductance models (BB for Ball-Berry, MD for Medlyn).

parameters(ModelC4MD; alias = true)

Config for 1 system:

ModelC4MD
photon_flux_density=nothing
carbon_dioxide=nothing
relative_humidity=nothing
air_temperature=nothing
wind_speed=nothing
air_pressure=100 kPa
SPAD_greenness=60
SPAD_N_coeff_a=0.0004 g m⁻²
SPAD_N_coeff_b=0.012 g m⁻²
SPAD_N_coeff_c=0 g m⁻²
leaf_nitrogen_content=4.0 g m⁻²
diffusion_coeff_for_water_vapor_in_air_at_20=24.2 mm² s⁻¹
diffusion_coeff_for_co2_in_air_at_20=14.7 mm² s⁻¹
diffusion_coeff_for_heat_in_air_at_20=21.5 mm² s⁻¹
diffusion_coeff_for_momentum_in_air_at_20=15.1 mm² s⁻¹
leaf_width=10 cm
stomatal_ratio=1.0
kinematic_viscosity_of_air=missing
thermal_diffusivity_of_air=missing
g0=0.0 mol bar⁻¹ m⁻² s⁻¹
g1=4.45 kPa¹ᐟ²
photosynthesis_transition_factor=0.99
diffusivity_ratio_boundary_layer=missing
diffusivity_ratio_air=missing
leaf_scattering=0.15
leaf_spectral_correction=0.15
leaf_thermal_emissivity=0.97
latent_heat_of_vaporization_at_25=44 kJ mol⁻¹
specific_heat_of_air=29.3 J K⁻¹ mol⁻¹
absorption_coefficient=0.5
leaf_water_potential=0 MPa
reference_leaf_water_potential=-2.0 MPa
stomata_sensitivity_param=2.3 MPa⁻¹
base_temperature=25 °C
Q10=2
s=2.9 m² g⁻¹
N0=0.25 g m⁻²
bundle_sheath_conductance=0.003 mol bar⁻¹ m⁻² s⁻¹
pep_carboxylase_constant_for_co2_at_25=80 μbar
maximum_pep_carboxylation_rate_for_co2_at_25=70 μmol m⁻² s⁻¹
activation_energy_for_pep_carboxylation=75.1 kJ mol⁻¹
pep_regeneration_rate_for_co2_at_25=80 μmol m⁻² s⁻¹
maximum_carboxylation_rate_at_25=50 μmol m⁻² s⁻¹
activation_energy_for_carboxylation=55.9 kJ mol⁻¹
maximum_electron_transport_rate_at_25=300 μmol m⁻² s⁻¹
activation_enthalpy_for_electron_transport=32.8 kJ mol⁻¹
deactivation_enthalpy_for_electron_transport=220 kJ mol⁻¹
sensitivity_for_electron_transport=702.6 J K⁻¹ mol⁻¹
light_transition_sharpness=0.5
rubisco_constant_for_co2_at_25=650 μbar
activation_energy_for_co2=59.4 kJ mol⁻¹
rubisco_constant_for_o2_at_25=450 mbar
activation_energy_for_o2=36 kJ mol⁻¹
mesophyll_o2_partial_pressure=210 mbar
dark_respiration_at_25=2 μmol m⁻² s⁻¹
activation_energy_for_respiration=39.8 kJ mol⁻¹
electron_transport_partitioning_factor=0.4
bundle_sheath_PSII_activity_fraction=0.0001
Γ1=0.193

By default, most parameters are already filled in for a casual run, except driving variables which describe surrounding environment.

config = :Weather => (
    PFD = 1500,
    CO2 = 400,
    RH = 60,
    T_air = 30,
    wind = 2.0,
)

Let's define a wide range of atmospheric CO₂ for simulation.

xstep = :Weather => :CO2 => 50:10:1500

Then, net photosynthesis rate (A_net), Rubisco-limited rate (Ac), and electron transport-limited rate (Aj) responding to the range of CO₂ can be simulated and visualized in a plot.

visualize(ModelC4MD, :Ci, [:Ac, :Aj, :A_net]; config, xstep, kind = :line)
Example block output

The output of simulation can be visualized in terms of other variables such as stomatal conductance (gs) whose coupling with photosynthesis is solved via vapor pressure at the leaf surface.

visualize(ModelC4MD, :Ci, :gs; config, xstep, kind = :line)
Ci (μbar) 500 0 1 2 3 4 5 6 gs (mol bar⁻¹ m⁻² s⁻¹)

Similarly, we can visualize changes in leaf temperature (T) which has to be numerically optimized through energy balance equation.

visualize(ModelC4MD, :Ci, :T; config, xstep, kind = :line)
Ci (μbar) 500 25 26 27 28 29 30 31 T (°C)

For more information about using the framework such as parameters() and visualize() functions, please refer to the Cropbox documentation.