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