#include "petscmat.h" PetscErrorCode MatCreateComposite(MPI_Comm comm,PetscInt nmat,const Mat *mats,Mat *mat)Collective
comm | - MPI communicator | |
nmat | - number of matrices to put in | |
mats | - the matrices |
mat | - the matrix |
-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 |
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]