47 #ifndef __Teko_InterlacedEpetra_hpp__
48 #define __Teko_InterlacedEpetra_hpp__
51 #include "Teuchos_RCP.hpp"
55 #include "Epetra_MpiComm.h"
57 #include "Epetra_SerialComm.h"
59 #include "Epetra_Map.h"
60 #include "Epetra_CrsMatrix.h"
61 #include "Epetra_MultiVector.h"
62 #include "Epetra_Vector.h"
63 #include "Epetra_Export.h"
64 #include "Epetra_Import.h"
91 void buildSubMaps(
int numGlobals,
int numVars,
const Epetra_Comm& comm,
92 std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
113 void buildSubMaps(
int numGlobals,
const std::vector<int>& vars,
const Epetra_Comm& comm,
114 std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
137 void buildSubMaps(
int numGlobals,
int numMyElements,
int minMyGID,
const std::vector<int>& vars,
138 const Epetra_Comm& comm,
139 std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
161 void buildSubMaps(
const Epetra_Map& globalMap,
const std::vector<int>& vars,
162 const Epetra_Comm& comm,
163 std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
166 void buildExportImport(
const Epetra_Map& baseMap,
167 const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
168 std::vector<Teuchos::RCP<Epetra_Export> >& subExport,
169 std::vector<Teuchos::RCP<Epetra_Import> >& subImport);
172 void buildSubVectors(
const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
173 std::vector<Teuchos::RCP<Epetra_MultiVector> >& subVectors,
int count);
178 void associateSubVectors(
const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
179 std::vector<Teuchos::RCP<const Epetra_MultiVector> >& subVectors);
182 Teuchos::RCP<Epetra_CrsMatrix> buildSubBlock(
183 int i,
int j,
const Epetra_CrsMatrix& A,
184 const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps);
187 void rebuildSubBlock(
int i,
int j,
const Epetra_CrsMatrix& A,
188 const std::vector<std::pair<
int, Teuchos::RCP<Epetra_Map> > >& subMaps,
189 Epetra_CrsMatrix& mat);
192 void many2one(Epetra_MultiVector& one,
193 const std::vector<Teuchos::RCP<const Epetra_MultiVector> >& many,
194 const std::vector<Teuchos::RCP<Epetra_Export> >& subExport);
197 void one2many(std::vector<Teuchos::RCP<Epetra_MultiVector> >& many,
198 const Epetra_MultiVector& single,
199 const std::vector<Teuchos::RCP<Epetra_Import> >& subImport);