v2026.11.16174
Reference / Input deck / solver / convergence control / scheme

scheme

Pseudo-time/Convergence integration scheme

name
not set by default

Pseudo-time integration scheme: euler = first-order explicit

Options
ValueWhat it doesWhen to use it
euler
compressible only

Explicit forward Euler in pseudo-time: one residual evaluation and update per cycle.

The "euler" scheme has a single stage and is the safest option for new or problematic cases.

runge kutta
compressible only

Explicit multistage Runge-Kutta in pseudo-time. stage selects the number of stages and their coefficients.

implicit euler
compressible only

The default implicit scheme, solving the full linearised system with the Petsc or AMGX linear solver each pseudo-time step.

lu-sgs
compressible only

A matrix-free, point-implicit LU-SGS/DP-LUR scheme. It avoids assembling and inverting the full linear system, trading some convergence rate for lower memory use and, often, faster wall-clock time per cycle than "implicit euler".

mf-gmres
compressible only

Restarted GMRES that applies the exact analytic flux Jacobian matrix-free, with no assembled mean-flow matrix.

Not available with the SAS turbulence model or the SAS hybrid.

coupled
incompressible only

Solves a single block-4 [u,v,w,p] system per pseudo-time step.

simple
incompressible only

Uses a segregated SIMPLE momentum predictor followed by a pressure correction.

Guidance: Choosing a time-marching scheme →
stageadvancedeuler / runge kutta / implicit euler only
not set by default

Has no effect under 'euler' (single-stage by construction). Accepted for backward compatibility with decks that carry this key as boilerplate; prefer omitting it.

Options
ValueWhat it does
1

Under runge kutta, a single stage, the same update as euler. Other schemes ignore stage.

3

Under runge kutta, the three-stage TVD Runge-Kutta (SSP-RK3). Other schemes ignore stage.

4

Under runge kutta, a four-stage scheme with stage coefficients 1/4, 1/2, 0.55 and 1. Other schemes ignore stage.

5

Under runge kutta, a five-stage scheme with stage coefficients 0.0695, 0.1602, 0.2898, 0.506 and 1. Other schemes ignore stage.

rk third order tvd

The same as 3.

sub iterationsadvancedlu-sgs only
int·not set by default·> 0

Number of LU-SGS/DP-LUR sweeps per pseudo-time step

over relaxationadvancedlu-sgs only
float·not set by default·> 0.0

Diagonal over-relaxation factor for the LU-SGS/DP-LUR sweeps

turbulence solveradvancedlu-sgs / mf-gmres only
not set by default

Linear solver for the turbulence equations under LU-SGS. 'amg' keeps the assembled AMG solve; 'point-implicit' uses the matrix-free sweep. The C++ default when unset is 'point-implicit'.

Options
ValueWhat it does
amg

Keeps the assembled AMG solve for the turbulence equations.

point-implicit

Uses the matrix-free sweep instead.

krylov subspaceadvancedmf-gmres only
int·not set by default·> 0

Restart length m. The solver stores m+1 Krylov vectors, or 2m+1 with flexible, so this is the dominant storage cost; size it from the observed iteration count rather than padding it.

Guidance: Choosing a time-marching scheme →
linear toleranceadvancedmf-gmres only
float·not set by default·> 0.0

Relative residual drop required of the linear solve each implicit step

max iterationsadvancedmf-gmres only
int·not set by default·> 0

Hard cap on total Krylov iterations (across restarts) per implicit step

preconditioneradvancedmf-gmres only
not set by default·'preconditioner' only applies when flexible is True

'block jacobi' inverts the exact analytic 5x5 block diagonal. 'lu-sgs' uses linearised symmetric Gauss-Seidel sweeps. 'lu-sgs nonlinear' uses the stock unlinearised sweep and REQUIRES flexible=true, since it is not a linear operator and plain GMRES cannot converge with it.

Options
ValueWhat it doesWhen to use it
block jacobi

Inverts the exact analytic 5x5 block diagonal. The same operator on the host and on a GPU.

lu-sgs

Linearised symmetric Gauss-Seidel sweeps.

lu-sgs nonlinear

The unlinearised LU-SGS sweep.

Requires flexible: True: the sweep is not a linear operator, and plain GMRES cannot converge with it.

none

No preconditioner.

Guidance: Choosing a time-marching scheme →
preconditioner sweepsadvancedmf-gmres only
int·not set by default·> 0

Symmetric Gauss-Seidel sweeps per preconditioner application (lu-sgs only)

orthogonalisation Arnoldi Orthogonalisationadvancedmf-gmres only
not set by default

How the Krylov basis is orthogonalised. 'mgs' (default) is modified Gram-Schmidt, matching AMGX's gmres/fgmres and so directly comparable with the implicit euler benchmark. 'cgs2' is classical Gram-Schmidt with one reorthogonalisation pass and batched reductions: it reduces the reduction round trips per restart cycle from O(m^2) to O(m) at the cost of twice the vector work, which is only expected to pay at high rank counts where each reduction is a real collective.

Options
ValueWhat it doesWhen to use it
mgs

Modified Gram-Schmidt.

The default.

cgs2

Classical Gram-Schmidt with one reorthogonalisation pass and batched reductions: fewer reductions per restart cycle, at twice the vector work.

Only expected to pay at high rank counts, where each reduction is a real collective.

preconditioner over relaxationadvancedmf-gmres only
float·not set by default·> 0.0

Diagonal over-relaxation for the lu-sgs preconditioner sweeps. Named separately from the lu-sgs solver's own 'over relaxation' because here it tunes a PRECONDITIONER, not the solve.

turbulence sweepsadvancedmf-gmres only
int·not set by default·> 0

Sweeps for the point-implicit turbulence solve. Deliberately NOT called 'sub iterations': that name belongs to the lu-sgs solver, and confusing it with 'preconditioner sweeps' (which tunes the MEAN-FLOW preconditioner) would be easy.

flexible Flexible (FGMRES)advancedmf-gmres only
bool·not set by default

Use FGMRES instead of right-preconditioned GMRES. Permits a preconditioner that varies between iterations, at the cost of a second set of m Krylov vectors.

Guidance: Choosing a time-marching scheme →
implicit relax Implicit Relaxationcoupled / simple only
float·default 0.5·0.1 to 1.0

Under-relaxation factor (alpha_u) on the implicit momentum, pressure and energy updates

Used incavity
turbulence relax Turbulence Relaxationcoupled / simple only
float·default 0.5·> 0 and <= 1.0

Under-relaxation factor on the turbulence transport update. Has no effect without a turbulence model (laminar viscous, non-hybrid LES)

Used inwindsor_body
pin pressureadvancedcoupled / simple only
bool·not set by default

Pin the pressure at a reference cell with a large diagonal instead of the default constant-null-space + mean-removal gauge fix. Needed on a fully closed domain (no fixed-pressure boundary)

Used inatmosphere
pressure relaxadvancedsimple only
float·not set by default·> 0.0 and <= 1.0

Explicit pressure under-relaxation factor (alpha_p) for p += alpha_p * p'. The solver default is 0.3

Used inatmosphere
pressure regularisationadvancedsimple only
float·not set by default·>= 0.0

Diagonal regularisation (diag += beta*|diag|) of the pressure-correction Poisson operator. Vanishes at convergence, so the steady solution is unbiased

pressure correction limitadvancedsimple only
float·not set by default·> 0.0

Limit factor applied to the pressure correction