xref: /petsc/src/mat/impls/kaij/kaij.h (revision e0e5a7938183be6b93764100cbef6621004a033e)
149bd79ccSDebojyoti Ghosh #if !defined(_KAIJ_H)
249bd79ccSDebojyoti Ghosh #define _KAIJ_H
349bd79ccSDebojyoti Ghosh 
449bd79ccSDebojyoti Ghosh #include <../src/mat/impls/aij/mpi/mpiaij.h>
549bd79ccSDebojyoti Ghosh 
649bd79ccSDebojyoti Ghosh #define KAIJHEADER                                \
749bd79ccSDebojyoti Ghosh   PetscInt    p,q;                                \
849bd79ccSDebojyoti Ghosh   Mat         AIJ;                                \
949bd79ccSDebojyoti Ghosh   PetscScalar *S;                                 \
1049bd79ccSDebojyoti Ghosh   PetscScalar *T;                                 \
1149bd79ccSDebojyoti Ghosh   PetscScalar *ibdiag;                            \
1249bd79ccSDebojyoti Ghosh   PetscBool   ibdiagvalid,getrowactive,isTI;      \
1349bd79ccSDebojyoti Ghosh   struct {                                        \
1449bd79ccSDebojyoti Ghosh     PetscBool setup;                              \
1549bd79ccSDebojyoti Ghosh     PetscScalar *w,*work,*t,*arr,*y;              \
1649bd79ccSDebojyoti Ghosh   } sor;
1749bd79ccSDebojyoti Ghosh 
1849bd79ccSDebojyoti Ghosh typedef struct {
1926da3151SRichard Tran Mills   KAIJHEADER
2049bd79ccSDebojyoti Ghosh } Mat_SeqKAIJ;
2149bd79ccSDebojyoti Ghosh 
2249bd79ccSDebojyoti Ghosh typedef struct {
2326da3151SRichard Tran Mills   KAIJHEADER
24*e0e5a793SRichard Tran Mills   Mat              OAIJ;  /* sequential KAIJ matrix that corresponds to off-diagonal matrix entries */
2549bd79ccSDebojyoti Ghosh   Mat              A;
2649bd79ccSDebojyoti Ghosh   VecScatter       ctx;   /* update ghost points for parallel case */
2749bd79ccSDebojyoti Ghosh   Vec              w;     /* work space for ghost values for parallel case */
28*e0e5a793SRichard Tran Mills   PetscObjectState state; /* state of the matrix A when AIJ and OIJ were last updated */
2949bd79ccSDebojyoti Ghosh } Mat_MPIKAIJ;
3049bd79ccSDebojyoti Ghosh 
3149bd79ccSDebojyoti Ghosh #endif
32