xref: /petsc/src/mat/impls/hypre/mhypre.h (revision a32e9c995d3c9cc14233efbb30d372fdb63ce962)
16524c165SJacob Faibussowitsch #ifndef _MHYPRE_H
263c07aadSStefano Zampini #define _MHYPRE_H
363c07aadSStefano Zampini 
458968eb6SStefano Zampini #include <petscsys.h>
5*a32e9c99SJunchao Zhang #include <petscmat.h>
66ea7df73SStefano Zampini #include <../src/vec/vec/impls/hypre/vhyp.h>
763c07aadSStefano Zampini #include <HYPRE_IJ_mv.h>
863c07aadSStefano Zampini 
963c07aadSStefano Zampini typedef struct {
1063c07aadSStefano Zampini   HYPRE_IJMatrix    ij;
116ea7df73SStefano Zampini   VecHYPRE_IJVector x;
126ea7df73SStefano Zampini   VecHYPRE_IJVector b;
1363c07aadSStefano Zampini   MPI_Comm          comm;
14978814f1SStefano Zampini   PetscBool         inner_free;
155fbaff96SJunchao Zhang 
16651b1cf9SStefano Zampini   /* MatGetArray_HYPRE */
17651b1cf9SStefano Zampini   void     *array;
18651b1cf9SStefano Zampini   PetscInt  array_size;
19651b1cf9SStefano Zampini   PetscBool array_available;
20651b1cf9SStefano Zampini 
21651b1cf9SStefano Zampini   /* MatSetOption_ support */
22651b1cf9SStefano Zampini   PetscBool donotstash;
23651b1cf9SStefano Zampini 
2406977982Sstefanozampini   /* An agent matrix which does the MatSetValuesCOO() job for IJMatrix */
2506977982Sstefanozampini   Mat       cooMat;
2606977982Sstefanozampini   PetscBool cooMatAttached;
27*a32e9c99SJunchao Zhang 
28*a32e9c99SJunchao Zhang   /* helper array storing row ids on device, used in MatZeroRows */
29*a32e9c99SJunchao Zhang   PetscInt *rows_d;
3063c07aadSStefano Zampini } Mat_HYPRE;
3163c07aadSStefano Zampini 
32*a32e9c99SJunchao Zhang PETSC_INTERN PetscErrorCode MatZeroRows_CUDA(PetscInt n, const PetscInt *rows, const HYPRE_Int *i, const HYPRE_Int *j, HYPRE_Complex *a, HYPRE_Complex diag);
33*a32e9c99SJunchao Zhang PETSC_INTERN PetscErrorCode MatZeroRows_HIP(PetscInt n, const PetscInt *rows, const HYPRE_Int *i, const HYPRE_Int *j, HYPRE_Complex *a, HYPRE_Complex diag);
34*a32e9c99SJunchao Zhang PETSC_INTERN PetscErrorCode MatZeroRows_Kokkos(PetscInt n, const PetscInt *rows, const HYPRE_Int *i, const HYPRE_Int *j, HYPRE_Complex *a, HYPRE_Complex diag);
35*a32e9c99SJunchao Zhang 
3663c07aadSStefano Zampini #endif
37