40 #ifndef _Isorropia_EpetraPartitioner_hpp_
41 #define _Isorropia_EpetraPartitioner_hpp_
93 #include <Teuchos_RCP.hpp>
94 #include <Teuchos_ParameterList.hpp>
102 class Epetra_BlockMap;
105 class Epetra_MultiVector;
106 class Epetra_CrsGraph;
107 class Epetra_CrsMatrix;
108 class Epetra_RowMatrix;
109 class Epetra_LinearProblem;
111 namespace Isorropia {
127 Partitioner(Teuchos::RCP<const Epetra_CrsGraph> inputGraph,
128 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
129 bool compute_partitioning_now=
true);
135 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
136 bool compute_partitioning_now=
true);
141 Partitioner(Teuchos::RCP<const Epetra_CrsGraph> inputGraph,
142 Teuchos::RCP<CostDescriber> costs,
143 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
144 bool compute_partitioning_now=
true);
151 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
152 bool compute_partitioning_now=
true);
157 Partitioner(Teuchos::RCP<const Epetra_RowMatrix> inputMatrix,
158 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
159 bool compute_partitioning_now=
true);
165 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
166 bool compute_partitioning_now=
true);
171 Partitioner(Teuchos::RCP<const Epetra_RowMatrix> inputMatrix,
172 Teuchos::RCP<CostDescriber> costs,
173 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
174 bool compute_partitioning_now=
true);
181 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
182 bool compute_partitioning_now=
true);
187 Partitioner(Teuchos::RCP<const Epetra_MultiVector> coords,
188 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
189 bool compute_partitioning_now=
true);
195 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
196 bool compute_partitioning_now=
true);
201 Partitioner(Teuchos::RCP<const Epetra_MultiVector> coords,
202 Teuchos::RCP<const Epetra_MultiVector> weights,
203 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
204 bool compute_partitioning_now=
true);
209 const Epetra_MultiVector *weights,
210 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
211 bool compute_partitioning_now=
true);
215 Partitioner(Teuchos::RCP<const Epetra_BlockMap> inputMap,
216 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
217 bool compute_partitioning_now=
true);
222 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
223 bool compute_partitioning_now=
true);
227 Partitioner(Teuchos::RCP<const Epetra_CrsGraph> inputGraph,
228 Teuchos::RCP<const Epetra_MultiVector> coords,
229 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
230 bool compute_partitioning_now=
true);
235 const Epetra_MultiVector *coords,
236 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
237 bool compute_partitioning_now=
true);
242 Partitioner(Teuchos::RCP<const Epetra_CrsGraph> inputGraph,
243 Teuchos::RCP<CostDescriber> costs,
244 Teuchos::RCP<const Epetra_MultiVector> coords,
245 Teuchos::RCP<const Epetra_MultiVector> weights,
246 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
247 bool compute_partitioning_now=
true);
253 const Epetra_MultiVector *coords,
254 const Epetra_MultiVector *weights,
255 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
256 bool compute_partitioning_now=
true);
260 Partitioner(Teuchos::RCP<const Epetra_RowMatrix> inputMatrix,
261 Teuchos::RCP<const Epetra_MultiVector> coords,
262 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
263 bool compute_partitioning_now=
true);
268 const Epetra_MultiVector *coords,
269 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
270 bool compute_partitioning_now=
true);
274 Partitioner(Teuchos::RCP<const Epetra_RowMatrix> inputMatrix,
275 Teuchos::RCP<CostDescriber> costs,
276 Teuchos::RCP<const Epetra_MultiVector> coords,
277 Teuchos::RCP<const Epetra_MultiVector> weights,
278 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
279 bool compute_partitioning_now=
true);
285 const Epetra_MultiVector *coords,
286 const Epetra_MultiVector *weights,
287 const Teuchos::ParameterList& paramlist=Teuchos::ParameterList(
"EmptyParameterList"),
288 bool compute_partitioning_now=
true);
312 void setPartSizes(
int len,
int *global_part_id,
float *part_size);
331 void partition(
bool force_repartitioning=
false);
335 virtual void compute(
bool forceRecomputing=
false);
int printZoltanMetrics()
Definition: Isorropia_EpetraPartitioner.hpp:375
An implementation of the Partitioner interface that operates on Epetra matrices and linear systems...
Definition: Isorropia_EpetraOperator.hpp:72
float * partSizes
Definition: Isorropia_EpetraPartitioner.hpp:379
void elemsInPart(int part, int *elementList, int len) const
Fill user-allocated list (of length len) with the local element ids to be located in the given part...
Definition: Isorropia_EpetraPartitioner.hpp:345
virtual void compute(bool forceRecomputing=false)
Method which does the work of computing a new partitioning/coloring/ordering, depending on the child ...
int printMetrics
Definition: Isorropia_EpetraPartitioner.hpp:381
virtual void elemsWithProperty(int property, int *elementList, int len) const
Fill user-allocated list (of length len) with the global element ids to be located in the given parti...
virtual ~Partitioner()
Destructor.
int numPartSizes
Definition: Isorropia_EpetraPartitioner.hpp:380
void setPartSizes(int len, int *global_part_id, float *part_size)
void partition(bool force_repartitioning=false)
partition is the method that computes a rebalanced partitioning for the data in the object that this ...
virtual int numElemsWithProperty(int property) const
Return the number of elements in a given partition.
Definition: Isorropia_EpetraCostDescriber.hpp:128
Teuchos::RCP< Epetra_Map > createNewMap()
Create a new Epetra_Map corresponding to the new partition.
int * partGIDs
Definition: Isorropia_EpetraPartitioner.hpp:378
An implementation of the Partitioner interface that operates on Epetra matrices and linear systems...
Definition: Isorropia_EpetraPartitioner.hpp:122
Partitioner(Teuchos::RCP< const Epetra_CrsGraph > inputGraph, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
int numElemsInPart(int part) const
Return the number of LOCAL elements in a given part.
Definition: Isorropia_EpetraPartitioner.hpp:339
Interface (abstract base class) for computing a new partitioning and describing the layout of element...
Definition: Isorropia_Partitioner.hpp:59