Date: 2022-03-31T04:46:54+00:00

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