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_;
224 : value_(brl.value_) {}
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(); }
290 Teuchos::RCP<const Thyra::LinearOpBase<double> >
292 const Teuchos::RCP<
const Thyra::BlockedLinearOpBase<double> > & blkOp);
317 Teuchos::RCP<const Thyra::LinearOpBase<double> >
319 const Teuchos::RCP<
const Thyra::BlockedLinearOpBase<double> > & blkOp);
342 Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
344 const Teuchos::RCP<
const Thyra::ProductVectorSpaceBase<double> > & blkSpc);
357 Teuchos::RCP<Thyra::MultiVectorBase<double> >
359 const Teuchos::RCP<Thyra::ProductMultiVectorBase<double> > & blkVec);
372 Teuchos::RCP<const Thyra::MultiVectorBase<double> >
374 const Teuchos::RCP<
const Thyra::ProductMultiVectorBase<double> > & blkVec);
388 Teuchos::RCP<Thyra::MultiVectorBase<double> >
390 const Teuchos::RCP<Thyra::ProductMultiVectorBase<double> > & blkVec);
404 Teuchos::RCP<const Thyra::MultiVectorBase<double> >
406 const Teuchos::RCP<
const Thyra::ProductMultiVectorBase<double> > & blkVec);
410 Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
412 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)
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.
Teuchos::RCP< Thyra::MultiVectorBase< double > > buildFlatMultiVector(const BlockReorderManager &mgr, const Teuchos::RCP< Thyra::ProductMultiVectorBase< double > > &blkVec)
Convert a reordered multivector into a flat multivector.
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.
Teuchos::RCP< const Thyra::VectorSpaceBase< double > > buildReorderedVectorSpace(const BlockReorderManager &mgr, const Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > &blkSpc)
Use the BlockReorderManager to change a flat vector space into a composite vector space...
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.
Teuchos::RCP< const BlockReorderManager > blockedReorderFromString(std::string &reorder)
Convert a string to a block reorder manager object.
BlockReorderLeaf(const BlockReorderLeaf &brl)
Copy constructor.
virtual int GetNumBlocks() const
Get the number of subblocks (this one returns 0 b/c its a leaf)
Teuchos::RCP< const Thyra::LinearOpBase< double > > buildReorderedLinearOp(const BlockReorderManager &bmm, const Teuchos::RCP< const Thyra::BlockedLinearOpBase< double > > &blkOp)
Use the BlockReorderManager to change a flat square blocked operator into a composite operator...
virtual std::string toString() const
Return a string description of this leaf class.
BlockReorderManager()
Basic empty constructor.
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.
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.