Follow nitrogen up a pond food chain and back down through the mud. Change light, warmth, nutrients, fish and herons and watch the cascade.
Runs the pond to a steady state (1500 days) for nutrient inflow 0 to 1.5 mg/L with the current settings and plots each group as a fraction of its own maximum.
The science
Currency. Everything is tracked as nitrogen, mg N per litre of pond water: dissolved nutrient N, phytoplankton P, zooplankton Z, small fish F, bass B and detritus D (dead material in the mud and water).
- Uptake:
up = vmax fT fL N/(kN+N) P (Monod), fT = 1.8(T-20)/10, light fL = 1.25 L/(0.25+L).
- Grazing and predation use a type III functional response
a X²/(h²+X²) Y, which gives prey a refuge at low density (plants, mud). A fraction e of what is eaten becomes new predator biomass; the rest (1 - e) is egested to detritus.
- Every group also loses biomass by linear loss and, for Z, F and B, a quadratic crowding term. All losses go to detritus.
- Decomposers (worms, snails, bacteria) return detritus to nutrient:
rem = 2.0(T-20)/10 rD D.
- Flushing:
q (Nin - N) brings nutrient in and washes plankton and detritus out (fish stay).
- Herons:
H cH X/(kH+X), X = F + B; 30 % of the nitrogen leaves with the bird, 70 % returns as droppings.
Conservation. With no flushing and no herons the sum N+P+Z+F+B+D is constant (the page checks it). Integration is 4th-order Runge-Kutta, step 0.1 d.
Honest simplifications. One well-mixed water column (no depth, no stratification, no oxygen, no seasons, no sediment phosphorus); all rate constants are illustrative, in the right order of magnitude but not fitted to a particular pond; fish are lumped into two groups and bass eat only small fish; frogs, dragonflies, tadpoles and invertebrates in the picture are decoration driven by the model, not separate state variables. Numbers describe behaviour (cascades, enrichment, warming), not a forecast.
Models built with Blender (fish, heron, frog, plants, bank cut-away) and rendered with Three.js.