Vegetation models

Warning

This page is a work in progress. If you have any questions or notice any errors, please raise an issue.

Overview

VegetationModel is a standalone model for vegetation processes that simulates the integrated dynamics of plant carbon cycling, including photosynthesis, respiration, phenology, and water stress for a single plant functional type (PFT). It is designed as a standalone model wrapper around a AbstractVegetation component coupled with an atmospheric forcing, providing a focused representation of terrestrial vegetation suitable for conceptual simulations of vegetation processes. Interactions with soil are neglected or idealized (e.g. infinite soil moisture availability) where appropriate.

arch = CPU()
grid = ColumnGrid(arch, Float32, UniformSpacing(N = 1)) # grid with one vertical layer
model = VegetationModel(grid) # Default configuration
integrator = initialize(model, ForwardEuler(eltype(grid)))
Integrator of VegetationModel{Float32, VegetationCarbon{Float32, LUEPhotosynthesis{Float32}, MedlynStomatalConductance{Float32}, PALADYNAutotrophicRespiration{Float32}, PALADYNPhenology{Float32}, PALADYNCarbonDynamics{Float32}, PALADYNVegetationDynamics{Float32}, StaticExponentialRootDistribution{Float32}, FieldCapacityLimitedPAW{Float32}}, PrescribedAtmosphere{Float32, (:CO2,), RainSnow, LongShortWaveRadiation, Terrarium.SpecificHumidity, Terrarium.ConstantAerodynamics{Float32}, Tuple{TracerGas{Float32, :CO2}}}, ColumnGrid{Float32, CPU, Oceananigans.Grids.RectilinearGrid{Float32, Oceananigans.Grids.Periodic, Oceananigans.Grids.Flat, Oceananigans.Grids.Bounded, Oceananigans.Grids.StaticVerticalDiscretization{OffsetArrays.OffsetVector{Float32, Vector{Float32}}, OffsetArrays.OffsetVector{Float32, Vector{Float32}}, OffsetArrays.OffsetVector{Float32, Vector{Float32}}, OffsetArrays.OffsetVector{Float32, Vector{Float32}}}, Float32, Float32, OffsetArrays.OffsetVector{Float32, StepRangeLen{Float32, Float64, Float64, Int64}}, Nothing, CPU}}, DefaultInitializer{Float32}} with ForwardEuler{Float32}
├── Current time: 0.0
├── StateVariables{Float32}(clock = Clock{Float32, Float64}(time=0 seconds, iteration=0, last_Δt=Inf days), prognostic = (:carbon_vegetation, :vegetation_area_fraction), auxiliary = (:net_assimilation, :leaf_respiration, :gross_primary_production, :canopy_water_conductance, :leaf_to_air_co2_ratio, :autotrophic_respiration, :net_primary_production, :phenology_factor, :leaf_area_index, :balanced_leaf_area_index, :root_fraction, :plant_available_water, :soil_moisture_limiting_factor), inputs = (:air_temperature, :air_pressure, :windspeed, :specific_humidity, :rainfall, :snowfall, :surface_shortwave_down, :surface_longwave_down, :daytime_length, :CO2, :daily_leaf_respiration, :ground_temperature), namespaces = (), timestepper_cache = ())
Terrarium.VegetationModelType
struct VegetationModel{NF, Vegetation<:Terrarium.AbstractVegetation{NF}, Atmosphere<:(Terrarium.AbstractAtmosphere{NF, PR, IR, HM, AD} where {PR<:Terrarium.AbstractPrecipitation, IR<:Terrarium.AbstractIncomingRadiation, HM<:Terrarium.AbstractHumidity, AD<:Terrarium.AbstractAerodynamics{NF}}), GridType<:(Terrarium.AbstractLandGrid{NF}), Initializer<:Terrarium.AbstractInitializer} <: Terrarium.AbstractVegetationModel{NF, GridType<:(Terrarium.AbstractLandGrid{NF})}

Model for natural (unmanaged) vegetation processes for a single plant functional type (PFT). Multiple PFTs can be later handled with a TiledVegetationModel type that composes multiple VegetationModels with different parameters for each PFT.

Properties:

  • grid::Terrarium.AbstractLandGrid: Spatial grid type

  • atmosphere::Terrarium.AbstractAtmosphere: Atmospheric input configuration

  • vegetation::Terrarium.AbstractVegetation: Vegetation processes

  • constants::PhysicalConstants: Physical constants

  • initializer::Terrarium.AbstractInitializer: State variable initializer

source
variables(model)
Variables
├─ Prognostic: 
├── carbon_vegetation [kg m^-2] on XY{Center, Center}
├── vegetation_area_fraction [-] on XY{Center, Center}
├─ Auxiliary: 
├── net_assimilation [g m^-2 s^-1] on XY{Center, Center}
├── leaf_respiration [g m^-2 s^-1] on XY{Center, Center}
├── gross_primary_production [kg m^-2 s^-1] on XY{Center, Center}
├── canopy_water_conductance [m s^-1] on XY{Center, Center}
├── leaf_to_air_co2_ratio [-] on XY{Center, Center}
├── autotrophic_respiration [kg m^-2 s^-1] on XY{Center, Center}
├── net_primary_production [kg m^-2 s^-1] on XY{Center, Center}
├── phenology_factor [-] on XY{Center, Center}
├── leaf_area_index [-] on XY{Center, Center}
├── balanced_leaf_area_index [-] on XY{Center, Center}
├── root_fraction [-] on XYZ{Center, Center, Center}
├── plant_available_water [-] on XYZ{Center, Center, Center}
├── soil_moisture_limiting_factor [-] on XY{Center, Center}
├─ Inputs: 
├── air_temperature [°C] on XY{Center, Center}
├── air_pressure [Pa] on XY{Center, Center}
├── windspeed [m s^-1] on XY{Center, Center}
├── specific_humidity [-] on XY{Center, Center}
├── rainfall [m s^-1] on XY{Center, Center}
├── snowfall [m s^-1] on XY{Center, Center}
├── surface_shortwave_down [W m^-2] on XY{Center, Center}
├── surface_longwave_down [W m^-2] on XY{Center, Center}
├── daytime_length [hr] on XY{Center, Center}
├── CO2 [ppm] on XY{Center, Center}
├── daily_leaf_respiration [g m^-2 s^-1] on XY{Center, Center}
├── ground_temperature [°C] on XY{Center, Center}
├─ Namespaces:

Components

VegetationModel represents a standalone model of vegetation carbon cycle processes coupled with an interface for the atmosphere. It consists of a grid, a set of PhysicalConstants, and the following component processes:

FieldTypeScopeProcess page
vegetationAbstractVegetationCoupled vegetation carbon processesVegetation
atmosphereAbstractAtmosphereMeteorological input variablesAtmosphere

Both components are summarized briefly below. See the linked process pages for more details.

Vegetation

The vegetation component should be a subtype of AbstractVegetation type that represents a functional representation of the vegetation carbon cycle. The default implementation is VegetationCarbon (see also the relevant doc page on vegetation processes), which couples photosynthesis, stomatal conductance, autotrophic respiration, phenology, and carbon and vegetation dynamics. See Vegetation for detailed descriptions of photosynthesis, respiration, phenology, and carbon dynamics implementations.

Atmosphere

The atmosphere component provides time-varying meteorological forcing. The default implementation is PrescribedAtmosphere, which reads air temperature, humidity, wind, radiation, and CO₂ concentration from InputVariables and provides them as boundary conditions to the vegetation and photosynthesis processes. See Atmosphere for details regarding the coupling interface with the atmosphere.

Initializers

Initializers and boundary conditions

VegetationModel does not yet have its own dedicated boundary conditions and initializers, but it will soon! Stay tuned!