Thyra
Version of the Day
|
Base interface for physically blocked linear operators. More...
#include <Thyra_PhysicallyBlockedLinearOpBase.hpp>
Public Member Functions | |
virtual void | beginBlockFill ()=0 |
Begin a block fill where the product range and domain spaces will be created on the fly and the number of block rows and columns is not known in advance. More... | |
virtual void | beginBlockFill (const int numRowBlocks, const int numColBlocks)=0 |
Begin a block fill where the product range and domain spaces will be created on the fly but the total number of block rows and block columns is known in advance. More... | |
virtual void | beginBlockFill (const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &productRange, const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &productDomain)=0 |
Begin a block fill where the product range and domain spaces are set a priori. More... | |
virtual bool | blockFillIsActive () const =0 |
Determines if a block fill is active or not . More... | |
virtual bool | acceptsBlock (const int i, const int j) const =0 |
Determines if the block (i,j) can be filled or not. More... | |
virtual void | setNonconstBlock (const int i, const int j, const Teuchos::RCP< LinearOpBase< Scalar > > &block)=0 |
Set a non-const block linear operator. More... | |
virtual void | setBlock (const int i, const int j, const Teuchos::RCP< const LinearOpBase< Scalar > > &block)=0 |
Set a const block linear operator. More... | |
virtual void | endBlockFill ()=0 |
End a block fill after which *this object can be used. More... | |
virtual void | uninitialize ()=0 |
Set to uninitlaized. More... | |
Public Member Functions inherited from Thyra::BlockedLinearOpBase< Scalar > | |
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > | productRange () const =0 |
Return the product space for the range. More... | |
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > | productDomain () const =0 |
Return the product space for the domain. More... | |
virtual bool | blockExists (const int i, const int j) const =0 |
Return if the block (i,j) exists or not. More... | |
virtual bool | blockIsConst (const int i, const int j) const =0 |
Return if the block (i,j) is const only or not. More... | |
virtual Teuchos::RCP < LinearOpBase< Scalar > > | getNonconstBlock (const int i, const int j)=0 |
Return a non-const view of the block (i,j) if it exists. More... | |
virtual Teuchos::RCP< const LinearOpBase< Scalar > > | getBlock (const int i, const int j) const =0 |
Return a const view of the block (i,j) if it exists. More... | |
Public Member Functions inherited from Thyra::LinearOpBase< Scalar > | |
virtual RCP< const VectorSpaceBase< Scalar > > | range () const =0 |
Return a smart pointer for the range space for this operator. More... | |
virtual RCP< const VectorSpaceBase< Scalar > > | domain () const =0 |
Return a smart pointer for the domain space for this operator. More... | |
bool | opSupported (EOpTransp M_trans) const |
Return if the M_trans operation of apply() is supported or not. More... | |
void | apply (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const |
Apply the linear operator to a multi-vector : Y = alpha*op(M)*X + beta*Y . More... | |
virtual RCP< const LinearOpBase< Scalar > > | clone () const |
Clone the linear operator object (if supported). More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Thyra::LinearOpBase< Scalar > | |
virtual bool | opSupportedImpl (EOpTransp M_trans) const =0 |
Override in subclass. More... | |
virtual void | applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const =0 |
Override in subclass. More... | |
Related Functions inherited from Thyra::LinearOpBase< Scalar > | |
template<class Scalar > | |
bool | isFullyUninitialized (const LinearOpBase< Scalar > &M) |
Determines if a linear operator is in the "Fully Uninitialized" state or not. More... | |
template<class Scalar > | |
bool | isPartiallyInitialized (const LinearOpBase< Scalar > &M) |
Determines if a linear operator is in the "Partially Initialized" state or not. More... | |
template<class Scalar > | |
bool | isFullyInitialized (const LinearOpBase< Scalar > &M) |
Determines if a linear operator is in the "Fully Initialized" state or not. More... | |
template<class Scalar > | |
bool | opSupported (const LinearOpBase< Scalar > &M, EOpTransp M_trans) |
Determines if an operation is supported for a single scalar type. More... | |
template<class Scalar > | |
void | apply (const LinearOpBase< Scalar > &M, const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha=static_cast< Scalar >(1.0), const Scalar beta=static_cast< Scalar >(0.0)) |
Non-member function call for M.apply(...) . More... | |
void | apply (const LinearOpBase< double > &M, const EOpTransp M_trans, const MultiVectorBase< double > &X, const Ptr< MultiVectorBase< double > > &Y, const double alpha=1.0, const double beta=0.0) |
Calls apply<double>(...) . More... | |
Base interface for physically blocked linear operators.
This interface allows clients to fill a blocked linear operator and create blocked objects with various numbers of row and column blocks. There are two modes to fill a blocked linear operator represented by the two forms of the beginBlockFill()
function.
ToDo: Finish documentation.
Definition at line 63 of file Thyra_PhysicallyBlockedLinearOpBase.hpp.
|
pure virtual |
Begin a block fill where the product range and domain spaces will be created on the fly and the number of block rows and columns is not known in advance.
Postconditions:
this->blockFillIsActive()==true
this->productRange().get()==NULL
this->productDomain().get()==NULL
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
Begin a block fill where the product range and domain spaces will be created on the fly but the total number of block rows and block columns is known in advance.
Preconditions:
numRowBlocks > 0
numColBlocks > 0
Postconditions:
this->blockFillIsActive()==true
this->productRange().get()==NULL
this->productDomain().get()==NULL
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
Begin a block fill where the product range and domain spaces are set a priori.
productRange | [in] The product space to use of the range space. |
productRange | [in] The product space to use of the domain space. |
Preconditions:
productRange.get()!=NULL && productRange->dim() > 0
productDomain.get()!=NULL && productDomain->dim() > 0
Postconditions:
this->blockFillIsActive()==true
this->productRange().get()==productRange.get()
this->productDomain().get()==productDomain.get()
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
Determines if a block fill is active or not .
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
Determines if the block (i,j)
can be filled or not.
i | [in] Zero-based index for the block row. |
j | [in] Zero-based index for the block column. |
Preconditions:
i >= 0 && j >= 0
this->productRange().get()!=NULL
] i < this->productRange()->numBlocks()
this->productDomain().get()!=NULL
] j < this->productDomain()->numBlocks()
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
Set a non-const block linear operator.
i | [in] Zero-based index for the block row. |
j | [in] Zero-based index for the block column. |
block | [in] The block operator being set. |
Preconditions:
this->acceptsBlock(i,j)==true
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
Set a const block linear operator.
i | [in] Zero-based index for the block row. |
j | [in] Zero-based index for the block column. |
block | [in] The block operator being set. |
Preconditions:
this->acceptsBlock(i,j)==true
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
End a block fill after which *this
object can be used.
If a valid linear operator object can not be formed from what was set then a ??? exception will be thrown.
Postconditions:
this->blockFillIsActive()==false
this->productRange().get()!=NULL
this->productDomain().get()!=NULL
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.
|
pure virtual |
Set to uninitlaized.
Postconditions:
this->blockFillIsActive()==false
this->productRange().get()==NULL
this->productDomain().get()==NULL
Implemented in Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >, and Thyra::DefaultBlockedLinearOp< Scalar >.