43 #ifndef __Panzer_UniqueGlobalIndexer_Utilities_decl_hpp__
44 #define __Panzer_UniqueGlobalIndexer_Utilities_decl_hpp__
49 #include <unordered_map>
52 #include <Tpetra_Vector.hpp>
53 #include <Tpetra_MultiVector.hpp>
63 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
64 std::vector<Teuchos::RCP<const UniqueGlobalIndexer<LocalOrdinalT,GlobalOrdinalT> > >
76 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
78 const std::vector<
Teuchos::RCP<UniqueGlobalIndexer<LocalOrdinalT,GlobalOrdinalT> > > & ugis);
89 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
91 const std::vector<
Teuchos::RCP<
const UniqueGlobalIndexer<LocalOrdinalT,GlobalOrdinalT> > > & ugis);
106 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
108 const std::vector<
Teuchos::RCP<UniqueGlobalIndexer<LocalOrdinalT,GlobalOrdinalT> > > & ugis,
109 std::vector<int> & blockOffsets);
124 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
126 const std::vector<
Teuchos::RCP<
const UniqueGlobalIndexer<LocalOrdinalT,GlobalOrdinalT> > > & ugis,
127 std::vector<int> & blockOffsets);
133 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
140 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
155 template <
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename Node>
169 template <
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename Node>
172 const Teuchos::RCP<
const Tpetra::Vector<int,int,GlobalOrdinalT,Node> > & reducedVec=Teuchos::null);
176 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
179 const Teuchos::RCP<
const Tpetra::Vector<int,int,GlobalOrdinalT,panzer::TpetraNodeType> > & reducedVec=Teuchos::null)
180 {
return buildGhostedFieldVector<LocalOrdinalT,GlobalOrdinalT,panzer::TpetraNodeType>(ugi,reducedVec); }
195 template <
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename Node>
197 std::vector<int> & fieldNumbers,
198 const Teuchos::RCP<
const Tpetra::Vector<int,int,GlobalOrdinalT,Node> > & reducedVec=Teuchos::null);
202 template <
typename LocalOrdinalT,
typename GlobalOrdinalT>
204 std::vector<int> & fieldNumbers,
205 const Teuchos::RCP<
const Tpetra::Vector<int,int,GlobalOrdinalT,panzer::TpetraNodeType> > & reducedVec=Teuchos::null)
206 { buildGhostedFieldVector<LocalOrdinalT,GlobalOrdinalT,panzer::TpetraNodeType>(ugi,fieldNumbers,reducedVec); }
220 template <
typename ScalarT,
typename ArrayT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename Node>
222 const UniqueGlobalIndexer<LocalOrdinalT,GlobalOrdinalT> & ugi,
224 Tpetra::MultiVector<ScalarT,int,GlobalOrdinalT,Node> & dataVector);
235 template <
typename GlobalOrdinalT,
typename Node>
237 getFieldMap(
int fieldNum,
const Tpetra::Vector<int,int,GlobalOrdinalT,Node> & fieldVector);
240 namespace orientation_helpers {
269 template <
typename GlobalOrdinalT>
271 const std::vector<GlobalOrdinalT> & topology,
272 const FieldPattern & fieldPattern,
273 std::vector<signed char> & orientation);
306 template <
typename GlobalOrdinalT>
308 const std::vector<GlobalOrdinalT> & topology,
309 const FieldPattern & fieldPattern,
310 std::vector<signed char> & orientation);
317 template <
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename Node>
334 template <
typename ScalarT,
typename ArrayT>
336 getGhostedDataVector(
const std::string & fieldName,
const std::map<std::string,ArrayT> & data)
const;
347 template <
typename ScalarT,
typename ArrayT>
349 getDataVector(
const std::string & fieldName,
const std::map<std::string,ArrayT> & data)
const;
366 typedef Tpetra::Vector<int,int,GlobalOrdinalT,Node>
IntVector;
367 typedef Tpetra::Map<int,GlobalOrdinalT,Node>
Map;
370 void buildFieldVector(
const Tpetra::Vector<int,int,GlobalOrdinalT,Node> & source)
const;