47 #ifndef __Teko_BlockedReordering_hpp__ 48 #define __Teko_BlockedReordering_hpp__ 53 #include "Teuchos_RCP.hpp" 55 #include "Thyra_LinearOpBase.hpp" 56 #include "Thyra_LinearOpDefaultBase.hpp" 57 #include "Thyra_BlockedLinearOpBase.hpp" 58 #include "Thyra_ProductMultiVectorBase.hpp" 131 virtual Teuchos::RCP<BlockReorderManager>
Copy()
const 150 virtual void SetBlock(
int blockIndex,
int reorder);
164 virtual void SetBlock(
int blockIndex,
const Teuchos::RCP<BlockReorderManager> & reorder);
181 virtual const Teuchos::RCP<BlockReorderManager>
GetBlock(
int blockIndex);
197 virtual const Teuchos::RCP<const BlockReorderManager>
GetBlock(
int blockIndex)
const;
200 virtual std::string
toString()
const;
207 std::vector<Teuchos::RCP<BlockReorderManager> >
children_;
228 virtual Teuchos::RCP<BlockReorderManager>
Copy()
const 238 virtual void SetBlock(
int blockIndex,
int reorder) { }
241 virtual const Teuchos::RCP<BlockReorderManager>
GetBlock(
int blockIndex)
242 {
return Teuchos::null; }
245 virtual const Teuchos::RCP<const BlockReorderManager>
GetBlock(
int blockIndex)
const 246 {
return Teuchos::null; }
253 { std::stringstream ss; ss <<
value_;
return ss.str(); }
288 Teuchos::RCP<const Thyra::LinearOpBase<double> >
290 const Teuchos::RCP<
const Thyra::BlockedLinearOpBase<double> > & blkOp);
315 Teuchos::RCP<const Thyra::LinearOpBase<double> >
317 const Teuchos::RCP<
const Thyra::BlockedLinearOpBase<double> > & blkOp);
340 Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
342 const Teuchos::RCP<
const Thyra::ProductVectorSpaceBase<double> > & blkSpc);
355 Teuchos::RCP<Thyra::MultiVectorBase<double> >
357 const Teuchos::RCP<Thyra::ProductMultiVectorBase<double> > & blkVec);
370 Teuchos::RCP<const Thyra::MultiVectorBase<double> >
372 const Teuchos::RCP<
const Thyra::ProductMultiVectorBase<double> > & blkVec);
386 Teuchos::RCP<Thyra::MultiVectorBase<double> >
388 const Teuchos::RCP<Thyra::ProductMultiVectorBase<double> > & blkVec);
402 Teuchos::RCP<const Thyra::MultiVectorBase<double> >
404 const Teuchos::RCP<
const Thyra::ProductMultiVectorBase<double> > & blkVec);
408 Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
410 const Teuchos::RCP<
const Thyra::VectorSpaceBase<double> > & blkSpc);
int value_
The value of the index for this leaf.
virtual int LargestIndex() const
Largest index in this manager.
virtual void SetNumBlocks(int sz)
Set the number of subblocks (this one does nothing b/c its a leaf)
Teuchos::RCP< Thyra::MultiVectorBase< double > > buildReorderedMultiVector(const BlockReorderManager &mgr, const Teuchos::RCP< Thyra::ProductMultiVectorBase< double > > &blkVec)
Convert a flat multi vector into a reordered multivector.
BlockReorderManager(const BlockReorderManager &bmm)
Copy constructor.
virtual const Teuchos::RCP< const BlockReorderManager > GetBlock(int blockIndex) const
Get a particular subblock...this returns null.
std::vector< Teuchos::RCP< BlockReorderManager > > children_
Definitions of the subblocks.
virtual Teuchos::RCP< BlockReorderManager > Copy() const
Make a copy of this object.
Class that describes how a flat blocked operator should be reordered.
virtual const Teuchos::RCP< BlockReorderManager > GetBlock(int blockIndex)
Get a particular subblock...this returns null.
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.
virtual ~BlockReorderManager()
Do nothing destructor.
virtual void SetNumBlocks(int sz)
Sets the number of subblocks.
BlockReorderLeaf(int ind)
Simple constructor that sets the index.
BlockReorderManager(int sz)
Set this level to have size sz.
virtual int LargestIndex() const
Largest index in this manager.
virtual void SetBlock(int blockIndex, int reorder)
Set the sub block, this does nothing b/c its a leaf.
int GetIndex() const
Get the the index that is stored in this block.
BlockReorderLeaf(const BlockReorderLeaf &brl)
Copy constructor.
virtual int GetNumBlocks() const
Get the number of subblocks (this one returns 0 b/c its a leaf)
virtual std::string toString() const
Return a string description of this leaf class.
BlockReorderManager()
Basic empty constructor.
virtual Teuchos::RCP< BlockReorderManager > Copy() const
Returns a copy of this object.
virtual std::string toString() const
For sanities sake, print a readable string.
virtual int GetNumBlocks() const
Gets the number of subblocks.
virtual void SetBlock(int blockIndex, int reorder)
Sets the sublock to a specific index value.
Teuchos::RCP< const BlockReorderManager > blockedReorderFromString(std::string &reorder)
Convert a string to a block reorder manager object.