.. _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