:orphan: # 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. ## See Also [](ch_matrices), `Mat`, `MatCopy()`, `MatDuplicate()`, `MAT_INITIAL_MATRIX`, `MAT_REUSE_MATRIX`, `MAT_INPLACE_MATRIX` ## Level intermediate ## Location src/mat/interface/matrix.c ## Examples src/ksp/ksp/tutorials/ex29.c
src/ksp/ksp/tutorials/ex34.c
src/ksp/ksp/tutorials/ex6f.F90
src/ksp/ksp/tutorials/ex71.c
src/ksp/ksp/tutorials/ex72.c
src/ksp/ksp/tutorials/ex76.c
src/ksp/ksp/tutorials/ex77.c
src/ksp/ksp/tutorials/ex79.c
src/ksp/ksp/tutorials/ex81.c
src/mat/tutorials/ex5cu.cu
src/snes/tutorials/ex28.c
## Implementations MatConvert_Shell in src/mat/impls/shell/shellcnv.c
MatConvert_HT in src/mat/impls/transpose/htransm.c
MatConvert_Transpose in src/mat/impls/transpose/transm.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/interface/matrix.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)