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