Optimal LAI

Models and Parameters

ClimaLand.Canopy.ZhouOptimalLAIModelType
ZhouOptimalLAIModel{FT, OLPT <: OptimalLAIParameters{FT}, GD, RDTH, HTH} <: AbstractBiomassModel{FT}

An implementation of the optimal LAI model from Zhou et al. (2025) as a biomass model.

This model computes LAI dynamically based on optimality principles, balancing energy and water constraints. LAI is prognostic, in Y.canopy.biomass.LAI, and is mirrored into p.canopy.biomass.area_index.leaf for the rest of the canopy, consistent with PrescribedBiomassModel.

Fields

  • parameters: Required parameters for the optimal LAI model
  • optimal_lai_inputs: NamedTuple with the spatially varying inputs of the LAImax and steady-state-LAI formulas: GSL (growing season length in days), vpdgs (growing-season mean VPD in Pa), and f0 (fraction of precip for transpiration). Typically created using optimal_lai_inputs, which reads them alongside the initial conditions.
  • SAI: Prescribed stem area index (m^2 m^-2)
  • RAI: Prescribed root area index (m^2 m^-2)
  • rooting_depth: Rooting depth parameter (m) - a characteristic depth below which 1/e of the root mass lies
  • height: Canopy height (m) - can be scalar (uniform) or spatially-varying Field

References

Zhou et al. (2025) "A General Model for the Seasonal to Decadal Dynamics of Leaf Area" Global Change Biology. https://onlinelibrary.wiley.com/doi/pdf/10.1111/gcb.70125

source
ClimaLand.Canopy.OptimalLAIParametersType
OptimalLAIParameters{FT<:AbstractFloat}

The required parameters for the optimal LAI model based on Zhou et al. (2025).

Water limitation is handled through the f0*P/A0 term following Zhou et al. (2025) Equation 11, where P is annual precipitation and A0 is annual potential GPP.

References

Zhou et al. (2025) "A General Model for the Seasonal to Decadal Dynamics of Leaf Area" Global Change Biology. https://onlinelibrary.wiley.com/doi/pdf/10.1111/gcb.70125

  • k: Light extinction coefficient (dimensionless), typically 0.5

  • z: Unit cost of constructing and maintaining leaves (mol m^-2 yr^-1), globally fitted as 12.227 mol m^-2 yr^-1

  • sigma: Dimensionless parameter representing departure from square-wave LAI dynamics, globally fitted as 0.771

  • alpha: Smoothing factor for exponential moving average (dimensionless, 0-1). Set to 0.067 for ~15 days of memory

  • f0: Fraction of annual precipitation available for transpiration (dimensionless, 0-1). Following Zhou et al. (2025), f0 = 0.65 at the energy-water limitation transition. In arid regions, f0 can be lower: f0 = 0.65 * exp(-0.604 * ln^2(AI/1.9)) where AI is aridity index. Default value 0.65 assumes optimal water use efficiency.

  • tau_long_term: Long-term memory timescale (s) of the A0 and precipitation running-mean annual totals that set LAI_max and the steady-state LAI. Default 2 years; a longer value filters the seasonal cycle more strongly, avoiding aliasing of the annual cycle.

source

Methods

ClimaLand.Canopy.compute_A0_and_χFunction
compute_A0_and_χ(
    fractional_c3::FT,
    parameters::PModelParameters{FT},
    constants::PModelConstants{FT},
    T_air::FT,
    P_air::FT,
    VPD::FT,
    ca::FT,
    PPFD::FT,
    βm::FT,
    vpd_gs::FT,
) where {FT}

Compute potential GPP (A0) and ci/ca ratio used in the optimal LAI model (Zhou et al. 2025).

This function computes the potential GPP assuming fAPAR = 1 (full light absorption), which represents the maximum carbon assimilation possible under given environmental conditions.

A0 responds to the instantaneous vapor pressure deficit, while χ is the growing-season value the water-limitation term of LAI_max calls for, and so is evaluated at the growing-season mean VPD vpd_gs. Both share the same optimal ξ, which depends on temperature and pressure only.

Arguments

  • fractional_c3::FT: Photosynthesis mechanism (1 for C3, 0 for C4)
  • parameters: PModelParameters containing cstar, beta, etc.
  • constants: PModelConstants containing physical constants
  • earth_param_set: Additional physical constants
  • T_air::FT: Air temperature (K)
  • P_air::FT: Atmospheric pressure (Pa)
  • q_air::FT: Atmospheric specific humidity (kg/kg)
  • ca::FT: Ambient CO2 concentration (mol/mol)
  • PPFD::FT: Downwelling radiative flux in PAR band at the surface (moles photons/m^2/s)
  • βm::FT: Soil moisture stress factor (dimensionless, 0-1)
  • vpd_gs::FT: Growing-season mean vapor pressure deficit (Pa)

Returns

  • NamedTuple with A0, the potential GPP with fAPAR=1 (mol C m^-2 s^-1), and χ = ci/ca at the growing-season VPD (unitless)
source
ClimaLand.Canopy.compute_L_steady_targetFunction
compute_L_steady_target(A0_daily, k, A0_annual, z, GSL, sigma, precip_annual, f0, ca_pa, chi, vpd_gs)

Compute the steady-state LAI target L_steady (Zhou et al. 2025 Eqs. 11-15) from the daily and annual potential GPP and the water-limitation inputs, without the Eq. 16 acclimation lag. The prognostic LAI relaxes toward this target in the biomass tendency, so the acclimation alpha is applied there rather than here.

source
ClimaLand.Canopy.compute_L_maxFunction
compute_L_max(Ao_annual, k, z, precip_annual, f0, ca_pa, chi, vpd_gs)

Compute seasonal maximum leaf area index (LAI_max) based on annual potential GPP and water availability, following Zhou et al. (2025) Equation 11.

LAI_max is determined by the minimum of energy-limited and water-limited fAPAR:

  • Energy-limited: fAPAR_energy = 1 - z/(k*A0)
  • Water-limited: fAPAR_water = f0P/A0 * (ca(1-chi))/(1.6D)

Arguments

  • Ao_annual::FT: Annual total potential GPP (mol CO2 m^-2 yr^-1).
  • k::FT: Light extinction coefficient (dimensionless), typically 0.5
  • z::FT: Unit cost of constructing and maintaining leaves (mol m^-2 yr^-1), 12.227
  • precip_annual::FT: Mean annual precipitation (mol H2O m^-2 yr^-1)
  • f0::FT: Fraction of precipitation available for transpiration (dimensionless), 0.65
  • ca_pa::FT: Ambient CO2 partial pressure (Pa), typically ~40 Pa at 400 ppm
  • chi::FT: Optimal ratio of intercellular to ambient CO2 (dimensionless), typically 0.7-0.8
  • vpd_gs::FT: Mean vapor pressure deficit during growing season (Pa)

Returns

  • LAI_max::FT: Seasonal maximum leaf area index (m^2 m^-2)

Notes

Following Zhou et al. (2025) Equation 11:

fAPAR_max = min{1 - z/(k*A0), f0*P/A0 * (ca(1-chi))/(1.6*D)}

The first term is energy-limited (carbon gain vs leaf cost trade-off). The second term is water-limited (precipitation constrains transpiration, scaled by intrinsic water use efficiency iWUE = ca(1-chi)/(1.6*D)).

The iWUE factor converts water flux to carbon flux:

  • ca(1-chi): CO2 drawdown from ambient to intercellular (Pa)
  • 1.6*D: VPD adjusted for CO2/H2O diffusivity ratio (Pa)

References

Zhou et al. (2025) Global Change Biology, Equation 11

source
ClimaLand.Canopy.compute_mFunction
compute_m(GSL, LAI_max, Ao_annual, sigma, k)

Compute the parameter m, which represents the ratio of steady-state LAI to steady-state GPP.

This implements Equation 20 from Zhou et al. (2025). The parameter m quantifies the relationship between LAI and GPP dynamics, representing the extent to which seasonal LAI dynamics depart from a "square wave" (where maximum LAI would be maintained throughout the growing season).

Arguments

  • GSL::FT: Growing season length (days). Defined as the length of continuous period above 0C longer than 5 days.
  • LAI_max::FT: Seasonal maximum leaf area index (m^2 m^-2, dimensionless)
  • Ao_annual::FT: Annual total potential GPP (mol m^-2 yr^-1). This is the integral of daily A0 over the year.
  • sigma::FT: Dimensionless parameter representing departure from square-wave LAI dynamics. Globally fitted as sigma = 0.771
  • k::FT: Light extinction coefficient (dimensionless)

Returns

  • m::FT: Parameter relating steady-state LAI to steady-state GPP (dimensionless, units work out as: days * m^2 m^-2 / (mol m^-2 yr^-1 * dimensionless) with implicit conversion)

References

Zhou et al. (2025) Global Change Biology, Equation 20

source
ClimaLand.Canopy.compute_steady_state_LAIFunction
compute_steady_state_LAI(Ao_daily, m, k, LAI_max)

Compute steady-state LAI from daily potential GPP using the Lambert W function solution.

This implements Equations 13-15 from Zhou et al. (2025). The steady-state LAI (L_s) is the LAI that would be in equilibrium with GPP if weather conditions were held constant. Given daily meteorological conditions, this is computed on a daily basis.

Arguments

  • Ao_daily::FT: Daily potential GPP (mol m^-2 day^-1). This is the GPP that would be achieved if fAPAR = 1, calculated from LUE * PPFD.
  • m::FT: Parameter relating steady-state LAI to steady-state GPP (dimensionless), from compute_m()
  • k::FT: Light extinction coefficient (dimensionless), typically 0.5
  • LAI_max::FT: Seasonal maximum LAI constraint (m^2 m^-2, dimensionless)

Returns

  • L_steady::FT: Steady-state leaf area index (m^2 m^-2, dimensionless). Always >= 0.

Notes

The solution uses the Lambert W0 function: Ls = min{mu + (1/k)W0[-kmuexp(-k*mu)], LAImax} where mu = m * A0. The result is constrained to be non-negative and below LAI_max.

References

Zhou et al. (2025) Global Change Biology, Equations 13-15

source
ClimaLand.Canopy.lambertw0Function
lambertw0(x::T; maxiter::Int = 8) where {T<:AbstractFloat}

Compute the principal branch (W0) of the Lambert W function for x in [-1/e, Inf).

This is a GPU-device-friendly implementation using a fixed number of Halley iterations. The Lambert W function satisfies W(x)*exp(W(x)) = x.

Arguments

  • x::T: Input value, must be >= -1/e ~ -0.36788
  • maxiter::Int: Maximum number of Halley iterations (default: 8; Halley's method has cubic convergence, so 8 is generous)

Returns

  • W::T: Lambert W0(x), the principal branch value, or NaN for invalid inputs

Algorithm

Uses Halley's method with a fixed number of iterations for GPU compatibility:

  • No dynamic memory allocation
  • No conditional breaks (runs all iterations)
  • Broadcastable for use with CuArrays: lambertw0.(cuarray)

Device Compatibility

This implementation is designed to work on both CPU and GPU:

  • All operations are scalar and supported on CUDA.jl
  • No array allocations or dynamic loops
  • Type-generic over AbstractFloat (Float32, Float64)

References

Corless et al. (1996) "On the Lambert W function"

source