10 #ifndef XPETRA_BLOCKREORDERMANAGER_HPP_
11 #define XPETRA_BLOCKREORDERMANAGER_HPP_
15 #include <Teuchos_StrUtils.hpp>
38 virtual Teuchos::RCP<BlockReorderManager>
Copy()
const {
59 virtual void SetBlock(
int blockIndex,
int reorder);
71 virtual void SetBlock(
int blockIndex,
const Teuchos::RCP<BlockReorderManager>& reorder);
77 virtual const Teuchos::RCP<BlockReorderManager>
GetBlock(
int blockIndex) {
78 TEUCHOS_ASSERT(blockIndex < (
int)
children_.size());
80 if (
children_[blockIndex] == Teuchos::null)
86 virtual const Teuchos::RCP<const BlockReorderManager>
GetBlock(
int blockIndex)
const {
87 TEUCHOS_ASSERT(blockIndex < (
int)
children_.size());
96 for (
size_t i = 0; i <
children_.size(); i++) {
100 ss <<
" " <<
children_[i]->toString() <<
" ";
109 for (
size_t i = 0; i <
children_.size(); i++) {
111 int subMax =
children_[i]->LargestIndex();
112 max = max > subMax ? max : subMax;
120 std::vector<Teuchos::RCP<BlockReorderManager> >
children_;
130 virtual Teuchos::RCP<BlockReorderManager>
Copy()
const {
137 virtual void SetBlock(
int ,
const Teuchos::RCP<BlockReorderManager>& ) {}
138 virtual const Teuchos::RCP<BlockReorderManager>
GetBlock(
int ) {
139 return Teuchos::null;
141 virtual const Teuchos::RCP<const BlockReorderManager>
GetBlock(
int )
const {
142 return Teuchos::null;
147 std::stringstream ss;
162 void tokenize(std::string srcInput, std::string whitespace, std::string prefer, std::vector<std::string>& tokens);
167 std::vector<std::string>::const_iterator begin,
168 std::vector<std::string>::const_iterator end,
169 std::vector<std::string>& subBlock);
virtual ~BlockReorderManager()
empty destructor
std::vector< std::string >::const_iterator buildSubBlock(std::vector< std::string >::const_iterator begin, std::vector< std::string >::const_iterator end, std::vector< std::string > &subBlock)
virtual std::string toString() const
for sanities sake, print a readable string
virtual std::string toString() const
for sanities sake, print a readable string
virtual int LargestIndex() const
returns largest index in this BlockReorderManager class
virtual const Teuchos::RCP< const BlockReorderManager > GetBlock(int blockIndex) const
Get a particular block. If there is no block at this index location return a new one.
Teuchos::RCP< const Xpetra::BlockReorderManager > blockedReorderFromString(std::string reorder)
Convert a string to a block reorder manager object.
BlockReorderManager()
Basic empty constructor.
void tokenize(std::string srcInput, std::string whitespace, std::string prefer, std::vector< std::string > &tokens)
BlockReorderLeaf(int ind)
virtual const Teuchos::RCP< BlockReorderManager > GetBlock(int)
Get a particular block. If there is no block at this index location return a new one.
virtual int LargestIndex() const
returns largest index in this BlockReorderManager class
int GetIndex() const
Get the index that is stored in this block/leaf.
virtual size_t GetNumBlocks() const
Returns number of subblocks.
virtual size_t GetNumBlocks() const
Returns number of subblocks.
virtual void SetBlock(int blockIndex, int reorder)
Sets the subblock to a specific index value.
int value_
The value of the index for this leaf.
virtual const Teuchos::RCP< BlockReorderManager > GetBlock(int blockIndex)
Get a particular block. If there is no block at this index location return a new one.
Teuchos::RCP< Xpetra::BlockReorderManager > blockedReorderFromTokens(const std::vector< std::string > &tokens)
virtual void SetNumBlocks(size_t sz)
Sets number of subblocks.
virtual void SetBlock(int, int)
Sets the subblock to a specific index value.
BlockReorderManager(const BlockReorderManager &bmm)
Copy constructor.
virtual void SetNumBlocks(size_t)
Sets number of subblocks.
virtual void SetBlock(int, const Teuchos::RCP< BlockReorderManager > &)
Sets the subblock to a specific index value.
BlockReorderLeaf(const BlockReorderLeaf &brl)
virtual const Teuchos::RCP< const BlockReorderManager > GetBlock(int) const
Get a particular block. If there is no block at this index location return a new one.
std::vector< Teuchos::RCP< BlockReorderManager > > children_
definitions of the subblocks
virtual Teuchos::RCP< BlockReorderManager > Copy() const
returns copy of this object
virtual Teuchos::RCP< BlockReorderManager > Copy() const
returns copy of this object