SpectraSim Documentation
Parameter · 06 Solver Settings

Momentum (U) convection scheme

numerics.momentum_scheme Step 06 · Solver Settings

Sets how the convective term ∇⋅(ϕU)\nabla\cdot(\phi\mathbf{U}) of the momentum equation interpolates the velocity to the cell faces. Auto is linearUpwind: second order, upwind biased, with a cell-limited gradient. For a compressible run the energy equation follows the same choice.

Last updated

Theory

The finite-volume method needs the velocity on each face, Uf\mathbf{U}_f, while the solver stores it at cell centres. The options are (OpenFOAM user guide, 2026):

  • upwind: the value of the upwind cell CC, equation (1). First order: bounded and robust, but its numerical diffusion smears jets and shear layers.
  • linearUpwind: the upwind value extrapolated to the face with the cell gradient, equation (2). Second order. The gradient is cellLimited Gauss linear 1: it is limited so that the extrapolated face values do not exceed the range of the neighbouring cell values.
  • limitedLinearV 1: a blend of central (linear) interpolation and upwind, controlled by a limiter ψ(r)\psi(r) of the local smoothness, equation (3). The "V" form uses one limiter for all three components, taken in the direction of the steepest change of the velocity. It is less diffusive than linearUpwind but can oscillate on a poor mesh.

Steady runs use the bounded form, equation (4). It subtracts the continuity error of the not-yet-converged fluxes, which keeps the convected quantity bounded during the iterations and vanishes at convergence. Transient and pseudo-transient runs use the plain form.

The selected scheme applies to the whole steady run, with one exception: the transonic SIMPLE and pseudo-transient compressible solvers use first-order upwind for U and energy in their start-up phase and switch at the restart (Upwind iterations before the switch). The compressible energy terms (div(phi,e), div(phi,K)) use upwind when U is upwind, otherwise linearUpwind on the limited velocity gradient.

Equations

Uf=UC\mathbf{U}_f = \mathbf{U}_C
(1)
Uf=UC+(xf−xC)⋅(∇U)C\mathbf{U}_f = \mathbf{U}_C + (\mathbf{x}_f - \mathbf{x}_C)\cdot(\nabla\mathbf{U})_C
(2)
Uf=ψ(r) Uflin+(1−ψ(r))UC,ψ(r)=max⁡ ⁣(0, min⁡(2r, 1)),r=2 d⋅(∇ϕ)CϕD−ϕC−1\mathbf{U}_f = \psi(r)\,\mathbf{U}_f^{lin} + \left(1 - \psi(r)\right)\mathbf{U}_C, \qquad \psi(r) = \max\!\left(0,\ \min(2r,\ 1)\right), \qquad r = \frac{2\,\mathbf{d}\cdot(\nabla\phi)_C}{\phi_D - \phi_C} - 1
(3)
∇⋅(ϕU)bounded=∇⋅(ϕU)−(∇⋅ϕ) U\nabla\cdot(\phi\mathbf{U})_{bounded} = \nabla\cdot(\phi\mathbf{U}) - (\nabla\cdot\phi)\,\mathbf{U}
(4)
wheremeaningunit
Uf\mathbf{U}_fVelocity interpolated to face fm/s
UC\mathbf{U}_CVelocity of the upwind cellm/s
xf,xC\mathbf{x}_f, \mathbf{x}_CFace centre, upwind cell centrem
Uflin\mathbf{U}_f^{lin}Central (linear) interpolation between the two cellsm/s
ψ\psiLimiter: 1 = central, 0 = upwind-
rrSmoothness ratio across the face, for the velocity component (or direction) ϕ\phi-
d\mathbf{d}Vector from the upwind to the downwind cell centrem
ϕ\phiVolume (incompressible) or mass flux through the facesm³/s, kg/s

Default and rule

Default
auto: linearUpwind (limited gradient)Computed by the programMeasured
Rule

Auto = linearUpwind for both analysis types. A typed scheme is kept; upwind gets a warning (too diffusive), and limitedLinearV gets a warning for a compressible run.

Source

Validation results:

  • On the two study mufflers the first-order upwind pressure drop was 4-10 % below the second-order result.
  • On the pipe-elbow reference case (90 °C water, 5 m/s, a published pressure difference of 405 Pa between two cut planes) at 16 cells across the pipe, run to full convergence, linearUpwind gave 477 Pa (+18 %) and limitedLinearV 439 Pa (+8 %) on the same mesh. Only this one point is available, so linearUpwind remains the robust default.

For compressible flow, linearUpwind with a limited gradient is the second-order form used by the compressible tutorial of the installed OpenFOAM build (the compressible solver aerofoilNACA0012); no compressible tutorial of the build uses limitedLinearV. The limiter of equation (3) is OpenFOAM's limitedLinear with coefficient 1 (OpenFOAM user guide, 2026).

Valid range auto | linearUpwind | limitedLinearV | upwind

Choice

Auto (linearUpwind), linearUpwind, limitedLinearV, upwind.

Upwind

First order: robust, but 4-10 % low on the pressure drop of the study mufflers. Use it only to get a difficult case started.

References 1

  1. OpenCFD Ltd. (2026). OpenFOAM user guide. openfoam.com. Web page