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;