Gray longwave radiation
Introduction
climt provides an idealised gray longwave radiation scheme — the standard choice for aquaplanet and dynamical-core experiments where a full band model like RRTMG or Cork is more than the experiment needs. It comes as a matched pair of components:
Frierson06LongwaveOpticalDepth— aDiagnosticComponentthat prescribes the longwave optical depth as an analytic function of latitude and pressure, following Frierson et al. (2006).GrayLongwaveRadiation— aTendencyComponentthat solves the two-stream gray longwave radiative transfer for that optical depth and returns the resulting heating-rate tendency and up/down fluxes.
They are designed to run together: Frierson06LongwaveOpticalDepth produces longwave_optical_depth_on_interface_levels, which GrayLongwaveRadiation consumes. You can also supply your own optical-depth field and use GrayLongwaveRadiation alone.
Frierson06LongwaveOpticalDepth
Physics
The optical depth is prescribed analytically. A reference optical depth \(\tau_0\) interpolates between an equatorial and a polar value with the sine- squared of latitude:
\[ \tau_0(\phi) = \tau_{0e} + (\tau_{0p} - \tau_{0e})\, \sin^2\phi, \]
and its vertical structure is a blend of a linear and a quartic term in the pressure coordinate \(\sigma = p/p_s\):
\[ \tau(\phi, \sigma) = \tau_0(\phi)\,\big[\,1 - (f_l\,\sigma + (1 - f_l)\,\sigma^4)\,\big]. \]
The quartic term concentrates optical depth in the lower troposphere (representing water-vapour absorption), while the linear term \(f_l\) adds a well-mixed (CO₂-like) contribution. The larger equatorial optical depth produces a stronger greenhouse effect in the tropics.
Constructor
climt.Frierson06LongwaveOpticalDepth(
linear_optical_depth_parameter=0.1,
longwave_optical_depth_at_equator=6,
longwave_optical_depth_at_poles=1.5)| Argument | Default | Symbol | Description |
|---|---|---|---|
linear_optical_depth_parameter |
0.1 |
\(f_l\) | Weight of the linear (well-mixed) vs quartic (water-vapour-like) vertical profile. |
longwave_optical_depth_at_equator |
6 |
\(\tau_{0e}\) | Reference optical depth at the equator. |
longwave_optical_depth_at_poles |
1.5 |
\(\tau_{0p}\) | Reference optical depth at the poles. |
State
| Role | Quantity | Dims | Units |
|---|---|---|---|
| in | air_pressure_on_interface_levels |
[interface_levels, *] |
Pa |
| in | surface_air_pressure |
[*] |
Pa |
| in | latitude |
[*] |
degrees_N |
| diag | longwave_optical_depth_on_interface_levels |
[interface_levels, *] |
dimensionless |
GrayLongwaveRadiation
Physics
Given the optical-depth profile, GrayLongwaveRadiation solves the two-stream gray longwave equations. The atmosphere is treated as a single (gray) band whose emission is \(\sigma T^4\) (Stefan–Boltzmann) at each level. Integrating the Schwarzschild equation upward and downward through the optical-depth coordinate gives the upwelling and downwelling fluxes, with the surface emitting at \(\sigma T_{\text{surface}}^4\) as the lower boundary. The flux divergence between interfaces is converted to an air-temperature tendency.
State
| Role | Quantity | Dims | Units | Alias |
|---|---|---|---|---|
| in | longwave_optical_depth_on_interface_levels |
[interface_levels, *] |
dimensionless |
tau |
| in | air_temperature |
[mid_levels, *] |
degK |
sl |
| in | surface_temperature |
[*] |
degK |
T_surface |
| in | air_pressure |
[mid_levels, *] |
Pa |
p |
| in | air_pressure_on_interface_levels |
[interface_levels, *] |
Pa |
p_interface |
| tendency | air_temperature |
[mid_levels, *] |
degK s^-1 |
|
| diag | downwelling_longwave_flux_in_air |
[interface_levels, *] |
W m^-2 |
lw_down |
| diag | upwelling_longwave_flux_in_air |
[interface_levels, *] |
W m^-2 |
lw_up |
| diag | air_temperature_tendency_from_longwave |
[mid_levels, *] |
degK day^-1 |
Example
The two components compose directly — run the optical-depth diagnostic, then the radiation tendency:
import climt
from climt import get_default_state, get_grid
optical_depth = climt.Frierson06LongwaveOpticalDepth()
radiation = climt.GrayLongwaveRadiation()
state = get_default_state([optical_depth, radiation],
grid_state=get_grid(nx=1, ny=1, nz=30))
state.update(optical_depth(state)) # sets the optical-depth field
tendencies, diagnostics = radiation(state) # gray LW heating + fluxes
print(diagnostics["air_temperature_tendency_from_longwave"].values)To use a custom optical depth, populate longwave_optical_depth_on_interface_levels yourself and skip Frierson06LongwaveOpticalDepth.
Source
- Both components:
climt/_components/radiation.py
Reference
Frierson, D. M. W., Held, I. M. & Zurita-Gotor, P. (2006). A gray-radiation aquaplanet moist GCM. Part I. J. Atmos. Sci. 63, 2548–2566.