1 2 #if !defined(__MPISBAIJ_H) 3 #define __MPISBAIJ_H 4 #include <../src/mat/impls/baij/seq/baij.h> 5 #include <../src/mat/impls/sbaij/seq/sbaij.h> 6 #include <../src/mat/impls/baij/mpi/mpibaij.h> 7 8 typedef struct { 9 MPIBAIJHEADER; 10 Vec slvec0, slvec1; /* parallel vectors */ 11 Vec slvec0b, slvec1a, slvec1b; /* seq vectors: local partition of slvec0 and slvec1 */ 12 VecScatter sMvctx; /* scatter context for vector used for reducing communication */ 13 14 Vec diag; /* used in MatSOR_MPISBAIJ() with Eisenstat */ 15 Vec bb1, xx1; 16 17 /* these are used in MatSetValues() as tmp space before passing to the stasher */ 18 PetscInt n_loc, *in_loc; /* nloc is length of in_loc and v_loc */ 19 MatScalar *v_loc; 20 } Mat_MPISBAIJ; 21 22 PETSC_INTERN PetscErrorCode MatLoad_MPISBAIJ(Mat, PetscViewer); 23 PETSC_INTERN PetscErrorCode MatMult_MPISBAIJ_Hermitian(Mat, Vec, Vec); 24 25 PETSC_INTERN PetscErrorCode MatSetUpMultiply_MPISBAIJ(Mat); 26 PETSC_INTERN PetscErrorCode MatDisAssemble_MPISBAIJ(Mat); 27 PETSC_INTERN PetscErrorCode MatIncreaseOverlap_MPISBAIJ(Mat, PetscInt, IS[], PetscInt); 28 PETSC_INTERN PetscErrorCode MatGetRowMaxAbs_MPISBAIJ(Mat, Vec, PetscInt[]); 29 PETSC_INTERN PetscErrorCode MatSOR_MPISBAIJ(Mat, Vec, PetscReal, MatSORType, PetscReal, PetscInt, PetscInt, Vec); 30 31 #endif 32