Phosphorus Kinetics: Organic P Hydrolysis and Inorganic P Settling
QUAL2K tracks phosphorus as two state variables, following EPA nutrient criteria for rivers and streams: Organic Phosphorus (index 8) and Inorganic Phosphorus (index 9). Phosphorus is a limiting nutrient for algal growth and a key parameter in eutrophication studies. For the complementary nutrient model, see the Nitrogen Cycle page.
Phosphorus Cycle
Organic Phosphorus
Where:
- — organic P hydrolysis rate (day⁻¹), typically 0.01–0.7
- — organic P settling velocity (m/d), typically 0.001–0.1
Inorganic Phosphorus
Where:
- — inorganic P settling velocity (m/d), typically 0.0–0.05
Typical Phosphorus Rate Constants
Phosphorus-related rate constants at 20°C
| Parameter | Symbol | Range | θ | Units |
|---|---|---|---|---|
| Organic P hydrolysis | khp | 0.01 – 0.70 | 1.047 | day⁻¹ |
| Organic P settling | vop | 0.001 – 0.10 | — | m/d |
| Inorganic P settling | vip | 0.00 – 0.05 | — | m/d |
| P:Chl-a ratio | rpa | 0.5 – 2.0 | — | μg P / μg Chl-a |
Python Implementation
pythonkinetics.py — Phosphorus cycle
# Organic P: hydrolysis + settling
khp = temp_correction(rates.get('khp', 0.01), 1.047, temp)
vop = rates.get('vop', 0)
loss_op = khp + (vop / max(h, 0.01))
orgp_hydrolyzed = khp * conc[8] * dt
conc[8] *= math.exp(-loss_op * dt)
# Inorganic P: gains from hydrolysis, loses to settling
vip = rates.get('vip', 0)
conc[9] += orgp_hydrolyzed
settling_ip = (vip / max(h, 0.01))
conc[9] *= math.exp(-settling_ip * dt)