Change preconditioning
Change preconditioning when *_linear_iterations rises sharply, a retained preconditioner changes, or an inner linear solve repeatedly fails.
Match the preconditioner to the equation
Use the unstable equation as the starting point:
| Equation character | Typical equations | Strong starting family |
|---|---|---|
| Advection dominated | Momentum, tke, sdr | ILU |
| Diffusion dominated | Pressure, energy | Multigrid |
These are starting points rather than guarantees. Mesh shape, material jumps, and the current flow field change the matrix as the solve progresses.
Supply ordered fallbacks
Prefer a fallback list when no single method is reliable throughout the run. For a difficult energy solve, for example:
"numerics": {
"stable": {
"linear_solvers": {
"energy": {
"right_preconditioner": ["mg32", "mg64", "ilu55"]
}
}
}
}
Vanellus tries the list from left to right and retains the first successful solve. Combining both multigrid precisions with a strong ILU alternative gives the equation different recovery paths rather than repeatedly retrying one poorly suited method.
For momentum or turbulence, start with a cheaper ILU and place a stronger ILU later in the list. Override only the equation whose diagnostics indicate a problem.
After rerunning, inspect *_right_preconditioner to see which method was retained and *_linear_iterations to judge its work. A fallback that is selected frequently may deserve to move earlier in the list, but compare total runtime rather than iteration count alone.
See also
- Preconditioners and fallbacks explains every method and the fallback state machine.
- Residuals and linear-solver convergence explains the diagnostic columns.