Canopy

Canopy Model and Parameters

ClimaLand.Canopy.CanopyModelType
 CanopyModel{FT, AR, RM, PM, SM, PHM, EM, SM, A, R, S, PS, D} <: ClimaLand.AbstractImExModel{FT}

The model struct for the canopy, which contains

  • the canopy model domain (a point for site-level simulations, or

an extended surface (plane/spherical surface) for regional or global simulations.

  • subcomponent model type for radiative transfer. This is of type

AbstractRadiationModel.

  • subcomponent model type for photosynthesis. This is of type

AbstractPhotosynthesisModel, and currently only the FarquharModel is supported.

  • subcomponent model type for stomatal conductance. This is of type

AbstractStomatalConductanceModel and currently only the MedlynModel is supported

  • subcomponent model type for plant hydraulics. This is of type

AbstractPlantHydraulicsModel and currently only a version which prognostically solves Richards equation in the plant is available.

  • subcomponent model type for canopy energy. This is of type

AbstractCanopyEnergyModel and currently we support a version where the canopy temperature is prescribed, and one where it is solved for prognostically.

  • subcomponent model type for canopy SIF. prognostically.
  • canopy model parameters, which include parameters that are shared

between canopy model components or those needed to compute boundary fluxes.

  • The boundary conditions, which contain:
    • The atmospheric conditions, which are either prescribed (of type PrescribedAtmosphere) or computed via a coupled simulation (of type CoupledAtmosphere).
    • The radiative flux conditions, which are either prescribed (of type PrescribedRadiativeFluxes) or computed via a coupled simulation (of type CoupledRadiativeFluxes).
    • The ground conditions, which are either prescribed or prognostic

Note that the canopy height is specified as part of the PlantHydraulicsModel, along with the area indices of the leaves, roots, and stems. Eventually, when plant biomass becomes a prognostic variable (by integrating with a carbon model), some parameters specified here will be treated differently.

  • autotrophic_respiration: Autotrophic respiration model, a canopy component model

  • radiative_transfer: Radiative transfer model, a canopy component model

  • photosynthesis: Photosynthesis model, a canopy component model

  • conductance: Stomatal conductance model, a canopy component model

  • hydraulics: Plant hydraulics model, a canopy component model

  • energy: Energy balance model, a canopy component model

  • sif: SIF model, a canopy component model

  • boundary_conditions: Boundary Conditions

  • parameters: Shared canopy parameters between component models

  • domain: Canopy model domain

source
ClimaLand.Canopy.CanopyModelMethod
CanopyModel{FT}(;
    autotrophic_respiration::AbstractAutotrophicRespirationModel{FT},
    radiative_transfer::AbstractRadiationModel{FT},
    photosynthesis::AbstractPhotosynthesisModel{FT},
    conductance::AbstractStomatalConductanceModel{FT},
    hydraulics::AbstractPlantHydraulicsModel{FT},
    energy::AbstractCanopyEnergyModel{FT},
    sif::AbstractSIFModel{FT},
    boundary_conditions::B,
    parameters::SharedCanopyParameters{FT, PSE},
    domain::Union{
        ClimaLand.Domains.Point,
        ClimaLand.Domains.Plane,
        ClimaLand.Domains.SphericalSurface,
    },
    energy = PrescribedCanopyTempModel{FT}(),
) where {FT, PSE}

An outer constructor for the CanopyModel. The primary constraints this applies are (1) ensuring that the domain is 1d or 2d (a ``surface" domain of a column, box, or sphere) and (2) ensuring consistency between the PlantHydraulics model and the general canopy model, since these are built separately.

source
ClimaLand.Canopy.CanopyModelMethod
function CanopyModel{FT}(
    domain::Union{
        ClimaLand.Domains.Point,
        ClimaLand.Domains.Plane,
        ClimaLand.Domains.SphericalSurface,
    },
    forcing::NamedTuple,
    LAI::AbstractTimeVaryingInput,
    toml_dict::CP.AbstractTOMLDict;
    z_0m = toml_dict["canopy_momentum_roughness_length"],
    z_0b = toml_dict["canopy_scalar_roughness_length"],
    prognostic_land_components = (:canopy,),
    autotrophic_respiration = AutotrophicRespirationModel{FT}(),
    radiative_transfer = TwoStreamModel{FT}(domain),
    photosynthesis = FarquharModel{FT}(domain),
    conductance = MedlynConductanceModel{FT}(domain),
    hydraulics = PlantHydraulicsModel{FT}(domain, LAI, toml_dict),
    energy = BigLeafEnergyModel{FT}(),
    sif = Lee2015SIFModel{FT}(),
) where {FT, PSE}

Creates a CanopyModel with the provided domain, forcing, and parameters.

Defaults are provided for each canopy component model, which can be overridden by passing in a different instance of that type of model. Default parameters are also provided for each canopy component, and can be changed with keyword arguments. Please see the documentation of each component model for details on the default parameters.

The required argument forcing should be a NamedTuple with the following field:

  • atmos: a PrescribedAtmosphere or CoupledAtmosphere object
  • radiation: a PrescribedRadiativeFluxes or CoupledRadiativeFluxes object
  • ground: a PrescribedGroundConditions, PrognosticGroundConditions, or PrognosticSoilConditions object

The required argument LAI should be a ClimaUtilities TimeVaryingInput for leaf area index.

When running the canopy model in standalone mode, set prognostic_land_components = (:canopy,), while for running integrated land models, this should be a list of the individual models. This value of this argument must be the same across all components in the land model.

source
ClimaLand.Canopy.SharedCanopyParametersType
SharedCanopyParameters{FT <: AbstractFloat, PSE}

A place to store shared parameters that are required by multiple canopy components.

  • z_0m: Roughness length for momentum (m)

  • z_0b: Roughness length for scalars (m)

  • earth_param_set: Earth param set

source
ClimaLand.Canopy.AbstractCanopyComponentType
AbstractCanopyComponent{FT <: AbstractFloat}

An abstract type for canopy component parameterizations.

Canopy component parameterizations do not run in standalone mode, but only as part of a CanopyModel. As such, they do not require all of the functionality of AbstractModels, and they are not AbstractModels themselves. The CanopyModel is an AbstractModel.

However, some of the same functionality is nice to have for canopy components, especially when defining the variables, which is why we introduce the AbstractCanopyComponent type and extend many of the methods for ClimaLand.AbstractModels for the canopy component parameterizations.

source

Canopy Model Boundary Fluxes

ClimaLand.Canopy.AtmosDrivenCanopyBCType
AtmosDrivenCanopyBC{
    A <: AbstractAtmosphericDrivers,
    B <: AbstractRadiativeDrivers,
    G <: AbstractGroundConditions,
    C::Tuple
} <: AbstractCanopyBC

A struct used to specify the canopy fluxes, referred to as ``boundary conditions", at the surface and bottom of the canopy, for water and energy.

These fluxes include turbulent surface fluxes computed with Monin-Obukhov theory, radiative fluxes, and root extraction.

  • atmos: The atmospheric conditions driving the model

  • radiation: The radiative fluxes driving the model

  • ground: Ground conditions

  • prognostic_land_components: Prognostic land components present

source