12 #ifndef MFEM_HYPRE_PARCSR_HPP
13 #define MFEM_HYPRE_PARCSR_HPP
15 #include "../config/config.hpp"
22 #include "_hypre_parcsr_mv.h"
28 #if MFEM_HYPRE_VERSION < 21400
30 #define mfem_hypre_TAlloc(type, size) hypre_TAlloc(type, size)
31 #define mfem_hypre_CTAlloc(type, size) hypre_CTAlloc(type, size)
32 #define mfem_hypre_TFree(ptr) hypre_TFree(ptr)
34 #else // MFEM_HYPRE_VERSION >= 21400
36 #define mfem_hypre_TAlloc(type, size) \
37 hypre_TAlloc(type, size, HYPRE_MEMORY_HOST)
38 #define mfem_hypre_CTAlloc(type, size) \
39 hypre_CTAlloc(type, size, HYPRE_MEMORY_HOST)
40 #define mfem_hypre_TFree(ptr) hypre_TFree(ptr, HYPRE_MEMORY_HOST)
72 #endif // #if MFEM_HYPRE_VERSION < 21400
86 void hypre_ParCSRMatrixEliminateAXB(hypre_ParCSRMatrix *A,
87 HYPRE_Int num_rowscols_to_elim,
88 HYPRE_Int *rowscols_to_elim,
95 void hypre_ParCSRMatrixEliminateAAe(hypre_ParCSRMatrix *A,
96 hypre_ParCSRMatrix **Ae,
97 HYPRE_Int num_rowscols_to_elim,
98 HYPRE_Int *rowscols_to_elim,
103 void hypre_ParCSRMatrixEliminateRows(hypre_ParCSRMatrix *A,
104 HYPRE_Int num_rows_to_elim,
105 const HYPRE_Int *rows_to_elim);
113 void hypre_ParCSRMatrixSplit(hypre_ParCSRMatrix *A,
114 HYPRE_Int nr, HYPRE_Int nc,
115 hypre_ParCSRMatrix **blocks,
116 int interleaved_rows,
int interleaved_cols);
118 typedef int HYPRE_Bool;
119 #define HYPRE_MPI_BOOL MPI_INT
122 void hypre_CSRMatrixAbsMatvec(hypre_CSRMatrix *A,
129 void hypre_CSRMatrixAbsMatvecT(hypre_CSRMatrix *A,
136 void hypre_ParCSRMatrixAbsMatvec(hypre_ParCSRMatrix *A,
143 void hypre_ParCSRMatrixAbsMatvecT(hypre_ParCSRMatrix *A,
151 void hypre_CSRMatrixBooleanMatvec(hypre_CSRMatrix *A,
159 void hypre_CSRMatrixBooleanMatvecT(hypre_CSRMatrix *A,
165 hypre_ParCSRCommHandle *
166 hypre_ParCSRCommHandleCreate_bool(HYPRE_Int job,
167 hypre_ParCSRCommPkg *comm_pkg,
168 HYPRE_Bool *send_data,
169 HYPRE_Bool *recv_data);
173 void hypre_ParCSRMatrixBooleanMatvec(hypre_ParCSRMatrix *A,
181 void hypre_ParCSRMatrixBooleanMatvecT(hypre_ParCSRMatrix *A,
190 hypre_CSRMatrixSum(hypre_CSRMatrix *A,
199 hypre_ParCSRMatrixAdd(hypre_ParCSRMatrix *A,
200 hypre_ParCSRMatrix *B);
207 hypre_ParCSRMatrixSum(hypre_ParCSRMatrix *A,
209 hypre_ParCSRMatrix *B);
213 hypre_CSRMatrixSetConstantValues(hypre_CSRMatrix *A,
214 HYPRE_Complex value);
218 hypre_ParCSRMatrixSetConstantValues(hypre_ParCSRMatrix *A,
219 HYPRE_Complex value);
225 #endif // MFEM_USE_MPI