scheme
Pseudo-time/Convergence integration scheme
Pseudo-time integration scheme: euler = first-order explicit
| Value | What it does | When to use it |
|---|---|---|
| euler compressible only | Explicit forward Euler in pseudo-time: one residual evaluation and update per cycle. | The |
| runge kutta compressible only | Explicit multistage Runge-Kutta in pseudo-time. | |
| 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 | |
| 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. |
Has no effect under 'euler' (single-stage by construction). Accepted for backward compatibility with decks that carry this key as boilerplate; prefer omitting it.
| Value | What it does |
|---|---|
| 1 | Under |
| 3 | Under |
| 4 | Under |
| 5 | Under |
| rk third order tvd | The same as |
Number of LU-SGS/DP-LUR sweeps per pseudo-time step
Diagonal over-relaxation factor for the LU-SGS/DP-LUR sweeps
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'.
| Value | What it does |
|---|---|
| amg | Keeps the assembled AMG solve for the turbulence equations. |
| point-implicit | Uses the matrix-free sweep instead. |
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 →Relative residual drop required of the linear solve each implicit step
Hard cap on total Krylov iterations (across restarts) per implicit step
'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.
| Value | What it does | When 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 |
| none | No preconditioner. |
Symmetric Gauss-Seidel sweeps per preconditioner application (lu-sgs only)
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.
| Value | What it does | When 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. |
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.
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.
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 →Under-relaxation factor (alpha_u) on the implicit momentum, pressure and energy updates
Under-relaxation factor on the turbulence transport update. Has no effect without a turbulence model (laminar viscous, non-hybrid LES)
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)
Explicit pressure under-relaxation factor (alpha_p) for p += alpha_p * p'. The solver default is 0.3
Diagonal regularisation (diag += beta*|diag|) of the pressure-correction Poisson operator. Vanishes at convergence, so the steady solution is unbiased
Limit factor applied to the pressure correction