Gaussian plume — derivation from the advection-diffusion equation
Derivation of the Gaussian plume solution¶
This note derives the steady-state Gaussian plume solution used by the forward model in plume_simulation.gauss_plume.plume.plume_concentration. The derivation follows Stockie [1] closely; Stockie’s paper is an excellent pedagogical reference that starts from the full advection-diffusion PDE, states the simplifying assumptions explicitly, and walks through the Laplace-transform and Green’s-function solutions in detail. The structure, equation numbering, and notation of this note mirror Stockie §§2-3; any reader who wants more depth — in particular the proofs behind the equivalence theorem (2.4) ≡ (2.5), the Green’s-function route, or the discussion of the eddy-diffusivity / σ-parameterisation inconsistency — should consult the paper itself.
1. Governing equation (Stockie §2)¶
Let [kg/m³] denote the mass concentration of a single contaminant at position [m] and time [s]. Conservation of mass (Stockie eq. 2.1) reads
where [kg/m³·s] is a volumetric source term and [kg/m²·s] is the total contaminant mass flux. Two physical mechanisms contribute to . Advection by the wind field [m/s] contributes . Turbulent diffusion contributes a Fickian flux , where [m²/s] is the eddy diffusivity — an effective, position-dependent diffusion tensor that parameterises turbulent mixing at scales well below the resolution of interest. Summing the two contributions and substituting into the conservation law yields the three-dimensional advection-diffusion equation (Stockie eq. 2.2):
This PDE is the starting point. It is exact under the Fickian-closure hypothesis for the turbulent flux; everything that follows is a chain of simplifications to reduce it to a form with a closed-form solution.
2. The seven classical assumptions (Stockie §2)¶
To recover the Gaussian plume, Stockie makes seven assumptions (A1-A7). Each is a physically-motivated simplification; together they replace the full PDE by a linear, constant-coefficient problem that admits a closed-form solution.
- (A1) The source is a continuous point source at height above the ground, releasing at constant rate [kg/s]: . is the effective stack height , the sum of the physical stack height and the plume rise due to buoyancy.
- (A2) The wind is constant and aligned with : with . This is both a physical assumption (“no crosswind, no vertical mean motion”) and a coordinate choice — in practice we solve the PDE in a wind-aligned frame and rotate back.
- (A3) The solution is steady state: . Valid when and are time-independent on the timescale of interest (a single satellite overpass, say).
- (A4) The eddy diffusivities depend only on downwind distance: . Diffusion is assumed isotropic — a strong simplification that we will revisit when introducing the Briggs σ-parameterisation below.
- (A5) Along-wind diffusion is small compared with advection, so is dropped. Stockie’s Exercise 2 non-dimensionalises the full PDE to justify this: the Péclet number is large for realistic m/s, m, m²/s.
- (A6) The ground surface is flat: , no topography.
- (A7) The contaminant does not penetrate the ground. This closes the problem with a zero-flux Neumann BC at .
Applying (A1)-(A6) to equation gives the scalar, elliptic boundary-value problem (Stockie 2.4a-c):
on the half-space , , , with boundary conditions (no contaminant upwind), (finite total mass), and the ground-reflection Neumann condition from (A7).
3. Boundary-source equivalence (Stockie §2, eqs. 2.5)¶
Stockie notes that the source term can be absorbed into the boundary condition at : the volumetric source is equivalent to a surface source on the inflow plane, with no interior source. This is a standard result (Stakgold’s theorem; Stockie’s Exercise 1 asks the reader to prove it by integrating the PDE over and taking ). We will use the boundary-source form — it simplifies the Laplace-transform manipulation.
4. Change of variable: the r-coordinate (Stockie §3, eq. 3.1)¶
Because can depend on downwind distance (Assumption A4), the PDE has a variable coefficient in the y- and z-Laplacians. Stockie eliminates this by introducing
so that and . Substituting, the reduced PDE becomes (Stockie eq. 3.2)
a standard two-dimensional heat equation in which plays the role of time. The boundary conditions carry over: vanishes at ∞ in and , , and the “initial condition” at is the delta-source boundary from §3.
5. Separation of variables (Stockie §3, eq. 3.3)¶
The delta source factorises in and , suggesting the ansatz
Substituting and separating yields two 1-D diffusion problems:
- Crosswind (Stockie eqs. 3.4):
- Vertical with ground reflection (Stockie eqs. 3.5):
Each is a 1-D heat equation with a delta initial condition — the first on , the second on the half-line with a zero-flux BC at the origin.
6. Solving the two subproblems (Stockie §3.1)¶
Stockie solves both subproblems by Laplace transforms in and (for the crosswind problem) also in ; §3.2 gives an equivalent Green’s-function derivation. Since we only need the final solutions, I’ll quote them directly and flag the physical content.
6.1 Crosswind Gaussian¶
The -problem is a 1-D heat equation on with . Its fundamental solution is the heat kernel (Stockie eq. 3.6):
6.2 Vertical Gaussian with ground reflection¶
The -problem lives on with a zero-flux boundary at . The method of images handles this cleanly: reflect the source at height to an image source at and solve on all of . The superposition of the two fundamental solutions automatically satisfies because the reflected contribution exactly cancels the vertical derivative of the direct contribution at the ground. The result is (Stockie eq. 3.7):
The two exponentials correspond to the direct plume path from the physical source at and the reflected path from the image source at respectively.
7. Assembly and σ-rewrite (Stockie §3, eqs. 3.8, 3.9)¶
Substituting and into the separable ansatz gives the Gaussian plume solution in r-coordinates (Stockie eq. 3.8):
It is standard in the atmospheric-science literature to replace with the standard deviations of the Gaussian plume:
With this substitution and distributing the factor of 2 in the exponentials, we recover the canonical form used in every textbook and in plume_concentration:
This is exactly the expression evaluated in plume.py at the points where plume_concentration computes normalization, exp_y, exp_z_direct, and exp_z_reflected.
A subtlety: distinct σ_y and σ_z¶
Stockie derives the solution under assumption (A4) that — the eddy diffusivity is isotropic. Under that assumption follows identically. In practice, atmospheric turbulence is anisotropic: vertical mixing is suppressed relative to horizontal mixing by density stratification, and the empirical dispersion parameterisations (Pasquill-Gifford, Briggs-McElroy-Pooler) give different and in every stability regime. The standard practice — which we follow — is to carry equation over verbatim and separately parameterise and from empirical data. This is technically an inconsistency with the isotropic- starting point; Stockie §3.3 discusses it candidly, citing Llewellyn’s critique. The error turns out to be small in the regime where the Gaussian plume is used operationally.
8. Dispersion-coefficient parameterisations (Stockie §3.3)¶
Stockie §3.3 notes that is determined by the eddy diffusivity via equation, but that in practice one parameterises σ directly from field experiments. He mentions the simple power-law form
and notes that experimentally in most conditions — larger than the predicted by constant , reflecting the fact that real-atmosphere diffusivities grow with downwind distance.
Our library uses the slightly richer Briggs-McElroy-Pooler parameterisation:
with one coefficient triple per Pasquill-Gifford stability class A-F. For this reduces to Stockie’s form equation with and ; for and the extra factor produces a gentle rollover at large that matches measurements better than the pure power law. The six stability classes — from A (strongly unstable, sunny convective day) through D (neutral) to F (strongly stable, clear calm night) — give six different curves. Class A produces the largest σ’s and hence the most diluted plume; class F produces long, thin plumes with high peak concentration near the centerline. dispersion.py stores the six parameter triples in BRIGGS_DISPERSION_PARAMS and evaluates equation in calculate_briggs_dispersion.
9. Mass conservation¶
Integrating equation across a plane (that is, integrating in and in ) gives
which is mass-flux conservation: the downwind flux of contaminant mass through any cross-section equals the source rate. The factor of 2 in the denominator of equation (i.e. rather than ) is exactly what’s needed for this — the ground reflection puts the full vertical Gaussian on the physical half-space , and the -Gaussian is symmetric around zero.
10. Operational conventions and pitfalls¶
Three small items that are easy to trip over:
- Wind-direction convention. In meteorology
wind_directionis the direction the wind is from:wind_direction = 270°means a westerly wind (blowing from the west, flowing toward the east). Oursimulate_plumeadopts this convention; the conversion to Cartesian velocity components is , with θ in radians. - Upwind masking. equation is only valid for in the wind-aligned frame. Numerically evaluating the formula at gives a nonsensical (and very negative) exponent inside and we mask those points to zero.
plume_concentrationusesjnp.where(x_downwind > 0.0, concentration, 0.0)for this. - Calm-wind limit. equation has a prefactor that diverges as , but this divergence is spurious — Stockie eq. 3.11 shows that if one carries rather than , the true limit is finite. Our implementation clamps below a floor
MIN_WIND_SPEED = 0.5 m/srather than handling the calm regime rigorously; the rigorous fix is to switch to a Gaussian-puff model (Stockie §3.5.6) when wind is very low, which is on the future-work list for this sub-project.
What to read next¶
- Notebook 01
_gaussian _plume _forward — numerical evaluation of equation on a 3-D grid, visual checks of the Gaussian cross-sections, and a stability-class sweep illustrating how σ_y, σ_z scale with class. - Notebook 02
_emission _rate _parameter _estimation — Bayesian inversion for given a downwind transect, using NumPyro NUTS against equation as the forward operator. - Notebook 03
_plume _state _estimation — a state-space extension where evolves as a random walk; the forward model at each is still equation. - Stockie §§3.4-3.6 — multi-source superposition (linear in ), the “menagerie” of Gaussian-plume variants (cross-wind-integrated, settling, deposition), and the Gaussian-puff solution for transient / low-wind cases.
- Stockie §§4-6 — the inverse source-identification problem via constrained linear least squares and its application to the Inco Superstack dataset. The Bayesian view in our notebooks is a probabilistic cousin of Stockie’s least-squares treatment.
Stockie, J. M. (2011). The Mathematics of Atmospheric Dispersion Modelling. SIAM Review, 53(2), 349-372. Preprint: https://
www .sfu .ca / ~jstockie /atmos /paper .pdf. Referenced here as “Stockie (2011)”. All equation numbers cited with the form “(2.1)” refer to that paper; equation numbers without a Stockie prefix are introduced in this note.