:orphan: # 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 ```none 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 [](ch_matrices), `Mat`, `MatDestroy()`, `MatMult()`, `MatCompositeAddMat()`, `MatCompositeGetMat()`, `MatCompositeMerge()`, `MatCompositeSetType()`, `MATCOMPOSITE`, `MatCompositeType` ## Level advanced ## Location src/mat/impls/composite/mcomposite.c ## Examples src/mat/tutorials/ex9.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/impls/composite/mcomposite.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)