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 #ifndef _Isorropia_CostDescriber_hpp_
00030 #define _Isorropia_CostDescriber_hpp_
00031
00032 #include <Isorropia_ConfigDefs.hpp>
00033 #include <Teuchos_ParameterList.hpp>
00034
00040 namespace Isorropia {
00041
00050 class CostDescriber {
00051 public:
00052
00054 virtual ~CostDescriber() {}
00055
00056 private:
00062 virtual void setParameters(const Teuchos::ParameterList& paramlist) = 0;
00063
00069 virtual bool haveVertexWeights() const = 0;
00070
00077 virtual int getNumVertices() const = 0;
00078
00088 virtual void getVertexWeights(int numVertices,
00089 int* global_ids,
00090 float* weights) const = 0;
00091
00097 virtual bool haveGraphEdgeWeights() const = 0;
00098
00107 virtual int getNumGraphEdges(int vertex_global_id) const = 0;
00108
00124 virtual void getGraphEdgeWeights(int vertex_global_id,
00125 int num_neighbors,
00126 int* neighbor_global_ids,
00127 float* weights) const = 0;
00128
00134 virtual bool haveHypergraphEdgeWeights() const = 0;
00135
00141 virtual int getNumHypergraphEdgeWeights() const = 0;
00142
00155 virtual void getHypergraphEdgeWeights(int numEdges,
00156 int* global_ids,
00157 float* weights) const = 0;
00158 };
00159
00160 }
00161
00162 #endif
00163