Turbulent fluxes

Warning

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

Overview

Turbulent motion in the atmosphere transports heat away from the surface. Two primary mechanisms are involved: the sensible heat flux due to the temperature gradient between the atmosphere and land surface, and the latent heat flux (from evaporation, transpiration, and sublimation).

The surface energy budget partitioning strongly depends on the strength of these fluxes:

  • Strong winds and atmospheric instability → large turbulent fluxes
  • Calm conditions and stable boundary layer → weak turbulent fluxes

The coupling between the turbulent fluxes and atmospheric conditions are primarily captured through aerodynamic resistance (or equivalently conductance) terms that approximate the instantaneous resistance of the land surface to energy losses due to turbulent effects.

Implementations

Terrarium.PrescribedTurbulentFluxesType
struct PrescribedTurbulentFluxes{NF} <: Terrarium.AbstractTurbulentFluxes{NF}

Represents the simplest case where the turbulent (sensible and latent) heat fluxes are prescribed via input variables.

source
Terrarium.DiagnosedTurbulentFluxesType
struct DiagnosedTurbulentFluxes{NF} <: Terrarium.AbstractTurbulentFluxes{NF}

Represents the standard case where the turbulent (sensible and latent) heat fluxes are diagnosed from atmosphere and soil conditions.

source

Sensible heat flux

Sensible heat is transported by the mean wind and turbulent eddies using bulk aerodynamic theory:

\[\begin{equation} H_s = c_a \rho_a \frac{\Delta T}{r_a} \end{equation}\]

where $c_a$ is the specific heat capacity of moist air (J/kg/K) and $\rho_a$ is the moist air density (kg/m³), both computed dynamically based on the local atmosphere state using Thermodynamics.jl. $\Delta T = T_s - T_a$ is the temperature difference (K) (positive if surface warmer than air), and $r_a$ is the aerodynamic resistance (s/m). $H_s$ is positive when surface is warmer than air (heat flows upward), and negative when surface is cooler (heat flows downward).

Latent heat flux

Evaporation and sublimation remove heat from the surface through the latent heat pathway. It is driven by the specific humidity difference $\Delta q$ (kg/kg), equivalent with the vapor pressure difference $\Delta e$ (Pa), between the surface and atmosphere. Under the typical assumption that the land surface is saturated (see e.g. [23]), the vapor pressure difference is computed as:

\[\begin{equation} \Delta e = e_s - e_a = e_{\text{sat}}(T_s) - e_a(q_a, p) \end{equation}\]

with $T_s$ the skin temperature. The specific humidity difference $\Delta q$ is

\[\begin{equation} \Delta q = q_s - q_a = q_{\text{sat}}(T_s) - q_a \end{equation}\]

with $q_{\text{sat}}$ the saturation specific humidity at the surface temperature and $q_a$ the specific humidity of the atmosphere.

The latent heat flux is then computed as:

\[\begin{equation} H_l = L \rho_a \frac{\Delta q}{r_a} \end{equation}\]

where $L$ is the latent heat of vaporization or sublimation (J/kg). $H_l$ is always non-negative (≥ 0) and represents energy lost due to evaporation, transpiration, or sublimation. Currently, condensation (dew formation) is neglected so $\Delta q \geq 0$ and negative latent heat fluxes cannot occur.

The latent heat flux is directly tied to:

  • Vegetation: Transpiration through stomata (see Photosynthesis)
  • Soil moisture: Availability of water for evaporation (see Soil hydrology)
  • Surface roughness: Vegetation height affects aerodynamic properties

Diagnosed turbulent fluxes

Terrarium.DiagnosedTurbulentFluxesType
struct DiagnosedTurbulentFluxes{NF} <: Terrarium.AbstractTurbulentFluxes{NF}

Represents the standard case where the turbulent (sensible and latent) heat fluxes are diagnosed from atmosphere and soil conditions.

source

Prescribed turbulent fluxes

Terrarium.PrescribedTurbulentFluxesType
struct PrescribedTurbulentFluxes{NF} <: Terrarium.AbstractTurbulentFluxes{NF}

Represents the simplest case where the turbulent (sensible and latent) heat fluxes are prescribed via input variables.

source

Process interface

Terrarium.compute_auxiliary!Method
compute_auxiliary!(
    state,
    grid,
    tur::DiagnosedTurbulentFluxes,
    seb::Terrarium.AbstractSurfaceEnergyBalance,
    constants::PhysicalConstants,
    atmos::Terrarium.AbstractAtmosphere,
    args...
)
source

Methods

Terrarium.compute_sensible_heat_fluxFunction
compute_sensible_heat_flux(
    _::DiagnosedTurbulentFluxes,
    Q_T,
    ρₐ,
    cₐ
) -> Any

Compute the sensible heat flux [W/m²] as a function of the bulk aerodynamic temperature gradient Q_T [K m/s] and the density ρₐ [kg/m³] and specific heat capacity cₐ [J/kg K] of air.

source
compute_sensible_heat_flux(
    i,
    j,
    grid,
    fields,
    tur::DiagnosedTurbulentFluxes,
    skinT::Terrarium.AbstractSkinTemperature,
    constants::PhysicalConstants,
    atmos::Terrarium.AbstractAtmosphere
) -> Any

Compute the sensible heat flux at i, j based on the current skin temperature and atmospheric conditions.

source
Terrarium.compute_latent_heat_fluxFunction
compute_latent_heat_flux(
    _::DiagnosedTurbulentFluxes,
    Q_h,
    ρₐ,
    L
) -> Any

Compute the latent heat flux as a function of the humidity flux Q_h [m/s], the density ρₐ [kg/m³] of air, and the specific latent heat of vaporization or sublimation L [J/kg].

source
compute_latent_heat_flux(
    i,
    j,
    grid,
    fields,
    tur::DiagnosedTurbulentFluxes,
    skinT::Terrarium.AbstractSkinTemperature,
    constants::PhysicalConstants,
    atmos::Terrarium.AbstractAtmosphere
) -> Any

Compute the bare ground latent heat flux at i, j based on the current skin temperature and atmospheric conditions. This implementation assumes that evaporation is the only contributor to the latent heat flux.

source
compute_latent_heat_flux(
    i,
    j,
    grid,
    fields,
    tur::DiagnosedTurbulentFluxes,
    evtr::Terrarium.AbstractEvapotranspiration,
    constants::PhysicalConstants,
    atmos::Terrarium.AbstractAtmosphere
) -> Any

Compute the latent heat flux at i, j based on the given evapotranspiration scheme. This implementation derives the latent heat flux from the surface_humidity_flux defined by evtr which is assumed to be already computed.

source
Terrarium.specific_humidity_differenceFunction
specific_humidity_difference(
    c::ThermodynamicConstants,
    p,
    q_air,
    T
) -> Any

Computes the difference in specific humidity between a saturated surface at temperature T [°C] and the atmosphere, defined by its specific humidity q_air [kg/kg] and pressure p [Pa].

source

Kernel functions

Terrarium.compute_vapor_pressure_differenceMethod
compute_vapor_pressure_difference(
    i,
    j,
    grid,
    fields,
    atmos::Terrarium.AbstractAtmosphere,
    c::PhysicalConstants,
    T
) -> Any

Computes the vapor pressure difference [Pa] between a saturated surface at temperature T [°C] and the current atmospheric fields.

source
Terrarium.compute_specific_humidity_differenceMethod
compute_specific_humidity_difference(
    i,
    j,
    grid,
    fields,
    atmos::Terrarium.AbstractAtmosphere,
    c::PhysicalConstants,
    T
) -> Any

Computes the specific humidity difference [kg/kg] between a saturated surface at temperature T [°C] and the current atmospheric fields.

source

References

[23]
S. Zhou and B. Yu. Physical basis of the potential evapotranspiration and its estimation over land. Journal of Hydrology 641, 131825 (2024).