xref: /petsc/src/mat/impls/hypre/mhypre.h (revision 6524c165f7ddaf30fd7457737f668f984c8ababf)
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