Vegetation models
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.VegetationModel — Type
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 typeatmosphere::Terrarium.AbstractAtmosphere: Atmospheric input configurationvegetation::Terrarium.AbstractVegetation: Vegetation processesconstants::PhysicalConstants: Physical constantsinitializer::Terrarium.AbstractInitializer: State variable initializer
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:
| Field | Type | Scope | Process page |
|---|---|---|---|
vegetation | AbstractVegetation | Coupled vegetation carbon processes | Vegetation |
atmosphere | AbstractAtmosphere | Meteorological input variables | Atmosphere |
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.