Grimm's Law (1822) describes how the Proto-Indo-European (PIE) obstruent system became the Proto-Germanic one. Nine stops fall into three manner/voicing series, each sharing three places of articulation (labial, dental, velar):
S1: p t k (voiceless stops) → f θ x (voiceless fricatives)
S2: b d g (voiced stops) → p t k (voiceless stops)
S3: bʰ dʰ gʰ (voiced aspirated) → b d g (plain voiced stops)
Each phoneme is a point in a 3D articulatory space: place (labial↔dental↔velar), manner (stop↔fricative "aperture"), and voicing/aspiration. The scene shows all nine PIE points at t=0 and their Proto-Germanic targets as translucent markers.
The classic push-chain account says the shift is sequential, not simultaneous: S1 fricativises first, and only once it has moved far enough away does its old "stop" slot count as vacated — only then can S2 safely move into it without merging with S1's un-shifted remnants, and likewise S3 waits on S2. That coupling is a real ODE integrated every frame:
dp1/dt = k1 (S1 leads, constant rate)
dp2/dt = g · max(0, p1 − p2 − m) (S2 follows, gated by margin m)
dp3/dt = g · max(0, p2 − p3 − m) (S3 follows S2 the same way)
xi(t) = lerp(origin_i, target_i, clamp(pi, 0, 1))
Raise the push margin and followers wait longer before moving (more separation, slower overall shift); raise the follower gain and, once released, they sprint to close the gap. The Drag chain toggle removes the coupling entirely — all three series move at the same independent rate k1 — which is the rival "drag chain" hypothesis where a change is pulled by phonological symmetry pressure rather than pushed by an encroaching neighbour. Compare the "Min. gap" readouts: the push model keeps a wider separation between series (fewer near-merger moments) than the drag model.
This is a simplified but structurally real model of chain shifts in historical phonology — the same push/drag mechanics are invoked for the English Great Vowel Shift and the High German Consonant Shift.