1: #if !defined(_MHYPRE_H) 2: #define _MHYPRE_H 4: #include <petscsys.h> 5: #include <../src/vec/vec/impls/hypre/vhyp.h> 6: #include <HYPRE_IJ_mv.h> 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; 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; 25: #endif