Beer–Lambert radiative transfer and the HAPI absorption LUT
This note derives the forward model implemented by plume_simulation.hapi_lut: a line-by-line Voigt-profile sum of molecular absorption lines, packaged into a look-up table (LUT) of the absorption cross-section , and applied to a single-layer Beer–Lambert transmittance calculation. The LUT is the precomputed object; the forward model is a interpolation followed by a single exp.
The theory follows Gordon et al. [1] for the line-by-line physics (intensity, shape, and cross-section) and Rothman et al. [2] for the HITRAN database conventions. LUT design follows the decoupled-VOD recipe used in operational SWIR retrievals (e.g. Frankenberg et al. [3]).
1. Physical setup¶
Consider a pencil of sunlight traversing a plane-parallel atmospheric layer of vertical thickness containing a single absorbing gas at temperature [K], pressure [atm], and volume mixing ratio . We want the transmittance — the fraction of photons at wavenumber ν that pass through untouched — as a function of the atmospheric state.
Two viewing angles enter: the solar zenith angle (light in) and the viewing zenith angle (light out to the sensor after ground reflection). The plane-parallel two-way air-mass factor
converts the vertical path length to the slant path length actually traversed by the photon; it is valid for zenith angles below and collapses to at nadir (SZA = VZA = 0).
2. Line-by-line absorption cross-section¶
The HITRAN database catalogues every rovibrational transition of every atmospherically relevant isotopologue by a central wavenumber [cm⁻¹], a reference line strength at K [cm⁻¹/(molecule·cm⁻²)], and a lower-state energy [cm⁻¹]. For a given each line’s strength is the reference value scaled by the Boltzmann + stimulated-emission factors,
where is the Total Internal Partition Sum (TIPS-2021 tables are bundled with HAPI) and K·cm is the second radiation constant.
Each line also has a shape function determined by two broadening mechanisms:
- Doppler broadening — thermal translation gives a Gaussian shape with half-width .
- Pressure broadening — collisions give a Lorentzian shape with half-width .
The real line shape is the convolution of the two — the Voigt profile,
evaluated by HAPI via the Humlíček algorithm. Summing line strength × shape over all lines within the requested wavenumber window gives the absorption cross-section
This is the core quantity HAPI computes via absorptionCoefficient_Voigt (name notwithstanding, the HITRAN_units=True option returns σ, not α).
3. Absorption coefficient and Beer–Lambert¶
The bulk absorption coefficient follows from σ and the local number density of the absorbing gas. From the ideal-gas law,
and the absorption coefficient is the product
with units checking out: .
The Beer–Lambert law states that each infinitesimal path attenuates the intensity by a factor . Integrating over a homogeneous layer and applying the two-way AMF gives
This is the single-layer forward model in plume_simulation.hapi_lut.beers.beers_law_from_lut.
4. Why a look-up table¶
Evaluating at runtime for every pixel is prohibitively expensive: each call sums thousands of Voigt profiles across a dense ν grid. But σ is a smooth function of at fixed ν — Doppler broadening scales as , pressure broadening as , and line strength is entire. Precompute σ on a coarse grid once, interpolate at runtime.
The natural axes are:
- Wavenumber ν — determined by the instrument’s native resolution. HAPI works at cm⁻¹ for hyperspectral applications (TROPOMI, EMIT); coarser is fine for tutorial work.
- Temperature — spans the upper troposphere ( K) to the surface ( K), with K steps sufficient for bilinear-interpolation error below 1 %.
- Pressure — spans the upper troposphere ( atm) to the surface ( atm), logarithmic or uniform depending on where accuracy matters most.
Viewing geometry () is not a LUT axis: AMF multiplies after the LUT lookup, so a single cross-section LUT serves every satellite geometry.
5. Differential Beer–Lambert — plume enhancement¶
For plume retrievals from point sources (landfills, oil-and-gas, industrial stacks) we care about the enhancement above the regional background, not the absolute column. Let be the background and the plume pixel, where is the fractional enhancement.
The optical depth decomposes additively,
because Beer–Lambert turns a sum of absorption coefficients into a product of transmittances. On the measurement side, dividing the plume pixel radiance by the background pixel radiance cancels every factor that is common to both pixels:
Solar irradiance , broadband surface albedo , aerosol / non-target atmospheric transmittance , and the target-gas background all drop out of the ratio — leaving only the narrow-band absorption features of the plume enhancement. This cancellation is what makes plume retrievals from space possible even when the absolute column retrieval is dominated by nuisance parameters.
The retrieval inverts the LUT-derived simulated ratio against the measured ratio:
This is the forward-model kernel of matched-filter and optimal-estimation retrievals downstream (jej_vc_snippets/methane_retrieval/matched_filter_beerslaw.py, lut_3dvar_beers.py).
6. Assumptions and caveats¶
The forward model above inherits a stack of approximations, in roughly decreasing order of severity:
- Absorption-only radiative transfer. Scattering by molecules (Rayleigh), aerosols, and clouds is ignored. For hazy or cloudy pixels a full scalar or vector RTM (e.g. VLIDORT, SASKTRAN) is needed.
- Single homogeneous layer. Real atmospheres have , , profiles. Operational retrievals discretize into 20–40 layers and sum layer-wise vertical optical depths (VODs) — the same LUT machinery applies per layer.
- Plane-parallel geometry. Breaks down past zenith; the sphericity correction is a -replacement in the AMF.
- Local thermodynamic equilibrium (LTE). Holds in the troposphere and lower stratosphere; fails at very high altitudes where radiative excitation competes with collisional excitation.
- Line-mixing neglected. HAPI’s
_Voigtdoes not account for line mixing, which matters at very high pressure for some species (CO₂ 4.3 µm band, for instance). The_HT(Hartmann–Tran) profile is available but costlier. - Diluent composition. We pin
{'air': 1-VMR, 'self': VMR}, using dry-air broadening coefficients. Humid conditions change slightly via — second-order for most retrievals.
7. Software surface¶
Three functions carry the physics:
generator.compute_absorption_lut(gas_config, grid_config)— evaluates on the full LUT grid by callinghapi.absorptionCoefficient_Voigtfor each knot.beers.beers_law_from_lut(ds, vmr, T, p, L_vert, SZA, VZA)— interpolates the LUT at , multiplies by to get α, applies AMF and exp, returns .beers.plume_ratio_spectrum(ds, vmr_bg, vmr_tot, ...)— the differential form used by the enhancement retrieval in Differential Beer-Lambert plume retrieval from the LUT.
The three subsequent notebooks walk through building the LUT (01), extending to multiple gases (02), and using it as the forward model of a plume-enhancement retrieval (03).
Gordon, I. E. et al. (2022). The HITRAN2020 molecular spectroscopic database. JQSRT 277, 107949.
Rothman, L. S. et al. (2013). HITRAN: 40 years and counting. JQSRT 130, 4–50.
Frankenberg, C. et al. (2005). Iterative maximum a posteriori (IMAP)-DOAS for retrieval of strongly absorbing trace gases. Atmos. Chem. Phys. 5, 9–22.