petsc-3.12.4 2020-02-04
Report Typos and Errors

# 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 on Mat

### 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

MatCopy(), MatDuplicate()

### Level

intermediate

### Location

src/mat/interface/matrix.c

### Examples

src/ksp/ksp/examples/tutorials/ex29.c.html
src/ksp/ksp/examples/tutorials/ex34.c.html
src/ksp/ksp/examples/tutorials/ex71.c.html
src/ksp/ksp/examples/tutorials/ex72.c.html
src/ksp/ksp/examples/tutorials/ex6f.F90.html
src/snes/examples/tutorials/ex28.c.html

### Implementations

MatConvert_MPIAIJ_ML in src/ksp/pc/impls/ml/ml.c
MatConvert_MPIAIJ_MPIAIJMKL in src/mat/impls/aij/mpi/aijmkl/mpiaijmkl.c
MatConvert_MPIAIJ_MPIAIJPERM in src/mat/impls/aij/mpi/aijperm/mpiaijperm.c
MatConvert_MPIAIJ_MPIAIJSELL in src/mat/impls/aij/mpi/aijsell/mpiaijsell.c
MatConvert_MPIAIJ_MPIAIJCRL in src/mat/impls/aij/mpi/crl/mcrl.c
MatConvert_SeqAIJMKL_SeqAIJ in src/mat/impls/aij/seq/aijmkl/aijmkl.c
MatConvert_SeqAIJ_SeqAIJMKL in src/mat/impls/aij/seq/aijmkl/aijmkl.c
MatConvert_SeqAIJPERM_SeqAIJ in src/mat/impls/aij/seq/aijperm/aijperm.c
MatConvert_SeqAIJ_SeqAIJPERM in src/mat/impls/aij/seq/aijperm/aijperm.c
MatConvert_SeqAIJSELL_SeqAIJ in src/mat/impls/aij/seq/aijsell/aijsell.c
MatConvert_SeqAIJ_SeqAIJSELL in src/mat/impls/aij/seq/aijsell/aijsell.c
MatConvert_SeqAIJ_SeqAIJCRL in src/mat/impls/aij/seq/crl/crl.c
MatConvert_SeqAIJ_SeqAIJCUSPARSE in src/mat/impls/aij/seq/seqcusparse/aijcusparse.cu
MatConvert_SeqAIJ_SeqAIJViennaCL in src/mat/impls/aij/seq/seqviennacl/aijviennacl.cxx
MatConvert_MPIBAIJ_MPIBAIJMKL in src/mat/impls/baij/mpi/baijmkl/mpibaijmkl.c
MatConvert_MPIBAIJ_MPIAdj in src/mat/impls/baij/mpi/mpibaij.c
MatConvert_MPIBAIJ_MPIAIJ in src/mat/impls/baij/mpi/mpibaij.c
MatConvert_SeqBAIJ_SeqAIJ in src/mat/impls/baij/seq/aijbaij.c
MatConvert_SeqAIJ_SeqBAIJ in src/mat/impls/baij/seq/aijbaij.c
MatConvert_SeqBAIJMKL_SeqBAIJ in src/mat/impls/baij/seq/baijmkl/baijmkl.c
MatConvert_SeqBAIJ_SeqBAIJMKL in src/mat/impls/baij/seq/baijmkl/baijmkl.c
MatConvert_MPIDense_Elemental in src/mat/impls/dense/mpi/mpidense.c
MatConvert_SeqDenseCUDA_SeqDense in src/mat/impls/dense/seq/cuda/densecuda.cu
MatConvert_SeqDense_SeqDenseCUDA in src/mat/impls/dense/seq/cuda/densecuda.cu
MatConvert_SeqAIJ_SeqDense in src/mat/impls/dense/seq/dense.c
MatConvert_SeqDense_SeqAIJ in src/mat/impls/dense/seq/dense.c
MatConvert_SeqDense_Elemental in src/mat/impls/dense/seq/dense.c
MatConvert_Elemental_Dense in src/mat/impls/elemental/matelem.cxx
MatConvert_SeqAIJ_Elemental in src/mat/impls/elemental/matelem.cxx
MatConvert_MPIAIJ_Elemental in src/mat/impls/elemental/matelem.cxx
MatConvert_SeqSBAIJ_Elemental in src/mat/impls/elemental/matelem.cxx
MatConvert_MPISBAIJ_Elemental in src/mat/impls/elemental/matelem.cxx
MatConvert_HYPRE_IS in src/mat/impls/hypre/mhypre.c
MatConvert_AIJ_HYPRE in src/mat/impls/hypre/mhypre.c
MatConvert_HYPRE_AIJ in src/mat/impls/hypre/mhypre.c
MatConvert_SeqXAIJ_IS in src/mat/impls/is/matis.c
MatConvert_XAIJ_IS in src/mat/impls/is/matis.c
MatConvert_Nest_IS in src/mat/impls/is/matis.c
MatConvert_IS_XAIJ in src/mat/impls/is/matis.c
MatConvert_SeqMAIJ_SeqAIJ in src/mat/impls/maij/maij.c
MatConvert_MPIMAIJ_MPIAIJ in src/mat/impls/maij/maij.c
MatConvert_Nest_SeqAIJ_fast in src/mat/impls/nest/matnest.c
MatConvert_Nest_AIJ in src/mat/impls/nest/matnest.c
MatConvert_MPIAIJ_MPISBAIJ in src/mat/impls/sbaij/mpi/mpiaijsbaij.c
MatConvert_MPIBAIJ_MPISBAIJ in src/mat/impls/sbaij/mpi/mpiaijsbaij.c
MatConvert_MPISBAIJ_Basic in src/mat/impls/sbaij/mpi/mpisbaij.c
MatConvert_SeqSBAIJ_SeqAIJ in src/mat/impls/sbaij/seq/aijsbaij.c
MatConvert_SeqAIJ_SeqSBAIJ in src/mat/impls/sbaij/seq/aijsbaij.c
MatConvert_SeqSBAIJ_SeqBAIJ in src/mat/impls/sbaij/seq/aijsbaij.c
MatConvert_SeqBAIJ_SeqSBAIJ in src/mat/impls/sbaij/seq/aijsbaij.c
MatConvert_MPISELL_MPIAIJ in src/mat/impls/sell/mpi/mpisell.c
MatConvert_MPIAIJ_MPISELL in src/mat/impls/sell/mpi/mpisell.c
MatConvert_SeqSELL_SeqAIJ in src/mat/impls/sell/seq/sell.c
MatConvert_SeqAIJ_SeqSELL in src/mat/impls/sell/seq/sell.c
MatConvert_Shell in src/mat/impls/shell/shellcnv.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages