PlantBiophysics.jlPlantBiophysics.jl

Energy balance​#

A leaf can be warmer or cooler than the surrounding air. Its temperature depends on the radiation it absorbs, the heat exchanged with the air, and the energy used to evaporate water. The energy-balance model calculates this temperature and the associated heat fluxes.

PlantBiophysics provides Monteith, following Monteith and Unsworth (2013) with the correction discussed by Schymanski and Or (2017). It combines with photosynthesis and stomatal conductance to calculate the leaf's carbon, water, and energy exchanges together.

Run a coupled leaf simulation​#

Choose one model for each process and provide the weather, absorbed light, and leaf dimensions:

julia
using PlantBiophysics, PlantSimEngine, PlantMeteo, Dates

meteo = Atmosphere(
    T=20.0, Wind=1.0, P=101.3, Rh=0.65, duration=Hour(1),
)
scene = CompositeModel(
    Monteith(),
    Fvcb(),
    Medlyn(g0=0.03, g1=12.0);
    status=Status(
        Ra_SW_f=13.747,
        sky_fraction=1.0,
        aPPFD=1500.0,
        d=0.03,
    ),
    environment=meteo,
)
run!(scene)
leaf = only(model_objects(scene))
(
    Rn=leaf.status.Rn, H=leaf.status.H, λE=leaf.status.λE,
    Tₗ=leaf.status.Tₗ, A=leaf.status.A, Gₛ=leaf.status.Gₛ,
)
(Rn = 21.40940340906749, H = -123.89287010251097, λE = 145.30227351157848, Tₗ = 17.614816978945765, A = 32.26498489544453, Gₛ = 1.681348654567963)

The example prescribes the radiation inputs independently to demonstrate how to provide them. In an application, derive both from consistent radiation measurements or a light-interception model.

You do not need to supply leaf temperature, assimilation, or stomatal conductance: these are calculated together. Leaf temperature affects photosynthesis; stomatal conductance affects water loss and cooling. The model repeats these calculations until the change in estimated temperature is small enough, or the maximum number of iterations is reached.

Read the outputs​#

OutputMeaningUnit
RnNet radiation: absorbed shortwave plus net longwave radiationW m⁻²
HSensible heat exchanged with the airW m⁻²
λELatent heat associated with water-vapour exchangeW m⁻²
TₗLeaf temperature°C
ANet CO₂ assimilationµmol CO₂ m⁻² s⁻¹
GₛStomatal conductance to CO₂mol CO₂ m⁻² s⁻¹

The energy balance is Rn = H + λE. Positive H means that the leaf loses sensible heat to the air; a negative value means it gains heat from the air. λE is an energy flux, not a mass of transpired water. Radiation and heat fluxes here are expressed per unit reference leaf surface area.

Other outputs include net longwave radiation (Ra_LW_f), leaf-surface and intercellular CO₂ (Cₛ and Cᵢ), boundary-layer conductances (Gbₕ and Gbc), the vapour pressure difference (Dₗ), and the iteration counter (iter). Inspect the full list with:

julia
outputs(Monteith())
(:Tₗ, :Rn, :Ra_LW_f, :H, :λE, :Cₛ, :Cᵢ, :A, :Gₛ, :Gbₕ, :Dₗ, :Gbc, :iter)

leaf.status holds the latest values. Use run!(scene; outputs=:all) to retain output history; the TL;DR shows how to collect the six main outputs in a table for several timesteps.

Provide the leaf and weather inputs​#

Leaf inputMeaningUnit
Ra_SW_fAbsorbed shortwave radiation, including PAR and near infraredW m⁻² leaf
sky_fractionCombined sky view of both leaf faces0–2
dCharacteristic leaf dimension, such as leaf widthm
aPPFDAbsorbed PAR photon flux, needed by Fvcbµmol photons m⁻² leaf s⁻¹

The radiation inputs must use the reference leaf surface area. Canopy radiation per unit ground area needs a conversion before it can drive a leaf; see Light interception.

sky_fraction=1 represents a leaf whose upper face sees the sky and whose lower face sees the canopy or ground. Values below one describe a partly obstructed sky view; two means that both faces see only sky. This controls longwave radiation exchange. Surrounding objects other than the sky are assumed to have the same temperature as the leaf, a simplification to keep in mind when their temperatures differ substantially.

The Atmosphere supplies air temperature, humidity, wind speed, pressure, and atmospheric CO₂, along with quantities calculated by PlantMeteo. See Micro-climate for the weather inputs and units.

Set the model parameters​#

ParameterMeaningDefault
aₛₕNumber of leaf faces exchanging sensible heat2
aₛᵥNumber of leaf faces exchanging water vapour1
εLeaf emissivity0.955
maxiterMaximum number of temperature iterations10
ΔTTemperature-change threshold for convergence (°C)0.01

The default represents a leaf exchanging heat on both faces but water vapour on one face, as for a hypostomatous leaf. For a leaf with stomata on both faces, choose aₛᵥ=2. These are surface models, so there are at most two faces.

For example, this changes the number of transpiring faces while retaining the other defaults:

julia
energy_model = Monteith(aₛᵥ=2)
(heat_exchange_faces=energy_model.aₛₕ, transpiring_faces=energy_model.aₛᵥ)
(heat_exchange_faces = 2, transpiring_faces = 2)

Use energy_model in place of Monteith() in the scene above. The convergence threshold compares successive estimates within one timestep, not the temperatures of two consecutive weather records.

Monteith prefers hourly weather and accepts timesteps from one minute to two hours. It computes a steady-state balance for the conditions of each timestep. See Multi-rate simulation for choosing intervals when processes run at different rates.

Evaluation and references​#

The Schymanski et al. evaluation compares latent heat, sensible heat, and net radiation with measurements on an artificial leaf across wind speeds. Its standalone wrapper runs the same scenario and plotting implementation as the numerical regression tests and documentation. The Model evaluation page also shows the coupled model's results against gas-exchange measurements.

The energy-balance formulation follows Monteith and Unsworth (2013), Principles of Environmental Physics, chapter 13, and Schymanski and Or (2017). Its implementation is close to the MAESPA formulation described by Duursma and Medlyn (2012) and Vezy et al. (2018).