Thyra
Version of the Day
|
Interface class for implicitly multiplied linear operators. More...
#include <Thyra_MultipliedLinearOpBase.hpp>
Pure virtual functions that must be overridden by subclasses | |
virtual int | numOps () const =0 |
Returns the number of constituent operators. More... | |
virtual bool | opIsConst (const int k) const =0 |
Determine if the k th constituent operator is const-only or not. More... | |
virtual Teuchos::RCP < LinearOpBase< Scalar > > | getNonconstOp (const int k)=0 |
Return the k th non-constant constituent operator. More... | |
virtual Teuchos::RCP< const LinearOpBase< Scalar > > | getOp (const int k) const =0 |
Return the k th constant constituent operator. More... | |
Additional Inherited Members | |
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... | |
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... | |
Interface class for implicitly multiplied linear operators.
This interface represents a multiplied linear operator M
of the form:
M = Op[0] * Op[1] * ... * Op[numOps-1]
where Op[]
is an array of numOps
LinearOpBase
objects. Of course the operator M
is not constructed explicitly but instead just applies the constituent linear operators accordingly using temporaries.
In other words, subclasses define apply()
as:
y = alpha*M*x + beta*y = alpha * ( Op[0] * ( Op[1] * ( .... ( Op[numOps-1] * x ) ... ) ) ) + beta * y
Definition at line 75 of file Thyra_MultipliedLinearOpBase.hpp.
|
pure virtual |
Returns the number of constituent operators.
A return value of 0
indicates that this
is not fully initialized.
Implemented in Thyra::DefaultMultipliedLinearOp< Scalar >.
|
pure virtual |
Determine if the k
th constituent operator is const-only or not.
k | [in] The zero-based index of the constituent operator to return. |
Preconditions:
0 <= k < this->numOps()
Implemented in Thyra::DefaultMultipliedLinearOp< Scalar >.
|
pure virtual |
Return the k
th non-constant constituent operator.
k | [in] The zero-based index of the constituent operator to return. |
Preconditions:
0 <= k < this->numOps()
this->opIsConst(k)==false
Implemented in Thyra::DefaultMultipliedLinearOp< Scalar >.
|
pure virtual |
Return the k
th constant constituent operator.
k | [in] The zero-based index of the constituent operator to return. |
Preconditions:
0 <= k < this->numOps()
Implemented in Thyra::DefaultMultipliedLinearOp< Scalar >.