Radiative fluxes

Warning

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

Overview

The radiative budget is characterized by the incidental downwelling (incoming) and upwelling (outgoing) radiative fluxes, each of which is defined in Terrarium as strictly nonnegative in their respective directions. The net radiative flux can then be computed as the sum of the directional fluxes for both the shortwave (solar) and longwave (thermal) components:

\[\begin{equation} R_{\text{net}}(T_s) = \text{SW}_{\uparrow} - \text{SW}_{\downarrow} + \text{LW}_{\uparrow}(T_s) - \text{LW}_{\downarrow} \end{equation}\]

where $\text{SW}_{\uparrow} = \alpha \text{SW}_{\downarrow}$ is upwelling (reflected) shortwave radiation (W/m²), $\text{SW}_{\downarrow}$ is downwelling (incident) shortwave radiation (W/m²), $\text{LW}_{\uparrow} = \epsilon \sigma T_0^4 + (1-\epsilon) L_{\downarrow}$ is upwelling longwave radiation from the surface and reflected downwelling longwave (W/m²), $\text{LW}_{\downarrow}$ is downwelling (incident) longwave radiation (W/m²), $\epsilon$ is the surface emissivity (see Albedo and Emissivity) (-), $\alpha$ is the surface albedo (see Albedo and Emissivity) (-), $\sigma$ is the Stefan-Boltzmann constant (W/m²/K⁴), and $T_s$ is the skin temperature (K).

Shortwave radiation

Shortwave radiation is determined by the solar angle, atmospheric transmittance, and cloud cover, all of which are assumed to be implicitly accounted for by the forcing data or a coupled atmosphere model. The absorbed shortwave depends on surface albedo $(1 - \alpha)$, which may vary with surface type (soil, vegetation, snow) and solar zenith angle.

Longwave radiation

The surface emits longwave radiation according to the Stefan-Boltzmann law, with the emission temperature determined by the skin temperature $T_0$. The amount of downwelling longwave radiation is controlled by atmospheric water vapor, cloud cover, air temperature, and greenhouse gases.

Diagnosed radiative fluxes

The standard implementation of the radiative balance is provided through DiagnosedRadiativeFluxes:

Terrarium.DiagnosedRadiativeFluxesType
struct DiagnosedRadiativeFluxes{NF} <: Terrarium.AbstractRadiativeFluxes{NF}

Computes outgoing shortwave and longwave radiation according to separately specified schemes for the albedo, skin temperature, and atmospheric inputs.

source

which computes the radiative budget according to the above equations.

Prescribed radiative fluxes

Alternatively, the outgoing shortwave and longwave radiation can also be prescribed as input fields via

Terrarium.PrescribedRadiativeFluxesType
struct PrescribedRadiativeFluxes{NF} <: Terrarium.AbstractRadiativeFluxes{NF}

Represents the simplest scheme for the radiative budget where outgoing shortwave and longwave radiation are given as input variables. Net radiation is diagnosed by summing all radiative fluxes:

\[R_{\text{net}} = S_{\uparrow} - S_{\downarrow} + L_{\uparrow} - L_{\downarrow}\]

source

This may be useful for testing or in cases where you want to couple Terrarium with another model that will take care of computing the incoming and outgoing radiative fluxes.

Process interface

Terrarium.compute_auxiliary!Method
compute_auxiliary!(
    state,
    grid,
    rad::PrescribedRadiativeFluxes,
    seb::Terrarium.AbstractSurfaceEnergyBalance,
    atmos::Terrarium.AbstractAtmosphere,
    args...
)
source
Terrarium.compute_auxiliary!Method
compute_auxiliary!(
    state,
    grid,
    rad::DiagnosedRadiativeFluxes,
    seb::Terrarium.AbstractSurfaceEnergyBalance,
    atmos::Terrarium.AbstractAtmosphere,
    consts::PhysicalConstants,
    args...
)
source

Methods

Terrarium.compute_shortwave_upFunction
compute_shortwave_up(::DiagnosedRadiativeFluxes, surface_shortwave_down, α)

Compute outgoing shortwave radiation from the incoming surface_shortwave_down and albedo α.

source
Terrarium.compute_longwave_upFunction
compute_longwave_up(::DiagnosedRadiativeFluxes, constants::PhysicalConstants, surface_longwave_down, Ts, ϵ)

Compute outgoing longwave radiation from incoming surface_longwave_down, surface temperature Ts, and emissivity ϵ.

source

Kernel functions

Terrarium.compute_surface_upwelling_radiationFunction
compute_surface_upwelling_radiation(
    i,
    j,
    grid,
    fields,
    rad::PrescribedRadiativeFluxes,
    args...
) -> NamedTuple{(:surface_shortwave_up, :surface_longwave_up), <:Tuple{Any, Any}}

Compute upwelling shortwave and longwave radiation at a grid point.

source
Terrarium.compute_radiative_fluxes!Function
compute_radiative_fluxes!(
    out,
    i,
    j,
    grid,
    fields,
    rad::PrescribedRadiativeFluxes,
    atmos::Terrarium.AbstractAtmosphere,
    args...
) -> Any

Compute net radiation and store in auxiliary fields at a grid point.

source