...
running...
How to use
The big panel is a side view of a glacier slab, drawn in a frame parallel to the bed. Ice at the bed is held back and ice near the surface moves fastest, so a straight borehole (red, orange) leans over as years pass. Green arrows are the ice velocity at eight heights; the plots show velocity and strain rate against height.
Try: thicken the ice and watch the surface speed jump about 16 times when thickness doubles (n = 3); warm the ice to 0 C and it flows many times faster; raise the sliding slider to see the whole profile shift sideways while the shape stays the same; set n = 1 for a viscous fluid and compare the profile shape.
The science
Ice creeps under stress by Glen's flow law dε/dt = A τⁿ with n ≈ 3. On a slope α the shear stress at height z above the bed is τ(z) = ρ g (H − z) sin α so the basal stress is ρ g H sin α. Integrating the strain rate gives the velocity profile u(z) = ub + 2A/(n+1) (ρ g sin α)ⁿ [Hⁿ⁺¹ − (H − z)ⁿ⁺¹] and the flux per metre width q = 2A/(n+2) (ρ g sin α)ⁿ Hⁿ⁺². The rate factor depends on temperature as an Arrhenius law, A = A₀ exp[−Q/R (1/T − 1/T₀)] with Q = 60 kJ/mol and A₀ = 3.5·10⁻²⁵ Pa⁻³ s⁻¹ at −10 C (Cuffey and Paterson).
Simplifications: a parallel-sided slab (no longitudinal stresses), uniform temperature, no meltwater, sliding set as a simple multiple of the deformation speed instead of a Weertman law, and for n other than 3 the rate factor is rescaled at 100 kPa so the shape changes without changing the magnitude too wildly.
What is checked and why you can trust it
Every time the page loads, and whenever you press Re-run check, the simulation evaluates its own mathematics against an independent reference, such as a closed-form formula, a finite-difference derivative or an exhaustive count. Each line above reports PASS or FAIL together with the measured numbers, so you can see by how much it agrees. Results are also published on window.__msChecks for automated testing. The check never uses the same code path as the animation it validates, otherwise it would only confirm itself.
How to read a failure: a FAIL line means the measured discrepancy exceeded the stated tolerance for the current slider values. Try Reset, then move the sliders back toward their defaults; if a check still fails at the defaults it is a bug worth reporting. Tolerances are chosen from the numerical method itself, never tuned to make a test pass: round-off level (1e-9) for exact algebra, about 1e-3 for finite differences and Monte Carlo estimates with a few hundred thousand samples, and a documented margin for stochastic learning runs.
Reproducibility: the particle and pen simulations use the browser random generator for initial positions, so exact pixels differ between visits, but the checks depend only on mathematics and not on those positions. Fixed wave tables (curl noise) and fixed grammars (L-system) are deterministic.
This is an educational model. It shows the mechanism clearly, but it is deliberately simplified; the science panel lists what was left out.