Surface Energy Balance

Warning

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

Overview

The surface energy balance (SEB) describes how solar radiation, thermal radiation, and heat fluxes interact at the interface between the land and the atmosphere. The SEB broadly consists of four key components: the net radiation budget $R_\text{net}$ (W/m²), sensible heat flux $H_s$ (W/m²), latent heat flux $H_l$ (W/m²), and ground heat flux $G$ (W/m²). The energy balance can be expressed as a simple sum of each flux term:

\[\begin{equation} R_{\text{net}} = H_s + H_l + G\,. \end{equation}\]

Following the standard convention of Terrarium and Oceananigans, all surface energy fluxes are defined positive upward (away from surface).

The SurfaceEnergyBalance process is responsible for computing all of the above flux terms and thus closing the energy balance between the atmosphere and land surface. Implementations of AbstractSurfaceEnergyBalance should generally include, at minimum, representations of each of the four SEB components:

  • An implementation of AbstractSkinTemperature that defines and updates both the skin temperature $T_s$ and the ground heat flux $G$. The skin temperature $T_0$ is the effective radiative temperature of the land surface. For an implicit approach, $T_0$ self-consistently satisfies the energy balance at each time step. For a prescribed approach, $T_0$ is given as input. The ground heat flux at the surface is derived either directly or as a residual from the energy balance. See Skin temperature and ground heat flux for further details.
  • An implementation of AbstractRadiativeFluxes that compute the partitioning of the radiation budget. The radiative energy budge $R_{\text{net}}$ is the sum of all incoming and outgoing radiative fluxes at the interface between the atmosphere and the land surface. This typically consists of both shortwave and longwave radiation bands. See Radiative fluxes for further details.
  • An implementation of AbstractTurbulentFluxes that compute the turbulent (sensible and latent) heat fluxes. Sensible and latent heat fluxes are driven by temperature and humidity gradients between the surface and atmosphere, quantified through bulk aerodynamic approaches. These fluxes depend on wind speed, atmospheric stability, surface roughness, and the availability of soil moisture. See Turbulent fluxes for further details.
  • A scheme for representing the albedo in the Radiative energy budget.
Terrarium.SurfaceEnergyBalanceType
struct SurfaceEnergyBalance{NF, SkinTemperature<:Terrarium.AbstractSkinTemperature{NF}, TurbulentFluxes<:Terrarium.AbstractTurbulentFluxes{NF}, RadiativeFluxes<:Terrarium.AbstractRadiativeFluxes{NF}, Albedo<:Terrarium.AbstractAlbedo{NF}} <: Terrarium.AbstractSurfaceEnergyBalance{NF}

Standard implementation of the surface energy balance (SEB) that computes the radiative, turbulent, and ground energy fluxes at the surface. The SEB is also responsible for defining and solving the so-called skin temperature (effective emission temperature of the land surface) as well as the albedo.

source
variables(SurfaceEnergyBalance(Float32))
Variables
├─ Prognostic: 
├── skin_temperature [°C] on XY{Center, Center}
├─ Auxiliary: 
├── ground_heat_flux [W m^-2] on XY{Center, Center}
├── surface_shortwave_up [W m^-2] on XY{Center, Center}
├── surface_longwave_up [W m^-2] on XY{Center, Center}
├── surface_net_radiation [W m^-2] on XY{Center, Center}
├── sensible_heat_flux [W m^-2] on XY{Center, Center}
├── latent_heat_flux [W m^-2] on XY{Center, Center}
├─ Inputs: 
├── ground_temperature [°C] on XY{Center, Center}
├─ Namespaces:
Prescribed energy fluxes

SurfaceEnergyBalance allows you to mix and match which terms in the SEB are diagnosed vs. prescribed depending on the choice of implementation. While this has the potential to be convenient in cases where data on skin temperature or turbulent heat fluxes is available, it should be noted that this may result in surface energy fluxes that are inconsistent and do not fully satisfy the SEB equation.

Process interface

Terrarium.compute_auxiliary!Method
compute_auxiliary!(
    state,
    grid,
    seb::SurfaceEnergyBalance,
    atmos::Terrarium.AbstractAtmosphere,
    constants::PhysicalConstants
)
compute_auxiliary!(
    state,
    grid,
    seb::SurfaceEnergyBalance,
    atmos::Terrarium.AbstractAtmosphere,
    constants::PhysicalConstants,
    hydrology::Union{Nothing, Terrarium.AbstractSurfaceHydrology},
    args...
)
source

Methods

Terrarium.compute_surface_energy_fluxes!Function
compute_surface_energy_fluxes!(state, grid, ::AbstractSurfaceEnergyBalance, args...)

Compute the surface energy fluxes and skin temperature from the current state and grid. The required args are implementation dependent.

source