petsc-3.14.6 2021-03-30
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/tutorials/ex9.c.html

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