Bring life to a dead world
This simulation needs WebGL2. Try another browser.
A small cloud feeds rain onto a barren floating island. Water routes downhill through a pipe model, soaks into soil, carves channels and fills lakes; moisture lets grass pioneer the ground, then trees follow and dormant dead trees resprout. Everything you see is a state variable: nothing is a prerecorded animation.
Rain of a chosen intensity falls for 20 minutes on a flat plate of each soil with no lateral flow, so every drop either infiltrates or ponds. The measured absorbed fraction (from the model) is compared with the closed form for an exponentially saturating soil store, F(t) = C (1 - exp(-k t / C)) with k = 0.55 Ksat, capped by the rain supplied.
Each row compares the model with a separate calculation: a rain-volume integral, a bisection solution of the pond volume equation, a force-balance ODE for raindrops, textbook vapour pressures, the logistic growth closed form, and a closed water budget.
Water on the ground: a pipe model. Each grid cell holds terrain height h and water depth w. Neighbouring cells are joined by four virtual pipes; the flux through each pipe grows with the surface difference, f ← damp·f + c·Δ(h+w), then is scaled so a cell never gives away more water than it has (Mei, Decaudin & Hu 2007). Water therefore flows downhill, pools in basins until the surface is level, and falls over the island edge as a waterfall. The cell units are dimensionless: the flow routing runs in pseudo-time, while rain, evaporation and growth run on a compressed clock (one sim hour is a fraction of a real second at 1×).
Rain, the cloud and its water store. A cloud type sets the maximum intensity (typical values: drizzle from stratus about 12 mm/h, showers from cumulus about 45 mm/h, storms from cumulonimbus 150 mm/h). Rain can never exceed the moisture the cloud receives: dS/dt = supply - rain + recycled evaporation, where S is the store in mm over the footprint. If the store empties the rain throttles to the supply, so intensity 100% with water 20% will fizzle out. Drops of diameter d fall at about v = 9.65 - 10.3 e-0.6d m/s (d in mm; Atlas et al. 1973; checked against a force-balance ODE) and are pushed sideways by the wind in proportion to their fall time, so rain lands downwind of the cloud. On screen the fall is drawn about three times faster than real. Shower duty cycle: the intensity shown is the intensity during a shower; the ground receives 20% of it on average (showers come and go), otherwise a day of regrowth would be drowned in 650 mm of rain. The store and supply are accounted on the same 20% basis.
Soil. Infiltration is limited by the soil's capacity Ksat (typical values: crusted mud 8 mm/h, fertile loam 35, volcanic ash 60, sand 120, bare rock about 1) times how empty the soil store is, (1 - m). When rain beats infiltration the surplus runs off, which is why dead, crusted ground floods and erodes while sand drinks everything. Soil moisture m is lost by evaporation, plant transpiration and deep drainage; evaporation scales with the Magnus saturation vapour pressure, es(T) = 6.1094 exp(17.625 T / (T + 243.04)) hPa, about 6-7% more per kelvin.
Erosion. The stream-power capacity C = Kc sinα |v| (depth-limited) decides whether flowing water picks sediment up or drops it; roots cut the loss by up to 82% (1 - 0.82 vegetation). Slopes steeper than the soil's angle of repose slump (thermal erosion). This is why bare slopes gully while greened slopes hold.
Life. Grass cover v grows logistically, dv/dt = r fm fT ffert v (1 - v/K), with r = 1.4 per day at the optimum 22 C, switched off below about 14% soil moisture and killed by drowning, lava or heat. Litter builds fertility, and fertility raises the carrying capacity K, a feedback that makes recovery accelerate (ecological succession). Pine, blossom trees and shrubs need different moisture thresholds; drought-stressed trees turn dormant (shown as dead trees) and resprout when the soil stays wet; mature trees seed downwind onto ground that grass has already prepared. The Life Index mixes grass cover, living trees, open water and Shannon diversity -sum(p ln p) of the biomass shares.
Volcano scenario. Hot rock turns rain to steam and cools, cooled ash weathers into fertile soil. Simplifications and made-up constants: a single island on a 112x112 grid (1.8 m cells); fixed pipe conductance and damping; heights, rates and thresholds are typical or illustrative values, not calibrated to a real catchment; no snow, groundwater table, wind erosion or nutrient cycles; the clouds, the sky layer below the island and the floating background islands are decoration. Bigger numbers than reality are used on purpose so that years of regrowth fit into minutes.
3D assets (trees, rocks, island underside, cloud sprites, terrain textures) were modelled and baked in Blender; the simulation, rendering and interface are Three.js r160 + WebGL. Pictures of scenarios are screenshots of this simulation.