Canopy Energy Model
Models and Parameters
ClimaLand.Canopy.PrescribedCanopyTempModel
— TypePrescribedCanopyTempModel{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.
ClimaLand.Canopy.BigLeafEnergyModel
— TypeBigLeafEnergyModel{FT} <: AbstractCanopyEnergyModel{FT}
ClimaLand.Canopy.BigLeafEnergyModel
— MethodBigLeafEnergyModel{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
ClimaLand.Canopy.BigLeafEnergyParameters
— TypeBigLeafEnergyParameters{FT <: AbstractFloat}
ac_canopy
: Specific heat per emitting area [J/m^2/K]
ClimaLand.Canopy.BigLeafEnergyParameters
— MethodBigLeafEnergyParameters{FT}(; ac_canopy = FT(2e3)) where {FT}
Construct BigLeafEnergyParameters
with the default ac_canopy = 2e3
.
ClimaLand.Canopy.AbstractCanopyEnergyModel
— TypeAbstractCanopyEnergyModel{FT}
An abstract struct for the Canopy Energy Models. Both PrescribedCanopyTempModel and BigLeafEnergyModel are subtypes of this abstract type.
Methods
ClimaLand.Canopy.canopy_temperature
— Functioncanopy_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.
canopy_temperature(model::BigLeafEnergyModel, canopy, Y, p)
Returns the canopy temperature under the BigLeafEnergyModel
model, where the canopy temperature is modeled prognostically.
ClimaLand.Canopy.root_energy_flux_per_ground_area!
— Functionroot_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.
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.
ClimaLand.total_energy_per_area!
— FunctionClimaLand.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
.
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.
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.
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
.
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.
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.
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.
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.