Unlike carbon or nitrogen, phosphorus has no significant gas phase — it moves between rock, soil, life, water and sediment purely through weathering, biological uptake and physical transport. Each reservoir Pi changes by first-order per-capita rates:
dSoil/dt = W + F + D·Biomass − U·Soil − R·Soil
dBiomass/dt = U·Soil − D·Biomass
dWater/dt = R·Soil − S·Water
dSediment/dt = S·Water (permanent sink)
W = weathering input, F = fertilizer input, U = plant uptake rate, D = decomposition/mineralization rate (fixed), R = runoff/erosion rate, S = settling rate (fixed). Every dot is one parcel of phosphorus; each simulated year it rolls the corresponding per-capita probability to jump along an arrow to the next reservoir, so the swarm's motion *is* the differential equation, sampled particle-by-particle. Drag to pan the map, scroll or pinch to zoom.
- Weathering rate — how fast phosphate minerals dissolve out of bedrock into soil; this is the only truly natural, geologic-timescale input.
- Fertilizer input — an anthropogenic shortcut straight into the soil pool that bypasses weathering entirely, the main driver of modern nutrient overload.
- Plant uptake rate — how efficiently roots and algae pull dissolved phosphorus into biomass, temporarily locking it out of the water column.
- Runoff / erosion rate — how much soil phosphorus washes into surface water instead of being taken up; high runoff plus high fertilizer floods the water pool and drives eutrophication.
- There is no arrow back from sediment to rock on human timescales — burial is a one-way exit; only geological uplift and weathering over millions of years ever returns it, which is why phosphorus is usually the limiting nutrient for long-term ecosystem productivity.