SpectraSim Documentation
Parameter · 06 Solver Settings

Non-orthogonal correctors

numerics.n_non_orthogonal_correctors Step 06 · Solver Settings

The number of extra pressure-equation solves per iteration that converge the non-orthogonal part of the face gradients. On auto it follows the largest non-orthogonality of the built mesh. The same rule sets the limiter of the non-orthogonal correction.

Last updated

Theory

On a non-orthogonal face the line between the two cell centres is not parallel to the face normal. The gradient normal to the face is then split into an implicit orthogonal part and an explicit correction computed from the cell gradients, equation (1). Because the correction is explicit, the pressure equation is solved 1+Nno1 + N_{no} times per iteration, each time with the correction updated from the previous solution (OpenFOAM user guide, 2026). More correctors make each iteration more accurate on a distorted mesh; they do not change the converged solution of a steady run.

The correction is also limited, equation (2): it may not exceed ψ/(1−ψ)\psi/(1-\psi) times the orthogonal part.

  • ψ=0.5\psi = 0.5 allows the correction to equal the orthogonal part.
  • On a mesh with faces above 70° the program uses ψ=0.33\psi = 0.33, which keeps the Laplacian bounded at the cost of some accuracy.
  • The limiter applies to every Laplacian term (laplacianSchemes and snGradSchemes).

On auto both values follow the maximum non-orthogonality that checkMesh reports for the built mesh, equation (3). Before a mesh exists the value is 2 with ψ=0.5\psi = 0.5; the run re-evaluates it from the actual mesh before it writes the solver dictionaries.

Equations

(∇ϕ)f⋅Sf=∣Δf∣ ϕN−ϕP∣d∣+λ kf⋅(∇ϕ)f,Sf=Δf+kf(\nabla\phi)_f\cdot\mathbf{S}_f = \lvert\boldsymbol{\Delta}_f\rvert\,\frac{\phi_N - \phi_P}{\lvert\mathbf{d}\rvert} + \lambda\,\mathbf{k}_f\cdot(\nabla\phi)_f, \qquad \mathbf{S}_f = \boldsymbol{\Delta}_f + \mathbf{k}_f
(1)
λ=min⁡ ⁣(1, ψ1−ψ ∣orthogonal part∣∣kf⋅(∇ϕ)f∣)\lambda = \min\!\left(1,\ \frac{\psi}{1-\psi}\,\frac{\lvert\text{orthogonal part}\rvert}{\lvert\mathbf{k}_f\cdot(\nabla\phi)_f\rvert}\right)
(2)
Nno=1 (θmax<60∘),2 (60∘≤θmax≤70∘),3 (θmax>70∘);ψ=0.5 (θmax≤70∘), 0.33 (θmax>70∘)N_{no} = 1\ (\theta_{max} < 60^\circ), \quad 2\ (60^\circ \le \theta_{max} \le 70^\circ), \quad 3\ (\theta_{max} > 70^\circ); \qquad \psi = 0.5\ (\theta_{max} \le 70^\circ),\ 0.33\ (\theta_{max} > 70^\circ)
(3)
wheremeaningunit
ϕ\phiThe solved quantity (here the pressure)Pa
Sf\mathbf{S}_fFace area vectorm²
Δf\boldsymbol{\Delta}_fPart of Sf\mathbf{S}_f parallel to d\mathbf{d} (over-relaxed decomposition)m²
kf\mathbf{k}_fNon-orthogonal remainderm²
d\mathbf{d}Vector between the cell centres P and Nm
λ\lambdaLimiting factor of the correction-
ψ\psiLimiter coefficient-
θmax\theta_{max}Maximum mesh non-orthogonality (checkMesh)°
NnoN_{no}Non-orthogonal correctors-

Default and rule

Default
auto: 1 (mesh below 60°), 2 (60-70°, or no mesh yet), 3 (above 70°)Computed by the programMeasured
Rule

Auto (equation 3). A typed number is kept; it gets a warning when it is below what the built mesh calls for. The potential-flow initialisation always uses 10 correctors.

Source

The thresholds follow the mesh-quality limits of quality gate 1 (70°, isolated faces up to 80°). They are an accuracy margin, not a convergence aid: on the two-inlet test muffler (600 iterations, same mesh) going from 1 to 2 correctors changed the pressure initial residual only from 7.1e-2 to 6.4e-2, whereas changes of the under-relaxation lowered it to 2.3e-2. One corrector did not meet the quality expectations on the muffler meshes, hence 2 as the fallback before a mesh exists. Decomposition and limiter: OpenFOAM's limited corrected scheme (OpenFOAM user guide, 2026).

Valid range whole number ≥ 0

Values

Whole numbers ≥ 0; each corrector costs one more pressure solve per iteration.

Not a convergence aid

More correctors did not lower the residuals in the validation runs; use under-relaxation for a stalling run.

References 1

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