MFEM  v3.1
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
hypre_parcsr.hpp
Go to the documentation of this file.
1 // Copyright (c) 2010, Lawrence Livermore National Security, LLC. Produced at
2 // the Lawrence Livermore National Laboratory. LLNL-CODE-443211. All Rights
3 // reserved. See file COPYRIGHT for details.
4 //
5 // This file is part of the MFEM library. For more information and source code
6 // availability see http://mfem.org.
7 //
8 // MFEM is free software; you can redistribute it and/or modify it under the
9 // terms of the GNU Lesser General Public License (as published by the Free
10 // Software Foundation) version 2.1 dated February 1999.
11 
12 #ifndef MFEM_HYPRE_PARCSR
13 #define MFEM_HYPRE_PARCSR
14 
15 #include "../config/config.hpp"
16 
17 #ifdef MFEM_USE_MPI
18 
19 #include "_hypre_parcsr_mv.h"
20 
21 namespace mfem
22 {
23 
24 // This module contains functions that are logically part of HYPRE, and might
25 // become part of HYPRE at some point. In the meantime the module can be
26 // thought of as an extension of HYPRE.
27 
28 namespace internal
29 {
30 
33 void hypre_ParCSRMatrixEliminateAXB(hypre_ParCSRMatrix *A,
34  HYPRE_Int num_rowscols_to_elim,
35  HYPRE_Int *rowscols_to_elim,
36  hypre_ParVector *X,
37  hypre_ParVector *B);
38 
42 void hypre_ParCSRMatrixEliminateAAe(hypre_ParCSRMatrix *A,
43  hypre_ParCSRMatrix **Ae,
44  HYPRE_Int num_rowscols_to_elim,
45  HYPRE_Int *rowscols_to_elim);
46 
53 void hypre_ParCSRMatrixSplit(hypre_ParCSRMatrix *A,
54  HYPRE_Int nr, HYPRE_Int nc,
55  hypre_ParCSRMatrix **blocks,
56  int interleaved_rows, int interleaved_cols);
57 
58 typedef int HYPRE_Bool;
59 #define HYPRE_MPI_BOOL MPI_INT
60 
63 void hypre_CSRMatrixBooleanMatvec(hypre_CSRMatrix *A,
64  HYPRE_Bool alpha,
65  HYPRE_Bool *x,
66  HYPRE_Bool beta,
67  HYPRE_Bool *y);
68 
69 hypre_ParCSRCommHandle *
70 hypre_ParCSRCommHandleCreate_bool(HYPRE_Int job,
71  hypre_ParCSRCommPkg *comm_pkg,
72  HYPRE_Bool *send_data,
73  HYPRE_Bool *recv_data);
74 
77 void hypre_ParCSRMatrixBooleanMatvec(hypre_ParCSRMatrix *A,
78  HYPRE_Bool alpha,
79  HYPRE_Bool *x,
80  HYPRE_Bool beta,
81  HYPRE_Bool *y);
82 
83 } // namespace mfem::internal
84 
85 } // namespace mfem
86 
87 #endif // MFEM_USE_MPI
88 
89 #endif