40 #ifndef _Isorropia_TpetraPartitioner_hpp_ 41 #define _Isorropia_TpetraPartitioner_hpp_ 52 #include <Teuchos_RCP.hpp> 53 #include <Teuchos_ParameterList.hpp> 57 #ifdef HAVE_ISORROPIA_TPETRA 63 #include <Kokkos_DefaultNode.hpp> 64 #include <Tpetra_CrsGraph_decl.hpp> 65 #include <Tpetra_RowMatrix.hpp> 66 #include <Tpetra_MultiVector_decl.hpp> 75 template <class Node = ::Tpetra::Map<int, int>::node_type>
80 Partitioner(Teuchos::RCP<const ::Tpetra::CrsGraph<int,int,Node> > inputGraph,
81 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
82 bool compute_partitioning_now=
true);
84 Partitioner(const ::Tpetra::CrsGraph<int,int,Node> *inputGraph,
85 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
86 bool compute_partitioning_now=
true);
88 Partitioner(Teuchos::RCP<const ::Tpetra::CrsGraph<int,int,Node> > inputGraph,
89 Teuchos::RCP<CostDescriber<Node> > costs,
90 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
91 bool compute_partitioning_now=
true);
93 Partitioner(const ::Tpetra::CrsGraph<int,int,Node> *inputGraph,
94 CostDescriber<Node> * costs,
95 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
96 bool compute_partitioning_now=
true);
98 Partitioner(Teuchos::RCP<const ::Tpetra::RowMatrix<double,int,int,Node> > inputMatrix,
99 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
100 bool compute_partitioning_now=
true);
102 Partitioner(const ::Tpetra::RowMatrix<double,int,int,Node> *inputMatrix,
103 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
104 bool compute_partitioning_now=
true);
106 Partitioner(Teuchos::RCP<const ::Tpetra::RowMatrix<double,int,int,Node> > inputMatrix,
107 Teuchos::RCP<CostDescriber<Node> > costs,
108 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
109 bool compute_partitioning_now=
true);
111 Partitioner(const ::Tpetra::RowMatrix<double,int,int,Node> *inputMatrix,
112 CostDescriber<Node> *costs,
113 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
114 bool compute_partitioning_now=
true);
116 Partitioner(Teuchos::RCP<const ::Tpetra::MultiVector<double,int,int,Node> > coords,
117 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
118 bool compute_partitioning_now=
true);
120 Partitioner(const ::Tpetra::MultiVector<double,int,int,Node> *coords,
121 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
122 bool compute_partitioning_now=
true);
124 Partitioner(Teuchos::RCP<const ::Tpetra::MultiVector<double,int,int,Node> > coords,
125 Teuchos::RCP<const ::Tpetra::MultiVector<double,int,int,Node> > weights,
126 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
127 bool compute_partitioning_now=
true);
129 Partitioner(const ::Tpetra::MultiVector<double,int,int,Node> *coords,
130 const ::Tpetra::MultiVector<double,int,int,Node> *weights,
131 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
132 bool compute_partitioning_now=
true);
134 Partitioner(Teuchos::RCP<const ::Tpetra::Map<int,int,Node> > inputMap,
135 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
136 bool compute_partitioning_now=
true);
138 Partitioner(const ::Tpetra::Map<int,int,Node> *inputMap,
139 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
140 bool compute_partitioning_now=
true);
149 virtual ~Partitioner();
167 void setPartSizes(
int len,
int *global_part_id,
float *part_size);
172 void clearPartSizes();
186 void partition(
bool force_repartitioning=
false);
190 virtual void compute(
bool forceRecomputing=
false);
194 int numElemsInPart(
int part)
const {
195 return (numElemsWithProperty(part));
200 void elemsInPart(
int part,
int* elementList,
int len)
const {
201 elemsWithProperty(part, elementList, len);
215 Teuchos::RCP< ::Tpetra::Map<int,int,Node> > createNewMap();
228 void createNewMap(::Tpetra::Map<int,int,Node> *&outputMap);
240 #endif //HAVE_ISORROPIA_TPETRA Isorropia is the namespace that contains general definitions that apply to all partitioners and that ...
Definition: Isorropia_Epetra.hpp:60
Interface (abstract base class) for computing a new partitioning and describing the layout of element...
Definition: Isorropia_Partitioner.hpp:59