1: #pragma once 2: #include <../src/mat/impls/baij/seq/baij.h> 3: #include <../src/mat/impls/sbaij/seq/sbaij.h> 4: #include <../src/mat/impls/baij/mpi/mpibaij.h> 6: typedef struct { 7: MPIBAIJHEADER; 8: Vec slvec0, slvec1; /* parallel vectors */ 9: Vec slvec0b, slvec1a, slvec1b; /* seq vectors: local partition of slvec0 and slvec1 */ 10: VecScatter sMvctx; /* scatter context for vector used for reducing communication */ 12: Vec diag; /* used in MatSOR_MPISBAIJ() with Eisenstat */ 13: Vec bb1, xx1; 15: /* these are used in MatSetValues() as tmp space before passing to the stasher */ 16: PetscInt n_loc, *in_loc; /* nloc is length of in_loc and v_loc */ 17: MatScalar *v_loc; 18: } Mat_MPISBAIJ; 20: PETSC_INTERN PetscErrorCode MatSetUpMultiply_MPISBAIJ(Mat); 21: PETSC_INTERN PetscErrorCode MatDisAssemble_MPISBAIJ(Mat); 22: PETSC_INTERN PetscErrorCode MatIncreaseOverlap_MPISBAIJ(Mat, PetscInt, IS[], PetscInt);