Vegetation dynamics
This page is a work in progress. If you have any questions or notice any errors, please raise an issue.
Overview
Vegetation dynamics describes the temporal evolution of the fractional coverage of plant functional types (PFTs) within a grid cell. In dynamic vegetation models, PFTs within a grid cell compete for space and resources, and their expansion is driven by establishment and constrained by mortality and disturbance processes such as fire.
Terrarium.AbstractVegetationDynamics — Type
abstract type AbstractVegetationDynamics{NF} <: Terrarium.AbstractProcess{NF}Base type for vegetation dynamics schemes.
subtypes(Terrarium.AbstractVegetationDynamics)1-element Vector{Any}:
PALADYNVegetationDynamicsPALADYN vegetation dynamics
Terrarium.PALADYNVegetationDynamics — Type
struct PALADYNVegetationDynamics{NF} <: Terrarium.AbstractVegetationDynamics{NF}Vegetation dynamics implementation following PALADYN (Willeit 2016) for a single PFT based on the Lotka–Volterra approach.
Authors: Maha Badri
Properties:
ν_seed::Any: Vegetation seed fraction [-]γv_min::Any: Minimum vegetation disturbance rate [1/year]
variables(PALADYNVegetationDynamics(Float32))Variables
├─ Prognostic:
├── vegetation_area_fraction [-] on XY{Center, Center}
├─ Auxiliary:
├─ Inputs:
├── balanced_leaf_area_index [-] on XY{Center, Center}
├── carbon_vegetation [kg m^-2] on XY{Center, Center}
├── net_primary_production [kg m^-2 s^-1] on XY{Center, Center}
├─ Namespaces:
This implementation follows the Lotka–Volterra approach of PALADYN [4], in which the vegetation area fraction $\nu_i$ for each PFT $i$ evolves according to:
\[\begin{equation} \frac{d\nu_i}{dt} = \lambda_{\text{NPP}} \frac{\text{NPP}}{C_{\text{veg,i}}} \cdot \nu_i^* (1 - \sum_j c_{ij}\nu_j) - \gamma_v \nu_i^* \end{equation}\]
where $\lambda_{\text{NPP}}$ is the NPP partitioning factor computed by the vegetation carbon dynamics process (see Vegetation carbon dynamics), $\text{NPP}$ is the net primary production, $C_{\text{veg}}$ is the total vegetation carbon pool, $\nu^* = \max(\nu, \nu_{\text{seed}})$ where $\nu_{\text{seed}}$ is a small seeding fraction to ensure that a PFT is always seeded and $\gamma_v$ is the disturbance rate.
The first term on the right-hand side represents the expansion of PFT $i$ driven by the fraction of NPP allocated to spreading.
The second term is a Lotka–Volterra competition term that limits expansion through competition with other PFTs for space, with $c_{ij}$ describing the competitive effect of PFT $j$ on PFT $i$. Since only one PFT is considered per grid cell in the current implementation, this competition term is ignored for now.
The last term represents the loss of vegetation cover due to disturbance, for example from fire or other mortality related processes. In PALADYN, the disturbance coefficient $\gamma_v$ mainly represents fire-induced disturbance through a simple parameterization based on topsoil moisture and aboveground biomass, together with a minimum constant disturbance rate used to represent disturbances other than fire. In the current implementation, fire is ignored, and $\gamma_v = \gamma_{\min}$.
Process interface
Terrarium.compute_auxiliary! — Method
compute_auxiliary!(
state,
grid,
veg_dynamics::PALADYNVegetationDynamics,
args...
)
Terrarium.compute_tendencies! — Method
compute_tendencies!(
state,
grid,
veg_dynamics::PALADYNVegetationDynamics,
vegcarbon_dynamics::PALADYNCarbonDynamics,
args...
)
Methods
Terrarium.compute_γv — Function
compute_γv(veg_dynamics)
Computes the disturbance rateγv, Eq. 80, PALADYN (Willeit 2016).
Terrarium.compute_ν_star — Function
compute_ν_star(veg_dynamics, ν)
Computes ν_star which is the maximum of the current vegetation fraction ν and the seed fraction ν_seed [-], to ensure that a PFT is always seeded.
Kernel functions
Terrarium.compute_ν_tendency — Function
compute_ν_tendency(
i, j, grid, fields,
veg_dynamics::AbstractVegetationDynamics,
vegcarbon::AbstractVegetationCarbonDynamics
)Cell-level vegetation-fraction tendency computation used by vegetation dynamics. Implementations compute the local tendency value for ν at the given index i, j.
Terrarium.compute_ν_tendencies! — Function
compute_ν_tendencies!(
tend,
i,
j,
grid,
fields,
veg_dynamics::PALADYNVegetationDynamics,
vegcarbon_dynamics::PALADYNCarbonDynamics
) -> Any
Mutating wrapper for compute_ν_tendency that stores the result in tend.
References
- [4]
- M. Willeit and A. Ganopolski. PALADYN v1.0, a Comprehensive Land Surface–Vegetation–Carbon Cycle Model of Intermediate Complexity. Geoscientific Model Development 9, 3817–3857 (2016).