Actual source code: kaij.h

  1: #if !defined(_KAIJ_H)
  2: #define _KAIJ_H

  4: #include <../src/mat/impls/aij/mpi/mpiaij.h>

  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;

 18: typedef struct {
 19:   KAIJHEADER
 20: } Mat_SeqKAIJ;

 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;

 31: #endif