Canopy Energy Model

Models and Parameters

ClimaLand.Canopy.PrescribedCanopyTempModelType
PrescribedCanopyTempModel{FT} <: AbstractCanopyEnergyModel{FT}

A model for the energy of the canopy which assumes the canopy temperature is the same as the atmosphere temperature prescribed in the PrescribedAtmos struct.

No equation for the energy of the canopy is solved.

source
ClimaLand.Canopy.BigLeafEnergyModelMethod
BigLeafEnergyModel{FT}(; ac_canopy = FT(2e3)) where {FT <: AbstractFloat}

Creates a BigLeafEnergyModel using default parameters of type FT.

The following default parameter is used:

  • ac_canopy = FT(2e3) (J m^-2 K^-1) - canopy specific heat per area
source

Methods

ClimaLand.Canopy.canopy_temperatureFunction
canopy_temperature(model::PrescribedCanopyTempModel, canopy, Y, p)

Returns the canopy temperature under the PrescribedCanopyTemp model, where the canopy temperature is assumed to be the same as the atmosphere temperature.

source
canopy_temperature(model::BigLeafEnergyModel, canopy, Y, p)

Returns the canopy temperature under the BigLeafEnergyModel model, where the canopy temperature is modeled prognostically.

source
ClimaLand.Canopy.root_energy_flux_per_ground_area!Function
root_energy_flux_per_ground_area!(
    fa_energy::ClimaCore.Fields.Field,
    s::Union{PrognosticSoilConditions, PrognosticGroundConditions},
    model::Canopy.AbstractCanopyEnergyModel,
    Y::ClimaCore.Fields.FieldVector,
    p::NamedTuple,
    t,
)

A method computing the energy flux associated with the root-soil water flux, which returns 0 in cases where we do not need to track this quantity: in this case, when the canopy energy is tracked, but we are using a PrescribedSoil model (non-prognostic soil model).

Note that this energy flux is not typically included in land surface models. We account for it when the soil model is prognostic because the soil model includes the energy in the soil water in its energy balance; therefore, in order to conserve energy, the canopy model must account for it as well.

source
root_energy_flux_per_ground_area!(
    fa_energy::ClimaCore.Fields.Field,
    ground::PrescribedGroundConditions{FT},
    model::AbstractCanopyEnergyModel{FT},
    Y::ClimaCore.Fields.FieldVector,
    p::NamedTuple,
    t,
) where {FT}

A method which updates the ClimaCore.Fields.Field fa_energy in place with the energy flux associated with the root-soil water flux for the CanopyModel run in standalone mode, with a PrescribedGroundConditions.This value is ignored and set to zero in this case.

Background information: This energy flux is not typically included in land surface models. We account for it when the soil model is prognostic because the soil model includes the energy in the soil water in its energy balance; therefore, in order to conserve energy, the canopy model must account for it as well.

source
ClimaLand.total_energy_per_area!Function
ClimaLand.total_energy_per_area!(
    surface_field,
    model::EnergyHydrology,
    Y,
    p,
    t,

)

A function which updates surface_field in place with the value for the total energy per unit ground area for the EnergyHydrology.

source
ClimaLand.total_energy_per_area!(
    surface_field,
    model::SnowModel,
    Y,
    p,
    t,

)

A function which updates surface_field in place with the value for the total energy per unit ground area for the SnowModel.

This has already accounted for the area fraction of snow in the definition of S.

source
ClimaLand.total_energy_per_area!(
    surface_field,
    model::BucketModel,
    Y,
    p,
    t,
)

A function which updates surface_field in place with the value for the total energy per unit ground area for the BucketModel.

The ground of the bucket model has temperature Y.bucket.T, with volumetric specific heat approximated with the parameter ρc_soil. Additional energy is present due to the latent heat of fusion of frozen water, in the form of snow. We also add in this energy (below). We do not model or account for the sensible energy of snow (ρ_snow T_snow), as this is much smaller.

source
total_energy_per_area!(cache, model::AbstractModel, Y, p, t)

A function which updates cache in place with the total energy per unit ground area for the model, computed from Y, p, and t.

source
total_energy_per_area!(
    surface_field,
    land::AbstractLandModel,
    Y,
    p,
    t,
    sfc_cache,

)

A function which computes the total energy per unit area and updates surface_field in place, for the land model land, by calling the same function for the component models.

The sfc_cache field is available as scratch space.

source
ClimaLand.total_energy_per_area!(
    surface_field,
    model::BigLeafEnergyModel,
    Y,
    p,
    t,

)

A function which updates surface_field in place with the value of the big leaf model's energy.

Note that this assumes that there is at most a single canopy and stem component, and that the area index for them refers to the integrated area index (in height) - not the value per layer.

source
ClimaLand.total_energy_per_area!(
    surface_field,
    model::AbstractCanopyEnergyModel,
    Y,
    p,
    t,

)

A default function which errors for generic energy models for the canopy.

Note that we only support two models for canopy energy. The BigLeafEnergyModel has a special method for this, and the other has the temperature prescribed and does not conserve energy.

source
ClimaLand.total_energy_per_area!(
    surface_field,
    model::CanopyModel,
    Y,
    p,
    t,

)

A function which updates surface_field in place with the value for the total energy per unit ground area for the CanopyModel.

This acts by calling the method for the energy component of the canopy model.

source