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:

dPdt=(kb+ksettling)P\frac{dP}{dt} = -(k_b + k_{settling}) \cdot P

Where:

  • kbk_b — pathogen die-off rate (day⁻¹), typically 0.5–5.0
  • ksettlingk_{settling} — pathogen settling rate (day⁻¹)

Typical pathogen die-off rates at 20°C

Organismk_b (day⁻¹)θT₉₀ (days)
Fecal coliforms0.5 – 2.01.0471.2 – 4.6
E. coli0.8 – 3.01.0470.8 – 2.9
Enterococci0.5 – 1.51.0471.5 – 4.6
Giardia cysts0.01 – 0.11.04723 – 230
Cryptosporidium0.005 – 0.051.04746 – 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:

dISSdt=vssHISS\frac{dISS}{dt} = -\frac{v_{ss}}{H} \cdot ISS

where vssv_{ss} 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:

dDetdt=(kdt+vdtH)Det\frac{dDet}{dt} = -(k_{dt} + \frac{v_{dt}}{H}) \cdot Det

Generic Constituent

Index 13 is a generic user-defined constituent that decays via first-order kinetics:

dGendt=kgenGen\frac{dGen}{dt} = -k_{gen} \cdot Gen

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

ConstituentIndexLoss MechanismKey ParameterTypical Range
Conductivity0None (conservative)
ISS1Settlingvss (m/d)0.1 – 2.0
Phytoplankton10Respiration, death, settlingmultiplevaries
Detritus11Dissolution + settlingkdt, vdt0.01 – 0.5 d⁻¹
Pathogens12Die-off + settlingkb (d⁻¹)0.5 – 5.0
Generic13First-order decaykgen (d⁻¹)user-defined
Alkalinity14None (conservative)

Python Implementation

pythonkinetics.py — Auxiliary constituents
# 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)

Ready to model your river?

Try the QUAL2K prediction engine with your own data

Launch Prediction Engine