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