Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 characterTypical equationsStrong starting family
Advection dominatedMomentum, tke, sdrILU
Diffusion dominatedPressure, energyMultigrid

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