1*6524c165SJacob Faibussowitsch #ifndef _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; 185fbaff96SJunchao Zhang 195fbaff96SJunchao Zhang Mat cooMat; /* An agent matrix which does the MatSetValuesCOO() job for IJMatrix */ 205fbaff96SJunchao Zhang HYPRE_Int *diagJ, *offdJ; /* Allocated by hypre, but we take the ownership away, so we need to free them on our own */ 215fbaff96SJunchao Zhang PetscInt *diag; /* Diagonal pointers (i.e., SeqAIJ->diag[]) on device, allocated by hypre_TAlloc(). */ 225fbaff96SJunchao Zhang HYPRE_MemoryLocation memType; 2363c07aadSStefano Zampini } Mat_HYPRE; 2463c07aadSStefano Zampini 2563c07aadSStefano Zampini #endif 26