Skip to main content
`Ctrl`+`K`

# MatSolverTypeGet

Gets the function that creates the factor matrix if it exist

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatSolverTypeGet(MatSolverType type, MatType mtype, MatFactorType ftype, PetscBool *foundtype, PetscBool *foundmtype, PetscErrorCode (**createfactor)(Mat A, MatFactorType ftype, Mat *B))

## Input Parameters

- type - name of the package, for example `petsc` or `superlu`, if this is ‘NULL’, then the first result that satisfies the other criteria is returned

- ftype - the type of factorization supported by the type

- mtype - the matrix type that works with this type

## Output Parameters

- foundtype - `PETSC_TRUE` if the type was registered

- foundmtype - `PETSC_TRUE` if the type supports the requested mtype

- createfactor - routine that will create the factored matrix ready to be used or `NULL` if not found

## Calling sequence of `createfactor`

- A - the matrix providing the factor matrix

- ftype - the `MatFactorType` of the factor requested

- B - the new factor matrix that responds to MatXXFactorSymbolic,Numeric() functions, such as `MatLUFactorSymbolic()`

## Note

When `type` is `NULL` the available functions are searched for based on the order of the calls to `MatSolverTypeRegister()` in `MatInitializePackage()`. Since different PETSc configurations may have different external solvers, seemingly identical runs with different PETSc configurations may use a different solver. For example if one configuration had `--download-mumps` while a different one had `--download-superlu_dist`.

## See Also

Matrices, `Mat`, `MatFactorType`, `MatType`, `MatCopy()`, `MatDuplicate()`, `MatGetFactorAvailable()`, `MatSolverTypeRegister()`, `MatGetFactor()`, `MatInitializePackage()`

## Level

developer

## Location

src/mat/interface/matrix.c

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