00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _Isorropia_CostDescriber_hpp_
00033 #define _Isorropia_CostDescriber_hpp_
00034
00035 #include <Isorropia_configdefs.hpp>
00036 #include <Teuchos_ParameterList.hpp>
00037
00041 namespace Isorropia {
00042
00059 class CostDescriber {
00060 public:
00061
00063 virtual ~CostDescriber() {}
00064
00070 virtual void setParameters(const Teuchos::ParameterList& paramlist) = 0;
00071
00076 virtual bool haveVertexWeights() const = 0;
00077
00081 virtual int getNumVertices() const = 0;
00082
00085 virtual void getVertexWeights(int numVertices,
00086 int* global_ids,
00087 float* weights) const = 0;
00088
00093 virtual bool haveGraphEdgeWeights() const = 0;
00094
00098 virtual int getNumGraphEdges(int vertex_global_id) const = 0;
00099
00102 virtual void getGraphEdgeWeights(int vertex_global_id,
00103 int num_neighbors,
00104 int* neighbor_global_ids,
00105 float* weights) const = 0;
00106
00111 virtual bool haveHypergraphEdgeWeights() const = 0;
00112
00116 virtual int getNumHypergraphEdges() const = 0;
00117
00120 virtual void getHypergraphEdgeWeights(int numEdges,
00121 int* global_ids,
00122 float* weights) const = 0;
00123 };
00124
00125 }
00126
00127 #endif
00128