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#

src/mat/impls/composite/mcomposite.c

Examples#

src/mat/tutorials/ex9.c


Edit on GitLab

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