This page describes a Gaussian Plume Models in both MATLAB and Python. Gaussian plume models are used heavily in air quality modelling and environmental consultancy. The model can be used to illustrate the following phenomena:
The governing equations describing the movement of pollutants in the atmosphere is the advection-diffusion equation:
\[
\frac{\partial C}{\partial t} + \frac{\partial uC}{\partial x}+ \frac{\partial vC}{\partial y}+ \frac{\partial wC}{\partial z}= K_x\frac{\partial ^2 C}{\partial x^2}+K_y\frac{\partial ^2 C}{\partial y^2}+K_z\frac{\partial ^2 C}{\partial z^2}
\]
Here, \(u,v,w\) are the 3 components of the wind; \(x,y,z\) are directions in 3-d space; \(C\) is the concentration of pollutant; \(K_x,K_y,K_z\) are eddy diffusivities that are used to describe the effects of turbulence in smearing out the pollutant.
By making the assumption that the flow is steady and that the advective term along wind is much greater than the eddy diffusion along wind there is an analytical solution: the so called gaussian plume model solution, which is described by the following equation:
\[
C(x,y,z)=\frac{Q}{2\pi u \sigma _y \sigma _z}\exp\left(-\frac{y^2}{2\sigma _y^2} \right)\left[\exp\left(-\frac{(z-H)^2}{2\sigma _z^2}\right) +\exp\left(-\frac{(z+H)^2}{2\sigma _z^2} \right) \right]
\]
Here, \(Q\) is the mass emitted from the stack per unit time and \(H\) is the height of the stack. The \(\sigma\) values depend on the eddy diffusivities in a complex way.
Download the files for either MATLAB or Python to a directory on your computer. They should all be downloaded to your working directory.
MATLAB Files: | Python Files: |
Above shows how vertical stability in the atmosphere alters the dispersion of the pollutant (the stack is 50 m high and centred on \(y=0\)).
The above shows overlays of the model field onto a map. Different assumptions are made to calculate the particulate matter loading in the air.
You should have downloaded the files to your working directory. This exercise guides you through setting up and running the model for different scenarios. We will consider: