This package is still in development
This package contains modules describing different ecophysiological functions of plants, including processes such as photosynthesis, respiration, transpiration or phenology. They may be used as standalone or as a component of a plant growth model.
To install Ecophys.jl, you can use the following command:
] add Ecophys
Or, if you prefer the development version:
import Pkg
Pkg.add(url = "https://github.com/VirtualPlantLab/Ecophys.jl.git", rev = "master")
The module Photosynthesis contains functions to calculate leaf CO2 assimilation
and stomatal conductance for C3 and C4 species, based on the work by Yin & Struik (2009, NJAS).
To create a model, use the corresponding function (C3()
or C4()
) and pass the
parameters as keyword arguments (they all have default values that correspond to Tables 2 the original publication):
using Ecophys
c3 = C3(Vcmax25 = 140.0)
c4 = C4(Vcmax25 = 140.0)
To compute CO2 assimilation and stomatal conductance, use the photosynthesis()
function,
passing the photosynthesis model and the environmental conditions as inputs (with
defaults):
A_c3, gs_c3 = photosynthesis(c3, PAR = 100.0)
A_c4, gs_c4 = photosynthesis(c4, PAR = 100.0)
It is also possible to work with physical units using the Unitful.jl package. In
such case, the functions C3Q()
and C4Q
should be used to create the model but
now the parameters are stored as Quantity
objects:
using Unitful.DefaultSymbols # import symbols for units
c3Q = C3Q(Vcmax25 = 140.0μmol/m^2/s)
c4Q = C4Q(Vcmax25 = 140.0μmol/m^2/s)
And the environmental conditions should be passed as Quantity
objects (defaults
are updated accordingly, see Unitful.jl documentation for details on how to
create Quantity
objects):
A_c3, gs_c3 = photosynthesis(c3Q, PAR = 100.0μmol/m^2/s)
A_c4, gs_c4 = photosynthesis(c4Q, PAR = 100.0μmol/m^2/s)
Ecophys may also compute the leaf energy balance to couple photosynthesis, transpiration and leaf temperature. In addition to the models of photosynthesis and stomatal conductance mentioned in the above, additional models of boundary layer conductance and leaf optical properties are required.
Currently, only a simple model of optical properties is avaiable that defines
the leaf absorptance in PAR and NIR and its emmisivity in the thermal domain.
This model is created using the SimpleOptical()
function (defaults are provided):
using Ecophys
opt = SimpleOptical(αPAR = 0.80)
Two models to compute the boundary layer conductance are available. They differ
in the amount of information used regarding the geometry of the leaf. A simple
model only accounts for the leaf characteristic length and is the most common
approach (as before, a version that supports Quantity
objects is also available):
gb = simplegb(d = 0.1)
gbQ = simplegbQ(d = 0.1m)
The second model is more complex as it takes into account the aspect ratio (length/width) of the leaf as well as its inclination angle. It will also distinguish between the boundary layer conductance of the front and back side of the leaf. This model relies on unpublished equations fitted to the data reviewed by Schuepp (1993, New Phyto):
gbang = gbAngle(d = 0.1, ang = π/4, ar = 0.1)
gbangQ = gbAngleQ(d = 0.1m, ang = π/4, ar = 0.1)
The leaf energy balance is then computed using solve_energy_balance()
which
will compute the leaf temperature that closes the energy balance as well as the
corresponding CO2 assimilation and transpiration:
Tleaf, A, Tr = solve_energy_balance(c3; gb = gb, opt = opt, PAR = 100.0, ws = 5.0)
TleafangQ, AangQ, TrangQ = solve_energy_balance(c3Q; gb = gbangQ, opt = opt, PAR = 100.0μmol/m^2/s, ws = 5.0m/s)