An LES subgrid model, inside a real 3-D solve
A large-eddy simulation replaces the scales the mesh cannot carry with an eddy viscosity
\(\nu_t(\nabla\mathbf u)\) added to the molecular one. In jNO that needs no API at all: the filter width
is d.cell_size, the model is arithmetic on grad(u), and it goes in the term list like any other
coefficient. Three of them:
| model | ||
|---|---|---|
| Smagorinsky (1963) | \(\nu_t = (C_s\Delta)^2\lvert S\rvert\) | the original |
| Vreman | \(\nu_t = c\sqrt{B_\beta/(\mathbf g\!:\!\mathbf g)}\) | Phys. Fluids 16 (2004) 3670, eq. 5 |
| WALE | \(\nu_t = (C_w\Delta)^2\,(S_d\!:\!S_d)^{3/2}\big/\big((S\!:\!S)^{5/2}+(S_d\!:\!S_d)^{5/4}\big)\) | Nicoud & Ducros, Flow Turb. Combust. 62 (1999) 183, eq. 13 |
All three are written through second invariants — \(\mathrm{tr}(\cdot)\) and \(\mathrm{tr}(\cdot^2)\) — rather than by naming tensor components, so one spelling serves 2-D and 3-D.
The property that separates them
A subgrid model exists to represent turbulence. In simple shear, \(\mathbf u = (z,0,0)\), there is no turbulence to represent, and the correct \(\nu_t\) is zero. The velocity gradient there is nilpotent, which makes Vreman's \(B_\beta\) and WALE's \(S_d\!:\!S_d\) vanish identically. Smagorinsky's \(\lvert S\rvert\) does not — it is non-zero in any shear — so it manufactures eddy viscosity throughout a laminar boundary layer. That is the defect Van Driest wall damping exists to patch.
Measured on a solved plane Couette flow (not a prescribed gradient), 6×6×6 tets, Re = 100:
| model | \(\max \nu_t/\nu\) | |
|---|---|---|
| no model | 0 | |
| Vreman | 1.13 × 10⁻⁶ | vanishes (cancellation floor) |
| WALE | 1.99 × 10⁻¹⁹ | vanishes |
| Smagorinsky | 8.03 × 10⁻² | 70,890× Vreman's |
…but they are not inert
A laminar cavity is not a case any of these models claims to vanish on — it has genuine 3-D strain with recirculation, so \(B_\beta\) and \(S_d\!:\!S_d\) are legitimately non-zero. Same mesh, same Re:
| model | \(\max \nu_t/\nu\) | change in the answer |
|---|---|---|
| Vreman | 1.61 × 10⁻¹ | 8.1 × 10⁻³ |
| WALE | 2.58 × 10⁻¹ | 8.3 × 10⁻³ |
| Smagorinsky | 5.19 × 10⁻¹ | 5.6 × 10⁻² |
So the separation in the first table is a property of the flow structure, not of the implementation, and it is worth stating plainly: these models are not "off in laminar flow". They are off in simple shear, which is what a wall boundary layer looks like — and that is exactly where it matters.
Two things that will bite
nu_t must be lagged
\(\nu_t\) is a square root, so its slope at \(\mathbf u = 0\) is infinite and Newton diverges from
a rest state outright. jno.lag freezes it within each linearisation — the same Picard treatment
a Carman–Kozeny mushy-zone drag needs.
The invariants must be clamped
\(B_\beta\) and \(S_d\!:\!S_d\) are non-negative in exact arithmetic and are computed as a
difference of nearly equal numbers. Measured in pure shear: \(B_\beta\) lands at \(1.4\times10^{-20}\)
where it should be 0, from a relative cancellation of \(2.7\times10^{-16}\). Unclamped, one excursion
below zero is not a small error — sqrt and **1.5 return NaN.
It is also why the first table is judged relative to Smagorinsky rather than against an absolute floor: Vreman's \(1.1\times10^{-6}\) is its zero.
Scope — what this is not
This is a wall-bounded laminar demonstration that the models behave as designed inside a Newton solve, and that they cost little. It is not validated LES. That needs a turbulent benchmark against DNS — a wall-resolved channel, or decaying isotropic turbulence against Comte-Bellot–Corrsin spectra — neither of which has been run here. A triply-periodic case (Taylor–Green) would also need a periodic vector field, which jNO has no test for today.