Actual source code: mpisbaij.h
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 MatLoad_MPISBAIJ(Mat, PetscViewer);
21: PETSC_INTERN PetscErrorCode MatMult_MPISBAIJ_Hermitian(Mat, Vec, Vec);
23: PETSC_INTERN PetscErrorCode MatSetUpMultiply_MPISBAIJ(Mat);
24: PETSC_INTERN PetscErrorCode MatDisAssemble_MPISBAIJ(Mat);
25: PETSC_INTERN PetscErrorCode MatIncreaseOverlap_MPISBAIJ(Mat, PetscInt, IS[], PetscInt);
26: PETSC_INTERN PetscErrorCode MatGetRowMaxAbs_MPISBAIJ(Mat, Vec, PetscInt[]);
27: PETSC_INTERN PetscErrorCode MatSOR_MPISBAIJ(Mat, Vec, PetscReal, MatSORType, PetscReal, PetscInt, PetscInt, Vec);