Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Differential Beer-Lambert plume retrieval from the LUT

Beer–Lambert forward model & differential plume-enhancement retrieval

This notebook closes the loop between the offline-generated CH4_4 cross-section LUT (notebook 01) and the plume-simulation sub-project. The LUT’s job is to make the runtime forward model fast — ~1 ms per pixel instead of ~1 s for a direct line-by-line call. The forward model’s job is to simulate the transmittance ratio τplume(ν)/τbg(ν)\tau_{\mathrm{plume}}(\nu) / \tau_{\mathrm{bg}}(\nu) that a satellite spectrometer measures when looking at a plume pixel vs a nearby background pixel. The retrieval’s job is to invert that ratio for the column enhancement ε\varepsilon.

Structure:

  1. Load the LUT built in notebook 01, verify it against a direct HAPI call.

  2. Single-layer forward model — compute τ(ν)\tau(\nu) at background VMR.

  3. Differential Beer–Lambert — build τenh(ν;ε)\tau_{\mathrm{enh}}(\nu; \varepsilon) for a menu of ε\varepsilon values.

  4. Tie to gauss_plume — take a synthetic plume from simulate_plume, convert its column enhancement to a VMR enhancement, and build the corresponding measured-ratio spectrum.

  5. Retrieve ε\varepsilon from a noisy simulated ratio via least squares, pixel by pixel.

See 00_hapi_lut_derivation.md for the physics and CH4 absorption cross-section LUT for the LUT build.

Loading...

1. Reference atmosphere and geometry

Mid-troposphere state: T=260T = 260 K, p=0.6p = 0.6 atm. The mapping from viewing geometry to the two-way AMF follows the plane-parallel formula AMF=1/cos⁡SZA+1/cos⁡VZA\mathrm{AMF} = 1/\cos \mathrm{SZA} + 1/\cos \mathrm{VZA}. At nadir (SZA=VZA=0\mathrm{SZA} = \mathrm{VZA} = 0) this is exactly 2.

2. Single-layer forward transmittance

beers_law_from_lut chains:

  • σ(ν)←\sigma(\nu) \leftarrow bilinear interp of the LUT at (T,p)(T, p),

  • α(ν)=σ(ν)⋅NCH4\alpha(\nu) = \sigma(\nu) \cdot N_{\mathrm{CH_4}} with NCH4=VMR⋅p/(kBT)N_{\mathrm{CH_4}} = \mathrm{VMR} \cdot p/(k_B T),

  • τ(ν)=exp⁡(−α⋅Lvert⋅AMF)\tau(\nu) = \exp(-\alpha \cdot L_{\mathrm{vert}} \cdot \mathrm{AMF}).

At background VMR the methane ν3\nu_3 band produces ~5 % dips in the clearest lines.

<Figure size 1000x350 with 1 Axes>

3. Differential Beer–Lambert: τenh\tau_{\mathrm{enh}} vs ε\varepsilon

The key physics (§5 of the derivation note) is that dividing a plume pixel’s transmittance by a nearby background pixel’s transmittance cancels out the solar spectrum, surface albedo, aerosol, and target-gas background — leaving only the narrow-band enhancement signature

τenh(ν;ε)  =  τ(ν;(1+ε) VMRbg)τ(ν;VMRbg).\tau_{\mathrm{enh}}(\nu;\varepsilon) \;=\; \frac{\tau(\nu; (1+\varepsilon)\,\mathrm{VMR}_{\mathrm{bg}})}{\tau(\nu; \mathrm{VMR}_{\mathrm{bg}})}.

We build a menu of such ratios for ε∈{0,5%,10%,20%}\varepsilon \in \{0, 5 \%, 10 \%, 20 \%\}.

<Figure size 1000x400 with 1 Axes>

The depth of the absorption signature scales roughly linearly with ε\varepsilon in the small-enhancement regime — that’s the regime where classical matched-filter retrievals have a closed-form MLE.

4. Tie in the Gaussian plume — column enhancement → VMR enhancement

Use the steady-state Gaussian plume forward model to get column CH4_4 enhancement [kg/m²] over a 2-D ground footprint. Emission: Q=500Q = 500 kg/hr from a ground-level source, wind 5 m/s from the west (meteo convention: wind_direction = 270°), neutral stability (class D).

column CH4 enhancement range: [0.00e+00, 3.98e-03] kg/m²

4a. Column → VMR mapping

The background CH4_4 column mass density follows from the hydrostatic air column psurf/gp_{\mathrm{surf}} / g and the CH4_4 mass fraction VMRbg⋅MCH4/Mair\mathrm{VMR}_{\mathrm{bg}} \cdot M_{\mathrm{CH_4}} / M_{\mathrm{air}}:

CbgCH4  =  psurfg⋅VMRbg⋅MCH4Mair.C_{\mathrm{bg}}^{\mathrm{CH_4}} \;=\; \frac{p_{\mathrm{surf}}}{g} \cdot \mathrm{VMR}_{\mathrm{bg}} \cdot \frac{M_{\mathrm{CH_4}}}{M_{\mathrm{air}}}.

The fractional enhancement is then ε(x,y)=Cplume(x,y)/CbgCH4\varepsilon(x, y) = C_{\mathrm{plume}}(x, y) / C_{\mathrm{bg}}^{\mathrm{CH_4}}.

air column:       10329 kg/m²
CH4 bg column:    10.866 g/m² (VMR_bg = 1.90e-06)
peak ε:           36.61%

4b. Synthetic scene — ε(x, y) footprint

<Figure size 1000x400 with 2 Axes>

5. Per-pixel differential retrieval

We now retrieve ε^\hat\varepsilon from a simulated noisy ratio spectrum at each pixel. Forward model for the simulated ratio at pixel (x,y)(x, y) with true enhancement εtrue\varepsilon_{\mathrm{true}}:

Imeas(ν)  =  τenh(ν;εtrue)+η(ν),η∼N(0,σn2).I_{\mathrm{meas}}(\nu) \;=\; \tau_{\mathrm{enh}}(\nu; \varepsilon_{\mathrm{true}}) + \eta(\nu), \qquad \eta \sim \mathcal{N}(0, \sigma_n^2).

Taking the log linearises the problem: in the small-enhancement limit log⁡τenh(ν;ε)≈ε⋅log⁡τenh(ν;1.0)\log \tau_{\mathrm{enh}}(\nu; \varepsilon) \approx \varepsilon \cdot \log \tau_{\mathrm{enh}}(\nu; 1.0), so the MLE is a single closed-form projection (matched filter):

ε^  =  ⟨log⁡Imeas, K⟩∥K∥2,K(ν)  :=  log⁡τenh(ν;1.0).\hat\varepsilon \;=\; \frac{\langle \log I_{\mathrm{meas}}, \,K \rangle}{\|K\|^2}, \qquad K(\nu) \;:=\; \log \tau_{\mathrm{enh}}(\nu; 1.0).

This is the matched-filter kernel used in operational retrievals (Thompson et al., Thorpe et al.). Below we precompute KK once from the LUT and project every pixel’s synthetic noisy log-ratio onto it.

kernel support: 5000 pts over 4150-4400 cm^-1

5a. Single-pixel smoke test

ε_true = 10.00%   ε_hat = 10.002%

5b. Retrieval sweep across the plume

We downsample the 2-D footprint to a coarser retrieval grid (every 5th x-pixel × every 5th y-pixel) to keep wallclock reasonable, then plot ε^\hat\varepsilon vs εtrue\varepsilon_{\mathrm{true}} on a scatter diagram.

<Figure size 1200x400 with 2 Axes>
retrieval bias:  -0.0006%
retrieval RMSE:  0.0145%
retrieval N:     493 pixels

6. Takeaways

  • The LUT lets us evaluate τ(ν)\tau(\nu) at arbitrary (T,p,VMR)(T, p, \mathrm{VMR}) in ~1 ms per pixel — fast enough for per-pixel retrievals over full satellite scenes.

  • The differential form τenh=τtotal/τbg\tau_{\mathrm{enh}} = \tau_{\mathrm{total}} / \tau_{\mathrm{bg}} cancels every nuisance factor that is common to the plume and the reference pixel. The matched filter exploits this to retrieve ε\varepsilon linearly in the small-enhancement regime.

  • Coupling to gauss_plume gives us a physics-consistent synthetic scene: the column-enhancement field from the Gaussian plume provides the “truth” εtrue(x,y)\varepsilon_{\mathrm{true}}(x, y), which the LUT-driven retrieval then reconstructs from a simulated spectrometer measurement.

Next directions (not implemented here):

  • Layered atmospheres. Replace the single-layer AMF with a per-layer VOD sum. The LUT stays the same; the forward model sums transmittances layer-wise.

  • Instrument spectral response. Convolve τenh\tau_{\mathrm{enh}} with an ISRF before the retrieval to match a specific sensor’s bandpass.

  • Joint gas retrieval. Extend KK to a matrix with columns for CH4_4, H2_2O, CO2_2 enhancements and use the combined LUT from notebook 02.

  • Optimal estimation. The matched filter is the MLE in the small-enhancement linear limit; adding a Gaussian prior gives the Rodgers optimal-estimation form with posterior covariance.