Skip to main content
`Ctrl`+`K`

# MatGetLocalSubMatrix

Gets a reference to a submatrix specified in local numbering

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatGetLocalSubMatrix(Mat mat, IS isrow, IS iscol, Mat *submat)

Not Collective

## Input Parameters

- mat - matrix to extract local submatrix from

- isrow - local row indices for submatrix

- iscol - local column indices for submatrix

## Output Parameter

- submat - the submatrix

## Notes

`submat` should be disposed of with `MatRestoreLocalSubMatrix()`.

Depending on the format of `mat`, the returned `submat` may not implement `MatMult()`. Its communicator may be the same as `mat`, it may be `PETSC_COMM_SELF`, or some other sub-communictor of `mat`’s.

`submat` always implements `MatSetValuesLocal()`. If `isrow` and `iscol` have the same block size, then `MatSetValuesBlockedLocal()` will also be implemented.

`mat` must have had a `ISLocalToGlobalMapping` provided to it with `MatSetLocalToGlobalMapping()`. Matrices obtained with `DMCreateMatrix()` generally already have the local to global mapping provided.

## See Also

Matrices, `Mat`, `MatRestoreLocalSubMatrix()`, `MatCreateLocalRef()`, `MatSetLocalToGlobalMapping()`

## Level

intermediate

## Location

src/mat/interface/matrix.c

## Examples

src/ksp/ksp/tutorials/ex85.c
src/ts/tutorials/ex14.c
src/snes/tutorials/ex28.c

## Implementations

MatGetLocalSubMatrix_IS() in src/mat/impls/is/matis.c
MatGetLocalSubMatrix_Nest() in src/mat/impls/nest/matnest.c

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