Actual source code: kaij.h
1: #pragma once
3: #include <../src/mat/impls/aij/mpi/mpiaij.h>
5: #define KAIJHEADER \
6: PetscInt p, q; \
7: Mat AIJ; \
8: PetscScalar *S; \
9: PetscScalar *T; \
10: PetscScalar *ibdiag; \
11: PetscBool ibdiagvalid, getrowactive, isTI; \
12: struct { \
13: PetscBool setup; \
14: PetscScalar *w, *work, *t, *arr, *y; \
15: } sor;
17: typedef struct {
18: KAIJHEADER
19: } Mat_SeqKAIJ;
21: typedef struct {
22: KAIJHEADER
23: Mat OAIJ; /* sequential KAIJ matrix that corresponds to off-diagonal matrix entries (diagonal entries are stored in 'AIJ') */
24: Mat A; /* AIJ matrix describing the blockwise action of the KAIJ matrix; compare with struct member 'AIJ' in sequential case */
25: VecScatter ctx; /* update ghost points for parallel case */
26: Vec w; /* work space for ghost values for parallel case */
27: PetscObjectState state; /* state of the matrix A when AIJ and OIJ were last updated */
28: } Mat_MPIKAIJ;