Whirlpool
Flow · (ẋ, ẏ, ż) = f(x, y, z, t)
(−z − 0.05x, −0.2y, x − 0.05z)
Open in the app The dials and keys named below are the app's.
The system
Every term here is linear, and the three lines split into two independent halves. The app is y-up, so y is the height and the turning happens in the floor plane, the one spanned by x and z, the plane a textbook would call x, y.
In that plane the pair (−z, x) is a rotation at one radian per second: a full turn every 2π ≈ 6.28 seconds at Speed 1, carrying a seed from the +x axis toward +z. The −0.05 on each of those lines pulls the radius in, r = r₀·e^(−0.05·t): an e-fold in 20 seconds, a factor 0.73 per turn. The height obeys the second line alone, y = y₀·e^(−0.2·t), halving every ln 2 / 0.2 ≈ 3.47 seconds.
Why it winds in
The three eigenvalues are −0.05 ± i and −0.2. All three have negative real part, so the origin is a stable spiral and every seed reaches it. The imaginary pair is what makes the approach a turn rather than a fall. The four-to-one ratio between 0.2 and 0.05 is the whole picture: the seeds sink onto the floor plane long before they have wound in, so the cloud flattens into a turning plate and only then closes on the centre. After 20 seconds a seed that started at radius 3 and height 4 is at radius 3/e ≈ 1.10 and height 4·e^(−4) ≈ 0.073.
Being linear, the flow has no other behaviour to offer: no second rest point, no cycle, no chaos. Each thread is a copy of every other, rotated and scaled, which is why the drain looks so clean.
Try
- Change both −0.05s to +0.05: the eigenvalues cross to the right and the spiral runs outward instead, radius 3 reaching 8.16 in 20 seconds, while the height still collapses.
- Set the middle line to −0.02·y: the height now outlives the turning, and the threads are long helices winding down a funnel.
- Set the middle line to 0: every seed keeps its height, and the plate becomes a stack of flat spirals.
- Top in the deck for the spiral alone, with the sinking heights projected away.
- Front instead, to watch the cloud settle onto the floor before it winds in.