Skip to main content
`Ctrl`+`K`

# MatGetFactorAvailable

Returns a flag if matrix supports particular type and factor type

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatGetFactorAvailable(Mat mat, MatSolverType type, MatFactorType ftype, PetscBool *flg)

Not Collective

## Input Parameters

- mat - the matrix

- type - name of solver type, for example, `superlu`, `petsc` (to use PETSc’s default)

- ftype - factor type, `MAT_FACTOR_LU`, `MAT_FACTOR_CHOLESKY`, `MAT_FACTOR_ICC`, `MAT_FACTOR_ILU`, `MAT_FACTOR_QR`

## Output Parameter

- flg - PETSC_TRUE if the factorization is available

## Notes

Some PETSc matrix formats have alternative solvers available that are contained in alternative packages such as pastix, superlu, mumps etc.

PETSc must have been ./configure to use the external solver, using the option –download-package

## Developer Note

This should actually be called `MatCreateFactorAvailable()` since `MatGetFactor()` creates a new factor object

## See Also

Matrices, `Mat`, Matrix Factorization, `MatSolverType`, `MatFactorType`, `MatGetFactor()`, `MatCopy()`, `MatDuplicate()`, `MatSolverTypeRegister()`, `MAT_FACTOR_LU`, `MAT_FACTOR_CHOLESKY`, `MAT_FACTOR_ICC`, `MAT_FACTOR_ILU`, `MAT_FACTOR_QR`, `MatSolverTypeGet()`

## Level

intermediate

## Location

src/mat/interface/matrix.c

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