Feature guide · 3D Flows
3D Flows — fractals are shapes. Flows are motion.
A fourth kind of scene in Spiralyst Lab. Fractals are shapes that react to sound. Flows are movement — water going over an edge, a vortex tightening toward a point, a swell rolling in to a beach — computed from the equations, sent through as tens of thousands of glowing particles you can fly around, and driven by your music: the Navier–Stokes vortex, the waterfall, the ocean wave and — from v3.8.0 — Wind Flow. Shipped in v3.6.0 (September 18, 2026); the wave in v3.7.0 (September 26, 2026); Wind Flow in v3.8.0 (October 23, 2026); Wind Flow's pipe and the view cube in v3.9.0 (November 2, 2026).
Four scenes. One is a picture of the vortex at the centre of this year's most talked-about mathematics; one is something you have stood next to; one is the sea, drawn as the water itself; and one is a wind tunnel, with smoke lanes bending round a body you choose, or a model you load. Each is labeled, part by part, for what is exact and what is a sketch.
Not shapes that react — motion that is computed
For 31 of Spiralyst Lab's scene types, sound is fuel: the bass pushes the zoom, the hats shimmer the colour, the lead bends the geometry. 3D Flows are different in kind. They start from a description of how a fluid moves — the equations, or an exact solution of them — and send up to sixty thousand glowing particles through that motion in full 3D, with trails, an orbit camera, and every control bindable to your music. It's the first part of the app where every slider is a physical quantity.
The Navier–Stokes vortex
In September 2026, a 166-page proof described a fluid that, pushed gently, spins itself up to infinite speed in finite time. We are not mathematicians and we didn't solve anything; we read the paper, found that it writes down much of the flow near the axis, and drew that: a straining flow that pulls fluid in and fires it out in two jets, a thin spinning sheet shaped by a Bessel function, the hourglass the paper's own coordinates make.
The parts the proof specifies are marked exact. The constants it only calls "sufficiently large" are marked illustrative. Push a slider past the paper's range and the scene says exaggerated. The ripple pulses that balance the flow are marked schematic — their timing is the paper's exact formula; their size and count are yours to set.
Two companion modes put it in context. A textbook collapsing Burgers vortex shrinks at exactly the same rates, driven by stretching from infinitely far away — an analogue, not the proof's mechanism, but every number exact. And the classic Burgers vortex, solved live every frame, where stretching concentrates the spin and viscosity spreads it out, and the two balance forever. Three vortices, one lesson: pull a spinning column longer and it spins faster; the question is whether anything stops it.
The default view is an infinite zoom: the blowup is self-similar, so the scene draws nested copies of it shrinking toward the centre and fading in and out — a seamless loop with no loop point, because the mathematics has none. The full story is in the release post.
Controls: Scene (Blowup core / Collapsing Burgers / Burgers), Tracers (Streamlines / Fluid paths), Collapse view (Infinite zoom / Steady), Collapse clock, Swirl, Axis strain, Collapse speed, Cycle length, Zoom spacing, Twist per octave, Pulses with Pulse gain and Pulse lobes, Sheet sharpness, Jet bias, Stretch — and for Burgers: Strain, Viscosity, Spin, Forcing. Colour by speed, height, distance from axis or spin rate.
The waterfall
The waterfall is solved, not drawn. Set a flow rate in cubic metres per second per metre of width, a fall height in metres, a bed slope, a roughness. The river draws down toward the lip along the curve open-channel hydraulics predicts. The depth at the brink is the measured ratio hydrologists have used since 1936. The sheet falls ballistically and thins by continuity. Where it lands, the water throws up a hydraulic jump — and its whole character, from a glassy undular ripple to a standing wall of foam, is computed from the Froude number the fall produces, using the same flume measurements engineers use. Raise the tailwater and the jump drowns. Bind the flow rate to your bass and the whitewater moves because the physics moved.
The info bar reports it as you go: the flow rate, the Froude number, the jump's name (undular, weak, oscillating, steady, strong), the energy lost, and the display scale — "1 unit ≈ 2.4 m".
Controls: Flow rate q (0.05–4 m²/s), Channel width (0.5–40 m), Bed slope, Roughness n, Fall height H (1–60 m), Lip angle (±60°), Lip throw, Tailwater, Aeration, Spray, Splash force, Turbulence, Mist drift and size, Foam whiteness, River speed and Pool speed. Colour by speed, Froude number (sub- vs supercritical), air content (water → foam → mist), or height.
The ocean wave
The third scene is the ocean wave, and it is drawn differently from every ocean renderer we found. Games and films draw the sea as a surface — a sheet bent into waves and lit like water. This scene draws the water: up to sixty thousand drops, each riding its own orbit, circles at the top shrinking with depth and flattening into ellipses where the bed comes up. The surface is simply where the top drops happen to be.
It can do that because of one piece of very old mathematics. Ocean waves obey the same equations as every fluid, with a free surface on top, and in general nobody can solve them. But in 1802 Franz Gerstner found one wave that satisfies the full frictionless equations exactly — and he wrote it as a formula for where each drop is. The first scene is that wave, labeled exact, with a switch that adds the forward drift a real sea has (to second order, a Stokes wave is a Gerstner wave plus its drift). The second is an open sea: swell, wind sea and chop, every train obeying the dispersion relation, so long waves outrun short ones the way they do off any pier. A wind-speed control hands the wind sea to the Pierson–Moskowitz spectrum and covers it in whitecaps at the measured fraction. The third is a beach: the swell shoals, breaks where Miche's limit says, is named spilling, plunging or surging by Battjes' surf-similarity number, throws a plunging barrel whose cross-section is Longuet-Higgins' curve, and runs up the sand to Hunt's height. Turn the swell off the shore and the barrel peels along the crest.
Music enters honestly. The equations fix how each wavelength moves and say nothing about how much of each there is, so the wave heights are the audio targets — and a 🎵 React to music button binds a scene's best set in one click. Alongside are controls made to be driven: a pulse ring that a kick throws outward as a real wave, crest sharpen, jitter, spray, shear. Each is labeled for what it is.
That release also brought a touch of "viscosity" to the flows — heavy tracers that lag the flow, a diffusing haze, real viscous damping for the wave, eddy viscosity for the waterfall's pool — and a camera that can pan as well as orbit. The full story is in the 3.7.0 release post.
Three scenes: Deep-water train (Gerstner's exact wave; Stokes drift toggle), Open sea (swell + wind sea + chop, optional Pierson–Moskowitz wind mode with measured whitecap coverage, seamless loop), Beach (shoaling, Miche break point, Battjes breaker type, Longuet-Higgins barrel, Hunt run-up; an oblique swell peels).
Controls: up to 60,000 drops, with Surface share setting how many sit on the surface and trail length in seconds to draw whole orbits. Reactive motion: Pulse ring (height + period), Crest sharpen, Jitter (+ speed), Spray kick, Surface shear, Tube size, Reaction smoothing, Group memory — and the 🎵 React to music button (✕ Clear removes it). Colour by speed, depth, orbit size, air content or vorticity — the one field that separates Gerstner's wave from Stokes'. Thirty controls in all, every one a physical quantity or labeled illustrative.
Wind Flow
The fourth scene is Wind Flow, and it begins where every aerodynamics course begins: with air that has no friction. That shortcut is older than the Navier–Stokes equations, and it has a gift and a flaw. The gift is that the flow comes from one simple equation whose answers add up, so a wind plus a doublet makes a cylinder, a wind plus a source and a sink makes an oval, and a sphere works the same way in three dimensions. For those three bodies in open air, the scene draws the exact frictionless flow. Everything else — a wing section, the tunnel's walls, a baffle plate, a model you load — is covered with small flat panels, each with a little source or swirl, and the computer sets their strengths so the air goes round the surface instead of through it. The scene says what it is doing: exact, solved, or drawn.
The flaw is d'Alembert's paradox. Frictionless air closes up neatly behind a body, so the body feels no drag at all, which is not what real air does. Real air peels off the back and rolls up into swirls that come off one side and then the other: the vortex street. Wind Flow does not pretend to solve that. It draws the wake, as a street of swirls or a smooth stirred trail, and times it with the shedding rates Anatol Roshko measured for cylinders in 1954 and Sakamoto and Haniu measured for spheres. Gusts are added the same honest way: smooth noise that never bunches up, set to the strength engineers call turbulence intensity, and labeled as what it is.
Then it is a wind tunnel, so you get to play. Four tunnels: a round pipe, a rectangular section, a funnel whose contraction speeds the air up by exactly the area ratio, and an open jet. Fill the whole tunnel with drawn air or release it from a smoke rake. Colour it by speed, by pressure, by swirl, by gustiness, by which lane it came from, or by age. Spin the cylinder and the wake bends; the only force the scene ever computes is the lift that spin makes, and it says so. Tilt the wing past ten degrees and the label tells you a real wing would have stalled. Move the body with the mouse, push it through a wall if you like (the label says so rather than hiding it), lean a baffle into the stream and watch the gap above it speed up.
And load your own model. Any STL or OBJ: the app cleans it, reduces it to about 1,500 panels, and solves the air round it in the background while the old scene keeps flowing. The built-in rubber duck is there to show you how, with a bundled "Floating Ducky" preset that has it bobbing in a low tunnel behind a leaning fence, sixty thousand tracers coloured by gustiness. Presets remember your model, so a saved scene brings it back with its pose and position.
New in 3.9.0: the pipe. A tube open at both ends, its mouth facing the wind. Some of the air goes through it and the rest goes round. Make the back narrower, a nozzle, and the air inside speeds up, because the same air has to squeeze through a smaller hole; make it wider, a diffuser, and the air slows, and if it widens too fast the label tells you a real one would stall. Plug it and the air spills round the lip; turn up the through-flow and a fan pulls extra air in; add swirl vanes and the air inside twists into a spiral. Through-flow and swirl change at once, so they can follow the music. Pitch and yaw the pipe across the wind, and in a closed tunnel the walls answer it as they do for every other body. The air next to surfaces is more accurate in 3.9.0 too: it hugs the pipe's walls inside and out, all the way down the bore, and a model you load is sealed, so no air slips through its surface and the smoke follows its real facets.
Music enters the way it does in every flow: the bass drives the wind, the hats roughen the air, the kicks throw bigger swirls, loudness lifts the brightness, and on the cylinder and the wing the low mids add spin. One 🎵 React to music button binds the set. The scene's own words are on the card, read aloud in Math Mode: this is art drawn from real physics, not scientific wind modelling. The full story is in the 3.8.0 release post.
Four tunnels, seven bodies: round pipe, rectangular section, funnel (contraction ratio 1–9), open jet; body none, cylinder, oval, wing section, sphere, pipe (new in 3.9.0), or a model (the built-in duck or your STL/OBJ), with a baffle plate in any closed tunnel. Your model: up to 50 MB and 500,000 triangles, reduced to about 1,500 panels; a solve past 30 seconds is refused and the previous scene stays.
Controls: up to 60,000 tracers; volume fill or a smoke rake; colour by speed, pressure Cp, swirl, gustiness, smoke lane or age; Body size, spin, angle of attack, oval shape, wing thickness and camber; for the pipe, its length, inner and outer diameter, wall thickness, taper, inlet lip rounding, through-flow and swirl vanes; Body position X/Y/Z, mouse move and ⌂ Home; pitch and yaw for the pipe, yaw, pitch and roll for a model; Model size with the solved air following live while you drag; Wake style Auto / Shedding / Continuous with Pulse rate, Ring size, Wake strength, slow-down, turbulence and grain; Air chop; smooth or pulsing trails; particle shape, size, sharpness, inertia and diffusion. Sixty-seven controls on the Math Mode guide, every one a physical quantity or labeled illustrative. And, app-wide in 3.8.0, every animated slider can run a ↻ loop wave as well as a sine, seamless on angle sliders, so a body or a camera can turn for ever.
Every part labeled
Every scene carries a truth manifest you can read in Math Mode and query from the automation surface. For the vortex: exact / illustrative / exaggerated / schematic, live — the labels change if you push a slider beyond what the paper allows. For the waterfall: the flow equations, the depths, the jump law and the sheet's trajectory are exact; the brink ratio, the jump forms and the aeration are measured (published experiments); the channel shape and the display scale are illustrative; mist, foam and the roller's particle pattern are schematic. We would rather say "sketch" than let a picture claim more than the mathematics does.
For the wave the labels are live too — exact / exact to first order / measured / illustrative / exaggerated / schematic / not modeled. A second wave train, a crossing sea, a wave past the breaking limit or a beach outside the flume range each downgrade a line, and the info bar prints the volume error of a multi-train sea.
For Wind Flow: the cylinder, the sphere and the oval in open air are exact; the wing, most tunnel walls, the pipe, the baffle and a loaded model are solved with panels and say how many; the wake is drawn, on a measured clock for the cylinder and the sphere and an illustrative one for the rest; the gusts are illustrative noise at a turbulence-intensity strength; a spinning body carries the ideal swirl, and the label says a real one carries less. No drag number is shown, because this air has none. The info bar always says so: art, not wind modelling.
How flows fit with the rest of the studio
- Up to 60,000 particles per scene, soft-glow / dot / ring / star / spark shapes, true-3D trails, gradient backgrounds, the full orbit camera.
- Every control is audio-reactive — bind any slider to a frequency band, the same way fractal sliders bind — and sliders keep their reactivity when you switch scenes.
- Full Math Mode coverage — live formula tile, info card, per-slider guide, and four-section spoken narration for all four flows (all 35 types narrated).
- Loop wave (every animated slider, new in 3.8.0) — ∿ sine as before, or ↻ loop from one end to the other and round again, seamless on angle sliders; kept in presets.
- Your own 3D model (Wind Flow, new in 3.8.0) — load an STL or OBJ, keep it in presets, and load it over the local automation API too.
- Viscosity, four ways (new in 3.7.0) — Particle inertia and Diffusion on every flow; Wave damping (real viscous decay, on a log slider from real water) on the wave; Eddy viscosity on the waterfall's pool.
- The view cube (all 3D types, new in 3.9.0) — a live cube at the top of the Camera tab turns with your camera: click a face to glide square onto the front, back, sides, top or bottom, a corner for a clean three-quarter view, or drag it to orbit. In the wind tunnel, Front is the side that meets the oncoming air.
- Camera pan (all 3D types, new in 3.7.0) — shift-, middle- or right-drag, or shift+scroll, plus Pan X/Y/Z sliders.
- Safe mode for big scenes (new in 3.6.0) — hold the frame rate by trimming particles or resolution when a frame runs long, with a notice in the control panel; or choose Full power and render exactly what the sliders say. The app also tells you when macOS Low Power Mode is on.
- Same recording and export — File → Record Video captures flows like any scene; the infinite zoom is a seamless loop by construction, so a 15-second clip cuts perfectly; the open sea has a seamless-loop mode of its own.
- Local + private — no telemetry, no network. macOS system-audio or mic capture, as always.
Use it in a classroom
High-school physics — the Froude number. Waterfall on, colour by Froude number. Ask: where does the water change from "fast and shallow" to "slow and deep"? That line is the hydraulic jump, and its position is computed, not placed. Raise the tailwater until the jump drowns.
Fluid mechanics — conjugate depths. Read the Froude number and the jump form off the info bar; check Bélanger's ratio by hand. Then change the fall height and predict the new form before looking.
Calculus / ODEs — what a singularity looks like. Vortex, blowup scene, streamlines view, zoom locked. The speed readout climbs without bound as the collapse clock runs; the energy doesn't. Ask why both can be true.
Math literacy — what a proof does and doesn't say. Vortex, Math Mode open. Which parts of the scene are marked exact and which illustrative, and why would a 166-page proof leave a constant as "sufficiently large"?
Vortex stretching, three ways. Switch Blowup → Collapsing Burgers → Burgers. Same mechanism; in one, viscosity wins; in one, an outside stretch wins; in one, the fluid's own flow does.
Physics — particle orbits under a wave. Deep-water train, trail length = the period, colour by orbit size. Ask: how fast do the circles shrink with depth? (Half a wavelength down: 4 %.) Then set Water depth to a few metres on the open sea and watch the circles become ellipses.
Physics — dispersion. Open sea, swell 10 s and chop 2 s, colour by speed. Which waves are faster,
and by how much? Read c off the info bar. Why does swell arrive before a storm?
Math literacy — exact vs approximate. Deep-water train with one train: exact. Set Trains per system to 2 and watch the label change and the info bar print the error. Why does adding two solutions of a nonlinear equation not give a third?
Earth science — the surf zone. Beach. Change the slope and read the surf-similarity number
ξ₀ and the breaker's name. Which beaches make the waves surfers want?
Physics — Bernoulli on a cylinder. Wind Flow, rectangular section, cylinder, colour by
Pressure Cp. Where is Cp exactly +1? Where does it reach −3? Read the formula card:
Cp = 1 − |u|²/U². Why is the air at the sides moving at twice the wind speed?
Physics — d'Alembert's paradox. Same scene, Wake style Continuous then Shedding. Ask: in the frictionless flow the air closes up behind the body, so where does drag come from? The "did you know" card has Roshko's measured base pressure.
Physics — the Strouhal number. Cylinder, Wake style Shedding. Double the Flow speed and count
the swirls; halve the Body size and count again. S = fD/U ≈ 0.2 holds. A flat plate across the
wind gives about 0.14: lean the baffle to 90° and watch.
Engineering — continuity. Funnel, no body, colour by Speed. Set the contraction ratio to 4: the air leaves four times faster than it entered. Why must it?
Math literacy — exact vs solved vs drawn. Open jet with a sphere (exact), then a wing (solved with panels), then the wake (drawn). Which words does the scene use for each, and why does the wing need the Kutta condition before it can lift?
Use it in the room
- The living-room screen. Pick the vortex, put on an album, leave it. The collapse never repeats.
- The headline, explained. Vortex on, Math Mode open, narration playing: what the September 2026 result is, what it isn't, and what you're looking at — in five minutes, on a projector.
- Live visuals with a reason. Flow rate on the kick: the whitewater marches with the bass because the conjugate depth moved. Pulses on the hats.
- A loop that actually loops. Record 15 seconds of the infinite zoom for a square social clip.
- The tide of the set. Open sea, 🎵 on. The swell breathes with the bass line, the chop crackles on the hats, and a kick throws a ring across the water — each moving at the speed the equations give it.
- Reading the break. Beach, tube size up, camera along the crest. Move the slope from 1:50 to 1:5 and watch the info bar rename the breaker from spilling to plunging to surging.
- The honest wind tunnel. Wind Flow, cylinder, Wake style Shedding, colour by Speed, 🎵 on. The street of swirls peels off on Roshko's clock and the bass pushes the wind, so the street tightens with the beat.
- Your model in the wind. Load an STL of the thing you just printed, colour by Cp, set its yaw on the loop wave. It turns forever while the air finds its way round. Not a test; a picture, labeled.
What we don't claim
Spiralyst Lab does not simulate the Navier–Stokes equations, and it does not contain or verify the proof. It draws the flow the paper — and two exact solutions — describe, and sends particles through it; a grid simulation could not show a singularity at all. The September 2026 result concerns the forced problem, is not peer reviewed, has not been accepted by the Clay Institute, and is the subject of a priority dispute. The waterfall is solved from published hydraulics and labeled where it isn't.
The ocean wave is not an ocean simulation either: it evaluates published solutions of the wave equations and draws particles through them. Exact means one deep-water train with the drift off; a sea of several trains is first-order, and the app prints the error. Gerstner's water spins, and real wind seas are close to Stokes waves — which is what the drift switch is for. Your music sets the wave heights; the physics sets the motion. On the beach, the break point, breaker type, barrel shape and run-up are sourced; how water gets onto the barrel and everything the foam does afterwards are sketches, labeled.
Wind Flow is not CFD and not a wind-tunnel test: it evaluates the classical frictionless solutions and panel solves, draws the wake and the gusts, and says which is which. Exact means the cylinder, the sphere and the oval in open air. The wake's clock is measured for the cylinder and the sphere only. The gusts are smooth noise, not turbulence. No drag, force or coefficient is computed or shown; the only force in the scene is the ideal lift a spinning body or a wing makes, labeled. It reads STL and OBJ files; nothing else. If you spot something we got wrong, tell us.
Where to go from here
- Read the 3.8.0 release post — Wind Flow, your own model in the stream, and everything else new in 3.8.0.
- Read the 3.7.0 release post — the ocean wave, drawn as water, and everything else new in 3.7.0.
- Read the 3.6.0 release post — the vortex, the research, and the caveats, at length.
- See the Math Mode page — all four flow scenes carry the same live-formula overlay as every fractal and scope.
- Get Spiralyst Lab — all four 3D Flows are in the free trial (20 minutes per launch, a watermark on the picture, no export); everything is $24.99 for a one-year license, direct download. 3D Flows ship in v3.6.0 for macOS 14.4+; the ocean wave in v3.7.0; Wind Flow in v3.8.0; its pipe in v3.9.0.