At what stocking rate does a grazed dryland collapse, and why is recovery so much harder than collapse? 400 m x 400 m plot, 40 x 40 cells.
S-shaped curve: the upper branch is stable cover, the lower branch is bare ground, the middle branch is the unstable threshold. Between the two fold points both states are possible, which is the hysteresis window.
Ramps grazing slowly up and then back down on a uniform plot (soil held at 100 %) and compares where cover collapses and recovers with the analytic fold points.
The science
Aridity. Aridity index AI = P / PET (UNEP classes: hyper-arid below 0.05, arid 0.05 to 0.2, semi-arid 0.2 to 0.5, dry sub-humid 0.5 to 0.65). PET = 1100 mm/yr x (1 + 0.04 per K of warming), an illustrative scaling.
Vegetation. Cover V (0 to 1) in each cell: dV/dt = r V (1 - V/S) - c G V2/(V02 + V2) + D laplacian(V). Growth rate r = 1.6 min(1, AI/0.6) per year; grazing G is a Holling type-III response (livestock graze little where plants are sparse, then saturate), after May (1977); D is seed dispersal between neighbouring cells. Rainfall each year is the mean times a noisy factor (variability slider).
Tipping point. With the soil fixed, equilibria satisfy G(V) = (r/c)(1 - V)(V02/V + V). The folds are where dG/dV = 0: above the upper fold the vegetated state vanishes, below the lower fold the bare state vanishes. The gap between them is the hysteresis window; the page finds both folds analytically and by slowly ramping G.
Soil feedback. Soil quality S (carrying capacity) dS/dt = 0.35 V (1 - S) - 0.03 wind (1 - V)2 (0.4 + G) S: plants build and protect soil, bare ground erodes. Lost soil lowers capacity, which is why recovery takes decades after restocking. These constants are illustrative, not fitted to a site.
Scale. 1 unit of G is roughly 2.5 sheep per hectare in the scene (illustrative). Not modelled: shrub encroachment, fire, dust feedback on rain, nutrient islands, run-on and run-off, livestock behaviour, species. Real dryland tipping points are debated and system specific. Models built with Blender (ground, plants, sheep) and rendered with Three.js.