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;