What symmetry buys a learned turbulence model
One piece of work, three tellings — the paper in full, the talk in 15 minutes, and this post to play with:
Everyone building neural closures for turbulence has heard the advice: bake the symmetries of the Navier–Stokes equations into your network, and it will be more accurate and generalize better. It sounds so reasonable that it is rarely tested. So we tested it — three networks, same inputs, same outputs, same training data, from "no constraints at all" to "exactly equivariant by construction". This post is the paper with the knobs exposed.
If you only remember three things:
- All three architectures — constrained or not — converge to the same accuracy, and that shared floor is the optimal one-point closure, measurable directly from data with a histogram.
- Symmetry constraints don't lower the floor. They buy the trip to it with 25× fewer parameters, reproducibly, where the unconstrained network is a lottery.
- Generalizing across Reynolds numbers was less about architecture than about one missing input: a filter-scale Reynolds number.
Act I The world below the cut
Simulating every eddy (direct numerical simulation, DNS) is gloriously accurate and hopelessly expensive. Large-eddy simulation (LES) evolves a filtered flow on an affordable grid, and pays with an unclosed term: the sub-filter stress
The measured energy spectrum of the paper's DNS (forced isotropic turbulence). Drag the cut: an LES keeps only the eddies to the left. Because energy piles up at the large scales, even a brutal filter keeps almost all of it — what it loses is the fine-scale activity that drains energy from the scales you keep. That drain is the sub-filter stress the closure must supply.
Classical closures (Smagorinsky, Clark, …) are physics-derived guesses at that erased activity. The modern alternative is to train a neural network on filtered DNS. This paper is about what happens when you do that with — and without — symmetry constraints.
Act II What a closure can promise
The Navier–Stokes equations don't care how you orient your axes: rotate the flow, and the physics — including the exact sub-filter stress — rotates with it. A closure respects this if predicting then rotating equals rotating then predicting: equivariance. Try to break it (the mismatch is computed honestly from the two paths, not scripted):
Difference between the two paths: 0 (the two orders commute)
The second toggle is what an unconstrained network is free to learn: perfectly fine on the training data, but reading tensor components off a fixed coordinate frame — a preferred direction the physics doesn't have. The toy exaggerates; our actual trained MLP violates equivariance by a subtler but very measurable ≈ 7%.
The grid breaks the circle
The continuous equations are symmetric under every rotation — but your simulation lives on a grid. Drag the slider and watch which rotations map the grid onto itself:
✗ 99% of the rotated points miss the grid — a grid-sampled field cannot realize this rotation exactly.
Only multiples of 90° and mirror flips survive: in 3D, the 48-element octahedral group. A closure acting on grid data can be exactly equivariant to those 48 — and to no more. Remember 48; it returns below as the width of a network layer. The same audit, for every symmetry of the equations:
Three networks, one contract
All three data-driven closures sign the same contract — local, normalized gradient in, dimensionally consistent stress out:
with filter width
Constrain the architecture, constrain the representation, or constrain nothing: the two constrained routes reach exact equivariance from opposite directions — and, it turns out, the same destination.
Act III Same floor, very different price
Train all three at a range of sizes; plot error against parameter count:
Relative error of the predicted sub-filter stress against the exact one, on held-out snapshots. The dashed black line is the training-free conditional-mean estimate of the best possible one-point closure. Whiskers span ± one standard deviation over five training seeds. Hover or tab across the columns for exact values.
Data table
| Parameters (≈) | MLP (unconstrained) | G-CNN (equivariant) | TBNN (tensor basis) |
|---|---|---|---|
| 120 | 0.896 ± 0.014 | 0.452 ± 0.006 | 0.445 ± 0.001 |
| 400 | 0.675 ± 0.019 | 0.449 ± 0.001 | 0.445 ± 0.001 |
| 1200 | 0.460 ± 0.001 | 0.449 ± 0.001 | 0.446 ± 0.001 |
| 3000 | 0.449 ± 0.000 | 0.449 ± 0.001 | 0.446 ± 0.000 |
| no model | 1.000 | ||
| dyn. Smagorinsky | 0.964 | ||
| Clark | 0.466 | ||
Two things to see. The constrained models are already saturated at ~120 parameters — their built-in structure leaves that little to learn — while the MLP starts worse than the 50-year-old Clark model and needs ~3000 to catch up, with an order-of-magnitude wider seed-to-seed spread on the way. And the more interesting one: nobody gets below the dashed line.
Build the best possible closure yourself
That dashed line is not a fit to the networks — it is measured independently. The best possible one-point predictor is a conditional average: over all flow states sharing this local gradient, the mean stress (the optimal closure of Langford & Moser). Averages need no training. Sort the data into bins and watch it appear:
Every gray dot is one grid point of a held-out DNS snapshot: local energy transfer Π against one invariant of the resolved gradient. Slide the bins: sorting the points and averaging within each bin — a histogram, no training — makes the conditional mean ◆ appear. It converges after a handful of bins, and the wide cloud around it never shrinks: that residual is information the filter destroyed, and no pointwise model, neural or otherwise, can get it back.
The paper's version bins all five invariant inputs instead of one: 65 536 bins land at an error of 0.439 — and a single bin, i.e. seven constant coefficients, already lands at 0.442. The saturated networks sit within 0.6–2.3% of that floor. The remaining 44% error is not a failure of the networks: filtering destroys information, and no function of a single-point gradient — neural or otherwise — can recover it.
Footnote we enjoyed: equivariance for free, after the fact
Averaging the trained MLP's predictions over the 48 octahedral elements makes it exactly equivariant at zero accuracy cost. Its 7% symmetry violation was wasted degrees of freedom, not useful ones — the unconstrained optimum was already statistically equivariant, because the training data was.
Energy flows both ways
A-priori stress error is a laboratory metric. Plugged into an actual LES (the a posteriori toggle above), the learned closures tie at a solution error of ≈ 0.35, ahead of Clark (0.36), dynamic Smagorinsky (0.39), and no model (0.43). But the aggregate number hides the most physical difference — what each closure does with energy:
Distribution of the pointwise sub-filter dissipation rate over all test snapshots (kernel density estimate, log scale), every closure evaluated on the same filtered DNS fields. Negative values mean energy flowing back from small to large scales. Hover for exact densities.
The exact stress mostly drains energy from the resolved scales, but at 22% of grid points it pushes energy backwards — backscatter, the shaded region. Eddy-viscosity models stop dead at zero, by construction. The learned closure reproduces both tails, yet covers only about half the reference backscatter fraction: the fingerprint of having learned a conditional average. Means are milder than samples.
Act IV One number to rule the Reynolds number
The quiet limitation of the contract in Act II: it contains no viscosity. The closures are Reynolds-blind — their dissipation calibration is pinned to the training regime. The symmetry analysis itself predicts the fix: the full scaling symmetry of Navier–Stokes involves the viscosity, and the only scaling-invariant scalar you can build from the available quantities is a filter-scale Reynolds number,
where
Train across viscosities and filter widths, with and without
Median sub-filter dissipation divided by the true value (1 = perfectly calibrated, log scale). Reynolds-blind closures slide from over- to under-dissipation as the test Reynolds number grows; with the Reynolds input they hold their calibration. Faint lines show the +Re counterpart. The shaded band is the range of ReΔ seen during training; everything to its right is extrapolation. Hover for exact values.
Blind, the story is a slide from over- to under-dissipative. With the one extra input, calibration holds out into extrapolation. Meanwhile the stress error tab barely moves: the tensor structure of the stress is nearly Reynolds-independent — what changes is only how much energy lives below the filter, and one scalar carries exactly that. Notice the three architectures never separate: the gain comes from the input, not from equivariance.
A flow it has never seen
The honest caveat. On this flow the blind closures over-dissipate by ~2×, and
Epilogue The verdict
| Equivariance was advertised as… | What the controlled test says | |
|---|---|---|
| more accurate | ✗ | all three architectures converge to the same measurable floor |
| better at generalizing | ✗ | crossing Reynolds numbers came from one extra input, not the architecture |
| — | ✓ | parameter-efficient: saturated at ~120 parameters, 25× fewer than the MLP |
| — | ✓ | reliable: reproducible across seeds where the small MLP is a lottery |
| — | ✓ | physically consistent: exact in floating point — no spurious frame-dependent forces |
If you are building a closure, the recipe this leaves behind:
- Measure your floor first. The conditional-mean estimate costs nothing and tells you the best any pointwise model can do before you design one.
- At the floor, capacity is wasted. The only way down is richer inputs — neighborhoods, history, or scalars like
that carry genuinely new information (the +Re TBNN measurably dips below the one-point floor out of distribution). - Buy symmetry for the right reasons. Efficiency, reproducibility, and physical consistency are real currencies — just different ones than advertised.
Every number and curve above is the exact evaluation data of the paper — forced isotropic turbulence at



