xref: /petsc/src/mat/impls/kaij/kaij.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
1*a4963045SJacob Faibussowitsch #pragma once
249bd79ccSDebojyoti Ghosh 
349bd79ccSDebojyoti Ghosh #include <../src/mat/impls/aij/mpi/mpiaij.h>
449bd79ccSDebojyoti Ghosh 
549bd79ccSDebojyoti Ghosh #define KAIJHEADER \
649bd79ccSDebojyoti Ghosh   PetscInt     p, q; \
749bd79ccSDebojyoti Ghosh   Mat          AIJ; \
849bd79ccSDebojyoti Ghosh   PetscScalar *S; \
949bd79ccSDebojyoti Ghosh   PetscScalar *T; \
1049bd79ccSDebojyoti Ghosh   PetscScalar *ibdiag; \
1149bd79ccSDebojyoti Ghosh   PetscBool    ibdiagvalid, getrowactive, isTI; \
1249bd79ccSDebojyoti Ghosh   struct { \
1349bd79ccSDebojyoti Ghosh     PetscBool    setup; \
1449bd79ccSDebojyoti Ghosh     PetscScalar *w, *work, *t, *arr, *y; \
1549bd79ccSDebojyoti Ghosh   } sor;
1649bd79ccSDebojyoti Ghosh 
1749bd79ccSDebojyoti Ghosh typedef struct {
1826da3151SRichard Tran Mills   KAIJHEADER
1949bd79ccSDebojyoti Ghosh } Mat_SeqKAIJ;
2049bd79ccSDebojyoti Ghosh 
2149bd79ccSDebojyoti Ghosh typedef struct {
2226da3151SRichard Tran Mills   KAIJHEADER
231556b0b0SRichard Tran Mills   Mat              OAIJ;  /* sequential KAIJ matrix that corresponds to off-diagonal matrix entries (diagonal entries are stored in 'AIJ') */
241556b0b0SRichard Tran Mills   Mat              A;     /* AIJ matrix describing the blockwise action of the KAIJ matrix; compare with struct member 'AIJ' in sequential case */
2549bd79ccSDebojyoti Ghosh   VecScatter       ctx;   /* update ghost points for parallel case */
2649bd79ccSDebojyoti Ghosh   Vec              w;     /* work space for ghost values for parallel case */
27e0e5a793SRichard Tran Mills   PetscObjectState state; /* state of the matrix A when AIJ and OIJ were last updated */
2849bd79ccSDebojyoti Ghosh } Mat_MPIKAIJ;
29