A periodic box of fluid with two shear layers in it, seen from outside. Drag to orbit, scroll to zoom. Every face wraps onto the one opposite, so a billow leaving the right of the box arrives at the left.

growth rate, measured
measuring
theory predicts 2.707
three-dimensionality
0.00%
the fraction of the kinetic energy in the spanwise component, which the base flow has none of
mixedness
0.0000
mean of 4c(1-c): zero when the two streams are still separate, one when every point is an even blend
momentum thickness
0.0000
0.00 times its initial value: this is how a mixing layer is said to spread
simulated time
0.00
marker mean 0.0000, held at its exact value; the transport scheme has lost 0.0 percent since the reset and it has been put back

Growth is measured by least squares on the log of the disturbance energy over the last few samples, so it is a rate over a window and not an instantaneous one. It is only comparable to theory while the disturbance is small; once the billow has rolled, the number is still real but it is no longer a test of anything.

which wavelengths growclick a tick to seed that mode
0.000.050.100.150.200.000.250.500.751.00peak 0.4446neutral123wavenumber, in layer thicknessesgrowth

One curve, always. In units of the layer thickness and the shear speed every shear layer has this same dispersion relation, so the parameters do not reshape it, they only move where the seeded mode lands. The ticks are the wavenumbers a periodic box can hold; the orange marker, when there is one, is the oblique secondary read off at its resultant wavenumber, which is why it always sits further right and lower down.

The disturbance is being measured. A few seconds of running fills this in.

Why a shear layer rolls

Two streams of fluid sliding past one another have a surface between them, and that surface is unstable. Push it into a small ripple and the flow speeds up over the crests and slows in the troughs; by Bernoulli the pressure does the opposite, and the pressure difference pushes the crests higher. The ripple feeds itself, steepens, and finally curls over into the row of rolling vortices that gives the instability its shape and this playground its name.

You have seen it. It is the row of breaking-wave clouds along a wind shear, the shape of the bands in Saturn's atmosphere, the curl at the edge of a rising smoke column, and the reason cream stirred into coffee ends up as sheets rather than blobs.

Why it picks a wavelength

An idealised vortex sheet, a surface across which the velocity jumps discontinuously, is unstable at every wavelength, and the shorter the wavelength the faster it grows. That is a broken model: it has no shortest scale, so it has no answer to the question of what the instability looks like.

A real layer has a thickness. Give the velocity a smooth profile across a layer of half-thickness δ\delta and the short waves stop growing entirely: a disturbance whose wavelength is smaller than the layer cannot tell the two streams apart. Michalke solved this in 1964 for the hyperbolic-tangent profile and found the band exactly. The layer is unstable for αδ<1\alpha\delta < 1, which is to say for wavelengths longer than about six thicknesses, and inside that band the growth peaks sharply.

αδ=0.4446,(αci)max⁡=0.1897 U0δ\alpha\delta = 0.4446, \qquad (\alpha c_i)_{\max} = 0.1897\,\frac{U_0}{\delta}

The thickness of the layer chooses the size of the billows. That is the whole of it: no wavelength, no scale, no picture.

Why the fastest wave is always flat

A disturbance need not run along the flow. It can run at an angle, with a spanwise wavenumber as well as a streamwise one. Squire showed in 1933 that such an oblique wave obeys the same equation as a planar one at the resultant wavenumber, with its growth rate multiplied by the cosine of the angle. Both of those hurt. The cosine is at most one, and the resultant wavenumber is always the larger, so the oblique wave is read off further along a curve that is already falling.

The primary billow is therefore two-dimensional, every time, in every parallel shear flow. And yet mixing layers are not two-dimensional: they break down into streamwise ribs and then into turbulence, and that is where the mixing happens. The three-dimensionality does not win the race, it arrives afterwards, growing on the rollers the planar mode built. Watching that gap open is what the spanwise mode control is for.

What is actually being solved

An incompressible fluid in a periodic box, on the GPU. Each substep carries the velocity field along itself with a second-order backtrace, adds vorticity confinement, diffuses momentum at the chosen viscosity, and then projects the field to be divergence free by solving a pressure Poisson equation. Only after that is the marker carried through the flow.

∂tu+(u⋅∇)u=−∇p+ν∇2u,∇⋅u=0\partial_t \mathbf{u} + (\mathbf{u}\cdot\nabla)\mathbf{u} = -\nabla p + \nu\nabla^2\mathbf{u}, \qquad \nabla\cdot\mathbf{u} = 0

The projection is not a detail. A flow allowed to compress does not roll up, because the pressure field is exactly the thing that transmits the Bernoulli argument in the first paragraph. It is also the step most easily got subtly wrong: the usual central-difference divergence and gradient compose into a Laplacian that cannot see the checkerboard mode, and roughly fifteen percent of a purely divergent flow then survives projection. The operators here are one-sided and adjoint, so nothing survives it, and that is one of the cases in the calibration table.

Where this stops being trustworthy

The grid is sixty-four cells across for the flow and ninety-six for the marker, which is coarse. Above a Reynolds number of about a thousand the numerical dissipation exceeds the physical viscosity, so the number in the panel stops being the number the fluid experiences. Vorticity confinement is a numerical force with no counterpart in the equations above, and it can be turned off. The marker is passive, so there is no stratification and none of the Richardson-number physics that decides when the atmosphere actually produces billows.

Most importantly, the late stages are sensitive to the initial condition and to the resolution in a way the early stages are not. Linear growth is a prediction and is checked against one. Vortex pairing, breakdown and the fine structure that follows are a demonstration, and should be read as one. All of this is listed, with what would falsify it, in the assumptions panel.

Model

v1.0August 2026
  • the shear layer is solved rather than animated: second-order semi-Lagrangian advection, vorticity confinement, implicit viscous diffusion, and a Jacobi pressure projection on a fully periodic box.
  • the divergence and gradient operators are one-sided and adjoint rather than central. Central differences compose into a Laplacian of width two that cannot see the checkerboard mode, and a purely divergent flow survives that projection at about fifteen percent of its amplitude; with the paired operators the residual is zero to the convergence of the solve.
  • the marker is transported by a MacCormack step with a monotonicity limiter, so the interface stays an interface for hundreds of steps instead of smearing into a gradient several cells thick.
  • growth rates are predicted, not fitted. A shooting solver integrates the Rayleigh equation and finds the complex phase speed by secant iteration, reproducing Michalke's 1964 tabulation of the hyperbolic-tangent profile to four decimal places.
  • the dispersion curve is drawn once and never recomputed, because in units of the layer thickness and the shear velocity there is only one. Changing the parameters moves where the seeded mode sits on it, which is the whole content of the similarity scaling.
  • the layer is seeded with a planar primary and a weaker oblique secondary, the way a plane mixing layer is actually forced. Seeding only the oblique pair would let Squire's theorem decide the run by round-off.
  • diagnostics are taken by collapsing the volume to a profile on the GPU in two reduction passes, rather than reading a coarse copy of the volume back. The transfer is a few kilobytes and the momentum thickness is resolved at the full grid resolution.
  • the renderer draws the interface as a lit band around the half-way value rather than the fluid as a fog, with normals from the scalar gradient and a jittered ray start. That is what makes a rolled-up sheet read as a roll.
  • tracer particles are advected on the GPU and drawn additively over the volume, because the streamwise ribs between the rollers are a velocity structure with almost no signature in the marker.
  • calibration is a validation against five independent sources: Kelvin and Helmholtz for the vortex-sheet limit, Rayleigh for the piecewise-linear neutral condition, Michalke for the tanh dispersion curve, Squire for the penalty on oblique modes, and exact calculus for the momentum thickness.