Held–Suarez forcing

Introduction

HeldSuarez implements the Held & Suarez (1994) benchmark forcing — the standard idealised test case for atmospheric dynamical cores. It replaces all physical parameterisations (radiation, convection, boundary layer) with two simple analytic terms:

  1. Newtonian relaxation of temperature toward a prescribed radiative-equilibrium profile, and
  2. Rayleigh friction that damps the winds in the boundary layer.

Coupled to a dynamical core, this forcing produces a realistic mid-latitude jet and eddy field without any expensive physics, which is exactly why it is the canonical benchmark for testing and intercomparing dynamical cores.

HeldSuarez is a TendencyComponent: it returns tendencies of temperature and the horizontal winds.

Physics

Thermal relaxation

Temperature is relaxed toward the equilibrium profile \(T_{\text{eq}}\) at a latitude- and height-dependent rate \(k_T\):

\[ \left(\frac{\partial T}{\partial t}ight)_{\text{HS}} = -k_T(\phi, \sigma)\,\big(T - T_{\text{eq}}(\phi, p)\big). \]

The equilibrium temperature combines a horizontal gradient (set by the equator–pole temperature difference \(\Delta T_y\)) and a vertical stratification (set by \(\Delta\theta_z\)), floored at 200 K:

\[ T_{\text{eq}} = \max\!\left[\,200,\; \left(315 - \Delta T_y\,\sin^2\phi - \Delta\theta_z\,\log\!\tfrac{p}{p_0}\,\cos^2\phiight)\left(\tfrac{p}{p_0}ight)^{\kappa}\,ight], \]

with \(\kappa = R_d/c_p\). The relaxation rate is fast near the surface in the tropics and slow in the free atmosphere:

\[ k_T = k_a + (k_s - k_a)\,\max\!\left(0, \tfrac{\sigma - \sigma_b}{1 - \sigma_b}ight)\cos^4\phi, \]

where \(\sigma = p/p_s\).

Rayleigh friction

The winds are damped within the boundary layer (\(\sigma > \sigma_b\)) at rate \(k_v\):

\[ \left(\frac{\partial \mathbf{v}}{\partial t}ight)_{\text{HS}} = -k_v(\sigma)\,\mathbf{v}, \qquad k_v = k_f\,\max\!\left(0, \tfrac{\sigma - \sigma_b}{1 - \sigma_b}ight). \]

Above the boundary layer \(k_v = 0\), leaving the free-atmosphere flow frictionless.

Constructor

climt.HeldSuarez(sigma_boundary_layer_top=0.7,
                 k_f=1/86400.0,
                 k_a=1/40.0/86400.0,
                 k_s=1/4.0/86400.0,
                 equator_pole_temperature_difference=60,
                 delta_theta_z=10)
Argument Default Symbol Description
sigma_boundary_layer_top 0.7 \(\sigma_b\) Top of the boundary layer in \(\sigma\); friction and enhanced thermal relaxation act below it.
k_f 1/86400 s⁻¹ \(k_f\) Rayleigh friction rate (1 day⁻¹).
k_a 1/(40{\cdot}86400) s⁻¹ \(k_a\) Free-atmosphere thermal relaxation rate (1/40 day⁻¹).
k_s 1/(4{\cdot}86400) s⁻¹ \(k_s\) Surface tropical thermal relaxation rate (1/4 day⁻¹).
equator_pole_temperature_difference 60 \(\Delta T_y\) Equilibrium equator–pole temperature contrast (K).
delta_theta_z 10 \(\Delta\theta_z\) Equilibrium vertical potential-temperature contrast (K).

The reference pressure \(p_0\), \(c_p\) and \(R_d\) come from climt’s registered constants (reference_air_pressure, etc.).

State

Role Quantity Dims Units
in eastward_wind, northward_wind [*, mid_levels] m s^-1
in air_temperature [*, mid_levels] degK
in air_pressure [*, mid_levels] Pa
in surface_air_pressure [*] Pa
in latitude [*] degrees_north
tendency eastward_wind, northward_wind [*, mid_levels] m s^-2
tendency air_temperature [*, mid_levels] degK s^-1

HeldSuarez has no diagnostics — it returns only tendencies.

Example

import climt
from climt import get_default_state, get_grid

forcing = climt.HeldSuarez()
state = get_default_state([forcing], grid_state=get_grid(nx=32, ny=16, nz=20))

tendencies, diagnostics = forcing(state)
print(tendencies["air_temperature"].values.shape)

In a full benchmark run, HeldSuarez is coupled to a dynamical core (the component supplies the physics tendencies; the dynamical core advances the state).

Source

Reference

Held, I. M. & Suarez, M. J. (1994). A proposal for the intercomparison of the dynamical cores of atmospheric general circulation models. Bull. Amer. Meteor. Soc. 75, 1825–1830.