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_Zoltan_Repartition_hpp_
00031 #define _Isorropia_Zoltan_Repartition_hpp_
00032
00033 #include <Isorropia_ConfigDefs.hpp>
00034
00035 #ifdef HAVE_ISORROPIA_ZOLTAN
00036
00037 #include <Teuchos_RefCountPtr.hpp>
00038 #include <Teuchos_ParameterList.hpp>
00039
00040 #include <vector>
00041 #include <map>
00042
00043 #ifdef HAVE_MPI
00044 #include <mpi.h>
00045 #endif
00046
00047 #ifdef HAVE_EPETRA
00048 class Epetra_CrsGraph;
00049 class Epetra_RowMatrix;
00050 #endif
00051
00052 #include <QueryObject.hpp>
00053
00054
00055
00056 namespace Isorropia{
00057
00058 namespace Epetra {
00059
00065 namespace ZoltanLib{
00066
00067 #ifdef HAVE_EPETRA
00068
00083 int
00084 repartition(Teuchos::RefCountPtr<const Epetra_CrsGraph> input_graph,
00085 Teuchos::RefCountPtr<const Isorropia::Epetra::CostDescriber> costs,
00086 Teuchos::ParameterList& paramlist,
00087 std::vector<int>& myNewElements,
00088 std::map<int,int>& exports,
00089 std::map<int,int>& imports);
00090
00091
00106 int
00107 repartition(Teuchos::RefCountPtr<const Epetra_RowMatrix> input_matrix,
00108 Teuchos::RefCountPtr<const Isorropia::Epetra::CostDescriber> costs,
00109 Teuchos::ParameterList& paramlist,
00110 std::vector<int>& myNewElements,
00111 std::map<int,int>& exports,
00112 std::map<int,int>& imports);
00113
00114 #ifdef HAVE_MPI
00115
00130 int
00131 load_balance(MPI_Comm &comm,
00132 Teuchos::ParameterList& paramlist,
00133 QueryObject & queryObject,
00134 std::vector<int>& myNewElements,
00135 std::map<int,int>& exports,
00136 std::map<int,int>& imports);
00137 #endif
00138
00139 #endif //HAVE_EPETRA
00140
00141 }
00142
00143 }
00144
00145 }
00146
00147
00148 #endif
00149
00150 #endif
00151