8.1 Air Quality
Air quality science quantifies the concentrations, transport, transformation, and deposition of pollutants in the atmosphere. The World Health Organization estimates that ambient air pollution causes approximately 4.2 million premature deaths annually, making it the single largest environmental health risk worldwide. Understanding pollutant sources, dispersion physics, and atmospheric chemistry is essential for designing effective control strategies and protecting public health.
Primary vs Secondary Pollutants
Atmospheric pollutants are classified by their emission pathway. Primary pollutants are emitted directly from identifiable sources, while secondary pollutants form in the atmosphere through chemical reactions among precursors.
Primary Pollutants
- Carbon monoxide (CO) -- incomplete combustion
- Sulfur dioxide (SO₂) -- fossil fuel burning
- Nitrogen oxides (NO, NO₂) -- high-temperature combustion
- Particulate matter (PM) -- dust, soot, sea salt
- Volatile organic compounds (VOCs) -- solvents, fuels, vegetation
- Lead (Pb), ammonia (NH₃), hydrogen sulfide (H₂S)
Secondary Pollutants
- Ozone (O₃) -- from NO₂ photolysis + VOC chemistry
- Secondary organic aerosol (SOA) -- VOC oxidation
- Sulfate aerosol (SO₄²⁻) -- SO₂ oxidation
- Nitrate aerosol (NO₃⁻) -- NOₓ oxidation
- Peroxyacetyl nitrate (PAN) -- photochemical smog
- Formaldehyde (HCHO) -- VOC oxidation intermediate
The distinction matters because controlling primary pollutants requires reducing emissions at the source, whereas controlling secondary pollutants requires managing their precursors and understanding the nonlinear atmospheric chemistry that produces them.
Criteria Pollutants and WHO Guidelines
Regulatory agencies define criteria pollutants -- species for which ambient air quality standards are set based on health effects. The six criteria pollutants under the US Clean Air Act, along with WHO 2021 guideline values, are:
| Pollutant | Sources | WHO Guideline | Averaging | Health Effects |
|---|---|---|---|---|
| PM2.5 | Combustion, dust, secondary aerosol | 5 ug/m³ | Annual | Cardiovascular disease, lung cancer, respiratory illness |
| PM10 | Dust, pollen, construction, roads | 15 ug/m³ | Annual | Respiratory inflammation, aggravation of asthma |
| O₃ | Secondary (NOₓ + VOC + sunlight) | 100 ug/m³ | 8-hour | Lung damage, reduced lung function, airway inflammation |
| NO₂ | Traffic, power plants, industry | 10 ug/m³ | Annual | Airway inflammation, increased susceptibility to infection |
| SO₂ | Coal/oil combustion, smelting | 40 ug/m³ | 24-hour | Bronchoconstriction, acid rain precursor |
| CO | Incomplete combustion, vehicles | 4 mg/m³ | 24-hour | Binds hemoglobin (COHb), reduces O₂ transport |
PM2.5 is the most lethal criteria pollutant globally. Particles with aerodynamic diameter less than 2.5 micrometers penetrate deep into the alveolar region of the lungs, enter the bloodstream, and cause systemic inflammation, atherosclerosis, and oxidative stress.
Air Quality Index (AQI) Calculation
The AQI translates pollutant concentrations into a dimensionless index for public communication. Each pollutant is computed separately and the overall AQI is the maximum among them. The piecewise linear interpolation formula is:
$$\text{AQI} = \frac{I_{Hi} - I_{Lo}}{C_{Hi} - C_{Lo}} \times (C - C_{Lo}) + I_{Lo}$$
where $C$ is the measured pollutant concentration, $C_{Lo}$ and $C_{Hi}$ are the concentration breakpoints bracketing $C$, and $I_{Lo}$ and $I_{Hi}$ are the corresponding AQI breakpoints.
| AQI Range | Category | PM2.5 (ug/m³, 24h) | Color |
|---|---|---|---|
| 0--50 | Good | 0.0--12.0 | Green |
| 51--100 | Moderate | 12.1--35.4 | Yellow |
| 101--150 | Unhealthy for Sensitive Groups | 35.5--55.4 | Orange |
| 151--200 | Unhealthy | 55.5--150.4 | Red |
| 201--300 | Very Unhealthy | 150.5--250.4 | Purple |
| 301--500 | Hazardous | 250.5--500.4 | Maroon |
Gaussian Plume Dispersion Model
The Gaussian plume model is the foundational analytical solution for steady-state dispersion from a continuous point source. It assumes the concentration distribution is Gaussian in both the crosswind (y) and vertical (z) directions, with the plume advected downwind at mean wind speed u. For a source with effective stack height H (physical height + plume rise), the ground-level and elevated concentration is:
$$C(x,y,z) = \frac{Q}{2\pi \sigma_y \sigma_z u} \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]$$
where:
- $Q$ = emission rate (g/s or kg/s)
- $u$ = mean wind speed at effective stack height (m/s)
- $\sigma_y(x)$, $\sigma_z(x)$ = horizontal and vertical dispersion parameters (m), functions of downwind distance x
- $H$ = effective stack height = physical height $h_s$ + plume rise $\Delta h$
- The second exponential term with $(z+H)$ represents the reflection of the plume from the ground (image source method)
At ground level (z = 0), the equation simplifies to:
$$C(x,y,0) = \frac{Q}{\pi \sigma_y \sigma_z u} \exp\!\left(-\frac{y^2}{2\sigma_y^2}\right) \exp\!\left(-\frac{H^2}{2\sigma_z^2}\right)$$
The maximum ground-level concentration along the plume centerline (y = 0) occurs at the downwind distance where $\sigma_z = H/\sqrt{2}$. This is a critical regulatory metric for stack design.
Pasquill-Gifford Stability Classes
Atmospheric stability determines how rapidly a plume disperses. The Pasquill-Gifford (P-G) classification scheme categorizes turbulent dispersion into six stability classes based on wind speed, solar insolation, and cloud cover:
| Class | Stability | Conditions | Dispersion |
|---|---|---|---|
| A | Very unstable | Strong solar, light winds | Rapid, looping plume |
| B | Unstable | Moderate solar, light winds | Fast spreading |
| C | Slightly unstable | Weak solar or moderate winds | Moderate |
| D | Neutral | Overcast or strong winds | Coning plume |
| E | Slightly stable | Night, moderate cloud, light wind | Slow, fanning plume |
| F | Stable | Clear night, light winds | Very slow, fumigation risk |
The dispersion coefficients are parameterized as power laws of downwind distance x (in meters):
$$\sigma_y(x) = a \, x^{0.894} \qquad \sigma_z(x) = c \, x^d$$
The coefficients a, c, d depend on the stability class. For class A: a = 0.22, c = 0.20, d = 0.894. For class F: a = 0.04, c = 0.016, d = 0.70. More stable conditions yield smaller dispersion coefficients and thus higher near-source concentrations that persist further downwind.
Urban Box Model
A simple but useful approach for estimating urban-scale pollutant concentrations treats the city as a well-mixed box of volume V = L x W x H, where L is the city length along the wind, W is the crosswind width, and H is the mixing height. The mass balance yields:
$$\frac{dC}{dt} = \frac{E}{V} - \frac{C}{\tau} - k_c C + \frac{C_{bg}}{\tau}$$
where E is the total emission rate (g/s), $\tau = L/u$ is the ventilation time (flushing time), $k_c$ is a first-order chemical loss rate, and $C_{bg}$ is the background concentration. At steady state ($dC/dt = 0$):
$$C_{ss} = \frac{E/V + C_{bg}/\tau}{1/\tau + k_c} = \frac{E}{(u \cdot W \cdot H)} + C_{bg} \quad \text{(when } k_c \approx 0\text{)}$$
The box model reveals that urban pollutant levels scale inversely with wind speed u and mixing height H -- explaining why stagnant conditions with low inversions produce the worst air quality episodes. The ventilation coefficient (u x H) is a key metric used operationally to forecast air quality.
Deposition Processes
Pollutants are removed from the atmosphere through dry and wet deposition, completing the atmospheric pollutant lifecycle.
Dry Deposition
Direct transfer of gases and particles to surfaces without precipitation. The deposition flux is parameterized as:
$$F_d = v_d \cdot C(z_{ref})$$
where $v_d$ is the deposition velocity (typically 0.1--2 cm/s for gases, 0.01--1 cm/s for particles). The resistance analog model decomposes $v_d = (r_a + r_b + r_c)^{-1}$ into aerodynamic, boundary layer, and surface resistances.
Wet Deposition
Scavenging by precipitation, subdivided into in-cloud (rainout) and below-cloud (washout) processes:
$$F_w = \Lambda \int_0^H C(z)\,dz$$
where $\Lambda$ is the scavenging coefficient (s⁻¹), often parameterized as $\Lambda = a P^b$ with P the rainfall rate. The washout ratio $W = C_{\text{rain}}/C_{\text{air}}$ typically ranges from 10³ to 10⁶.
Photochemical Smog and the NOₓ-VOC-O₃ Cycle
Photochemical smog is driven by the nonlinear interaction between nitrogen oxides (NOₓ = NO + NO₂) and volatile organic compounds (VOCs) in the presence of sunlight. The basic photostationary state cycle is:
$$\text{NO}_2 + h\nu \xrightarrow{J_1} \text{NO} + \text{O} \quad (\lambda < 420\;\text{nm})$$
$$\text{O} + \text{O}_2 + M \xrightarrow{k_2} \text{O}_3 + M$$
$$\text{NO} + \text{O}_3 \xrightarrow{k_3} \text{NO}_2 + \text{O}_2$$
This gives the Leighton relationship at photostationary state:
$$[\text{O}_3] = \frac{J_1 [\text{NO}_2]}{k_3 [\text{NO}]}$$
Without VOCs, this cycle simply recycles NO, NO₂, and O₃ with no net ozone production. However, VOCs react with OH radicals to produce peroxy radicals (RO₂, HO₂) that convert NO to NO₂ without consuming O₃:
$$\text{RH} + \text{OH} \rightarrow \text{R} + \text{H}_2\text{O}$$
$$\text{R} + \text{O}_2 \rightarrow \text{RO}_2$$
$$\text{RO}_2 + \text{NO} \rightarrow \text{RO} + \text{NO}_2$$
$$\text{HO}_2 + \text{NO} \rightarrow \text{OH} + \text{NO}_2$$
This additional NO-to-NO₂ conversion pathway leads to net ozone accumulation. Urban ozone control is complicated because O₃ production can be either NOₓ-limited or VOC-limited depending on the NOₓ/VOC ratio. In VOC-limited regimes, reducing NOₓ alone can actually increase ozone -- a counterintuitive result with major policy implications.
Temperature Inversions and Mixing Height
A temperature inversion occurs when temperature increases with altitude, creating a stable layer that suppresses vertical mixing and traps pollutants near the surface. The mixing height $z_i$ is the height of the convective boundary layer, above which a capping inversion prevents vertical dispersion.
Radiation Inversion
Forms overnight as the surface cools radiatively faster than the air above. Breaks up after sunrise as solar heating destabilizes the surface layer. Causes morning rush-hour pollution peaks.
Subsidence Inversion
Created by large-scale sinking air in high-pressure systems. Persistent and can last days to weeks. Responsible for multi-day pollution episodes (e.g., Los Angeles basin, Beijing winter smog).
The ventilation coefficient is defined as:
$$\text{VC} = \bar{u} \times z_i \quad (\text{m}^2/\text{s})$$
When VC is less than 6000 m²/s, poor dispersion conditions are expected. Air quality forecasters issue advisories when persistent inversions combine with high emissions, particularly during winter (heating emissions + low mixing heights) or summer (photochemical smog + stagnation).
Fortran: Urban Box Model for Pollutant Evolution
This Fortran program integrates the urban box model equation forward in time using an explicit Euler scheme, tracking pollutant concentration under time-varying emissions and a diurnally varying mixing height.
program box_model_pollution
! Urban box model for pollutant concentration evolution
! dC/dt = E/V - C/tau - k_c*C + C_bg/tau
implicit none
integer, parameter :: dp = selected_real_kind(15, 307)
integer, parameter :: nsteps = 86400 ! 1-day simulation, dt=1s
real(dp) :: C, E, L_city, W_city, H_mix, u_wind
real(dp) :: tau, V, k_chem, C_bg, dt, time
real(dp) :: hour, E_base, H_day, H_night
integer :: i, iunit
! --- Parameters ---
L_city = 20000.0_dp ! City length along wind (m)
W_city = 15000.0_dp ! City crosswind width (m)
u_wind = 3.0_dp ! Mean wind speed (m/s)
k_chem = 1.0e-5_dp ! Chemical loss rate (1/s)
C_bg = 5.0e-6_dp ! Background concentration (g/m^3)
E_base = 500.0_dp ! Base emission rate (g/s)
H_day = 1500.0_dp ! Daytime mixing height (m)
H_night = 200.0_dp ! Nighttime mixing height (m)
dt = 1.0_dp ! Time step (s)
! --- Initial condition ---
C = C_bg ! Start at background
! --- Output file ---
iunit = 20
open(unit=iunit, file='box_model_output.dat', status='replace')
write(iunit, '(A)') '# Time(h) Concentration(ug/m3) MixHeight(m) Emission(g/s)'
! --- Time integration ---
do i = 1, nsteps
time = real(i, dp) * dt
hour = mod(time / 3600.0_dp, 24.0_dp)
! Diurnal mixing height: rises after sunrise, falls after sunset
if (hour >= 7.0_dp .and. hour <= 18.0_dp) then
H_mix = H_night + (H_day - H_night) * &
sin(3.14159265_dp * (hour - 7.0_dp) / 11.0_dp)
else
H_mix = H_night
end if
! Diurnal emission profile: peak during rush hours
if (hour >= 7.0_dp .and. hour <= 9.0_dp) then
E = E_base * 2.5_dp ! Morning rush
else if (hour >= 17.0_dp .and. hour <= 19.0_dp) then
E = E_base * 2.0_dp ! Evening rush
else if (hour >= 9.0_dp .and. hour <= 17.0_dp) then
E = E_base * 1.2_dp ! Daytime
else
E = E_base * 0.3_dp ! Nighttime
end if
! Box model parameters
V = L_city * W_city * H_mix
tau = L_city / u_wind
! Euler forward step
C = C + dt * (E / V - C / tau - k_chem * C + C_bg / tau)
if (C < 0.0_dp) C = 0.0_dp
! Write output every 5 minutes
if (mod(i, 300) == 0) then
write(iunit, '(F8.3, 2X, F12.4, 2X, F8.1, 2X, F8.1)') &
hour, C * 1.0e6_dp, H_mix, E
end if
end do
close(iunit)
print *, 'Box model integration complete. Output: box_model_output.dat'
end program box_model_pollutionInteractive Simulation: AQI Calculator & Pollutant Dispersion
PythonGaussian plume dispersion model for a point source showing concentration fields under different atmospheric stability classes. Includes an AQI calculator that converts PM2.5 concentrations to Air Quality Index values with category classification.
Click Run to execute the Python code
Code will be executed with Python 3 on the server