46 #ifndef XPETRA_REORDEREDBLOCKEDMULTIVECTOR_HPP
47 #define XPETRA_REORDEREDBLOCKEDMULTIVECTOR_HPP
69 template <
class Scalar,
82 #undef XPETRA_REORDEREDBLOCKEDMULTIVECTOR_SHORT
112 brm_ = Teuchos::null;
132 map = bmap->getMap(Teuchos::as<size_t>(leaf->
GetIndex()),
false);
135 std::vector<Teuchos::RCP<const Map> > subMaps (numBlocks, Teuchos::null);
137 for(
size_t i = 0; i < numBlocks; i++) {
154 std::string
description()
const {
return "ReorderedBlockedMultiVector"; }
172 template<
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
188 map = bmap->getMap(Teuchos::as<size_t>(leaf->
GetIndex()), bThyraMode);
191 std::vector<Teuchos::RCP<const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > > subMaps (numBlocks, Teuchos::null);
193 for(
size_t i = 0; i < numBlocks; i++) {
217 template<
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
244 if(subBVec == Teuchos::null) {
260 std::vector<Teuchos::RCP<const Map> > rowSubMaps (1, submap);
264 rbvec->
setMultiVector(0,Teuchos::rcp_const_cast<MultiVector>(vec),
false);
275 std::vector<Teuchos::RCP<const Map> > rowSubMaps (rowSz, Teuchos::null);
276 for(
size_t i = 0; i < rowSz; i++) {
285 for(
size_t i = 0; i < rowSz; i++) {
288 rbvec->
setMultiVector(i,Teuchos::rcp_const_cast<MultiVector>(subvec),
false);
295 template<
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
321 if(bbvec == Teuchos::null) {
328 std::vector<Teuchos::RCP<const Map> > rowXpSubMaps (1, xpsubmap);
329 std::vector<Teuchos::RCP<const Map> > rowTySubMaps (1, thysubmap);
339 rbvec = Teuchos::rcp_dynamic_cast<BlockedMultiVector>(vec);
345 std::vector<Teuchos::RCP<const Map> > rowXpSubMaps (rowSz, Teuchos::null);
346 std::vector<Teuchos::RCP<const Map> > rowTySubMaps (rowSz, Teuchos::null);
347 for(
size_t i = 0; i < rowSz; i++) {
360 for(
size_t i = 0; i < rowSz; i++) {
363 rbvec->
setMultiVector(i,Teuchos::rcp_const_cast<MultiVector>(subvec),
true);
370 template<
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
374 if(bvec->getBlockedMap()->getThyraMode() ==
false) {
383 template<
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
389 if(bvec->getBlockedMap()->getThyraMode() ==
false) {
390 rbvec =
mergeSubBlocks(brm,Teuchos::rcp_const_cast<const BlockedMultiVector>(bvec));
395 return Teuchos::rcp_const_cast<MultiVector>(rbvec);
401 #define XPETRA_REORDEREDBLOCKEDMULTIVECTOR_SHORT