The 3D version tracks hundreds of individual nZVI particles with Monte-Carlo random-walk transport and a stochastic reaction probability per particle. This 2D companion computes the same real coupled physics a genuinely different way: it solves the continuum advection‑dispersion‑reaction PDEs directly on a finite-difference grid (260 cells across a 6 m aquifer section), so instead of discrete particles you see the actual concentration fields evolve.
Reactive iron transport: ∂a/∂t + v·∂a/∂x = D·∂²a/∂x² − k_corr (a ≥ 0)
D = D0 / n_agg (Stokes–Einstein aggregation penalty)
a(0,t) forced by injection rate (well boundary condition)
Contaminant degradation: ∂C/∂t = −(k_SA / n_agg)·a(x,t)·C (pseudo-first-order)
Note the corrosion term is a constant-rate sink (−k_corr), not exponential — this matches the 3D sim's shrinking-core law exactly (its Fe⁰ core radius shrinks linearly until fully passivated, giving each parcel of iron a finite reactive lifetime a₀/k_corr, after which it stops reacting even though it keeps moving). Standalone finite-difference verification (Node, run separately from this page): the transport term reproduces the exact closed-form advection-dispersion solution for a Gaussian pulse (mean position matched to <0.1% of domain size; the ~4% variance excess at this grid resolution is the textbook numerical dispersion of a first-order upwind scheme, ≈v·Δx/2, confirmed to the predicted value); the corrosion sink matches the linear ramp a(t)=a₀−k_corr·t to machine precision and clamps to exactly zero past the lifetime; the contaminant sink matches exp(−(k_SA/n_agg)·a·t) to within 0.11% across a spatially-varying reactive field.
- Injection rate — sets the Dirichlet boundary value of a(x) at the well (x=0), i.e. how much fresh reactive iron is continuously resupplied.
- Flow velocity — the advection speed v carrying the reactive-iron field downgradient.
- Aggregate size — divides the dispersion coefficient D and the reaction rate, exactly as in the 3D sim: clumped nZVI disperses less and reacts more slowly per unit iron.
- kcorr — how fast the shrinking-core shell fully passivates each parcel of iron, in the same units as the 3D slider.
- The chart's front marker tracks the farthest point where a(x) still exceeds 5% of its peak — the practical reach of the injected plume.