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.

Tier II — Lagrangian particle transport

Forward model: stochastic particle trajectories driven by wind + turbulence. The bridge between the analytical Tier I (no real wind variability) and the full PDE Tier III (no statistical efficiency). This is what FLEXPART ([stohl2005flexpart]) and STILT do operationally — see also HYSPLIT ([stein2015hysplit]).

Status: the forward model (Step 1) is implemented in plumax.lagrangian; the inference, emulator and predictor steps (2–5) are proposed below.


(1) Simple model

Stochastic dynamics — Markov-1 Langevin

Operational LPDMs (FLEXPART, STILT, HYSPLIT) use Markov-1: a Langevin equation on particle velocity, then position from velocity. We commit to Markov-1 because it’s required for near-source super-emitter work and for non-stationary turbulence:

dv=a(x,v,t) dt  +  b(x,t) dW,dW∼N(0,dt⋅I3)dx=(u(x,t)+v) dt\begin{aligned} \mathrm{d}\mathbf{v} &= \mathbf{a}(\mathbf{x}, \mathbf{v}, t)\, \mathrm{d}t \;+\; \mathbf{b}(\mathbf{x}, t)\, \mathrm{d}\mathbf{W}, \qquad \mathrm{d}\mathbf{W} \sim \mathcal{N}(\mathbf{0}, \mathrm{d}t \cdot \mathbf{I}_3) \\ \mathrm{d}\mathbf{x} &= \bigl(\mathbf{u}(\mathbf{x},t) + \mathbf{v}\bigr)\, \mathrm{d}t \end{aligned}

Sub-grid wind interpolation

WRF velocities are gridded at hourly snapshots; particles are continuous in space and time. Naïve bilinear interpolation of u\mathbf{u} is not divergence-free, which causes mass-conservation drift over long integrations. Use a C-grid-aware interpolator that reconstructs u\mathbf{u} consistently with the WRF staggered grid (operational STILT pattern). Document the chosen scheme on the integrator API; assume divergence preservation is load-bearing.

Time-stepping

Default to Euler–Maruyama with adaptive step bounded by

Δt  <  min⁡ ⁣(τL,  Δx∣u∣,  Δx2σ2).\Delta t \;<\; \min\!\left(\tau_L,\; \frac{\Delta x}{|\mathbf{u}|},\; \frac{\Delta x^{2}}{\sigma^{2}}\right).

Higher-order Milstein only if convergence diagnostics flag bias. Δt\Delta t is an open parameter — see open questions for the operational target.

Run modes

Footprint definition (formal)

For a receptor rr and a candidate source cell ss:

F(r,s)  =  ∫tobs−Ttobs1Vs ρair(s,t)  1 ⁣[ zpart(t)<fPBL L(s,t) ] dtF(r, s) \;=\; \int_{t_\text{obs} - T}^{t_\text{obs}} \frac{1}{V_s\, \rho_\text{air}(s,t)} \;\mathbb{1}\!\left[\, z_\text{part}(t) < f_\text{PBL}\, L(s, t)\, \right]\, \mathrm{d}t

— integrated over particle residence time below a fraction fPBL≈0.5f_\text{PBL} \approx 0.5 of the local PBL height L(s,t)L(s,t). Units: s⋅m2⋅kg−1\text{s} \cdot \text{m}^{2} \cdot \text{kg}^{-1} (mixing-ratio per kg/m²/s of surface flux). The footprint is a probability density over candidate source cells, not an indicator: properly normalised by particle volume and air density. Numerical scaling matters because the values are tiny — work in log-space when storing.

For an overpass with nobsn_\text{obs} columns and ngridn_\text{grid} candidate source cells, F\mathbf{F} is shape (nobs,ngrid)(n_\text{obs}, n_\text{grid}) and typically 90%+ sparse.


(2) Model-based inference

Forward model with observation operator

The full forward used by inference is not y=Fq+ε\mathbf{y} = \mathbf{F}\mathbf{q} + \boldsymbol{\varepsilon}. It’s:

y  =  A colz(Fq)  +  cbg  +  ε\mathbf{y} \;=\; \mathbf{A}\, \mathrm{col}_z(\mathbf{F}\mathbf{q}) \;+\; \mathbf{c}_\text{bg} \;+\; \boldsymbol{\varepsilon}

Likelihood model

ε∼N(0,R),R  =  Rretr+Rrepr\boldsymbol{\varepsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{R}), \qquad \mathbf{R} \;=\; \mathbf{R}_\text{retr} + \mathbf{R}_\text{repr}

Prior on q\mathbf{q} — spatially correlated, sign-constrained

The prior is the regularizer; it’s the methodological choice in regional inversions.

Spatial-prior choices for the source vector q\mathbf{q}.

ChoiceFormNotes
Mean qa\mathbf{q}_afrom emission inventory ([crippa2023edgar,scarpelli2022gfei,maasakkers2023ghgi])prior median per cell
Covariance B\mathbf{B}Matérn-3/2 with correlation length ℓ∈[5,50]\ell \in [5, 50] kmsmooth posterior; ℓ\ell tuned by posterior diagnostics or hierarchical
Positivitylog⁡q∼N(log⁡qa,Blog⁡)\log \mathbf{q} \sim \mathcal{N}(\log \mathbf{q}_a, \mathbf{B}_{\log}) (lognormal)non-negative emissions; conjugate variant: NNLS / projected-gradient on Gaussian q\mathbf{q}

Gaussian–Gaussian closed form (linear-in-log)

When the lognormal is linearised around log⁡qa\log \mathbf{q}_a (fine for moderate enhancements over the prior), the posterior is closed form:

q∗  =  qa⋅exp⁡ ⁣(Blog⁡F~⊤(F~Blog⁡F~⊤+R)−1(y−F~qa))\mathbf{q}^* \;=\; \mathbf{q}_a \cdot \exp\!\left(\mathbf{B}_{\log} \tilde{\mathbf{F}}^{\top} (\tilde{\mathbf{F}} \mathbf{B}_{\log} \tilde{\mathbf{F}}^{\top} + \mathbf{R})^{-1} (\mathbf{y} - \tilde{\mathbf{F}} \mathbf{q}_a)\right)
P∗  =  Blog⁡  −  Blog⁡F~⊤(F~Blog⁡F~⊤+R)−1F~Blog⁡\mathbf{P}^* \;=\; \mathbf{B}_{\log} \;-\; \mathbf{B}_{\log} \tilde{\mathbf{F}}^{\top} (\tilde{\mathbf{F}} \mathbf{B}_{\log} \tilde{\mathbf{F}}^{\top} + \mathbf{R})^{-1} \tilde{\mathbf{F}} \mathbf{B}_{\log}

with F~=diag⁡(qa) F\tilde{\mathbf{F}} = \operatorname{diag}(\mathbf{q}_a)\, \mathbf{F} (the linearised Jacobian). Identical structure to the equations gaussx is built around.

Scaling beyond moderate grids


(3) Model emulator

The Lagrangian model becomes expensive at large NN particles or when running ensembles for met-uncertainty propagation.


(4) Emulator-based inference

Replace F\mathbf{F} with the emulated footprint in the linear inversion. Enables:


(5) Amortized inference (predictor)

fθ:(ymultiscale,metcontext,instrument_id)  ⟼  p(log⁡q(x)∣y,met)f_\theta : (\mathbf{y}_\text{multiscale}, \text{met}_\text{context}, \text{instrument\_id}) \;\longmapsto\; p(\log \mathbf{q}(\mathbf{x}) \mid \mathbf{y}, \text{met})

Output grid commitment

q(x)\mathbf{q}(\mathbf{x}) is on the inversion grid (~1–10 km, basin-scoped). Predictor outputs a fixed-size 2D field per basin tile. Per-instrument predictors, dispatched by instrument_id, because TROPOMI ([s5p_tropomi], ~5 km), EMIT ([emit], ~60 m), Tanager ([carbon_mapper], ~30 m) need different summary networks.

Multi-instrument observations

When fusing across instruments, each observation tensor carries its own AK and footprint at native resolution. The predictor consumes a list of (y,A,footprint,σretr,mask)(\mathbf{y}, \mathbf{A}, \text{footprint}, \sigma_\text{retr}, \text{mask}) per instrument and aggregates internally — don’t pre-regrid to a common resolution (loses information).

Conditional flow architecture


(6) Improve


Module layout (proposed)

Tier II proposed module layout — step, concern, target module, status.

StepConcernModuleStatus
1Particle integrator (Markov-1)plumax.lagrangian.particles✓
1Turbulence parameterisation (σij,τL\sigma_{ij}, \tau_L)plumax.lagrangian.turbulence✓
1Forward concentration (residence-time binning)plumax.lagrangian.concentration✓
1Backward footprintplumax.lagrangian.footprint✓
1C-grid-aware wind interpolatorplumax.lagrangian.wind_interp☐ #88
1Column + AK pipelinereuse gauss_plume.observation from Tier I☐ #83
2Likelihoods + spatial priors (Matérn-3/2, R = R_retr + R_repr)plumax.lagrangian.inversion✓
2Linear inversion (Gaussian / lognormal closed form)plumax.lagrangian.inversion (linear_gaussian_inversion / lognormal_inversion)✓
2Krylov / structure-aware solverdispatch to gaussxdependency
2EKIfilterax (external)dependency
2Posterior export → Tier Vsamples / prior_logpdf on GaussianPosterior / LognormalPosterior☐ #107
3Footprint emulator (+ Step 4 inversion on it)plumax.lagrangian.emulator☐ #90
5Field predictor (per instrument)plumax.lagrangian.predictor☐ after #90
6Met-ensemble runnerplumax.lagrangian.met_ensemble☐ #89

plumax.lagrangian exists (Steps 1–2 landed in #8, corrected in #63); the ☐ rows are tracked under the Tier II epic #71.


Validation strategy


Open questions