MatCreateComposite#
Creates a matrix as the sum or product of one or more matrices
Synopsis#
#include "petscmat.h"
PetscErrorCode MatCreateComposite(MPI_Comm comm, PetscInt nmat, const Mat *mats, Mat *mat)
Collective
Input Parameters#
comm - MPI communicator
nmat - number of matrices to put in
mats - the matrices
Output Parameter#
mat - the matrix
Options Database Keys#
-mat_composite_merge - merge in
MatAssemblyEnd()
-mat_composite_merge_mvctx - merge Mvctx of component matrices to optimize communication in
MatMult()
for ADDITIVE matrices-mat_composite_merge_type - set merge direction
Note#
Alternative construction
MatCreate(comm,&mat);
MatSetSizes(mat,m,n,M,N);
MatSetType(mat,MATCOMPOSITE);
MatCompositeAddMat(mat,mats[0]);
....
MatCompositeAddMat(mat,mats[nmat-1]);
MatAssemblyBegin(mat,MAT_FINAL_ASSEMBLY);
MatAssemblyEnd(mat,MAT_FINAL_ASSEMBLY);
For the multiplicative form the product is mat[nmat-1]mat[nmat-2]….*mat[0]
See Also#
Matrices, Mat
, MatDestroy()
, MatMult()
, MatCompositeAddMat()
, MatCompositeGetMat()
, MatCompositeMerge()
, MatCompositeSetType()
,
MATCOMPOSITE
, MatCompositeType
Level#
advanced
Location#
Examples#
src/mat/tutorials/ex9.c
src/ksp/pc/tutorials/ex4.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages