Pathogen Die-Off, Sediment Oxygen Demand, and Other Water Quality Parameters
Beyond the major nutrient cycles (BOD, N, P), QUAL2K models several additional water quality constituents following EPA water quality criteria. These include pathogen indicator organisms, sediment oxygen demand (a key sink in the DO balance), inorganic suspended solids, detritus, and a generic user-defined constituent.
Pathogen Die-Off
Pathogens (fecal coliforms, E. coli, or other indicator organisms) decay via first-order kinetics. Die-off is accelerated by sunlight (UV), temperature, and settling:
Where:
- — pathogen die-off rate (day⁻¹), typically 0.5–5.0
- — pathogen settling rate (day⁻¹)
Typical pathogen die-off rates at 20°C
| Organism | k_b (day⁻¹) | θ | T₉₀ (days) |
|---|---|---|---|
| Fecal coliforms | 0.5 – 2.0 | 1.047 | 1.2 – 4.6 |
| E. coli | 0.8 – 3.0 | 1.047 | 0.8 – 2.9 |
| Enterococci | 0.5 – 1.5 | 1.047 | 1.5 – 4.6 |
| Giardia cysts | 0.01 – 0.1 | 1.047 | 23 – 230 |
| Cryptosporidium | 0.005 – 0.05 | 1.047 | 46 – 460 |
Inorganic Suspended Solids (ISS)
ISS (index 1) represents non-reactive suspended particles such as silt and clay. The only loss mechanism is gravitational settling:
where is the ISS settling velocity (m/d), typically 0.1–2.0 m/d.
Detritus
Detritus (index 11) represents particulate organic matter derived from algal death and external organic inputs. It decomposes via dissolution and is lost via settling:
Generic Constituent
Index 13 is a generic user-defined constituent that decays via first-order kinetics:
This can represent any conservative or reactive tracer (e.g., dye studies, pharmaceuticals, pesticides) by adjusting the decay rate.
Conservative Constituents
Two constituents are modeled as fully conservative (no decay, no transformation):
- Conductivity (index 0) — electrical conductance, used as a mixing tracer
- Alkalinity (index 14) — buffering capacity (mg CaCO₃/L), no reactions
Sediment Oxygen Demand (SOD)
Summary of auxiliary constituent parameters
| Constituent | Index | Loss Mechanism | Key Parameter | Typical Range |
|---|---|---|---|---|
| Conductivity | 0 | None (conservative) | — | — |
| ISS | 1 | Settling | vss (m/d) | 0.1 – 2.0 |
| Phytoplankton | 10 | Respiration, death, settling | multiple | varies |
| Detritus | 11 | Dissolution + settling | kdt, vdt | 0.01 – 0.5 d⁻¹ |
| Pathogens | 12 | Die-off + settling | kb (d⁻¹) | 0.5 – 5.0 |
| Generic | 13 | First-order decay | kgen (d⁻¹) | user-defined |
| Alkalinity | 14 | None (conservative) | — | — |
Python Implementation
# ISS: settling only
vss = rates.get('vss', 0)
conc[1] *= math.exp(-(vss / max(h, 0.01)) * dt)
# Detritus: dissolution + settling
kdt = temp_correction(rates.get('kdt', 0.01), 1.047, temp)
vdt = rates.get('vdt', 0)
conc[11] *= math.exp(-(kdt + vdt / max(h, 0.01)) * dt)
# Pathogens: die-off + settling
kb = temp_correction(rates.get('kb', 1.0), 1.047, temp)
conc[12] *= math.exp(-kb * dt)
# Generic: user-defined decay
kgen = temp_correction(rates.get('kgen', 0), 1.047, temp)
conc[13] *= math.exp(-kgen * dt)