xref: /petsc/src/mat/impls/hypre/mhypre.h (revision 5fbaff9626e476811526397c1aa2ba76a87741c8)
163c07aadSStefano Zampini #if !defined(_MHYPRE_H)
263c07aadSStefano Zampini #define _MHYPRE_H
363c07aadSStefano Zampini 
458968eb6SStefano Zampini #include <petscsys.h>
56ea7df73SStefano Zampini #include <../src/vec/vec/impls/hypre/vhyp.h>
663c07aadSStefano Zampini #include <HYPRE_IJ_mv.h>
763c07aadSStefano Zampini 
863c07aadSStefano Zampini typedef struct {
963c07aadSStefano Zampini   HYPRE_IJMatrix    ij;
106ea7df73SStefano Zampini   VecHYPRE_IJVector x;
116ea7df73SStefano Zampini   VecHYPRE_IJVector b;
1263c07aadSStefano Zampini   MPI_Comm          comm;
13978814f1SStefano Zampini   PetscBool         inner_free;
14c69f721fSFande Kong   void              *array;
15c69f721fSFande Kong   PetscInt          size;
16c69f721fSFande Kong   PetscBool         available;
17336664bdSPierre Jolivet   PetscBool         sorted_full;
18*5fbaff96SJunchao Zhang 
19*5fbaff96SJunchao Zhang   Mat               cooMat; /* An agent matrix which does the MatSetValuesCOO() job for IJMatrix */
20*5fbaff96SJunchao Zhang   HYPRE_Int         *diagJ,*offdJ; /* Allocated by hypre, but we take the ownership away, so we need to free them on our own */
21*5fbaff96SJunchao Zhang   PetscInt          *diag; /* Diagonal pointers (i.e., SeqAIJ->diag[]) on device, allocated by hypre_TAlloc(). */
22*5fbaff96SJunchao Zhang   HYPRE_MemoryLocation memType;
2363c07aadSStefano Zampini } Mat_HYPRE;
2463c07aadSStefano Zampini 
2563c07aadSStefano Zampini #endif
26