Skip to main content
`Ctrl`+`K`

# MatInvertBlockDiagonal

Inverts the block diagonal entries.

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatInvertBlockDiagonal(Mat mat, const PetscScalar **values)

Collective; No Fortran Support

## Input Parameter

- mat - the matrix

## Output Parameter

- values - the block inverses in column major order (FORTRAN-like)

## Notes

The size of the blocks is determined by the block size of the matrix.

The blocks never overlap between two MPI processes, use `MatInvertVariableBlockEnvelope()` for that case

The blocks all have the same size, use `MatInvertVariableBlockDiagonal()` for variable block size

## See Also

Matrices, `Mat`, `MatInvertVariableBlockEnvelope()`, `MatInvertBlockDiagonalMat()`

## Level

advanced

## Location

src/mat/interface/matrix.c

## Examples

src/ksp/ksp/tutorials/ex74.c

## Implementations

MatInvertBlockDiagonal_MPIAIJ() in src/mat/impls/aij/mpi/mpiaij.c
MatInvertBlockDiagonal_SeqAIJ() in src/mat/impls/aij/seq/aij.c
MatInvertBlockDiagonal_MPIBAIJ() in src/mat/impls/baij/mpi/mpibaij.c
MatInvertBlockDiagonal_SeqBAIJ() in src/mat/impls/baij/seq/baij.c
MatInvertBlockDiagonal_IS() in src/mat/impls/is/matis.c
MatInvertBlockDiagonal_SeqKAIJ() in src/mat/impls/kaij/kaij.c
MatInvertBlockDiagonal_MPIKAIJ() in src/mat/impls/kaij/kaij.c
MatInvertBlockDiagonal_MPISELL() in src/mat/impls/sell/mpi/mpisell.c

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