40 #ifndef _Isorropia_EpetraCostDescriber_hpp_ 41 #define _Isorropia_EpetraCostDescriber_hpp_ 45 #include <Teuchos_RCP.hpp> 46 #include <Teuchos_ParameterList.hpp> 55 class Epetra_CrsMatrix;
56 class Epetra_RowMatrix;
57 class Epetra_MultiVector;
59 class Epetra_CrsGraph;
216 void getCosts(std::map<int, float > &vertexWeights,
217 std::map<
int, std::map<int, float > > &graphEdgeWeights,
218 std::map<int, float > &hypergraphEdgeWeights)
const;
222 void show_cd(std::ostream &)
const;
227 int compareBeforeAndAfterHypergraph(
const Epetra_RowMatrix &in_m,
const Epetra_RowMatrix &out_m,
228 const Epetra_Import &importer,
229 std::vector<double> &balance, std::vector<double> &cutn, std::vector<double> &cutl)
const;
231 int compareBeforeAndAfterGraph(
const Epetra_RowMatrix &in_m,
const Epetra_RowMatrix &out_m,
232 const Epetra_Import &importer,
233 std::vector<double> &balance, std::vector<int> &numCuts, std::vector<double> &cutWgt,
234 std::vector<double> &cutn, std::vector<double> &cutl)
const;
236 int compareBeforeAndAfterGraph(
const Epetra_CrsGraph &in_g,
const Epetra_CrsGraph &out_g,
237 const Epetra_Import &importer,
238 std::vector<double> &balance, std::vector<int> &numCuts, std::vector<double> &cutWgt,
239 std::vector<double> &cutn, std::vector<double> &cutl)
const;
241 int compareBeforeAndAfterImbalance(
const Epetra_MultiVector &mv,
const Epetra_Import &importer,
242 std::vector<double> &min, std::vector<double> &max, std::vector<double> &avg)
const;
250 const Epetra_CrsGraph *in_g,
const Epetra_CrsGraph *out_g,
251 const Epetra_Import &importer,
252 std::vector<double> &balance, std::vector<int> &numCuts, std::vector<double> &cutWgt,
253 std::vector<double> &cutn, std::vector<double> &cutl)
const;
268 int* global_ids,
float* weights)
const;
287 int* neighbor_global_ids,
288 float* weights)
const;
299 float* weights)
const;
395 int getEdges(
int vertexGID,
int len,
int *nborGID,
float *weights)
const;
int getGraphEdgeVertices(std::set< int > &gids) const
Get the set of global IDs for the vertices that we have edge information for.
Isorropia is the namespace that contains general definitions that apply to all partitioners and that ...
Definition: Isorropia_Epetra.hpp:60
float * hg_edge_weights_
Definition: Isorropia_EpetraCostDescriber.hpp:376
int * hg_edge_gids_
Definition: Isorropia_EpetraCostDescriber.hpp:375
int _compareBeforeAndAfterGraph(const Epetra_RowMatrix *in_m, const Epetra_RowMatrix *out_m, const Epetra_CrsGraph *in_g, const Epetra_CrsGraph *out_g, const Epetra_Import &importer, std::vector< double > &balance, std::vector< int > &numCuts, std::vector< double > &cutWgt, std::vector< double > &cutn, std::vector< double > &cutl) const
int getNumHypergraphEdgeWeights() const
Get the number of Hypergraph edges.
void setHypergraphEdgeWeights(Teuchos::RCP< const Epetra_Vector > hgewts)
setHypergraphEdgeWeights is called by processes in an application to supply weights for the hyperedge...
friend std::ostream & operator<<(std::ostream &, const Isorropia::Epetra::CostDescriber &cd)
Overloaded << operator for CostDescriber object.
void setGraphEdgeWeights(Teuchos::RCP< const Epetra_CrsMatrix > gewts)
setGraphEdgeWeights is called by a process to supply the weights for each of the edges of its vertice...
Teuchos::ParameterList paramlist_
Definition: Isorropia_EpetraCostDescriber.hpp:373
QueryObject is a class that contains the query functions required by the Zoltan library.
Definition: QueryObject.hpp:81
Interface (abstract base class) for describing the weights or costs associated with the vertices and/...
Definition: Isorropia_CostDescriber.hpp:61
bool haveGraphEdgeWeights() const
Query whether graph edge weights have been supplied by the application.
void allocate_hg_edge_weights_(int n)
Dynamically allocate storage for hypergraph edge weights.
const Epetra_Vector & getVertexWeights()
Definition: Isorropia_EpetraCostDescriber.hpp:317
~CostDescriber()
Destructor.
bool haveGlobalHypergraphEdgeWeights() const
haveGlobalHypergraphEdgeWeights returns true if any process in the application has supplied hyperedge...
void setNumGlobalVertexWeights(int num)
setNumGlobalVertexWeights may be used to set the count of the global number of vertex weights supplie...
void setNumGlobalGraphEdgeWeights(int num)
setNumGlobalGraphEdgeWeights may be used to set the count of the global number of graph edge weights ...
bool haveVertexWeights() const
Query whether vertex weights have been supplied by the application.
int numGlobalHypergraphEdgeWeights_
Definition: Isorropia_EpetraCostDescriber.hpp:381
int numGlobalGraphEdgeWeights_
Definition: Isorropia_EpetraCostDescriber.hpp:380
int num_hg_edge_weights_
Definition: Isorropia_EpetraCostDescriber.hpp:377
Definition: Isorropia_EpetraZoltanLib.hpp:70
void show_cd(std::ostream &) const
Print out the contents of this CostDescriber.
CostDescriber()
Constructor.
bool haveGlobalGraphEdgeWeights() const
haveGlobalGraphEdgeWeights returns true if any process in the application has supplied graph edge wei...
void getCosts(std::map< int, float > &vertexWeights, std::map< int, std::map< int, float > > &graphEdgeWeights, std::map< int, float > &hypergraphEdgeWeights) const
Get the contents of this CostDescriber.
int getNumVertices() const
Get the number of vertices for which this process supplied vertex weights.
bool haveGlobalVertexWeights() const
haveGlobalVertexWeights returns true if any process in the application has supplied vertex weights...
void getHypergraphEdgeWeights(int numEdges, int *global_ids, float *weights) const
Get the hypergraph edge weights that were supplied by this process.
Teuchos::RCP< const Epetra_CrsMatrix > graph_edge_weights_
Definition: Isorropia_EpetraCostDescriber.hpp:370
Interface (abstract base class) for computing a new partitioning/coloring/ ordering and exploiting th...
Definition: Isorropia_Operator.hpp:58
bool haveHypergraphEdgeWeights() const
Query whether hypergraph edge weights have been supplied by the application.
int numGlobalVertexWeights_
Definition: Isorropia_EpetraCostDescriber.hpp:379
void setVertexWeights(Teuchos::RCP< const Epetra_Vector > vwgts)
setVertexWeights is called by a process to supply the weight of each vertex (row) in the graph or hyp...
void setParameters(const Teuchos::ParameterList ¶mlist)
Set parameters for the CostDescriber instance.
void getGraphEdgeWeights(int vertex_global_id, int num_neighbors, int *neighbor_global_ids, float *weights) const
Get the graph edge weights for a specified vertex.
void free_hg_edge_weights_()
Free storage used by hypergraph edge weights.
int getEdges(int vertexGID, int len, int *nborGID, float *weights) const
getEdges creates an array of the neighbors and edge weights for given vertex.
std::set< int > graph_self_edges_
Definition: Isorropia_EpetraCostDescriber.hpp:371
void setNumGlobalHypergraphEdgeWeights(int num)
setNumGlobalHypergraphEdgeWeights may be used to set the count of the global number of hyperedge weig...
Definition: Isorropia_EpetraCostDescriber.hpp:128
Teuchos::RCP< const Epetra_Vector > vertex_weights_
Definition: Isorropia_EpetraCostDescriber.hpp:369
void _transformWeights(const Epetra_Import &importer)
int getNumGraphEdges(int vertex_global_id) const
Get the number of graph edges for a specified vertex.