xref: /petsc/src/mat/impls/sbaij/mpi/mpisbaij.h (revision 58d68138c660dfb4e9f5b03334792cd4f2ffd7cc)
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