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#

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

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