JP | EN | ZH
TOPCFD / Fluid AnalysisLES / DNS Turbulence Simulation

LES / DNS Turbulence Simulation — Overview

Large Eddy Simulation directly resolves the large energy-containing eddies and models only the small ones. DNS resolves everything. Both deliver far higher fidelity than RANS — at a steep computational price.

By NovaSolver Contributors (Anonymous Engineers & AI)  |  CFD / Fluid Analysis  |  日本語版 →

Overview page: This article covers LES and DNS concepts, SGS models, cost scaling, and wall modeling strategies. Sub-articles for each SGS model (Smagorinsky, WALE, dynamic, sigma) and WMLES are linked at the bottom.

1. What is LES? — Resolving the Big Eddies, Modeling the Small Ones

🧑‍🎓

I keep hearing that LES is more accurate than RANS but way more expensive. Exactly what is LES computing differently that makes it both better and costlier?

🎓

Great question. Think of turbulence like ocean waves. Big waves carry most of the energy and are strongly geometry-dependent — they look totally different near a car versus near a building. Small waves (ripples) behave more universally regardless of geometry. RANS averages everything out and models all of it. LES directly solves the big energy-carrying eddies on the grid and only models the tiny universal ones. That's the key idea.

🧑‍🎓

So LES is somewhere between RANS and DNS in terms of what you resolve on the grid?

🎓

Exactly. The spectrum of turbulence runs from large integral-scale eddies (size ~ L) down to tiny Kolmogorov eddies (size ~ η). DNS resolves all the way to η. RANS resolves nothing — it solves only the time-mean field. LES draws a "filter width" Δ somewhere in the inertial subrange and resolves everything larger than Δ, while modeling everything smaller with a sub-grid scale (SGS) model. Since the small eddies are nearly isotropic and universal, you can get away with a simple model — that's the beautiful assumption behind LES.

The turbulent kinetic energy spectrum $E(k)$ shows the famous $k^{-5/3}$ Kolmogorov inertial subrange. LES resolves eddies to the left of the filter cutoff wavenumber $k_c = \pi/\Delta$; the SGS model handles the rest:

$$E(k) \propto \varepsilon^{2/3} k^{-5/3}$$

where $\varepsilon$ is the turbulent dissipation rate and $k$ is the wavenumber.

2. The Filtering Approach — Filtered Navier-Stokes Equations

🧑‍🎓

What does "filtering" actually mean mathematically? I see the overbar notation everywhere but I'm not sure what operation is being performed.

🎓

The spatial filter is a convolution of the flow field with a filter kernel $G(\mathbf{x}, \mathbf{x}'; \Delta)$. The filtered velocity $\bar{u}_i$ is defined as:

$$\bar{u}_i(\mathbf{x},t) = \int G(\mathbf{x}-\mathbf{x}';\Delta)\, u_i(\mathbf{x}',t)\, d\mathbf{x}'$$

Common filter kernels include the box (top-hat) filter, the Gaussian filter, and the sharp spectral cutoff. In practice on a finite-volume mesh, the filter width $\Delta$ is implicitly defined by the cell size — typically $\Delta = (\Delta x \, \Delta y \, \Delta z)^{1/3}$.

Applying the filter to the incompressible Navier-Stokes equations yields the filtered Navier-Stokes equations:

$$\frac{\partial \bar{u}_i}{\partial x_i} = 0$$ $$\frac{\partial \bar{u}_i}{\partial t} + \frac{\partial \bar{u}_i \bar{u}_j}{\partial x_j} = -\frac{1}{\rho}\frac{\partial \bar{p}}{\partial x_i} + \nu \frac{\partial^2 \bar{u}_i}{\partial x_j \partial x_j} - \frac{\partial \tau_{ij}^{sgs}}{\partial x_j}$$

The sub-grid stress tensor $\tau_{ij}^{sgs} = \overline{u_i u_j} - \bar{u}_i \bar{u}_j$ captures the effect of unresolved small eddies on the resolved flow. This is what the SGS model must provide.

3. Sub-Grid Scale (SGS) Models

🧑‍🎓

So the whole game in LES is choosing a good SGS model for $\tau_{ij}^{sgs}$? What are the main options and how do I pick one?

🎓

Most SGS models use the eddy-viscosity assumption — they relate $\tau_{ij}^{sgs}$ to the resolved strain rate $\bar{S}_{ij}$ via a sub-grid viscosity $\nu_{sgs}$. The formula is $\tau_{ij}^{sgs} = -2\nu_{sgs}\bar{S}_{ij}$. The differences are in how $\nu_{sgs}$ is computed. Let me walk you through the main ones.

Smagorinsky Model (1963) — The Classic

$$\nu_{sgs} = (C_s \Delta)^2 |\bar{S}|, \quad |\bar{S}| = \sqrt{2\bar{S}_{ij}\bar{S}_{ij}}$$

C_s value: 0.1–0.17 depending on flow type (isotropic turbulence → 0.17, shear flows → 0.1)

Pros: Simple, robust, cheap. Cons: C_s must be tuned; over-dissipative near walls; non-zero even in laminar regions.

Dynamic Smagorinsky Model (Germano, 1991) — Self-Calibrating

Computes $C_s$ locally in space and time using a test filter $\hat{\Delta} = 2\Delta$ and the Germano identity. Automatically reduces $C_s \to 0$ in laminar zones and near walls.

Pros: No tuning constant; correct near-wall behavior. Cons: Can produce negative $\nu_{sgs}$ (backscatter) — requires averaging or clipping; slightly more expensive than base Smagorinsky.

WALE Model (Nicoud & Ducros, 1999) — Wall-Aware

Uses the traceless symmetric part of the square of the velocity gradient tensor $g_{ij} = \partial\bar{u}_i/\partial x_j$. Naturally gives $\nu_{sgs} \propto y^3$ scaling near walls without damping functions.

Constant: $C_w = 0.325$ (default in OpenFOAM)

Best for: Wall-bounded flows, transition problems, cases mixing laminar and turbulent regions.

Sigma Model (Nicoud et al., 2011) — Modern Choice

Based on the singular values $\sigma_1 \geq \sigma_2 \geq \sigma_3$ of the velocity gradient tensor. Automatically satisfies $\nu_{sgs} = 0$ for solid body rotation, pure shear, and 2D flow — all situations where SGS dissipation should vanish.

Constant: $C_\sigma \approx 1.35$. Increasingly favored for complex geometries.

SGS ModelNear-Wall ScalingBackscatterConstant TuningRecommended Use
SmagorinskyRequires van Driest damping ($e^{-y^+/26}$)NoYes (C_s)Free shear flows, jets, wakes
Dynamic SmagorinskyAutomatic ($C_s \to 0$)Yes (needs clipping)No (self-calibrating)Complex flows, mixed regimes
WALECorrect $y^3$ scalingNoMinimal ($C_w = 0.325$)Wall-bounded, transitional
SigmaCorrect $y^{3}$ scalingNoMinimal ($C_\sigma = 1.35$)Complex geometries, general use

4. DNS — Direct Numerical Simulation

🧑‍🎓

What exactly is DNS? If LES models the small scales, does DNS model even less?

🎓

DNS is the opposite direction — it models nothing. The Navier-Stokes equations are solved on a grid fine enough to resolve the smallest turbulent structures, the Kolmogorov eddies with length scale $\eta = (\nu^3/\varepsilon)^{1/4}$. This means the grid spacing must be $\Delta x \lesssim \eta$ everywhere in the domain. There are no SGS models, no wall functions — just pure physics.

🧑‍🎓

So why doesn't everyone just use DNS then? If it's the most accurate, why bother with LES at all?

🎓

Cost. The ratio of large-scale to Kolmogorov scale goes as $L/\eta \sim Re^{3/4}$. To resolve a 3D volume you need $(L/\eta)^3 \sim Re^{9/4}$ grid points. And the time steps need to be small too, so total cost scales roughly as $Re^3$. For a car at highway speed, Re ≈ 10^7. DNS would need on the order of $10^{21}$ grid points — that's not happening in our lifetimes. DNS is mainly used for canonical flows like channel flow (Re < 5000) and pipe flow to generate benchmark datasets and develop turbulence models.

DNS cost reality check: The famous DNS of channel flow at Re_τ = 5200 by Lee & Moser (2015) required ~800M grid points and millions of CPU-hours on a supercomputer. Industrial DNS for even a simple component at Re ~ 10^6 is still infeasible with today's hardware.

5. LES vs. RANS vs. DNS — Accuracy and Cost Comparison

MethodWhat is ResolvedEquations SolvedGrid Points (Re=10^6)Relative CostAccuracy
RANSMean flow onlySteady (or URANS unsteady) RANS + 2 transport eqs.~10^5–10^61× (baseline)Medium; poor for separated/swirling flows
LESLarge eddies (resolved), small eddies (modeled)Filtered N-S + SGS model~10^7–10^9100–1000×High; captures unsteady physics and spectra
DNSAll scales to KolmogorovFull N-S, no models~Re^{9/4} → infeasible at Re=10^610^6× +Exact (within numerical error)
DES/DDESRANS near wall, LES away from wallHybrid RANS + LES~10^6–10^810–100×Good compromise for separated flows

6. When Should You Use LES?

🧑‍🎓

Given the cost, when is LES actually justified in practice? My boss keeps saying "just run k-omega SST" for everything.

🎓

Your boss is right for most industrial cases — SST handles 80% of engineering problems well. But there are specific scenarios where RANS fundamentally fails and LES becomes necessary. The key ones are: combustion (turbulent flame interaction depends on unresolved mixing — RANS gets it wrong), aeroacoustics (noise prediction requires resolved turbulent pressure fluctuations — RANS can only give broadband estimates), massively separated flows (bluff bodies, stalled airfoils where RANS misses recirculation size), and any application where you need time-resolved unsteady spectra — fan noise, HVAC rumble, cavity tones.

🧑‍🎓

So things like predicting car wind noise or an aircraft engine combustor really do need LES?

🎓

Exactly. BMW, Toyota, Airbus — they all run LES or DES for acoustic predictions because RANS simply cannot give you frequency-dependent noise levels. For a combustor, the reaction rate depends on local mixing between fuel and oxidizer at the sub-grid level, and that's precisely what LES SGS models are designed to capture. Without it you'll get the wrong flame shape and possibly predict extinction or flashback incorrectly.

ApplicationRecommended ApproachWhy LES/DNS over RANS
Aeroacoustics / wind noiseLES or DESNeed resolved pressure fluctuation spectra
Turbulent combustionLES with combustion modelFlame-turbulence interaction at unresolved scales
Massively separated flow (bluff body)LES or DESRANS incorrect recirculation zone size
Turbomachinery unsteadinessScale-resolving LES/DESBlade-to-blade unsteady vortex shedding
Building wind load spectraLESNeed time-varying force for structural fatigue
Automotive drag / liftSST k-ω (RANS usually sufficient)LES overkill unless acoustics needed
Pipe flow heat transferRANS (SST or k-ε)RANS accurate enough, LES unnecessary cost
Turbulence model development/validationDNSNeed exact resolved field for model calibration

7. Wall Modeling for LES — WMLES

🧑‍🎓

I tried running LES on a pipe flow case and my mesh was still running for hours. Isn't LES supposed to resolve the boundary layer? How does wall-modeled LES help?

🎓

That's the dirty secret of wall-resolved LES. Near the wall, the turbulent structures get extremely thin — the smallest streaks scale with the viscous length $\ell^* = \nu/u_\tau$, requiring $\Delta x^+ \approx 100$, $\Delta z^+ \approx 30$, and $\Delta y^+ \approx 1$ in the wall-normal direction. For a full aircraft at cruise, this means $\sim 10^{15}$ cells — completely infeasible. The solution is Wall-Modeled LES (WMLES): use RANS equations in the inner boundary layer (say $y^+ < 200$) to provide a wall stress, and LES everywhere else. You lose some accuracy near the wall but gain enormous savings.

Approachy+ at First CellNear-Wall TreatmentCost Relative to WR-LESAccuracy
Wall-Resolved LES (WR-LES)~1Fully resolved viscous sublayer1× (reference)Highest
Wall-Modeled LES (WMLES)30–200RANS or algebraic wall model inside $y^+ < 200$0.01–0.1×Good (5–10% error in skin friction)
DES / DDES~1 (RANS region)RANS in attached BL, LES in separated region0.05–0.2×Good for separation, less good for BL

8. OpenFOAM LES Setup — turbulenceProperties

🧑‍🎓

How do I actually switch from RANS to LES in OpenFOAM? Is it just changing one setting?

🎓

Pretty much. In constant/turbulenceProperties, change the simulation type from RAS to LES and choose your SGS model. The big change is your time-step: LES must run transiently with small time steps (Courant number Co < 0.5 ideally), and you need to collect statistics over many flow-through times after the initial transient dies out — typically 5–10 flow-through times for statistics, after a 2–5 flow-through time startup.

// constant/turbulenceProperties simulationType LES; LES { LESModel WALE; // Smagorinsky | dynamicKEqn | WALE | Sigma delta cubeRootVol; // filter width = cell volume^(1/3) turbulence on; printCoeffs on; WALECoeffs { Cw 0.325; } }
// system/controlDict — critical settings for LES application pimpleFoam; // transient solver startFrom latestTime; deltaT 1e-5; // must resolve turbulent time scales maxCo 0.5; // keep Courant number below 0.5–1.0 adjustTimeStep yes;
LES startup protocol: Run your LES for at least 2–5 flow-through times (domain length / bulk velocity) before starting to collect statistics. The initial transient from the initial condition (often mapped from a RANS solution) needs to die out. Collecting statistics too early is the most common LES mistake.

Computational Cost Scaling Summary

QuantityScaling with ReNotes
DNS grid points (3D)$\sim Re^{9/4}$Must resolve Kolmogorov scale η in all directions
DNS time steps$\sim Re^{3/4}$Time step limited by smallest scale
Total DNS cost$\sim Re^3$Grid × time steps
Wall-resolved LES (3D)$\sim Re^{1.8}$Near-wall streak resolution dominates
WMLES$\sim Re^{0.5}$–$Re^{1.0}$Dramatic saving by avoiding inner BL resolution
RANSWeakly dependent on ReGrid quality matters more than Re

Sub-Articles in This Section

Cross-topics: RANS Turbulence Modeling | Combustion & Reacting Flow | CFD Solver Methods | CFD Meshing