CFD never solves the Navier–Stokes equations symbolically. It chops the domain into a mesh of finite volumes, replaces the derivatives with differences between neighbouring cells, and turns the PDEs into one algebraic equation per cell. Because the pressure has no equation of its own in an incompressible flow, it is recovered by demanding that every cell be mass-balanced — that constraint becomes a Poisson equation, and it is far too large to invert directly, so it is iterated. Each sweep pushes the divergence error down; the residual is how you know when to stop.
u* = advect(u) + ν∇²u Δt (1) predictor
∇²p = ∇·u* / Δt (2) pressure Poisson
u = u* − Δt ∇p (3) correction → ∇·u = 0
pₕ⁺¹ = pₕ + ω(p̄ − pₕ), r = ‖∇·u‖₂ (SOR sweep + residual)
- Cells across — mesh resolution. Truncation error falls roughly like h², but cost rises like h⁻² here (and h⁻⁴ in 3D with the time step), which is the whole economics of CFD.
- Pressure sweeps — how many SOR iterations per time step. Too few and the field never becomes divergence-free, so mass leaks and the wake looks wrong.
- Relaxation factor ω — under-relaxation (ω<1) is stable but slow; over-relaxation near the optimum converges fastest; too high diverges.
- Inlet velocity — sets the Reynolds number and the CFL number Δt·u/h; above CFL ≈ 1 an explicit scheme would blow up, so the time step is capped.