Thyra Version of the Day
Loading...
Searching...
No Matches
Related Functions | List of all members

Concrete composite LinearOpBase subclass that creates single linear operator object out of a set of constituent LinearOpBase blocks. More...

#include <Thyra_DefaultBlockedLinearOp_decl.hpp>

Inheritance diagram for Thyra::DefaultBlockedLinearOp< Scalar >:
Inheritance graph
[legend]

Related Functions

(Note that these are not member functions.)

template<class Scalar >
RCP< DefaultBlockedLinearOp< Scalar > > defaultBlockedLinearOp ()
 Nonmember default constructor.
 
template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block1x1 (const Teuchos::RCP< const LinearOpBase< Scalar > > &A00, const std::string &label="")
 Form an implicit block 1x1 linear operator [ A00 ].
 
template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block1x2 (const Teuchos::RCP< const LinearOpBase< Scalar > > &A00, const Teuchos::RCP< const LinearOpBase< Scalar > > &A01, const std::string &label="")
 Form an implicit block 1x2 linear operator [ A00, A01 ].
 
template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block2x1 (const Teuchos::RCP< const LinearOpBase< Scalar > > &A00, const Teuchos::RCP< const LinearOpBase< Scalar > > &A10, const std::string &label="")
 Form an implicit block 2x1 linear operator [ A00; A10 ].
 
template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block2x2 (const Teuchos::RCP< const LinearOpBase< Scalar > > &A00, const Teuchos::RCP< const LinearOpBase< Scalar > > &A01, const Teuchos::RCP< const LinearOpBase< Scalar > > &A10, const Teuchos::RCP< const LinearOpBase< Scalar > > &A11, const std::string &label="")
 Form an implicit block 2x2 linear operator [ A00, A01; A10, A11 ].
 
template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock1x1 (const Teuchos::RCP< LinearOpBase< Scalar > > &A00, const std::string &label="")
 Form an implicit block 1x1 linear operator [ A00 ].
 
template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock1x2 (const Teuchos::RCP< LinearOpBase< Scalar > > &A00, const Teuchos::RCP< LinearOpBase< Scalar > > &A01, const std::string &label="")
 Form an implicit block 1x2 linear operator [ A00, A01 ].
 
template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock2x1 (const Teuchos::RCP< LinearOpBase< Scalar > > &A00, const Teuchos::RCP< LinearOpBase< Scalar > > &A10, const std::string &label="")
 Form an implicit block 2x1 linear operator [ A00; A10 ].
 
template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock2x2 (const Teuchos::RCP< LinearOpBase< Scalar > > &A00, const Teuchos::RCP< LinearOpBase< Scalar > > &A01, const Teuchos::RCP< LinearOpBase< Scalar > > &A10, const Teuchos::RCP< LinearOpBase< Scalar > > &A11, const std::string &label="")
 Form an implicit block 2x2 linear operator [ A00, A01; A10, A11 ].
 

Overridden from ScaledLinearOpBase

virtual bool supportsScaleLeftImpl () const
 
virtual bool supportsScaleRightImpl () const
 
virtual void scaleLeftImpl (const VectorBase< Scalar > &row_scaling)
 
virtual void scaleRightImpl (const VectorBase< Scalar > &col_scaling)
 

Constructors

 DefaultBlockedLinearOp ()
 

Overridden from PhysicallyBlockedLinearOpBase

void beginBlockFill ()
 
void beginBlockFill (const int numRowBlocks, const int numColBlocks)
 
void beginBlockFill (const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &productRange, const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &productDomain)
 
bool blockFillIsActive () const
 
bool acceptsBlock (const int i, const int j) const
 
void setNonconstBlock (const int i, const int j, const Teuchos::RCP< LinearOpBase< Scalar > > &block)
 
void setBlock (const int i, const int j, const Teuchos::RCP< const LinearOpBase< Scalar > > &block)
 
void endBlockFill ()
 
void uninitialize ()
 

Overridden from BlockedLinearOpBase

Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productRange () const
 
Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productDomain () const
 
bool blockExists (const int i, const int j) const
 
bool blockIsConst (const int i, const int j) const
 
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstBlock (const int i, const int j)
 
Teuchos::RCP< const LinearOpBase< Scalar > > getBlock (const int i, const int j) const
 

Overridden from LinearOpBase

Teuchos::RCP< const VectorSpaceBase< Scalar > > range () const
 
Teuchos::RCP< const VectorSpaceBase< Scalar > > domain () const
 
Teuchos::RCP< const LinearOpBase< Scalar > > clone () const
 
bool opSupportedImpl (EOpTransp M_trans) const
 Returns true only if all constituent operators support M_trans.
 
void applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 

Overridden from Teuchos::Describable

std::string description () const
 Prints just the name DefaultBlockedLinearOp along with the overall dimensions and the number of constituent operators.
 
void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 Prints the details about the constituent linear operators.
 

Overridden from RowStatLinearOpBase

virtual bool rowStatIsSupportedImpl (const RowStatLinearOpBaseUtils::ERowStat rowStat) const
 
virtual void getRowStatImpl (const RowStatLinearOpBaseUtils::ERowStat rowStat, const Teuchos::Ptr< VectorBase< Scalar > > &rowStatVec) const
 

Additional Inherited Members

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.
 
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.
 
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.
 
virtual bool blockFillIsActive () const =0
 Determines if a block fill is active or not .
 
virtual bool acceptsBlock (const int i, const int j) const =0
 Determines if the block (i,j) can be filled or not.
 
virtual void setNonconstBlock (const int i, const int j, const Teuchos::RCP< LinearOpBase< Scalar > > &block)=0
 Set a non-const block linear operator.
 
virtual void setBlock (const int i, const int j, const Teuchos::RCP< const LinearOpBase< Scalar > > &block)=0
 Set a const block linear operator.
 
virtual void endBlockFill ()=0
 End a block fill after which *this object can be used.
 
virtual void uninitialize ()=0
 Set to uninitlaized.
 
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productRange () const =0
 Return the product space for the range.
 
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productDomain () const =0
 Return the product space for the domain.
 
virtual bool blockExists (const int i, const int j) const =0
 Return if the block (i,j) exists or not.
 
virtual bool blockIsConst (const int i, const int j) const =0
 Return if the block (i,j) is const only or not.
 
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.
 
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.
 
- Public Member Functions inherited from Thyra::LinearOpBase< Scalar >
bool opSupported (EOpTransp M_trans) const
 Return if the M_trans operation of apply() is supported or not.
 
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.
 
- Public Member Functions inherited from Thyra::RowStatLinearOpBase< Scalar >
bool rowStatIsSupported (const RowStatLinearOpBaseUtils::ERowStat rowStat) const
 Determine if a given row stat is supported.
 
void getRowStat (const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
 Get some statistics about a supported row.
 
- Public Member Functions inherited from Thyra::ScaledLinearOpBase< Scalar >
bool supportsScaleLeft () const
 Determines if this objects supports left scaling.
 
bool supportsScaleRight () const
 Determines if this objects supports right scaling.
 
void scaleLeft (const VectorBase< Scalar > &row_scaling)
 Left scales operator with diagonal scaling operator.
 
void scaleRight (const VectorBase< Scalar > &col_scaling)
 Right scales operator with diagonal scaling operator.
 
- Protected Member Functions inherited from Thyra::LinearOpBase< Scalar >
- Protected Member Functions inherited from Thyra::RowStatLinearOpBase< Scalar >
- Protected Member Functions inherited from Thyra::ScaledLinearOpBase< Scalar >

Detailed Description

template<class Scalar>
class Thyra::DefaultBlockedLinearOp< Scalar >

Concrete composite LinearOpBase subclass that creates single linear operator object out of a set of constituent LinearOpBase blocks.

This class represents a blocked linear operator M of the form:

 M =  [ Op[0,0], Op[0,1], ... , Op[0,N];  
        Op[1,0], Op[1,1], ... , Op[1,N];  
        .        .              .         
        Op[M,0], Op[M,1], ... , Op[M,N]; ]

where Op[] is a logical 2D array of LinearOpBase objects and M=this->productRange()->getNumBlocks() and N=this->productDomain()->getNumBlocks(). Of course the operator M is not constructed explicitly but instead just applies the constituent linear operators with each set of blocks.

ToDo: Finish Documentation!

Definition at line 87 of file Thyra_DefaultBlockedLinearOp_decl.hpp.

Constructor & Destructor Documentation

◆ DefaultBlockedLinearOp()

template<class Scalar >
Thyra::DefaultBlockedLinearOp< Scalar >::DefaultBlockedLinearOp

Definition at line 64 of file Thyra_DefaultBlockedLinearOp_def.hpp.

Member Function Documentation

◆ beginBlockFill() [1/3]

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::beginBlockFill
virtual

◆ beginBlockFill() [2/3]

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::beginBlockFill ( const int  numRowBlocks,
const int  numColBlocks 
)
virtual

◆ beginBlockFill() [3/3]

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::beginBlockFill ( const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &  productRange,
const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &  productDomain 
)
virtual

◆ blockFillIsActive()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::blockFillIsActive
virtual

◆ acceptsBlock()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::acceptsBlock ( const int  i,
const int  j 
) const
virtual

◆ setNonconstBlock()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::setNonconstBlock ( const int  i,
const int  j,
const Teuchos::RCP< LinearOpBase< Scalar > > &  block 
)
virtual

◆ setBlock()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::setBlock ( const int  i,
const int  j,
const Teuchos::RCP< const LinearOpBase< Scalar > > &  block 
)
virtual

◆ endBlockFill()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::endBlockFill
virtual

◆ uninitialize()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::uninitialize
virtual

◆ productRange()

template<class Scalar >
RCP< const ProductVectorSpaceBase< Scalar > > Thyra::DefaultBlockedLinearOp< Scalar >::productRange
virtual

◆ productDomain()

template<class Scalar >
RCP< const ProductVectorSpaceBase< Scalar > > Thyra::DefaultBlockedLinearOp< Scalar >::productDomain
virtual

◆ blockExists()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::blockExists ( const int  i,
const int  j 
) const
virtual

◆ blockIsConst()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::blockIsConst ( const int  i,
const int  j 
) const
virtual

◆ getNonconstBlock()

template<class Scalar >
RCP< LinearOpBase< Scalar > > Thyra::DefaultBlockedLinearOp< Scalar >::getNonconstBlock ( const int  i,
const int  j 
)
virtual

◆ getBlock()

template<class Scalar >
RCP< const LinearOpBase< Scalar > > Thyra::DefaultBlockedLinearOp< Scalar >::getBlock ( const int  i,
const int  j 
) const
virtual

◆ range()

template<class Scalar >
RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultBlockedLinearOp< Scalar >::range
virtual

◆ domain()

template<class Scalar >
RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultBlockedLinearOp< Scalar >::domain
virtual

◆ clone()

template<class Scalar >
RCP< const LinearOpBase< Scalar > > Thyra::DefaultBlockedLinearOp< Scalar >::clone
virtual

Reimplemented from Thyra::LinearOpBase< Scalar >.

Definition at line 332 of file Thyra_DefaultBlockedLinearOp_def.hpp.

◆ description()

template<class Scalar >
std::string Thyra::DefaultBlockedLinearOp< Scalar >::description
virtual

Prints just the name DefaultBlockedLinearOp along with the overall dimensions and the number of constituent operators.

Reimplemented from Teuchos::Describable.

Definition at line 342 of file Thyra_DefaultBlockedLinearOp_def.hpp.

◆ describe()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::describe ( Teuchos::FancyOStream out,
const Teuchos::EVerbosityLevel  verbLevel 
) const
virtual

Prints the details about the constituent linear operators.

This function outputs different levels of detail based on the value passed in for verbLevel:

ToDo: Finish documentation!

Reimplemented from Teuchos::Describable.

Definition at line 356 of file Thyra_DefaultBlockedLinearOp_def.hpp.

◆ opSupportedImpl()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::opSupportedImpl ( EOpTransp  M_trans) const
protectedvirtual

Returns true only if all constituent operators support M_trans.

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 414 of file Thyra_DefaultBlockedLinearOp_def.hpp.

◆ applyImpl()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::applyImpl ( const EOpTransp  M_trans,
const MultiVectorBase< Scalar > &  X,
const Ptr< MultiVectorBase< Scalar > > &  Y,
const Scalar  alpha,
const Scalar  beta 
) const
protectedvirtual

◆ rowStatIsSupportedImpl()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::rowStatIsSupportedImpl ( const RowStatLinearOpBaseUtils::ERowStat  rowStat) const
protectedvirtual

◆ getRowStatImpl()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::getRowStatImpl ( const RowStatLinearOpBaseUtils::ERowStat  rowStat,
const Teuchos::Ptr< VectorBase< Scalar > > &  rowStatVec 
) const
protectedvirtual

◆ supportsScaleLeftImpl()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::supportsScaleLeftImpl
protectedvirtual

◆ supportsScaleRightImpl()

template<class Scalar >
bool Thyra::DefaultBlockedLinearOp< Scalar >::supportsScaleRightImpl
protectedvirtual

◆ scaleLeftImpl()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::scaleLeftImpl ( const VectorBase< Scalar > &  row_scaling)
protectedvirtual

◆ scaleRightImpl()

template<class Scalar >
void Thyra::DefaultBlockedLinearOp< Scalar >::scaleRightImpl ( const VectorBase< Scalar > &  col_scaling)
protectedvirtual

Friends And Related Function Documentation

◆ defaultBlockedLinearOp()

template<class Scalar >
RCP< DefaultBlockedLinearOp< Scalar > > defaultBlockedLinearOp ( )
related

Nonmember default constructor.

◆ block1x1()

template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block1x1 ( const Teuchos::RCP< const LinearOpBase< Scalar > > &  A00,
const std::string &  label = "" 
)
related

Form an implicit block 1x1 linear operator [ A00 ].

◆ block1x2()

template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block1x2 ( const Teuchos::RCP< const LinearOpBase< Scalar > > &  A00,
const Teuchos::RCP< const LinearOpBase< Scalar > > &  A01,
const std::string &  label = "" 
)
related

Form an implicit block 1x2 linear operator [ A00, A01 ].

◆ block2x1()

template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block2x1 ( const Teuchos::RCP< const LinearOpBase< Scalar > > &  A00,
const Teuchos::RCP< const LinearOpBase< Scalar > > &  A10,
const std::string &  label = "" 
)
related

Form an implicit block 2x1 linear operator [ A00; A10 ].

◆ block2x2()

template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > block2x2 ( const Teuchos::RCP< const LinearOpBase< Scalar > > &  A00,
const Teuchos::RCP< const LinearOpBase< Scalar > > &  A01,
const Teuchos::RCP< const LinearOpBase< Scalar > > &  A10,
const Teuchos::RCP< const LinearOpBase< Scalar > > &  A11,
const std::string &  label = "" 
)
related

Form an implicit block 2x2 linear operator [ A00, A01; A10, A11 ].

◆ nonconstBlock1x1()

template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock1x1 ( const Teuchos::RCP< LinearOpBase< Scalar > > &  A00,
const std::string &  label = "" 
)
related

Form an implicit block 1x1 linear operator [ A00 ].

◆ nonconstBlock1x2()

template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock1x2 ( const Teuchos::RCP< LinearOpBase< Scalar > > &  A00,
const Teuchos::RCP< LinearOpBase< Scalar > > &  A01,
const std::string &  label = "" 
)
related

Form an implicit block 1x2 linear operator [ A00, A01 ].

◆ nonconstBlock2x1()

template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock2x1 ( const Teuchos::RCP< LinearOpBase< Scalar > > &  A00,
const Teuchos::RCP< LinearOpBase< Scalar > > &  A10,
const std::string &  label = "" 
)
related

Form an implicit block 2x1 linear operator [ A00; A10 ].

◆ nonconstBlock2x2()

template<class Scalar >
Teuchos::RCP< LinearOpBase< Scalar > > nonconstBlock2x2 ( const Teuchos::RCP< LinearOpBase< Scalar > > &  A00,
const Teuchos::RCP< LinearOpBase< Scalar > > &  A01,
const Teuchos::RCP< LinearOpBase< Scalar > > &  A10,
const Teuchos::RCP< LinearOpBase< Scalar > > &  A11,
const std::string &  label = "" 
)
related

Form an implicit block 2x2 linear operator [ A00, A01; A10, A11 ].


The documentation for this class was generated from the following files: