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