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)
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)
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)
For more information about using the framework such as parameters()
and visualize()
functions, please refer to the Cropbox documentation.