xref: /petsc/src/mat/impls/hypre/mhypre.h (revision 651b1cf95e744fa8e8eb4540e0fb634cee609368)
16524c165SJacob 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;
145fbaff96SJunchao Zhang 
15*651b1cf9SStefano Zampini   /* MatGetArray_HYPRE */
16*651b1cf9SStefano Zampini   void     *array;
17*651b1cf9SStefano Zampini   PetscInt  array_size;
18*651b1cf9SStefano Zampini   PetscBool array_available;
19*651b1cf9SStefano Zampini 
20*651b1cf9SStefano Zampini   /* MatSetOption_ support */
21*651b1cf9SStefano Zampini   PetscBool donotstash;
22*651b1cf9SStefano Zampini 
23*651b1cf9SStefano Zampini   /* COO */
245fbaff96SJunchao Zhang   Mat                  cooMat;        /* An agent matrix which does the MatSetValuesCOO() job for IJMatrix */
255fbaff96SJunchao Zhang   HYPRE_Int           *diagJ, *offdJ; /* Allocated by hypre, but we take the ownership away, so we need to free them on our own */
265fbaff96SJunchao Zhang   PetscInt            *diag;          /* Diagonal pointers (i.e., SeqAIJ->diag[]) on device, allocated by hypre_TAlloc(). */
275fbaff96SJunchao Zhang   HYPRE_MemoryLocation memType;
2863c07aadSStefano Zampini } Mat_HYPRE;
2963c07aadSStefano Zampini 
3063c07aadSStefano Zampini #endif
31