# Using HYPRE solvers

Types of Solvers in HYPRE

See HYPRE documentation for full details.

BoomerAMG

This is the most used Algebraic Multigrid solver in the scientific computing community. It is a parallelization of the famous Ruge-Stueben algorithm of AMG1rX (current version is AMG1r6). There are many options with using BoomerAMG with the most important being the strong threshold parameter. It is not simple for the novice user to understand but typically 0.25 is chosen for 2D problems and 0.5 for 3D problems.

- One interesting problem I discovered early on is inaccurate integration (only first order) can create a diffusion matrix that is not setup for BoomerAMG to solver efficiently. Thus be careful and always try to use exact integration by choosing a high enough order Gaussion Quadrature rule.
- I believe that by default the AMG preconditioner is not symmetric so CG may not converge when using BoomerAMG as a preconditioner. When you use a preconditioner, say B, then you are really applying the CG algorithm to BA, where A is the original matrix. CG will not necessarily converge if the matrix it is being applied to is not symmetric.
Parasails

- This is a parallel implementation of a sparse approximate inverse (SPAI) preconditioner, using a priori sparsity patterns and least-squares (Frobenius norm) minimization. See "E. Chow, A priori sparsity patterns for parallel sparse approximate inverse preconditioners. SIAM J. Sci. Computing., 21:1804-1822, 2000."
Euclid

- This is a scalable implementation of the Parallel ILU algorithm. By scalable we mean that the factorization (setup) and application (triangular solve) timings remain nearly constant when the global problem size is scaled in proportion to the number of processors. As with all ILU preconditiong methods, the number of iterations is expected to increase with global problem size.
PILUT

- This is a parallel preconditioner based on Y. Saads's dual-threshold incomplete factorization algorithm. The algorithm produces an approximate factorization LU, with the preconditioner M defined by M=LU. Note that PILUT produces a nonsymmetric preconditioner even when the original matrix is symmetric. Thus, it is generally inapproprite for preconditioning symmetric methods such as CG.