#include <Teko_MultPreconditionerFactory.hpp>

Public Member Functions | |
| MultPrecsLinearOp (const Teko::LinearOp &A, const Teko::LinearOp &M1, const Teko::LinearOp &M2) | |
| Constructor. More... | |
| virtual Teko::VectorSpace | range () const |
| Range space of this operator. More... | |
| virtual Teko::VectorSpace | domain () const |
| Domain space of this operator. More... | |
| virtual void | implicitApply (const Teko::BlockedMultiVector &r, Teko::BlockedMultiVector &y, const double alpha=1.0, const double beta=0.0) const |
| Perform a matrix vector multiply with this implicitly defined blocked operator. More... | |
Public Member Functions inherited from Teko::BlockImplicitLinearOp | |
| virtual void | implicitApply (const Thyra::EOpTransp M_trans, const BlockedMultiVector &x, BlockedMultiVector &y, const double alpha=1.0, const double beta=0.0) const |
| Perform a matrix vector multiply with this implicitly defined blocked operator. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Teko::BlockImplicitLinearOp | |
| virtual bool | opSupportedImpl (const Thyra::EOpTransp M_trans) const |
| Functions required by Thyra::LinearOpBase. More... | |
Declaration of a Teko::BlockImplicitLinearOp. BlockImplicitLinearOp's are useful when there is no simple or cheap matrix representation of something like f(r). This particular class corresponds to f(r) = (M2 + M1 - M2 * A * M1) r
which is an application of a multiplicative preconditioner. Notice that when M1 = inv(A) or when M2 = inv(A), we get f(r) = inv(A)*r.
While the above matrix represenation could be used instead of writing an implicit function, it requires an additional matrix-vector product than an efficient implementation. It should be noted (see comments below) that there is an efficient matrix represenation of this f(r). Namely,
f(r) = [M2 I] [I -A] [ I]
[0 I] [ M1]
so we didn't really need to create an implicit operator.
Definition at line 91 of file Teko_MultPreconditionerFactory.hpp.
|
inline |
Constructor.
Definition at line 95 of file Teko_MultPreconditionerFactory.hpp.
|
inlinevirtual |
Range space of this operator.
Implements Teko::BlockImplicitLinearOp.
Definition at line 98 of file Teko_MultPreconditionerFactory.hpp.
|
inlinevirtual |
Domain space of this operator.
Implements Teko::BlockImplicitLinearOp.
Definition at line 99 of file Teko_MultPreconditionerFactory.hpp.
|
virtual |
Perform a matrix vector multiply with this implicitly defined blocked operator.
The apply function takes one vector as input and applies a linear operator. The result is returned in
. If this operator is reprsented as
then 
| [in] | x | |
| [in,out] | y | |
| [in] | alpha | (default=1) |
| [in] | beta | (default=0) |
Implements Teko::BlockImplicitLinearOp.
Definition at line 53 of file Teko_MultPreconditionerFactory.cpp.
1.8.5