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*1556b0b0SRichard Tran Mills Mat OAIJ; /* sequential KAIJ matrix that corresponds to off-diagonal matrix entries (diagonal entries are stored in 'AIJ') */ 25*1556b0b0SRichard Tran Mills Mat A; /* AIJ matrix describing the blockwise action of the KAIJ matrix; compare with struct member 'AIJ' in sequential case */ 2649bd79ccSDebojyoti Ghosh VecScatter ctx; /* update ghost points for parallel case */ 2749bd79ccSDebojyoti Ghosh Vec w; /* work space for ghost values for parallel case */ 28e0e5a793SRichard 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