Density-Based Solver

Category: Fluid Analysis – Solver Methods | Revised 2026-10-01
CAE visualization for density based theory - technical simulation diagram
Density-based solver

Theory: wave-speed disparity slows convergence

Overview

🙋

Density-based solvers are said to suit high-speed flow. What goes wrong at low speed?

🎓

Information in a flow travels either with the flow or as sound, forwards and backwards. A density-based solver handles both at once, so time step and convergence rate depend on the gap between the fastest acoustic wave and the slowest flow. At high speed the gap is small, but at low speed sound is far faster than the flow — tens or hundreds of times. The solver then tracks slow flow changes with a tiny acoustic time step and converges sluggishly. Numerical dissipation also grows at low Mach number, hurting accuracy. Preconditioning fixes this.

Wave speeds and stiffness

$$ \lambda = u,\; u \pm c,\qquad \frac{\lambda_{max}}{\lambda_{min}} = \frac{u + c}{u} = 1 + \frac{1}{M},\qquad n_{step} \approx \frac{N\,(1 + 1/M)}{\mathrm{CFL}} $$

u is flow speed, c sound speed and N the number of cells along the flow. n_step is the number of explicit steps for flow to cross the domain once.

Weiss–Smith preconditioning

$$ u' = u\,(1 - \alpha),\quad c' = \sqrt{\alpha^2 u^2 + U_r^2},\quad \alpha = \frac{1 - U_r^2/c^2}{2}\quad\xrightarrow{M \to 0}\quad u' + c' \approx \frac{1 + \sqrt{5}}{2}\,u $$

For an ideal gas. U_r is a reference speed: flow speed at low speed, capped at sound speed. At low Mach number the fastest wave is about 1.62 times flow speed (the golden ratio).

Coffee Break Trivia

A method born in aeronautics

Density-based methods developed in the 1970s–80s for computing transonic and supersonic aircraft flows. Representative examples are MacCormack's method, Jameson's finite-volume scheme with Runge–Kutta time stepping, and Roe's approximate Riemann solver; their strength was capturing shocks sharply. They struggled at low speed, and in the 1980s–90s Turkel, Weiss and Smith and others proposed preconditioning so one solver could cover low-speed to supersonic flow.

Worked examples

Example 1: Mach number and convergence (200 cells, CFL 1, explicit)

MachWave-speed ratio (none)Steps per flow-throughPreconditioned ratioPreconditioned steps
0.0110120,2003.2323
0.05214,2003.2323
0.1112,2003.2324
0.34.38663.0328
2.01.5300(not needed)300

The preconditioned ratio is fastest wave (u′ + c′) over slowest (u′). At Mach 2 the reference speed is capped at sound speed, so preconditioning is inactive (and unnecessary).

Example 2: Mach 2 normal shock (γ = 1.4)

QuantityTheory
Pressure ratio p₂/p₁4.500
Density ratio ρ₂/ρ₁2.667
Temperature ratio T₂/T₁1.687
Downstream Mach0.577
Total-pressure ratio p₀₂/p₀₁0.721

Common verification values for density-based solvers. Also check the jump spans 2–3 cells without oscillation.

🙋

At Mach 0.01, preconditioning is more than 60 times faster.

🎓

In step count, yes. But preconditioning rewrites the time-derivative terms, so the intermediate transient is not physical; use it only for steady solutions. For unsteady work, pair it with dual time stepping — pseudo-time iterations within each physical time step — and precondition only those. Preconditioning doesn't affect shock capturing itself, so it pays off most in flows mixing low-speed and supersonic regions, such as stagnant zones near a supersonic nozzle exit. If the whole flow is slow with no compressibility effects, a pressure-based solver is often more straightforward.

Choosing and configuring

  1. Consider density-based when Mach exceeds about 0.3 or shocks exist.
  2. Enable preconditioning if low-speed regions exist.
  3. For unsteady flow use dual time stepping with preconditioning in pseudo-time only.
  4. Use implicit schemes or multigrid to raise CFL and speed convergence.
  5. Verify against shock-tube or normal-shock theory.
Coffee Break Trivia

“A ventilation case whose residuals stalled”

A room-ventilation case was run with leftover density-based settings, and residuals barely fell after tens of thousands of iterations. Air speed was about 0.5 m/s, Mach about 0.0015, giving a wave-speed ratio near 680 — no wonder it wouldn't converge unpreconditioned. Enabling preconditioning converged it in a few hundred iterations, but switching to a pressure-based solver was faster still and more stable. Choose the solver from the Mach number.

Common mistakes

Mistakes and fixes

MistakeEffectFix
No preconditioning at low speedNo convergence, poor accuracyEnable preconditioning
Preconditioning in physical timeWrong transientDual time stepping
Oscillations at shocksNegative pressureUse limiters
CFL too highDivergenceRamp it up
Density-based for wholly slow flowSlow solveConsider pressure-based
🙋

I'd like to learn related topics.

Related Simulators

Experience the theory with interactive simulators in this field

All Simulators

Related fields

Thermal AnalysisV&V · Quality AssuranceStructural Analysis
Rate this article
Thank you for your feedback!
Helpful
More details
Report error
Helpful
0
More details
0
Report error
0