Forward model: closed-form analytical solution for steady/transient point-source dispersion.
This is the first tier to build to completion (all six steps), because:
- The forward model is microseconds, so MCMC is feasible end-to-end.
- Every downstream tier validates against Tier I in the limit of weak turbulence and stationary winds — Tier I is the analytical reference.
- The amortized predictor at Step 5 doubles as the working prototype for the inference UX (input/output shapes, posterior visualisation, uncertainty budget).
(1) Simple model¶
Gaussian plume (steady-state, continuous source)¶
The primed coordinates are the source-aligned frame: is downwind along , is crosswind. The image-source sum runs over to enforce no-flux at the ground () and at the capping inversion (). For only the pair survives — that’s the unbounded-domain case in most textbooks. For typical PBL and growing past , the upper image is non-negligible.
Parameters:
- — source strength (kg/s)
- — source location
- — physical stack height
- — Briggs plume rise from buoyancy/momentum fluxes (Briggs, 1973);
- , — wind speed and direction (from met, with uncertainty — see Inference)
- — crosswind/vertical spread; PG-class lookup (Pasquill, 1961Turner, 1970) for v1, MO-similarity (Monin & Obukhov, 1954Stull, 1988) for v2 (see prereqs)
- — PBL capping height (from met)
For methane super-emitter inversions where stack height is poorly known, is part of what you infer; for known facilities is fixed and only is computed.
Gaussian puff (time-varying, episodic source)¶
Each puff advects with the wind and diffuses independently — handles intermittent / burst-mode releases that violate the steady-state assumption.
From to a satellite-comparable observation¶
The forward used by inference is not directly. It’s:
- Column integrate: the satellite sees a column-integrated enhancement, not a single altitude.
- Background : the regional background (typically ~1900 ppb for CH₄). Not optional — without it the model predicts the enhancement above background, which is what actually is, but the satellite delivers absolute column densities. Either subtract from upstream, or jointly model it. Either way, it’s day-1 infrastructure, not a Step-6 upgrade.
- Averaging kernel : the satellite-product AK from the prereqs; see ((1)). Required when comparing to L2 XCH₄ products. Skip it only when working with a flat-AK assumption (rare and worth flagging).
Extended Gaussian (AERMOD-style)¶
Adds terrain corrections (plume rise over hills, beyond Briggs), building downwash (Huber–Snyder), and receptor-grid output. See Cimorelli et al., 2005. Useful as a sanity benchmark against operational tools, not a primary research target.
(2) Model-based inference¶
The plume is analytical, so the full forward is differentiable via JAX end-to-end (column integration + AK included).
Likelihood model¶
- Default: heteroscedastic Gaussian on column-XCH₄ enhancement, with per-pixel σ from the L2 retrieval-error map.
- Heavy-tail variant: Student- with for retrievals near the detection floor where outliers dominate (TROPOMI single-pass Veefkind et al., 2012, EMIT off-axis Green & others, 2022).
- Mask: quality-flag mask from the L2 product is passed through as an indicator weight on the likelihood — flagged pixels contribute zero log-likelihood.
Priors¶
Table (1):Tier I prior specifications by parameter.
| Parameter | Prior | Rationale |
|---|---|---|
| with from the emission inventory prior, | positive, heavy-tail; matches inventory uncertainty | |
| with sub-pixel | facility location is known, sub-pixel uncertainty for cluster vs. point | |
| or | depends on whether stack height is known | |
| — tight prior from met | is data, not a free parameter | |
| — tight prior from met | same | |
| GP or Gaussian per-tile around climatology | regional background varies smoothly |
MAP / MCMC¶
- MAP estimation:
jax.grad(log_posterior)→ L-BFGS or Adam. Convergence in <1 s for a single overpass. - MCMC: NumPyro NUTS over jointly. Forward pass is ~µs, so 10k samples is seconds. Keep , as inference variables (with tight met priors) so their posterior contracts can be diagnosed downstream.
- Linear-Gaussian special case: if observations are linear in (column-integrated XCH₄ with a fixed AK) and only is free with all geometry fixed, the posterior over is analytically tractable — exact Bayesian inversion via
gaussx. Useful as a sanity check on the NUTS implementation.
identifiability — corrected¶
The classic statement is “ and enter only as , so they’re degenerate in a single transect” Varon et al., 2018. This is true only if has a flat prior. In production, the tight met-derived prior on resolves the degeneracy: the posterior contracts as long as . The “need two crosswind transects” claim is a special case for fully-free and should not be the default reading.
When the wind prior is not tight (rare — typically remote regions without good reanalysis coverage), then yes, multiple overpasses with different wind directions break the ratio. But the first-line fix is the prior, not the geometry.
This is the first working end-to-end inverse pipeline. Build it here, validate against synthetic releases with known truth, then move to real controlled-release data (see Validation).
(3) Model emulator¶
- Input: — the raw inputs, not the evaluated σ profiles. The emulator should learn the σ functional too; otherwise you’re benchmarking interpolation, not modelling.
- Output: on the satellite-pixel grid (post column-integration, post AK).
- Architecture: MLP for low-dim parameters → small transposed-conv decoder for spatial output, or lightweight DeepONet.
- Value: validates emulator training pipeline (data generation, training loop, residual checks) before applying to expensive PDE models.
(4) Emulator-based inference¶
Same inference loop as Step 2, but the forward pass is the neural network. Required validation:
- Posterior mean from emulator-MCMC ≈ posterior mean from analytical-MCMC, within .
- Posterior covariance from emulator-MCMC ≈ analytical posterior covariance, in operator norm.
If those pass for Tier I, the same diagnostics apply unchanged at Tier III.
(5) Amortized inference (predictor)¶
Train a summary network + posterior network mapping observation patches directly to the source posterior:
Input shape — commit to a 2D patch¶
is a fixed-size 2D image patch of column XCH₄ enhancement (background-subtracted) centred on the facility candidate, plus per-pixel uncertainty and quality-mask channels. Concretely:
- Shape: with channels (
enhancement, ,mask). - Resolution: instrument-native (e.g. 30 m for Tanager Carbon Mapper, 2024, 60 m for EMIT Green & others, 2022, ~5 km for TROPOMI Veefkind et al., 2012). Train one predictor per instrument family — don’t try to share across resolutions.
- Footprint: large enough to capture the plume’s downwind extent at expected wind speeds (typical: 2–10 km square for point-source instruments).
This commitment matters because it pins the architecture (CNN-style backbones over set-transformers or graph nets).
Conditioning on context¶
The predictor is not observation-only. At inference time we know . The clean way to wire this in is feature-wise modulation of the summary network — the FiLM / hypernet conditioning primitives being built in pyrox.nn.
summary = CNN(y_patch) # observation features
modulated = FiLM(summary, context) # per-feature γ(context)·summary + β(context)
posterior = NPE_head(modulated) # conditional flow over (Q, x₀, H_eff)Architecture options¶
- Conditional normalizing flow (
gauss_flows) for the posterior head — preferred for low-dim posteriors over . - BNN posterior head (
pyrox) when posterior multimodality is unlikely. - NPE / SBI-style — drop-in for either, gives a clean SBC validation interface.
Training dataset is free: simulate millions of plume configurations in seconds, sampling met context from the WRF/ERA5 climatology. Validation: posterior calibration via simulation-based calibration (SBC) — uniform rank statistics across 1k held-out simulations, stratified by met regime.
(6) Improve¶
- PG → MO σ swap. Replace PG lookup tables for with MO-similarity-derived functions parameterised by from the prereqs. Closer to physics, continuous in stability, and the right pre-step for tier-II validation.
- Multi-source. Real basins host 5–50 simultaneous emitters Frankenberg et al., 2016Jacob et al., 2022. This is not an array-shape change — the inference becomes a mixture model with unknown component count, requiring reversible-jump MCMC (RJMCMC) or a Dirichlet-process prior over source count. Plan for this from the start: the posterior interface that Tier V.A consumes must handle variable- per overpass.
- Learned σ from LES. Train a small NN against LES output to learn stability-dependent σ functions that go beyond MO. Slot in as a swap-in for either PG or MO σ. Useful for super-emitter regimes that LES has resolved better than empirical fits.
- Distributed-source field . Replace point source with a spatial source field — opens the door to Tier II/III for spatially extended emissions. At Tier I this is just a sum of point sources sharing met context; the multi-source mixture (above) is the same code path with finer support.
Module layout¶
Table (2):Tier I module layout — step, concern, target module, status.
| Step | Concern | Module | Status |
|---|---|---|---|
| 1 | Plume forward | gauss_plume/plume.py | ✓ |
| 1 | Puff forward | gauss_puff/puff.py | ✓ |
| 1 | Plume rise (Briggs) | gauss_plume.plume_rise | ☐ |
| 1 | Stability + dispersion | gauss_plume/dispersion.py | 🚧 partial |
| 1 | Puff turbulence | gauss_puff/turbulence.py | ✓ |
| 1 | Column + AK pipeline | gauss_plume.observation (links to assimilation/obs_operator.py) | ☐ |
| 1 | Background loader | plume_simulation.priors.background | ☐ |
| 2 | Likelihoods + priors | gauss_plume.likelihoods | ☐ |
| 2 | Plume MAP/MCMC | gauss_plume/inference.py | ✓ |
| 2 | Puff inference | gauss_puff/inference.py | ✓ |
| 2 | Posterior export → Tier V | gauss_plume.posterior_export (mark-likelihood adapter for V.A) | ☐ |
| 3 | Plume emulator | gauss_plume.emulator | ☐ |
| 4 | Emulator-based MCMC | wired in inference.py once emulator exists | ☐ |
| 5 | NPE / flow predictor | gauss_plume.predictor | ☐ |
| 5 | Context-conditioning layer | uses pyrox.nn FiLM/hypernet primitives | external dep |
| 6 | Multi-source (RJMCMC) | extend inference.py with reversible-jump kernel | ☐ |
| 6 | MO σ swap | gauss_plume.dispersion_mo | ☐ |
Validation strategy¶
- Forward model — mass flux conservation. Integrate mass flux through a transverse plane downwind of the source, compare to . Should be exact in the no-deposition, unbounded-domain limit. (Common bug: integrating instead — that’s mass per unit wind speed, dimensionally wrong.)
- Ground reflection consistency. Set ; the two image-source terms must collapse to a single Gaussian with doubled prefactor. Catches sign/index bugs in the image sum.
- PBL capping. With the upper-image series must vanish; with finite and growing past , concentrations must converge to a vertically well-mixed limit:
Tests both branches of the -sum.
- MAP recovery. Synthetic release with known . Recovery target: — i.e. recovery within the posterior’s own claimed uncertainty. (Not a fixed % — that conflates SNR with method quality.)
- MCMC calibration. SBC on 1000 simulated releases — rank histograms uniform across all parameters, stratified by met regime.
- identifiability — empirical. Run MAP over a sweep of . Posterior should grow monotonically with met-wind uncertainty; flat CV signals a wiring bug.
- Real-data benchmark. Invert a published controlled-release flight (e.g. Stanford / Sherwin et al. 2024 controlled releases over Tanager / GHGSat / EMIT). Posterior median for must contain the metered release rate within 95% credible interval. This is the only test that proves the inference works on real radiances — synthetic validation is necessary but not sufficient.
- Emulator agreement. Step 4 posterior matches Step 2 posterior in mean and covariance to within Monte Carlo error.
Aggregating across overpasses¶
The MAP / MCMC posterior produced here is the per-event evidence consumed by the population layer. See Tier V.A — Instantaneous emission estimation for the formal interface that turns this posterior into a mark likelihood for the TMTPP fit, and Tier V.D — Total emission estimation for why per-overpass averages systematically misrepresent regional totals.
The multi-source extension (Step 6) makes this interface variable- per overpass — the V.A adapter must handle that.
Open questions¶
- Briggs, G. A. (1973). Diffusion Estimation for Small Emissions (Techreport ATDL-106). Atmospheric Turbulence.
- Pasquill, F. (1961). The estimation of the dispersion of windborne material. Meteorological Magazine, 90(1063), 33–49.
- Turner, D. B. (1970). Workbook of Atmospheric Dispersion Estimates. U.S. Department of Health, Education,.
- Monin, A. S., & Obukhov, A. M. (1954). Basic laws of turbulent mixing in the surface layer of the atmosphere. Tr. Akad. Nauk SSSR Geophiz. Inst., 24(151), 163–187.
- Stull, R. B. (1988). An Introduction to Boundary Layer Meteorology. Kluwer Academic. 10.1007/978-94-009-3027-8
- Cimorelli, A. J., Perry, S. G., Venkatram, A., Weil, J. C., Paine, R. J., Wilson, R. B., Lee, R. F., Peters, W. D., & Brode, R. W. (2005). AERMOD: A dispersion model for industrial source applications. Part I: General model formulation and boundary layer characterization. Journal of Applied Meteorology, 44(5), 682–693. 10.1175/JAM2227.1
- Veefkind, J. P., Aben, I., McMullan, K., Förster, H., de Vries, J., Otter, G., Claas, J., Eskes, H. J., de Haan, J. F., Kleipool, Q., & others. (2012). TROPOMI on the ESA Sentinel-5 Precursor: a GMES mission for global observations of the atmospheric composition for climate, air quality and ozone layer applications. Remote Sensing of Environment, 120, 70–83.
- Green, R. O., & others. (2022). EMIT: Earth Surface Mineral Dust Source Investigation. https://earth.jpl.nasa.gov/emit/
- Varon, D. J., Jacob, D. J., McKeever, J., Jervis, D., Durak, B. O. A., Xia, Y., & Huang, Y. (2018). Quantifying methane point sources from fine-scale satellite observations of atmospheric methane plumes. Atmospheric Measurement Techniques, 11(10), 5673–5686. 10.5194/amt-11-5673-2018
- Carbon Mapper. (2024). Carbon Mapper: airborne and satellite imaging spectroscopy for greenhouse gas monitoring. https://carbonmapper.org/
- Frankenberg, C., Thorpe, A. K., Thompson, D. R., Hulley, G., Kort, E. A., Vance, N., Borchardt, J., Krings, T., Gerilowski, K., Sweeney, C., & others. (2016). Airborne methane remote measurements reveal heavy-tail flux distribution in Four Corners region. Proceedings of the National Academy of Sciences, 113(35), 9734–9739. 10.1073/pnas.1605617113
- Jacob, D. J., Varon, D. J., Cusworth, D. H., Dennison, P. E., Frankenberg, C., Gautam, R., Guanter, L., Kelley, J., McKeever, J., Ott, L. E., Poulter, B., & others. (2022). Quantifying methane emissions from the global scale down to point sources using satellite observations of atmospheric methane. Atmospheric Chemistry and Physics, 22(14), 9617–9646. 10.5194/acp-22-9617-2022