:orphan:
# MatCreateNest
Creates a new `MATNEST` matrix containing several nested submatrices, each stored separately
## Synopsis
```
#include "petscmat.h"
PetscErrorCode MatCreateNest(MPI_Comm comm, PetscInt nr, const IS is_row[], PetscInt nc, const IS is_col[], const Mat a[], Mat *B)
```
Collective
## Input Parameters
- ***comm -*** Communicator for the new `MATNEST`
- ***nr -*** number of nested row blocks
- ***is_row -*** index sets for each nested row block, or `NULL` to make contiguous
- ***nc -*** number of nested column blocks
- ***is_col -*** index sets for each nested column block, or `NULL` to make contiguous
- ***a -*** row-aligned array of nr*nc submatrices, empty submatrices can be passed using `NULL`
## Output Parameter
- ***B -*** new matrix
## See Also
[](ch_matrices), `Mat`, `MATNEST`, `MatCreate()`, `VecCreateNest()`, `DMCreateMatrix()`, `MatNestSetSubMat()`,
`MatNestGetSubMat()`, `MatNestGetLocalISs()`, `MatNestGetSize()`,
`MatNestGetISs()`, `MatNestSetSubMats()`, `MatNestGetSubMats()`
## Level
advanced
## Location
src/mat/impls/nest/matnest.c
## Examples
src/ksp/ksp/tutorials/ex27.c
src/ksp/ksp/tutorials/ex81.c
src/snes/tutorials/ex70.c
src/snes/tutorials/ex73f90t.F90
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/impls/nest/matnest.c)
[Index of all Mat routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)