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