xref: /petsc/src/mat/impls/kaij/kaij.h (revision 8ebe3e4e9e00d86ece2e9fcd0cc84910b0ad437c)
1 #if !defined(_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