Doubling: a single homogeneous layer
A single homogeneous layer of total optical depth \(\tau\) and single-scattering albedo \(\omega\) is subdivided into \(2^d\) identical sublayers of optical depth \(\delta\tau = \tau / 2^d\), where the number of doublings \(d\) is chosen adaptively (see Implementation notes). Starting from the properties of one thin sublayer, \(d\) doubling steps produce the properties of the whole layer.
Thin-layer initialisation
For the initial sublayer, the azimuthally averaged (\(m = 0\)) reflection and transmission matrices are, to first order in \(\delta\tau\),
where
Here \(\mu_i\) and \(w_i\) are the Gauss–Legendre nodes and weights, and \(P^{++}\), \(P^{+-}\) are the azimuthally averaged forward- and backward-scattering phase matrices (Phase-function treatment).
Thermal source: the \(\vect{y}\) and \(\vect{z}\) vectors
Following Wiscombe (1976), the Planck function is allowed to vary linearly with optical depth across the layer:
Two auxiliary vectors are tracked through the doubling process: \(\vect{y}\) (mean emissivity) and \(\vect{z}\) (emissivity slope). Their thin-sublayer values are
Solar source initialisation
For an incident collimated solar flux \(F_\odot\) at cosine zenith angle \(\mu_0\), the solar source vectors of the thin sublayer are
where \(F_\mathrm{top} = F_\odot \exp(-\tau_\mathrm{cum}/\mu_0)\) is the attenuated direct beam at the top of the current layer and \(p^{\pm}_i\) are the solar phase vectors for scattering from \(\mu_0\) into stream \(\mu_i\) (Phase-function treatment).
The doubling loop
At each step \(k = 0, \dots, d-1\) the reflection and transmission matrices are combined with themselves:
The resolvent \(\mat{\Gamma}_k = (\mat{I}-\mat{R}_k^2)^{-1}\) sums the infinite series of internal reflections between the two identical halves.
Thermal source doubling. With \(g_k = 2^{k-1}\delta\tau\) (\(g_0 = \delta\tau/2\)):
After \(d\) doublings the thermal source vectors are recovered from
Solar source doubling. With \(\gamma_k = \exp(-2^k\delta\tau/\mu_0)\):
The attenuation factor squares at every step: \(\gamma_{k+1} = \gamma_k^2\).
Pure absorption (\(\omega = 0\))
When there is no scattering the doubling recursion is bypassed and the source vectors are computed analytically. With \(t_i = \ee^{-\tau/\mu_i}\):
The reflection matrix is zero and the transmission is diagonal, \(T_{ij} = t_i\,\delta_{ij}\), which the adding step exploits (Adding: combining layers).