Loading...

Searching...

No Matches

Choosing the adequate linear system solver

If implicit discretization schemes are used, large part of CPU time is spent to solve linear systems. An adequate choice of the solver is important to converge within reasonable CPU time.

Notus is based on external libraries Hypre, MUMPS and Lis (a Notus solver is under development).

MUMPS library provides an efficient parallel direct solver (which means that it solves linear systems up to computer precision thanks to an LU decomposition). From a practical point of view, associated to a Notus matrix, it is mainly useful for 2D problems or very small 3D ones since it is slower and more memory consuming than an iterative solver. But it can be necessary if very low residual is requested or if an iterative solver fails or requires too many iterations to converge (for instance for very large density ratio, or very irregular meshes).

It can be used to solve the momentum equation as well as scalar problems (pressure increment, energy or species concentration equations).

Hypre library provides a large number of iterative solvers and preconditioners.

As solver, we advise to use GMRES or BiCGStab(1).

As preconditioner, for multiphase or unsteady single phase flows, since time step is small, a Jacobi left initial preconditioner is enough most of the time. If not, AMG preconditioner may be useful.

As solver, we advise to use GMRES or BiCGStab(1).

As a preconditioner, geometric multigrid methods are most of the time very efficient. We first advise to use PFMG method. If solver iteration number is too large, we advise to switch to the SMG method that is more robust but more CPU time consuming.

A large time step may increase the number of iterations necessary to get the requested residual (less diagonal dominant matrix). So it may be more interesting to reduce it instead of spending too much time in the solver (even if the total number of time iterations increases).

For validation purpose we chose very small residuals close to computer precision. In real life it be should increased to larger values, for instance between \(10^{-6}\) and \(10^{-8}\). For large simulation campaign, a sensibility analysis of the residual value on the solution may be interesting to achieve in order to reduce the overall CPU time.

Lis library provides also a large number of iterative solvers and preconditioners that can be useful in some cases. We have less experience with this library but sometime, if the number of processors is not too large, Lis solver (GMRES or BiCGStab) may be more efficient than Hypre ones (for momentum equation and left Jacobi initial preconditioner). We have also found that ILU types preconditioners of Lis library may be useful compared to the ILU ones of Hypre.