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