10 #ifndef __Teko_InterlacedEpetra_hpp__ 
   11 #define __Teko_InterlacedEpetra_hpp__ 
   14 #include "Teuchos_RCP.hpp" 
   18 #include "Epetra_MpiComm.h" 
   20 #include "Epetra_SerialComm.h" 
   22 #include "Epetra_Map.h" 
   23 #include "Epetra_CrsMatrix.h" 
   24 #include "Epetra_MultiVector.h" 
   25 #include "Epetra_Vector.h" 
   26 #include "Epetra_Export.h" 
   27 #include "Epetra_Import.h" 
   54 void buildSubMaps(
int numGlobals, 
int numVars, 
const Epetra_Comm& comm,
 
   55                   std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
 
   76 void buildSubMaps(
int numGlobals, 
const std::vector<int>& vars, 
const Epetra_Comm& comm,
 
   77                   std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
 
  100 void buildSubMaps(
int numGlobals, 
int numMyElements, 
int minMyGID, 
const std::vector<int>& vars,
 
  101                   const Epetra_Comm& comm,
 
  102                   std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
 
  124 void buildSubMaps(
const Epetra_Map& globalMap, 
const std::vector<int>& vars,
 
  125                   const Epetra_Comm& comm,
 
  126                   std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
 
  129 void buildExportImport(
const Epetra_Map& baseMap,
 
  130                        const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
 
  131                        std::vector<Teuchos::RCP<Epetra_Export> >& subExport,
 
  132                        std::vector<Teuchos::RCP<Epetra_Import> >& subImport);
 
  135 void buildSubVectors(
const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
 
  136                      std::vector<Teuchos::RCP<Epetra_MultiVector> >& subVectors, 
int count);
 
  141 void associateSubVectors(
const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
 
  142                          std::vector<Teuchos::RCP<const Epetra_MultiVector> >& subVectors);
 
  145 Teuchos::RCP<Epetra_CrsMatrix> buildSubBlock(
 
  146     int i, 
int j, 
const Epetra_CrsMatrix& A,
 
  147     const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
 
  150 void rebuildSubBlock(
int i, 
int j, 
const Epetra_CrsMatrix& A,
 
  151                      const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
 
  152                      Epetra_CrsMatrix& mat);
 
  155 void many2one(Epetra_MultiVector& one,
 
  156               const std::vector<Teuchos::RCP<const Epetra_MultiVector> >& many,
 
  157               const std::vector<Teuchos::RCP<Epetra_Export> >& subExport);
 
  160 void one2many(std::vector<Teuchos::RCP<Epetra_MultiVector> >& many,
 
  161               const Epetra_MultiVector& single,
 
  162               const std::vector<Teuchos::RCP<Epetra_Import> >& subImport);