Ifpack2 Templated Preconditioning Package  Version 1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Ifpack2_Zoltan2Partitioner_decl.hpp
1 // @HEADER
2 // *****************************************************************************
3 // Ifpack2: Templated Object-Oriented Algebraic Preconditioner Package
4 //
5 // Copyright 2009 NTESS and the Ifpack2 contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef IFPACK2_ZOLTAN2PARTITIONER_DECL_HPP
11 #define IFPACK2_ZOLTAN2PARTITIONER_DECL_HPP
12 
13 #if defined(HAVE_IFPACK2_ZOLTAN2)
14 #include "Ifpack2_ConfigDefs.hpp"
15 #include "Ifpack2_OverlappingPartitioner_decl.hpp"
16 
17 #include "Zoltan2_PartitioningProblem.hpp"
18 #include "Zoltan2_TpetraRowGraphAdapter.hpp"
19 
20 namespace Ifpack2 {
21 
23 
30 template<class GraphType>
31 class Zoltan2Partitioner : public OverlappingPartitioner<GraphType> {
32 public:
33  typedef typename GraphType::local_ordinal_type local_ordinal_type;
34  typedef typename GraphType::global_ordinal_type global_ordinal_type;
35  typedef typename GraphType::node_type node_type;
36  typedef Tpetra::RowGraph<local_ordinal_type, global_ordinal_type, node_type>
37  row_graph_type;
38  typedef Zoltan2::TpetraRowGraphAdapter<row_graph_type>
39  Zoltan2GraphAdapterType;
40 
42  Zoltan2Partitioner (const Teuchos::RCP<const row_graph_type>& graph);
43 
45  virtual ~Zoltan2Partitioner ();
46 
48  void setPartitionParameters (Teuchos::ParameterList& List);
49 
51  void computePartitions ();
52 
53 private:
54  std::string zoltan2AlgoName_;
55 };
56 
57 }// namespace Ifpack2
58 
59 #endif // HAVE_IFPACK2_ZOLTAN2
60 #endif // IFPACK2_ZOLTAN2PARTITIONER_DECL_HPP