Skip to main content
`Ctrl`+`K`

# MatLUFactorSymbolic

Performs symbolic LU factorization of matrix. Call this routine before calling `MatLUFactorNumeric()` and after `MatGetFactor()`.

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatLUFactorSymbolic(Mat fact, Mat mat, IS row, IS col, const MatFactorInfo *info)

Collective

## Input Parameters

- fact - the factor matrix obtained with `MatGetFactor()`

- mat - the matrix

- row - the row permutation

- col - the column permutation

- info - options for factorization, includes

              fill - expected fill as ratio of original fill. Run with the option -info to determine an optimal value to use
              dtcol - pivot tolerance (0 no pivot, 1 full column pivoting)

## Notes

See Matrix Factorization for additional information about factorizations

Most users should employ the simplified `KSP` interface for linear solvers instead of working directly with matrix algebra routines such as this. See, e.g., `KSPCreate()`.

## Developer Note

The Fortran interface is not autogenerated as the interface definition cannot be generated correctly [due to `MatFactorInfo`]

## See Also

Matrices, `Mat`, Matrix Factorization, `MatGetFactor()`, `MatLUFactor()`, `MatLUFactorNumeric()`, `MatCholeskyFactor()`, `MatFactorInfo`, `MatFactorInfoInitialize()`

## Level

developer

## Location

src/mat/interface/matrix.c

## Examples

src/ksp/ksp/tutorials/ex52.c

## Implementations

MatLUFactorSymbolic_AIJMUMPS() in src/mat/impls/aij/mpi/mumps/mumps.c
MatLUFactorSymbolic_BAIJMUMPS() in src/mat/impls/aij/mpi/mumps/mumps.c
MatLUFactorSymbolic_AIJPASTIX() in src/mat/impls/aij/mpi/pastix/pastix.c
MatLUFactorSymbolic_STRUMPACK() in src/mat/impls/aij/mpi/strumpack/strumpack.c
MatLUFactorSymbolic_SuperLU_DIST() in src/mat/impls/aij/mpi/superlu_dist/superlu_dist.c
MatLUFactorSymbolic_SeqAIJ() in src/mat/impls/aij/seq/aijfact.c
MatLUFactorSymbolic_Essl() in src/mat/impls/aij/seq/essl/essl.c
MatLUFactorSymbolic_KLU() in src/mat/impls/aij/seq/klu/klu.c
MatLUFactorSymbolic_SeqAIJKokkos() in src/mat/impls/aij/seq/kokkos/aijkok.kokkos.cxx
MatLUFactorSymbolic_LUSOL() in src/mat/impls/aij/seq/lusol/lusol.c
MatLUFactorSymbolic_Matlab() in src/mat/impls/aij/seq/matlab/aijmatlab.c
MatLUFactorSymbolic_SeqAIJCUSPARSE() in src/mat/impls/aij/seq/seqcusparse/aijcusparse.cu
MatLUFactorSymbolic_SeqAIJHIPSPARSE() in src/mat/impls/aij/seq/seqhipsparse/aijhipsparse.hip.c
MatLUFactorSymbolic_SuperLU() in src/mat/impls/aij/seq/superlu/superlu.c
MatLUFactorSymbolic_UMFPACK() in src/mat/impls/aij/seq/umfpack/umfpack.c
MatLUFactorSymbolic_SeqBAIJ() in src/mat/impls/baij/seq/baijfact3.c
MatLUFactorSymbolic_SeqDense() in src/mat/impls/dense/seq/dense.c
MatLUFactorSymbolic_Elemental() in src/mat/impls/elemental/matelem.cxx
MatLUFactorSymbolic_Htool() in src/mat/impls/htool/htool.cxx
MatLUFactorSymbolic_ScaLAPACK() in src/mat/impls/scalapack/matscalapack.c
MatLUFactorSymbolic_HT() in src/mat/impls/transpose/htransm.c
MatLUFactorSymbolic_Transpose() in src/mat/impls/transpose/transm.c

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages