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_EpetraInternal_hpp_
00031 #define _Isorropia_EpetraInternal_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 #ifdef HAVE_EPETRA
00041 class Epetra_Map;
00042 class Epetra_BlockMap;
00043 class Epetra_Import;
00044 class Epetra_Vector;
00045 class Epetra_MultiVector;
00046 class Epetra_CrsGraph;
00047 class Epetra_CrsMatrix;
00048 class Epetra_RowMatrix;
00049 class Epetra_LinearProblem;
00050
00051 namespace Isorropia {
00052
00053 namespace Epetra {
00054 class CostDescriber;
00055
00061 class InternalPartitioner : public Library {
00062 public:
00063
00064 InternalPartitioner(Teuchos::RCP<const Epetra_CrsGraph> input_graph);
00065 InternalPartitioner(Teuchos::RCP<const Epetra_CrsGraph> input_graph,
00066 Teuchos::RCP<CostDescriber> costs);
00067 InternalPartitioner(Teuchos::RCP<const Epetra_RowMatrix> input_matrix);
00068 InternalPartitioner(Teuchos::RCP<const Epetra_RowMatrix> input_matrix,
00069 Teuchos::RCP<CostDescriber> costs);
00070
00071 virtual ~InternalPartitioner();
00072
00073 virtual int
00074 repartition(Teuchos::ParameterList& paramlist,
00075 std::vector<int>& myNewElements,
00076 int& exportsSize,
00077 std::vector<int>& imports);
00078
00079
00080
00081 virtual int
00082 color(Teuchos::ParameterList& paramlist,
00083 std::vector<int>& myNewElements);
00084
00085 virtual int
00086 order(Teuchos::ParameterList& paramlist,
00087 std::vector<int>& myNewElements);
00088
00089 protected:
00090
00091 virtual int precompute();
00092 virtual int postcompute();
00093
00094 };
00095
00096 }
00097 }
00098
00099 #endif //HAVE_EPETRA
00100
00101 #endif
00102