Skip to main content
`Ctrl`+`K`

# MatCreateRedundantMatrix

Create redundant matrices and put them into processors of subcommunicators.

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatCreateRedundantMatrix(Mat mat, PetscInt nsubcomm, MPI_Comm subcomm, MatReuse reuse, Mat *matredundant)

Collective

## Input Parameters

- mat - the matrix

- nsubcomm - the number of subcommunicators (= number of redundant parallel or sequential matrices)

- subcomm - MPI communicator split from the communicator where mat resides in (or `MPI_COMM_NULL` if nsubcomm is used)

- reuse - either `MAT_INITIAL_MATRIX` or `MAT_REUSE_MATRIX`

## Output Parameter

- matredundant - redundant matrix

## Notes

`MAT_REUSE_MATRIX` can only be used when the nonzero structure of the original matrix has not changed from that last call to `MatCreateRedundantMatrix()`.

This routine creates the duplicated matrices in the subcommunicators; you should NOT create them before calling it.

`PetscSubcommCreate()` can be used to manage the creation of the subcomm but need not be.

## See Also

Matrices, `Mat`, `MatDestroy()`, `PetscSubcommCreate()`, `PetscSubcomm`

## Level

advanced

## Location

src/mat/interface/matrix.c

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