The plume follows the 1-D advection–diffusion–decay equation for a pollutant carried by river flow:
∂C/∂t = -u·∂C/∂x + D·∂²C/∂x² - k·C
C = concentration (µg/L)
u = flow velocity (advection)
D = dispersion coefficient (turbulent mixing)
k = slow degradation rate (fixed, teratogen is persistent)
It is integrated explicitly on a 1-D grid along the river with a Dirichlet boundary C(0,t) = C₀ at the discharge pipe and a zero-gradient outflow at the river mouth. The time step is sub-cycled every frame so it always satisfies both the advective (u·dt/dx ≤ 1) and diffusive (D·dt/dx² ≤ 0.5) stability limits — otherwise the field would blow up numerically at high flow or dispersion settings.
A downstream community draws water for a gestational exposure window of τ days. Assuming a roughly steady local concentration C(x) over that window, the cumulative dose is Dcum = C(x)·τ. Individual risk of a developmental malformation follows a logistic (Hill-type) dose–response curve, the standard shape used in teratology and toxicology:
Risk(D_cum) = 1 / (1 + exp(-s·(D_cum - ED50)))
ED50 = dose giving 50% risk
s = curve steepness
Each of the 60 population markers downstream carries its own fixed random susceptibility threshold, so the fraction that turns red each frame is a direct Monte-Carlo sample of the population risk percentage — not just a colour ramp.
- C₀ — how much teratogen the source discharges per litre.
- u, D — how fast the river carries and spreads the plume downstream.
- τ — how long the critical developmental window of exposure lasts; longer windows accumulate more dose at the same concentration.
- Stop Discharge — zeroes C₀ so you can watch the plume flush out and the risk fall back toward zero.