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);