Isorropia: Partitioning, Load Balancing and more Version 3.0
Isorropia_Zoltan_Repartition.hpp
Go to the documentation of this file.
00001 //@HEADER
00002 /*
00003 ************************************************************************
00004 
00005               Isorropia: Partitioning and Load Balancing Package
00006                 Copyright (2006) Sandia Corporation
00007 
00008 Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00009 license for use of this work by or on behalf of the U.S. Government.
00010 
00011 This library is free software; you can redistribute it and/or modify
00012 it under the terms of the GNU Lesser General Public License as
00013 published by the Free Software Foundation; either version 2.1 of the
00014 License, or (at your option) any later version.
00015 
00016 This library is distributed in the hope that it will be useful, but
00017 WITHOUT ANY WARRANTY; without even the implied warranty of
00018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00019 Lesser General Public License for more details.
00020 
00021 You should have received a copy of the GNU Lesser General Public
00022 License along with this library; if not, write to the Free Software
00023 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00024 USA
00025 
00026 ************************************************************************
00027 */
00028 //@HEADER
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 // class Isorropia::Epetra::CostDescriber;
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 }//namespace ZoltanLib
00142 
00143 }//namespace Epetra
00144 
00145 }//namespace Isorropia
00146 
00147 //the following endif closes the '#ifdef HAVE_ISORROPIA_ZOLTAN' block.
00148 #endif
00149 
00150 #endif
00151