.. _doc_linsolve:
===================================================
Summary of Sparse Linear Solvers Available In PETSc
===================================================
Preconditioners
===============
.. list-table::
:widths: auto
:align: center
:header-rows: 1
* -
- Algorithm
- Associated Type
- Matrix Types
- External Packages
- Parallel
- Complex
* - Generic
- Jacobi
- ``PCJACOBI``
- ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``, ``MATDENSE``
- ---
- X
- X
* -
- Point Block Jacobi
- ``PCPBJACOBI``
- ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``, ``MATKAIJ``, ``MATMPISELL``, ``MATIS``
- ---
- X
- X
* -
- Variable Point Block Jacobi
- ``PCPBJACOBI``
- ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``
- ---
- X
- X
* -
- Block Jacobi
- ``PCBJACOBI``
- ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``
- ---
- X
- X
* -
- SOR
- ``PCSOR``
- ``MATAIJ``, ``MATSEQDENSE``, ``MATSEQSBAIJ``
- ---
- X
- X
* -
- Point Block SOR
-
- ``MATSEQBAIJ`` (only for ``bs`` = 2,3,4,5)
- ---
- X
- X
* -
- Kaczmarz
- ``PCKACZMARZ``
- ``MATAIJ``
- ---
- X
- X
* -
- Additive Schwarz
- ``PCASM``
- ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``
- ---
- X
- X
* -
- Vanka/overlapping patches
- ``PCPATCH``
- ``MATAIJ``
- ---
- X
- X
* -
- Deflation
- ``PCDEFLATION``
- All
- ---
- X
- X
* - Incomplete
- ILU
- ``PCILU``
- ``MATSEQAIJ``, ``MATSEQBAIJ``
- ---
-
- X
* -
- ILU with drop tolerance
- ``PCILU``
- ``MATSEQAIJ``
- `SuperLU Sequential ILU solver
<../../manualpages/Mat/MATSOLVERSUPERLU.html>`__
-
- X
* -
-
- ``PCILU``
- ``MATAIJ``
- Euclid/hypre (``PCHYPRE``)
- X
-
* -
- ICholesky
- ``PCICC``
- ``MATSEQAIJ``, ``MATSEQBAIJ``, ``MATSEQSBAIJ``
- ---
-
- X
* -
- Algebraic recursive multilevel
- ``PCPARMS``
- ``MATSEQAIJ``
- `pARMS `__
-
- X
* - Matrix Free
- Infrastructure
- ``PCSHELL``
- All
- ---
- X
- X
* - Multigrid
- Infrastructure
- ``PCMG``
- All
- ---
- X
- X
* -
- Geometric
-
- All
- ---
- X
- X
* -
- Smoothed Aggregation
- ``PCGAMG``
- ``MATAIJ``
- ---
- X
- X
* -
- Smoothed Aggregation (ML)
- ``PCML``
- ``MATAIJ``
- `ML/Trilinos `__
- X
- X
* -
- Structured Geometric
- ``PCPFMG``, ``PCSYSPFMG``, ``PCSMG``
- ``MATHYPRESTRUCT``
- `hypre `__
- X
-
* -
- Classical Algebraic
- ``PCHYPRE``, ``PCAMGX``
- ``MATAIJ``
- `BoomerAMG/hypre
`__, `AmgX `__
- X
-
* -
- Multi-group MG
- ``PCHMG``
- ``MATAIJ``
- ---
- X
- X
* -
- Domain Decomposition
- ``PCHPDDM``
- ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``, ``MATIS``
- `HPDDM `__
- X
- X
* - Hierarchical matrices
- :math:`\mathcal H^2`
- ``PCH2OPUS``
- ``MATHTOOL``, ``MATH2OPUS``
- `H2OPUS `__
- X
-
* - Physics-based Splitting
- Relaxation & Schur Complement
- ``PCFIELDSPLIT``
- ``MATAIJ``, ``MATBAIJ``, ``MATNEST``
- ---
- X
- X
* -
- Galerkin composition
- ``PCGALERKIN``
- Any
- ---
- X
- X
* -
- Additive/multiplicative
- ``PCCOMPOSITE``
- Any
- ---
- X
- X
* -
- Least Squares Commutator
- ``PCLSC``
- ``MATSCHURCOMPLEMENT``
- ---
- X
- X
* - Parallel transformation
- Redistribution
- ``PCREDISTRIBUTE``
- ``MATAIJ``
- ---
- X
- X
* -
- Telescoping communicator
- ``PCTELESCOPE``
- ``MATAIJ``
- ---
- X
- X
* -
- Distribute for MPI
- ``PCMPI``
- ``MATAIJ``
- ---
- X
- X
* - Approximate Inverse
- AIV
- ``PCHYPRE``, ``PCSPAI``
- ``MATAIJ``
- `Parasails/hypre `__, `SPAI `__
- X
-
* - Substructuring
- Balancing Neumann-Neumann
- ``PCNN``
- ``MATIS``
- ---
- X
- X
* -
- Balancing Domain Decomposition
- ``PCBDDC``
- ``MATIS``
- ---
- X
- X
* -
- 2-level Schwarz wire basket
- ``PCEXOTIC``
- ``MATAIJ``
- ---
- X
- X
-------------------------------
Direct Solvers
==============
.. list-table::
:widths: auto
:align: center
:header-rows: 1
* -
- Algorithm
- Associated Type
- Matrix Types
- External Packages
- Parallel
- Complex
* - Direct LU
- LU
- ``PCLU``
- ``MATSEQAIJ``, ``MATSEQBAIJ``
- ---
-
- X
* -
-
-
- ``MATSEQAIJ``
- `MATLAB `__
-
- X
* -
-
-
- ``MATAIJ``
- `PaStiX `__
- X
- X
* -
-
-
- ``MATAIJ``
- `SuperLU `__
- X
- X
* -
-
-
- ``MATAIJ``, ``MATBAIJ``
- `MUMPS `__
- X
- X
* -
-
-
- ``MATSEQAIJ``
- `ESSL `__
-
-
* -
-
-
- ``MATSEQAIJ``
- `UMPFPACK (SuiteSparse) `__
-
- X
* -
-
-
- ``MATSEQAIJ``
- `KLU (SuiteSparse) `__
-
- X
* -
-
-
- ``MATSEQAIJ``
- `LUSOL `__
-
-
* -
-
-
- ``MATSEQAIJ``, ``MATSEQBAIJ``
- `MKL PARDISO
`__
-
- X
* -
-
-
- ``MATMPIAIJ``, ``MATMPIBAIJ``
- `MKL CPardiso
`__
- X
- X
* -
-
-
- ``MATDENSE``
- `Elemental `__
- X
- X
* - Direct Cholesky
- Cholesky
- ``PCCHOLESKY``
- ``MATSEQAIJ``, ``MATSEQSBAIJ``
- ---
-
- X
* -
-
-
- ``MATSBAIJ``
- `PaStiX `__
- X
- X
* -
-
-
- ``MATSBAIJ``
- `MUMPS `__
- X
- X
* -
-
-
- ``MATSEQAIJ``, ``MATSEQSBAIJ``
- `CHOLMOD (SuiteSparse) `__
-
- X
* -
-
-
- ``MATDENSE``
- `Elemental `__
- X
- X
* -
-
-
- ``MATSEQSBAIJ``
- `MKL PARDISO
`__
-
-
* -
-
-
- ``MATMPIAIJ``, ``MATMPIBAIJ``
- `MKL CPardiso
`__
- X
-
* - Direct SVD
- Singular value decomposition
- ``PCSVD``
- Any
- ---
- X
- X
* - Direct QR
- QR
- ``PCQR``
- ``MATSEQAIJ``
- `SuiteSparse QR `__
-
-
* -
- XXt and XYt
-
- ``MATAIJ``
- ---
- X
-
-------------------------------
Krylov Methods
==============
.. list-table::
:widths: auto
:align: center
:header-rows: 1
* - Algorithm
- Associated Type
- External Packages
- Parallel
- Complex
* - Richardson
- ``KSPRICHARDSON``
- ---
- X
- X
* - Chebyshev
- ``KSPCHEBYSHEV``
- ---
- X
- X
* - GMRES
- ``KSPGMRES``
- ---
- X
- X
* - Flexible GMRES
- ``KSPFGMRES``
- ---
- X
- X
* - LGMRES
- ``KSPLGMRES``
- ---
- X
- X
* - Deflated GMRES
- ``KSPDGMRES``
- ---
- X
-
* - Two-stage with least squares residual minimization
- ``KSPTSIRM``
- ---
- X
- X
* - Conjugate Gradient
- ``KSPCG``
- ---
- X
- X
* - Conjugate Gradient Squared
- ``KSPCGS``
- ---
- X
- X
* - Conjugate Gradient for Least Squares
- ``KSPCGLS``
- ---
- X
- X
* - Conjugate Gradient on Normal Equations
- ``KSPCGNE``
- ---
- X
- X
* - Nash Conjugate Gradient with trust region constraint
- ``KSPNASH``
- ---
- X
- X
* - Conjugate Gradient with trust region constraint
- ``KSPSTCG``
- ---
- X
- X
* - Gould et al Conjugate Gradient with trust region constraint
- ``KSPGLTR``
- ---
- X
- X
* - Steinhaug Conjugate Gradient with trust region constraint
- ``KSPQCG``
- ---
- X
- X
* - Left Conjugate Direction
- ``KSPLCD``
- ---
- X
- X
* - Bi-Conjugate Gradient
- ``KSPBICG``
- ---
- X
- X
* - Stabilized Bi-Conjugate Gradient
- ``KSPBCGS``
- ---
- X
- X
* - Improved Stabilized Bi-Conjugate Gradient
- ``KSPIBCGS``
- ---
- X
- X
* - Transpose-free QMR
- ``KSPTFQMR``
- ---
- X
- X
* - Tony Chan QMR
- ``KSPTCQMR``
- ---
- X
- X
* - QMR BiCGStab
- ``KSPQMRCGS``
- ---
- X
- X
* - Flexible Conjugate Gradients
- ``KSPFCG``
- ---
- X
- X
* - Flexible stabilized Bi-Conjugate Gradients
- ``KSPFBCGS``
- ---
- X
- X
* - Flexible stabilized Bi-Conjugate Gradients with fewer reductions
- ``KSPFBCGSR``
- ---
- X
- X
* - Stabilized Bi-Conjugate Gradients with length :math:`\ell` recurrence
- ``KSPBCGSL``
- ---
- X
- X
* - Conjugate Residual
- ``KSPCR``
- ---
- X
- X
* - Generalized Conjugate Residual
- ``KSPGCR``
- ---
- X
- X
* - Generalized Conjugate Residual (with inner normalization and deflated restarts)
- ``KSPHPDDM``
- `HPDDM `__
- X
- X
* - Minimum Residual
- ``KSPMINRES``
- ---
- X
- X
* - LSQR
- ``KSPLSQR``
- ---
- X
- X
* - SYMMLQ
- ``KSPSYMMLQ``
- ---
- X
- X
* - FETI-DP (reduction to dual-primal sub-problem)
- ``KSPFETIDP``
- ---
- X
- X
* - Gropp's overlapped reduction Conjugate Gradient
- ``KSPGROPPCG``
- ---
- X
- X
* - Pipelined Conjugate Gradient
- ``KSPPIPECG``
- ---
- X
- X
* - Pipelined Conjugate Gradient with residual replacement
- ``KSPPIPECGRR``
- ---
- X
- X
* - Pipelined depth :math:`\ell` Conjugate Gradient
- ``KSPPIPELCG``
- ---
- X
- X
* - Pipelined predict-and-recompute Conjugate Gradient
- ``KSPPIPEPRCG``
- ---
- X
- X
* - Pipelined Conjugate Gradient over iteration pairs
- ``KSPPIPECG2``
- ---
- X
- X
* - Pipelined flexible Conjugate Gradient
- ``KSPPIPEFCG``
- ---
- X
- X
* - Pipelined stabilized Bi-Conjugate Gradients
- ``KSPPIPEBCGS``
- ---
- X
- X
* - Pipelined Conjugate Residual
- ``KSPPIPECR``
- ---
- X
- X
* - Pipelined flexible GMRES
- ``KSPPIPEFGMRES``
- ---
- X
- X
* - Pipelined Generalized Conjugate Residual
- ``KSPPIPEGCR``
- ---
- X
- X
* - Pipelined GMRES
- ``KSPPGMRES``
- ---
- X
- X