Brian E. J. Rose, University at Albany
This document uses the interactive Jupyter notebook
format. The notes can be accessed in several different ways:
- The interactive notebooks are hosted on
github
at https://github.com/brian-rose/ClimateModeling_courseware - The latest versions can be viewed as static web pages rendered on nbviewer
- A complete snapshot of the notes as of May 2017 (end of spring semester) are available on Brian's website.
Also here is a legacy version from 2015.
Many of these notes make use of the climlab
package, available at https://github.com/brian-rose/climlab
- The two-stream Schwarschild equations
- The Grey Gas Model
- Discretizing the Grey Gas equations on a finite grid
- Matrix equations for the Grey Gas model
- Band-averaged radiation models in
climlab
- References
Here we are going to introduce the governing equations of radiative transfer to put what we've been doing on a more solid theoretical footing.
Our derivations here will also serve as a coherent documentation for how some of the radiation solvers are implemented in climlab
.
The optical thickness of a layer of absorbers is
Passing to the limit of very thin layers, we define
where
In general
Since pressure decreases with altitude,
The equations of radiative transfer can be simplified by using
The specific absorption cross section
For a well-mixed greenhouse gas,
The dependence of
For climate modeling we almost always seperate the total flux into two beams: upward and downward.
This involves taking integrals of the full angular dependence of the flux. We'll skip the details here.
Let
\begin{align} \frac{d U_\nu}{d \tau_\nu} &= -U_\nu + E\big( \nu, T(\tau_\nu) \big) \ \frac{d D_\nu}{d \tau_\nu} &= D_\nu - E\big( \nu, T(\tau_\nu) \big) \end{align}
where
The emissions are governed by the Planck function: \begin{align} E &= \pi~ B\big( \nu, T \big) \ B\big( \nu, T \big) &= \frac{2 h \nu^3}{c^2} \frac{1}{\exp \left( \frac{h \nu}{k T} \right) -1} \end{align}
with these fundamental physical constants:
- $h = 6.626 \times 10^{-34} ~\text{J s} $ is Planck's constant
- $c = 3.00 \times 10^8 ~\text{m s}^{-1} $ is the speed of light
- $k = 1.38 \times 10^{-23} ~\text{J K}^{-1} $ is the Boltzmann Thermodynamic Constant
The two-stream equations basically say the beam is attenuated by absorption (first term) and augmented by emission (second term) in each thin layer of gas.
These equations are valid for beam that are not affected by scattering. We may come back to that later.
The absorption properties
Our job as climate modelers is to calculate and understand the net atmospheric absorption and transmission of radiation. To do this thoroughly and accurately, the fluxes must be solved for individually on a very dense grid of wavenumbers, and then the results integrated over all wavenumbers.
Actual radiative transfer codes (as used in GCMs) apply a lot of tricks and shortcuts to simplify this brute-force approach, but lead to sets of equations that are difficult to understand.
However, there is a lot we can understand about the basics of radiative transfer and the greenhouse effect by ignoring the spectral dependence of the flux.
Specifically, we make the approximation
so that the optical depth
This is known as the grey gas approximation.
If we assume
The integral of the Planck function gives our familiar Stefan-Boltzmann blackbody radiation law
with
# climlab has these constants available, and actually calculates sigma from the above formula
import numpy as np
import climlab
sigma = ((2*np.pi**5 * climlab.constants.kBoltzmann**4) /
(15 * climlab.constants.c_light**2 * climlab.constants.hPlanck**3) )
print sigma
print sigma == climlab.constants.sigma
5.67037262259e-08
True
This gives the governing equations for the grey gas model:
\begin{align} \frac{d U}{d \tau} &= -U + \sigma T(\tau)^4 \ \frac{d D}{d \tau} &= D - \sigma T(\tau)^4 \end{align}
These equations now say that the beam is diminished by absorption in a thin layer (first term) and augmented by blackbody emission, where both processes are assumed to be independent of frequency.
The above equations are linear, first order ODEs, and they are uncoupled from each other (because we neglected scattering).
Consider a layer of atmosphere from optical level
The incident upwelling beam from below is denoted
The result is
where
The change in the downwelling beam is similar:
One particularly important reason to think about these changes over finite layers is that we will typically solve the radiative transfer equations in a numerical model where the temperature is represented on a discrete grid (often using pressure coordinates).
If we assume that temperature is uniform everywhere in our layer then the blackbody emission
It can come out the integral and the expressions simplify to
\begin{align} U_1 &= U_0 ~ \exp(-\Delta \tau ) + E_{0} ~\Big( 1 - \exp(-\Delta \tau) \Big) \ D_0 &= D_1 ~ \exp(-\Delta \tau ) + E_{0} ~\Big( 1 - \exp(-\Delta \tau) \Big) \end{align}
The first term is the transmission of radition from the bottom to the top of the layer (or vice-versa). We can define the transmissivity of the layer (denoted
\begin{align} t_{0} &= \frac{U_{0} \exp(-\Delta \tau)}{U_{0}} \ &= \exp(-\Delta \tau)\ \end{align}
The second term is the net change in the beam due to emissions in the layer.
We can the define the emissivity
\begin{align} \epsilon_{0} &= 1 - \exp(-\Delta \tau) \ &= 1 - t_{0} \end{align}
Putting this all together gives us two simple equations that govern changes in the upwelling and downwelling beams across a discrete layer of optical depth
\begin{align} U_{1} &= t_0 ~ U_{0} + \epsilon_{0} ~ E_{0} \ D_{0} &= t_0 ~ D_{1} + \epsilon_{0} ~ E_{0} \ \end{align}
Our model will typically be discretized in pressure coordinates. Suppose the thickness of the layer is
$$ \Delta \tau = -\frac{\kappa}{g} \Delta p$$ (the minus sign accounts for the opposite sign conventions of the two coordinates).
Thus the emissivity of the layer is
In the grey gas approximation we ignore all spectral dependence of the flux, so
climlab
implements the discretized two-stream equations as written above.
We will now write out the equations on a discretized pressure grid with
Let the upwelling flux be a column vector
If there are numpy
index conventions.
-
$U_0$ is the upwelling flux from surface to layer 0. -
$U_1$ is the upwelling flux layer 0 to layer 1, etc. -
$U_N$ is the upwelling flux from layer N-1 (the top level) to space.
Same for the downwelling flux
So
The temperature and blackbody emissions are defined for each
Let the vector of absorptivity / emissivity be
where each element is determined by the thickness of the layer and the absorption cross-section for this particular spectral band:
And the transmissivity of individual layers is
It is convenient to define a vector of transmissivities
For the downwelling beam, we define a column vector of emissions with
where we define the last element
For a longwave model, we would usually set
We want a matrix
Define a vector of emissions for the upwelling beam thus:
We need to add the reflected part of the downwelling beam at the surface to any emissions from the surface:
Now we want a matrix
and
These formulas have been implemented in climlab.radiation.transmissivity.Transmissivity()
using vectorized numpy
array operations.
# example with N=2 layers and constant absorptivity
# we construct an array of absorptivities
eps = np.array([0.58, 0.58])
# and pass these as argument to the Transmissivity class
trans = climlab.radiation.transmissivity.Transmissivity(eps)
print 'Matrix Tup is '
print trans.Tup
print 'Matrix Tdown is '
print trans.Tdown
Matrix Tup is
[[ 1. 0.42 0.1764]
[ 0. 1. 0.42 ]
[ 0. 0. 1. ]]
Matrix Tdown is
[[ 1. 0. 0. ]
[ 0.42 1. 0. ]
[ 0.1764 0.42 1. ]]
The Grey Gas model is a useful first step in understanding how radiation shapes the global energy balance. But we quickly run up against its limitations when trying to understand what really determines climate sensitivity.
What's the next step in the model hierarchy?
Suppose we break up the spectrum into a discrete number
where we integrate over whatever part of the spectrum we have chosen to define band
In our band models we will typically ignore any dependence of
Notice that once we make this defintion, all of the formulas we wrote down above for the grey gas model can be written nearly identically for the fluxes in each band.
The optical depth in band
from which we can define emissivity and transmissivity for band
The only difference from the Grey Gas formulas is that the blackbody emission in band
We will denote this fraction as
The fraction
To simplify our band models, we might choose to fix
which is sensible if the temperatures don't vary too much.
Regardless of how we calculate
Once we've figured out this division of the total flux into multiple bands, and we know the absorption cross-sections of each band, we can calculate the upwelling and downwelling fluxes independently for each band, using the same formulas (same code!) as we use in the grey gas model.
To get the total flux, we just need to sum the beams over all bands:
\begin{align}
U &= \sum_0^{M-1} U_j \
D &= \sum_0^{M-1} D_j
\end{align}
For many more details about radiative transfer and a more careful derivation of the two-stream equations, see
Pierrehumbert, R. T. (2010). Principles of Planetary Climate. Cambridge University Press.
%load_ext version_information
%version_information numpy, climlab
Software | Version |
---|---|
Python | 2.7.12 64bit [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)] |
IPython | 5.3.0 |
OS | Darwin 16.5.0 x86_64 i386 64bit |
numpy | 1.11.1 |
climlab | 0.5.6 |
Thu May 25 13:39:56 2017 EDT |
The author of this notebook is Brian E. J. Rose, University at Albany.
It was developed in support of ATM 623: Climate Modeling, a graduate-level course in the Department of Atmospheric and Envionmental Sciences
Development of these notes and the climlab software is partially supported by the National Science Foundation under award AGS-1455071 to Brian Rose. Any opinions, findings, conclusions or recommendations expressed here are mine and do not necessarily reflect the views of the National Science Foundation.