1(doc_linsolve)= 2 3# Summary of Sparse Linear Solvers Available In PETSc 4 5## Preconditioners 6 7```{eval-rst} 8.. list-table:: 9 :widths: auto 10 :align: center 11 :header-rows: 1 12 13 * - 14 - Algorithm 15 - Associated Type 16 - Matrix Types 17 - External Packages 18 - Parallel 19 - Complex 20 * - Generic 21 - Jacobi 22 - ``PCJACOBI`` 23 - ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``, ``MATDENSE`` 24 - --- 25 - X 26 - X 27 * - 28 - Point Block Jacobi 29 - ``PCPBJACOBI`` 30 - ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``, ``MATKAIJ``, ``MATMPISELL``, ``MATIS`` 31 - --- 32 - X 33 - X 34 * - 35 - Variable Point Block Jacobi 36 - ``PCPBJACOBI`` 37 - ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ`` 38 - --- 39 - X 40 - X 41 * - 42 - Block Jacobi 43 - ``PCBJACOBI`` 44 - ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ`` 45 - --- 46 - X 47 - X 48 * - 49 - SOR 50 - ``PCSOR`` 51 - ``MATAIJ``, ``MATSEQDENSE``, ``MATSEQSBAIJ`` 52 - --- 53 - X 54 - X 55 * - 56 - Point Block SOR 57 - 58 - ``MATSEQBAIJ`` (only for ``bs`` = 2,3,4,5) 59 - --- 60 - X 61 - X 62 * - 63 - Kaczmarz 64 - ``PCKACZMARZ`` 65 - ``MATAIJ`` 66 - --- 67 - X 68 - X 69 * - 70 - Additive Schwarz 71 - ``PCASM`` 72 - ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ`` 73 - --- 74 - X 75 - X 76 * - 77 - Vanka/overlapping patches 78 - ``PCPATCH`` 79 - ``MATAIJ`` 80 - --- 81 - X 82 - X 83 * - 84 - Deflation 85 - ``PCDEFLATION`` 86 - All 87 - --- 88 - X 89 - X 90 * - Incomplete 91 - ILU 92 - ``PCILU`` 93 - ``MATSEQAIJ``, ``MATSEQBAIJ`` 94 - --- 95 - 96 - X 97 * - 98 - ILU with drop tolerance 99 - ``PCILU`` 100 - ``MATSEQAIJ`` 101 - `SuperLU Sequential ILU solver 102 <../../manualpages/Mat/MATSOLVERSUPERLU.html>`__ 103 - 104 - X 105 * - 106 - 107 - ``PCILU`` 108 - ``MATAIJ`` 109 - Euclid/hypre (``PCHYPRE``) 110 - X 111 - 112 * - 113 - ICholesky 114 - ``PCICC`` 115 - ``MATSEQAIJ``, ``MATSEQBAIJ``, ``MATSEQSBAIJ`` 116 - --- 117 - 118 - X 119 * - 120 - Algebraic recursive multilevel 121 - ``PCPARMS`` 122 - ``MATSEQAIJ`` 123 - `pARMS <https://www-users.cse.umn.edu/~saad/software/pARMS/>`__ 124 - 125 - X 126 * - Matrix Free 127 - Infrastructure 128 - ``PCSHELL`` 129 - All 130 - --- 131 - X 132 - X 133 * - Multigrid 134 - Infrastructure 135 - ``PCMG`` 136 - All 137 - --- 138 - X 139 - X 140 * - 141 - Geometric 142 - 143 - All 144 - --- 145 - X 146 - X 147 * - 148 - Smoothed Aggregation 149 - ``PCGAMG`` 150 - ``MATAIJ`` 151 - --- 152 - X 153 - X 154 * - 155 - Smoothed Aggregation (ML) 156 - ``PCML`` 157 - ``MATAIJ`` 158 - `ML/Trilinos <https://trilinos.github.io/ml.html>`__ 159 - X 160 - X 161 * - 162 - Structured Geometric 163 - ``PCPFMG``, ``PCSYSPFMG``, ``PCSMG`` 164 - ``MATHYPRESTRUCT`` 165 - `hypre <https://hypre.readthedocs.io/en/latest/solvers-smg-pfmg.html>`__ 166 - X 167 - 168 * - 169 - Classical Algebraic 170 - ``PCHYPRE``, ``PCAMGX`` 171 - ``MATAIJ`` 172 - `BoomerAMG/hypre 173 <https://hypre.readthedocs.io/en/latest/solvers-boomeramg.html>`__, `AmgX <https://developer.nvidia.com/amgx>`__ 174 - X 175 - 176 * - 177 - Multi-group MG 178 - ``PCHMG`` 179 - ``MATAIJ`` 180 - --- 181 - X 182 - X 183 * - 184 - Domain Decomposition 185 - ``PCHPDDM`` 186 - ``MATAIJ``, ``MATBAIJ``, ``MATSBAIJ``, ``MATIS`` 187 - `HPDDM <https://github.com/hpddm/hpddm>`__ 188 - X 189 - X 190 * - Hierarchical matrices 191 - :math:`\mathcal H^2` 192 - ``PCH2OPUS`` 193 - ``MATHTOOL``, ``MATH2OPUS`` 194 - `H2OPUS <https://github.com/ecrc/h2opus>`__ 195 - X 196 - 197 * - Physics-based Splitting 198 - Relaxation & Schur Complement 199 - ``PCFIELDSPLIT`` 200 - ``MATAIJ``, ``MATBAIJ``, ``MATNEST`` 201 - --- 202 - X 203 - X 204 * - 205 - Galerkin composition 206 - ``PCGALERKIN`` 207 - Any 208 - --- 209 - X 210 - X 211 * - 212 - Additive/multiplicative 213 - ``PCCOMPOSITE`` 214 - Any 215 - --- 216 - X 217 - X 218 * - 219 - Least Squares Commutator 220 - ``PCLSC`` 221 - ``MATSCHURCOMPLEMENT`` 222 - --- 223 - X 224 - X 225 * - Parallel transformation 226 - Redistribution 227 - ``PCREDISTRIBUTE`` 228 - ``MATAIJ`` 229 - --- 230 - X 231 - X 232 * - 233 - Telescoping communicator 234 - ``PCTELESCOPE`` 235 - ``MATAIJ`` 236 - --- 237 - X 238 - X 239 * - 240 - Distribute for MPI 241 - ``PCMPI`` 242 - ``MATAIJ`` 243 - --- 244 - X 245 - X 246 * - Approximate Inverse 247 - AIV 248 - ``PCHYPRE``, ``PCSPAI`` 249 - ``MATAIJ`` 250 - `Parasails/hypre <https://hypre.readthedocs.io/en/latest/solvers-parasails.html>`__, `SPAI <https://epubs.siam.org/doi/abs/10.1137/S1064827595294691?journalCode=sjoce3>`__ 251 - X 252 - 253 * - Substructuring 254 - Balancing Neumann-Neumann 255 - ``PCNN`` 256 - ``MATIS`` 257 - --- 258 - X 259 - X 260 * - 261 - Balancing Domain Decomposition 262 - ``PCBDDC`` 263 - ``MATIS`` 264 - --- 265 - X 266 - X 267 * - 268 - 2-level Schwarz wire basket 269 - ``PCEXOTIC`` 270 - ``MATAIJ`` 271 - --- 272 - X 273 - X 274``` 275 276______________________________________________________________________ 277 278## Direct Solvers 279 280```{eval-rst} 281.. list-table:: 282 :widths: auto 283 :align: center 284 :header-rows: 1 285 286 * - 287 - Algorithm 288 - Associated Type 289 - Matrix Types 290 - External Packages 291 - Parallel 292 - Complex 293 * - Direct LU 294 - LU 295 - ``PCLU`` 296 - ``MATSEQAIJ``, ``MATSEQBAIJ`` 297 - --- 298 - 299 - X 300 * - 301 - 302 - 303 - ``MATSEQAIJ`` 304 - `MATLAB <https://www.mathworks.com/products/matlab.html>`__ 305 - 306 - X 307 * - 308 - 309 - 310 - ``MATAIJ`` 311 - `PaStiX <http://pastix.gforge.inria.fr/files/README-txt.html>`__ 312 - X 313 - X 314 * - 315 - 316 - 317 - ``MATAIJ`` 318 - `SuperLU <https://portal.nersc.gov/project/sparse/superlu/>`__ 319 - X 320 - X 321 * - 322 - 323 - 324 - ``MATAIJ``, ``MATBAIJ``, ``MATSEQSELL``, ``MATDENSE``, ``MATNEST`` 325 - `MUMPS <https://mumps-solver.org/>`__ 326 - X 327 - X 328 * - 329 - 330 - 331 - ``MATSEQAIJ`` 332 - `ESSL <https://www.ibm.com/support/knowledgecenter/en/SSFHY8/essl_welcome.html>`__ 333 - 334 - 335 * - 336 - 337 - 338 - ``MATSEQAIJ`` 339 - `UMFPACK (SuiteSparse) <https://people.engr.tamu.edu/davis/suitesparse.html>`__ 340 - 341 - X 342 * - 343 - 344 - 345 - ``MATSEQAIJ`` 346 - `KLU (SuiteSparse) <https://people.engr.tamu.edu/davis/suitesparse.html>`__ 347 - 348 - X 349 * - 350 - 351 - 352 - ``MATSEQAIJ`` 353 - `LUSOL <https://web.stanford.edu/group/SOL/software/lusol/>`__ 354 - 355 - 356 * - 357 - 358 - 359 - ``MATSEQAIJ``, ``MATSEQBAIJ`` 360 - `MKL PARDISO 361 <https://software.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top.html>`__ 362 - 363 - X 364 * - 365 - 366 - 367 - ``MATMPIAIJ``, ``MATMPIBAIJ`` 368 - `MKL Cluster PARDISO 369 <https://software.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top.html>`__ 370 - X 371 - X 372 * - 373 - 374 - 375 - ``MATDENSE`` 376 - `Elemental <https://github.com/elemental/Elemental>`__ 377 - X 378 - X 379 * - Direct Cholesky 380 - Cholesky 381 - ``PCCHOLESKY`` 382 - ``MATSEQAIJ``, ``MATSEQSBAIJ`` 383 - --- 384 - 385 - X 386 * - 387 - 388 - 389 - ``MATSBAIJ`` 390 - `PaStiX <http://pastix.gforge.inria.fr/files/README-txt.html>`__ 391 - X 392 - X 393 * - 394 - 395 - 396 - ``MATAIJ``, ``MATSBAIJ``, ``MATDENSE``, ``MATNEST`` 397 - `MUMPS <https://mumps-solver.org/>`__ 398 - X 399 - X 400 * - 401 - 402 - 403 - ``MATSEQAIJ``, ``MATSEQSBAIJ`` 404 - `CHOLMOD (SuiteSparse) <https://people.engr.tamu.edu/davis/suitesparse.html>`__ 405 - 406 - X 407 * - 408 - 409 - 410 - ``MATDENSE`` 411 - `Elemental <https://github.com/elemental/Elemental>`__ 412 - X 413 - X 414 * - 415 - 416 - 417 - ``MATSEQSBAIJ`` 418 - `MKL PARDISO 419 <https://software.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top.html>`__ 420 - 421 - 422 * - 423 - 424 - 425 - ``MATMPIAIJ``, ``MATMPIBAIJ`` 426 - `MKL CPardiso 427 <https://software.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top.html>`__ 428 - X 429 - 430 * - Direct SVD 431 - Singular value decomposition 432 - ``PCSVD`` 433 - Any 434 - --- 435 - X 436 - X 437 * - Direct QR 438 - QR 439 - ``PCQR`` 440 - ``MATSEQAIJ`` 441 - `SuiteSparse QR <https://people.engr.tamu.edu/davis/suitesparse.html>`__ 442 - 443 - 444 * - 445 - XXt and XYt 446 - 447 - ``MATAIJ`` 448 - --- 449 - X 450 - 451``` 452 453______________________________________________________________________ 454 455## Krylov Methods 456 457```{eval-rst} 458.. list-table:: 459 :widths: auto 460 :align: center 461 :header-rows: 1 462 463 * - Algorithm 464 - Associated Type 465 - External Packages 466 - Parallel 467 - Complex 468 * - Richardson 469 - ``KSPRICHARDSON`` 470 - --- 471 - X 472 - X 473 * - Chebyshev 474 - ``KSPCHEBYSHEV`` 475 - --- 476 - X 477 - X 478 * - GMRES 479 - ``KSPGMRES`` 480 - --- 481 - X 482 - X 483 * - Flexible GMRES 484 - ``KSPFGMRES`` 485 - --- 486 - X 487 - X 488 * - LGMRES 489 - ``KSPLGMRES`` 490 - --- 491 - X 492 - X 493 * - Deflated GMRES 494 - ``KSPDGMRES`` 495 - --- 496 - X 497 - 498 * - Two-stage with least squares residual minimization 499 - ``KSPTSIRM`` 500 - --- 501 - X 502 - X 503 * - Conjugate Gradient 504 - ``KSPCG`` 505 - --- 506 - X 507 - X 508 * - Conjugate Gradient Squared 509 - ``KSPCGS`` 510 - --- 511 - X 512 - X 513 * - Conjugate Gradient for Least Squares 514 - ``KSPCGLS`` 515 - --- 516 - X 517 - X 518 * - Conjugate Gradient on Normal Equations 519 - ``KSPCGNE`` 520 - --- 521 - X 522 - X 523 * - Nash Conjugate Gradient with trust region constraint 524 - ``KSPNASH`` 525 - --- 526 - X 527 - X 528 * - Conjugate Gradient with trust region constraint 529 - ``KSPSTCG`` 530 - --- 531 - X 532 - X 533 * - Gould et al Conjugate Gradient with trust region constraint 534 - ``KSPGLTR`` 535 - --- 536 - X 537 - X 538 * - Steinhaug Conjugate Gradient with trust region constraint 539 - ``KSPQCG`` 540 - --- 541 - X 542 - X 543 * - Left Conjugate Direction 544 - ``KSPLCD`` 545 - --- 546 - X 547 - X 548 * - Bi-Conjugate Gradient 549 - ``KSPBICG`` 550 - --- 551 - X 552 - X 553 * - Stabilized Bi-Conjugate Gradient 554 - ``KSPBCGS`` 555 - --- 556 - X 557 - X 558 * - Improved Stabilized Bi-Conjugate Gradient 559 - ``KSPIBCGS`` 560 - --- 561 - X 562 - X 563 * - Transpose-free QMR 564 - ``KSPTFQMR`` 565 - --- 566 - X 567 - X 568 * - Transpose-free variant of QMR developed by Tony Chan 569 - ``KSPTCQMR`` 570 - --- 571 - X 572 - X 573 * - QMR BiCGStab 574 - ``KSPQMRCGS`` 575 - --- 576 - X 577 - X 578 * - Flexible Conjugate Gradients 579 - ``KSPFCG`` 580 - --- 581 - X 582 - X 583 * - Flexible stabilized Bi-Conjugate Gradients 584 - ``KSPFBCGS`` 585 - --- 586 - X 587 - X 588 * - Flexible stabilized Bi-Conjugate Gradients with fewer reductions 589 - ``KSPFBCGSR`` 590 - --- 591 - X 592 - X 593 * - Stabilized Bi-Conjugate Gradients with length :math:`\ell` recurrence 594 - ``KSPBCGSL`` 595 - --- 596 - X 597 - X 598 * - Conjugate Residual 599 - ``KSPCR`` 600 - --- 601 - X 602 - X 603 * - Generalized Conjugate Residual 604 - ``KSPGCR`` 605 - --- 606 - X 607 - X 608 * - Generalized Conjugate Residual (with inner normalization and deflated restarts) 609 - ``KSPHPDDM`` 610 - `HPDDM <https://github.com/hpddm/hpddm>`__ 611 - X 612 - X 613 * - Minimum Residual 614 - ``KSPMINRES`` 615 - --- 616 - X 617 - X 618 * - LSQR 619 - ``KSPLSQR`` 620 - --- 621 - X 622 - X 623 * - SYMMLQ 624 - ``KSPSYMMLQ`` 625 - --- 626 - X 627 - X 628 * - FETI-DP (reduction to dual-primal sub-problem) 629 - ``KSPFETIDP`` 630 - --- 631 - X 632 - X 633 * - Gropp's overlapped reduction pipelined Conjugate Gradient 634 - ``KSPGROPPCG`` 635 - --- 636 - X 637 - X 638 * - Pipelined Conjugate Gradient 639 - ``KSPPIPECG`` 640 - --- 641 - X 642 - X 643 * - Pipelined Conjugate Gradient with residual replacement 644 - ``KSPPIPECGRR`` 645 - --- 646 - X 647 - X 648 * - Pipelined depth :math:`\ell` Conjugate Gradient 649 - ``KSPPIPELCG`` 650 - --- 651 - X 652 - X 653 * - Pipelined predict-and-recompute Conjugate Gradient 654 - ``KSPPIPEPRCG`` 655 - --- 656 - X 657 - X 658 * - Pipelined Conjugate Gradient over iteration pairs 659 - ``KSPPIPECG2`` 660 - --- 661 - X 662 - X 663 * - Pipelined flexible Conjugate Gradient 664 - ``KSPPIPEFCG`` 665 - --- 666 - X 667 - X 668 * - Pipelined stabilized Bi-Conjugate Gradients 669 - ``KSPPIPEBCGS`` 670 - --- 671 - X 672 - X 673 * - Pipelined Conjugate Residual 674 - ``KSPPIPECR`` 675 - --- 676 - X 677 - X 678 * - Pipelined flexible GMRES 679 - ``KSPPIPEFGMRES`` 680 - --- 681 - X 682 - X 683 * - Pipelined Generalized Conjugate Residual 684 - ``KSPPIPEGCR`` 685 - --- 686 - X 687 - X 688 * - Pipelined GMRES 689 - ``KSPPGMRES`` 690 - --- 691 - X 692 - X 693``` 694