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

# 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

### Notes

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

MatDestroy(), MatMult(), MatCompositeAddMat(), MatCompositeGetMat(), MatCompositeMerge(), MatCompositeSetType(), MATCOMPOSITE

### Level

advanced

### Location

src/mat/impls/composite/mcomposite.c

### Examples

src/mat/examples/tutorials/ex9.c.html
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages