1*7f296bb3SBarry Smith(doc_matrix)= 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith# Summary of Matrix Types Available In PETSc 4*7f296bb3SBarry Smith 5*7f296bb3SBarry Smith```{eval-rst} 6*7f296bb3SBarry Smith.. list-table:: 7*7f296bb3SBarry Smith :widths: auto 8*7f296bb3SBarry Smith :align: center 9*7f296bb3SBarry Smith :header-rows: 1 10*7f296bb3SBarry Smith 11*7f296bb3SBarry Smith * - Format 12*7f296bb3SBarry Smith - Matrix Types 13*7f296bb3SBarry Smith - Constructor 14*7f296bb3SBarry Smith - External Packages 15*7f296bb3SBarry Smith - Details 16*7f296bb3SBarry Smith * - CSR 17*7f296bb3SBarry Smith - ``MATAIJ`` 18*7f296bb3SBarry Smith - ``MatCreateAIJ()`` 19*7f296bb3SBarry Smith - 20*7f296bb3SBarry Smith - Compressed sparse row 21*7f296bb3SBarry Smith * - 22*7f296bb3SBarry Smith - ``MATAIJMKL`` 23*7f296bb3SBarry Smith - ``MatCreateMPIAIJMKL()`` 24*7f296bb3SBarry Smith - Intel oneAPI MKL 25*7f296bb3SBarry Smith - OpenMP support 26*7f296bb3SBarry Smith * - 27*7f296bb3SBarry Smith - ``MATAIJSELL`` 28*7f296bb3SBarry Smith - ``MatCreateMPIAIJSELL()`` 29*7f296bb3SBarry Smith - 30*7f296bb3SBarry Smith - SIMD acceleration 31*7f296bb3SBarry Smith * - 32*7f296bb3SBarry Smith - ``MATAIJPERM`` 33*7f296bb3SBarry Smith - ``MatCreateMPIAIJPERM()`` 34*7f296bb3SBarry Smith - 35*7f296bb3SBarry Smith - Vectorized version 36*7f296bb3SBarry Smith * - 37*7f296bb3SBarry Smith - ``MATAIJCUSPARSE`` 38*7f296bb3SBarry Smith - ``MatCreateAIJCUSPARSE()`` 39*7f296bb3SBarry Smith - NVIDIA cuSPARSE library 40*7f296bb3SBarry Smith - NVIDIA GPU acceleration 41*7f296bb3SBarry Smith * - 42*7f296bb3SBarry Smith - ``MATAIJKOKKOS`` 43*7f296bb3SBarry Smith - ``MatCreateAIJKokkos()`` 44*7f296bb3SBarry Smith - Kokkos 45*7f296bb3SBarry Smith - GPU acceleration 46*7f296bb3SBarry Smith * - Constant row length 47*7f296bb3SBarry Smith - ``MATAIJCRL`` 48*7f296bb3SBarry Smith - ``MatCreateMPIAIJCRL()`` 49*7f296bb3SBarry Smith - 50*7f296bb3SBarry Smith - Vectorized version 51*7f296bb3SBarry Smith * - Multiple applications of single ``MATAIJ`` 52*7f296bb3SBarry Smith - ``MATMAIJ`` 53*7f296bb3SBarry Smith - ``MatCreateMAIJ()`` 54*7f296bb3SBarry Smith - 55*7f296bb3SBarry Smith - Commonly used for identical interpolations on each component of a multi-component vector 56*7f296bb3SBarry Smith * - Kronecker product of sparse matrix :math:`A`; :math:`I \otimes S + A \otimes T` 57*7f296bb3SBarry Smith - ``MATKAIJ`` 58*7f296bb3SBarry Smith - ``MatCreateKAIJ()`` 59*7f296bb3SBarry Smith - 60*7f296bb3SBarry Smith - 61*7f296bb3SBarry Smith * - Sliced Ellpack 62*7f296bb3SBarry Smith - ``MATSELL`` 63*7f296bb3SBarry Smith - ``MatCreateSELL()`` 64*7f296bb3SBarry Smith - 65*7f296bb3SBarry Smith - SIMD and GPU acceleration 66*7f296bb3SBarry Smith * - Block CSR 67*7f296bb3SBarry Smith - ``MATBAIJ`` 68*7f296bb3SBarry Smith - ``MatCreateBAIJ()`` 69*7f296bb3SBarry Smith - 70*7f296bb3SBarry Smith - Block compressed sparse row 71*7f296bb3SBarry Smith * - Symmetric Block CSR 72*7f296bb3SBarry Smith - ``MATSBAIJ`` 73*7f296bb3SBarry Smith - ``MatCreateSBAIJ()`` 74*7f296bb3SBarry Smith - 75*7f296bb3SBarry Smith - Upper triangular compressed sparse row 76*7f296bb3SBarry Smith * - Dense 77*7f296bb3SBarry Smith - ``MATDENSE`` 78*7f296bb3SBarry Smith - ``MatCreateDense()`` 79*7f296bb3SBarry Smith - 80*7f296bb3SBarry Smith - Row oriented storage 81*7f296bb3SBarry Smith * - 82*7f296bb3SBarry Smith - ``MATELEMENTAL`` 83*7f296bb3SBarry Smith - ``MatCreateElemental()`` 84*7f296bb3SBarry Smith - Elemental by Jack Poulson 85*7f296bb3SBarry Smith - Block cyclic storage 86*7f296bb3SBarry Smith * - 87*7f296bb3SBarry Smith - ``MATSCALAPACK`` 88*7f296bb3SBarry Smith - ``MatCreateScaLAPACK()`` 89*7f296bb3SBarry Smith - ScaLAPACK 90*7f296bb3SBarry Smith - Block cyclic storage 91*7f296bb3SBarry Smith * - 92*7f296bb3SBarry Smith - ``MATDENSECUDA`` 93*7f296bb3SBarry Smith - ``MatCreateDenseCUDA()`` 94*7f296bb3SBarry Smith - 95*7f296bb3SBarry Smith - NVIDIA GPU Acceleration 96*7f296bb3SBarry Smith * - ``MatMult()`` via finite differencing of a function 97*7f296bb3SBarry Smith - ``MATMFFD``, see :any:`sec_nlmatrixfree` 98*7f296bb3SBarry Smith - ``MatCreateMFFD()``, see also ``MatCreateSNESMF()`` 99*7f296bb3SBarry Smith - 100*7f296bb3SBarry Smith - Provides only matrix-vector products 101*7f296bb3SBarry Smith * - User-provided operations 102*7f296bb3SBarry Smith - ``MATSHELL``, see also :any:`sec_matrixfree` 103*7f296bb3SBarry Smith - ``MatCreateShell()`` 104*7f296bb3SBarry Smith - 105*7f296bb3SBarry Smith - 106*7f296bb3SBarry Smith * - Low-rank updates 107*7f296bb3SBarry Smith - ``MATLMVM``, ``MATLMVMDFP``, ``MATLMVMBFGS``, ``MATLMVMSR1``, ... 108*7f296bb3SBarry Smith - ``MatCreateLMVM()`` 109*7f296bb3SBarry Smith - 110*7f296bb3SBarry Smith - limited-memory BFGS style matrices 111*7f296bb3SBarry Smith * - 112*7f296bb3SBarry Smith - ``MATLRC`` 113*7f296bb3SBarry Smith - ``MatCreateLRC()`` 114*7f296bb3SBarry Smith - 115*7f296bb3SBarry Smith - :math:`A + UCV^T` 116*7f296bb3SBarry Smith * - FFT 117*7f296bb3SBarry Smith - ``MATFFTW`` 118*7f296bb3SBarry Smith - ``MatCreateFFT()`` 119*7f296bb3SBarry Smith - FFTW 120*7f296bb3SBarry Smith - 121*7f296bb3SBarry Smith * - 122*7f296bb3SBarry Smith - ``MATSEQCUFFT`` 123*7f296bb3SBarry Smith - ``MatCreateSeqCUFFT()`` 124*7f296bb3SBarry Smith - NVIDIA's CuFFT 125*7f296bb3SBarry Smith - NVIDIA GPUs 126*7f296bb3SBarry Smith * - Hierarchical 127*7f296bb3SBarry Smith - ``MATHTOOL`` 128*7f296bb3SBarry Smith - ``MatCreateHtoolFromKernel()`` 129*7f296bb3SBarry Smith - Htool 130*7f296bb3SBarry Smith - 131*7f296bb3SBarry Smith * - 132*7f296bb3SBarry Smith - ``MATH2OPUS`` 133*7f296bb3SBarry Smith - ``MatCreateH2OpusFromMat()`` 134*7f296bb3SBarry Smith - :math:`\mathcal H^2` matrices 135*7f296bb3SBarry Smith - 136*7f296bb3SBarry Smith * - Transpose, :math:`A^T`, virtual 137*7f296bb3SBarry Smith - ``MATTRANSPOSEVIRTUAL`` 138*7f296bb3SBarry Smith - ``MatCreateTranspose()`` 139*7f296bb3SBarry Smith - 140*7f296bb3SBarry Smith - 141*7f296bb3SBarry Smith * - Hermitian Transpose, :math:`A^H`, virtual 142*7f296bb3SBarry Smith - ``MATHERMITIANTRANSPOSEVIRTUAL`` 143*7f296bb3SBarry Smith - ``MatCreateHermitianTranspose()`` 144*7f296bb3SBarry Smith - 145*7f296bb3SBarry Smith - 146*7f296bb3SBarry Smith * - Normal, :math:`A^TA`, virtual 147*7f296bb3SBarry Smith - ``MATNORMAL`` 148*7f296bb3SBarry Smith - ``MatCreateNormal()`` 149*7f296bb3SBarry Smith - 150*7f296bb3SBarry Smith - 151*7f296bb3SBarry Smith * - Hermitian Normal, :math:`A^HA`, virtual 152*7f296bb3SBarry Smith - ``MATNORMALHERMITIAN`` 153*7f296bb3SBarry Smith - ``MatCreateNormalHermitian()`` 154*7f296bb3SBarry Smith - 155*7f296bb3SBarry Smith - 156*7f296bb3SBarry Smith * - Schur complement 157*7f296bb3SBarry Smith - ``MATSCHURCOMPLEMENT`` 158*7f296bb3SBarry Smith - ``MatCreateSchurComplement()``, ``MatGetSchurComplement()`` 159*7f296bb3SBarry Smith - 160*7f296bb3SBarry Smith - 161*7f296bb3SBarry Smith * - Sub-matrix, virtual 162*7f296bb3SBarry Smith - ``MATSUBMATRIX`` 163*7f296bb3SBarry Smith - ``MatCreateSubMatrixVirtual()`` 164*7f296bb3SBarry Smith - 165*7f296bb3SBarry Smith - Provides ``MatMult()`` and similar operations 166*7f296bb3SBarry Smith * - 167*7f296bb3SBarry Smith - ``MATLOCALREF`` 168*7f296bb3SBarry Smith - ``MatCreateLocalRef()`` 169*7f296bb3SBarry Smith - 170*7f296bb3SBarry Smith - For use in matrix assembly 171*7f296bb3SBarry Smith * - Nested matrix 172*7f296bb3SBarry Smith - ``MATNEST`` 173*7f296bb3SBarry Smith - ``MatCreateNest()`` 174*7f296bb3SBarry Smith - 175*7f296bb3SBarry Smith - 176*7f296bb3SBarry Smith * - Scatter operator 177*7f296bb3SBarry Smith - ``MATSCATTER`` 178*7f296bb3SBarry Smith - ``MatCreateScatter()`` 179*7f296bb3SBarry Smith - 180*7f296bb3SBarry Smith - 181*7f296bb3SBarry Smith * - Centering operator 182*7f296bb3SBarry Smith - ``MATCENTERING`` 183*7f296bb3SBarry Smith - ``MatCreateCentering()`` 184*7f296bb3SBarry Smith - 185*7f296bb3SBarry Smith - :math:`I - \frac{1}{N}e e^T`, :math:`e=[1,\dots,1]^T` 186*7f296bb3SBarry Smith * - Block matrix 187*7f296bb3SBarry Smith - ``MATBLOCKMAT`` 188*7f296bb3SBarry Smith - ``MatCreateBlockMat()`` 189*7f296bb3SBarry Smith - 190*7f296bb3SBarry Smith - 191*7f296bb3SBarry Smith 192*7f296bb3SBarry Smith``` 193