xref: /petsc/src/mat/impls/hypre/mhypre.h (revision 58d68138c660dfb4e9f5b03334792cd4f2ffd7cc)
1 #if !defined(_MHYPRE_H)
2 #define _MHYPRE_H
3 
4 #include <petscsys.h>
5 #include <../src/vec/vec/impls/hypre/vhyp.h>
6 #include <HYPRE_IJ_mv.h>
7 
8 typedef struct {
9   HYPRE_IJMatrix    ij;
10   VecHYPRE_IJVector x;
11   VecHYPRE_IJVector b;
12   MPI_Comm          comm;
13   PetscBool         inner_free;
14   void             *array;
15   PetscInt          size;
16   PetscBool         available;
17   PetscBool         sorted_full;
18 
19   Mat                  cooMat;        /* An agent matrix which does the MatSetValuesCOO() job for IJMatrix */
20   HYPRE_Int           *diagJ, *offdJ; /* Allocated by hypre, but we take the ownership away, so we need to free them on our own */
21   PetscInt            *diag;          /* Diagonal pointers (i.e., SeqAIJ->diag[]) on device, allocated by hypre_TAlloc(). */
22   HYPRE_MemoryLocation memType;
23 } Mat_HYPRE;
24 
25 #endif
26