40#ifndef _Isorropia_EpetraPartitioner_hpp_
41#define _Isorropia_EpetraPartitioner_hpp_
93#include <Teuchos_RCP.hpp>
94#include <Teuchos_ParameterList.hpp>
102class Epetra_BlockMap;
105class Epetra_MultiVector;
106class Epetra_CrsGraph;
107class Epetra_CrsMatrix;
108class Epetra_RowMatrix;
109class Epetra_LinearProblem;
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
335 virtual void compute(
bool forceRecomputing=
false);
Definition: Isorropia_EpetraCostDescriber.hpp:128
An implementation of the Partitioner interface that operates on Epetra matrices and linear systems.
Definition: Isorropia_EpetraOperator.hpp:72
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 int numElemsWithProperty(int property) const
Return the number of elements in a given partition.
An implementation of the Partitioner interface that operates on Epetra matrices and linear systems.
Definition: Isorropia_EpetraPartitioner.hpp:122
int printZoltanMetrics()
Definition: Isorropia_EpetraPartitioner.hpp:375
int * partGIDs
Definition: Isorropia_EpetraPartitioner.hpp:378
void setPartSizes(int len, int *global_part_id, float *part_size)
float * partSizes
Definition: Isorropia_EpetraPartitioner.hpp:379
int numPartSizes
Definition: Isorropia_EpetraPartitioner.hpp:380
int printMetrics
Definition: Isorropia_EpetraPartitioner.hpp:381
Interface (abstract base class) for computing a new partitioning and describing the layout of element...
Definition: Isorropia_Partitioner.hpp:59
int numElemsInPart(int part) const
Return the number of LOCAL elements in a given part.
Definition: Isorropia_EpetraPartitioner.hpp:339
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 ...
virtual ~Partitioner()
Destructor.
void partition(bool force_repartitioning=false)
partition is the method that computes a rebalanced partitioning for the data in the object that this ...
Partitioner(const Epetra_CrsGraph *inputGraph, CostDescriber *costs, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_CrsGraph *inputGraph, const Epetra_MultiVector *coords, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_RowMatrix *inputMatrix, CostDescriber *costs, const Epetra_MultiVector *coords, const Epetra_MultiVector *weights, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_MultiVector *coords, const Epetra_MultiVector *weights, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_CrsGraph *inputGraph, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_RowMatrix *inputMatrix, CostDescriber *costs, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_RowMatrix *inputMatrix, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_RowMatrix *inputMatrix, const Epetra_MultiVector *coords, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
void createNewMap(Epetra_Map *&outputMap)
Create a new Epetra_Map corresponding to the new partition.
Partitioner(const Epetra_MultiVector *coords, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_CrsGraph *inputGraph, CostDescriber *costs, const Epetra_MultiVector *coords, const Epetra_MultiVector *weights, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(const Epetra_BlockMap *inputMap, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Teuchos::RCP< Epetra_Map > createNewMap()
Create a new Epetra_Map corresponding to the new partition.
Partitioner(Teuchos::RCP< const Epetra_CrsGraph > inputGraph, Teuchos::RCP< const Epetra_MultiVector > coords, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_RowMatrix > inputMatrix, Teuchos::RCP< CostDescriber > costs, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_CrsGraph > inputGraph, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_RowMatrix > inputMatrix, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_RowMatrix > inputMatrix, Teuchos::RCP< const Epetra_MultiVector > coords, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_CrsGraph > inputGraph, Teuchos::RCP< CostDescriber > costs, Teuchos::RCP< const Epetra_MultiVector > coords, Teuchos::RCP< const Epetra_MultiVector > weights, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_RowMatrix > inputMatrix, Teuchos::RCP< CostDescriber > costs, Teuchos::RCP< const Epetra_MultiVector > coords, Teuchos::RCP< const Epetra_MultiVector > weights, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_BlockMap > inputMap, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_MultiVector > coords, Teuchos::RCP< const Epetra_MultiVector > weights, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_CrsGraph > inputGraph, Teuchos::RCP< CostDescriber > costs, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Partitioner(Teuchos::RCP< const Epetra_MultiVector > coords, const Teuchos::ParameterList ¶mlist=Teuchos::ParameterList("EmptyParameterList"), bool compute_partitioning_now=true)
Isorropia is the namespace that contains general definitions that apply to all partitioners and that ...
Definition: Isorropia_Epetra.hpp:60