# MatConvert#

Converts a matrix to another matrix, either of the same or different type.

## Synopsis#

#include "petscmat.h"
PetscErrorCode MatConvert(Mat mat, MatType newtype, MatReuse reuse, Mat *M)


Collective

## Input Parameters#

• mat - the matrix

• newtype - new matrix type. Use MATSAME to create a new matrix of the same type as the original matrix.

• reuse - denotes if the destination matrix is to be created or reused. Use MAT_INPLACE_MATRIX for inplace conversion (that is when you want the input mat to be changed to contain the matrix in the new format), otherwise use MAT_INITIAL_MATRIX or MAT_REUSE_MATRIX (can only be used after the first call was made with MAT_INITIAL_MATRIX, causes the matrix space in M to be reused).

## Output Parameter#

• M - pointer to place new matrix

## Notes#

MatConvert() first creates a new matrix and then copies the data from the first matrix. A related routine is MatCopy(), which copies the matrix entries of one matrix to another already existing matrix context.

Cannot be used to convert a sequential matrix to parallel or parallel to sequential, the MPI communicator of the generated matrix is always the same as the communicator of the input matrix.

Matrices, Mat, MatCopy(), MatDuplicate(), MAT_INITIAL_MATRIX, MAT_REUSE_MATRIX, MAT_INPLACE_MATRIX

intermediate

## Location#

src/mat/interface/matrix.c