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