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 #ifndef _Isorropia_EpetraZoltanLib_hpp_
00031 #define _Isorropia_EpetraZoltanLib_hpp_
00032
00033 #include <Isorropia_ConfigDefs.hpp>
00034 #include <Teuchos_RCP.hpp>
00035 #include <Teuchos_ParameterList.hpp>
00036
00037 #include <Isorropia_EpetraCostDescriber.hpp>
00038 #include <Isorropia_EpetraLibrary.hpp>
00039
00040 #include <QueryObject.hpp>
00041 #include <zoltan_cpp.h>
00042
00043 #ifdef HAVE_EPETRA
00044 class Epetra_Map;
00045 class Epetra_BlockMap;
00046 class Epetra_Import;
00047 class Epetra_Vector;
00048 class Epetra_MultiVector;
00049 class Epetra_CrsGraph;
00050 class Epetra_CrsMatrix;
00051 class Epetra_RowMatrix;
00052 class Epetra_LinearProblem;
00053
00054 namespace Isorropia {
00055
00056 namespace Epetra {
00057 class CostDescriber;
00058
00059
00060 class ZoltanLibClass : public Library {
00061 public:
00062
00063 ZoltanLibClass(Teuchos::RCP<const Epetra_CrsGraph> input_graph);
00064 ZoltanLibClass(Teuchos::RCP<const Epetra_CrsGraph> input_graph,
00065 Teuchos::RCP<CostDescriber> costs);
00066 ZoltanLibClass(Teuchos::RCP<const Epetra_RowMatrix> input_matrix);
00067 ZoltanLibClass(Teuchos::RCP<const Epetra_RowMatrix> input_matrix,
00068 Teuchos::RCP<CostDescriber> costs);
00069
00070 virtual int
00071 repartition(Teuchos::ParameterList& paramlist,
00072 std::vector<int>& myNewElements,
00073 int& exportsSize,
00074 std::vector<int>& imports);
00075
00076
00077
00078 virtual int
00079 color(Teuchos::ParameterList& paramlist,
00080 std::vector<int>& myNewElements);
00081
00082 virtual int
00083 order(Teuchos::ParameterList& paramlist,
00084 std::vector<int>& myNewElements);
00085
00086 protected:
00087 virtual int precompute();
00088 virtual int postcompute();
00089 void computeCost();
00090 void preCheckPartition();
00091
00092 void setParameterList(Teuchos::ParameterList& zoltanParamList);
00093
00094 private:
00095 Teuchos::ParameterList zoltanParamList_;
00096 Zoltan *zz_;
00097 Teuchos::RCP<ZoltanLib::QueryObject> queryObject_;
00098 int num_obj_;
00099 };
00100
00101 }
00102 }
00103
00104 #endif //HAVE_EPETRA
00105
00106 #endif
00107