#include <Teko_MultPreconditionerFactory.hpp>

Public Member Functions | |
| MultPrecsLinearOp (const Teko::LinearOp &A, const Teko::LinearOp &M1, const Teko::LinearOp &M2) | |
| Constructor. | |
| virtual Teko::VectorSpace | range () const |
| Range space of this operator. | |
| virtual Teko::VectorSpace | domain () const |
| Domain space of this operator. | |
| 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. | |
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.
| Teko::MultPrecsLinearOp::MultPrecsLinearOp | ( | const Teko::LinearOp & | A, |
| const Teko::LinearOp & | M1, | ||
| const Teko::LinearOp & | M2 | ||
| ) | [inline] |
Constructor.
Definition at line 95 of file Teko_MultPreconditionerFactory.hpp.
| virtual Teko::VectorSpace Teko::MultPrecsLinearOp::range | ( | ) | const [inline, virtual] |
Range space of this operator.
Implements Teko::BlockImplicitLinearOp.
Definition at line 98 of file Teko_MultPreconditionerFactory.hpp.
| virtual Teko::VectorSpace Teko::MultPrecsLinearOp::domain | ( | ) | const [inline, virtual] |
Domain space of this operator.
Implements Teko::BlockImplicitLinearOp.
Definition at line 99 of file Teko_MultPreconditionerFactory.hpp.
| void Teko::MultPrecsLinearOp::implicitApply | ( | const Teko::BlockedMultiVector & | x, |
| Teko::BlockedMultiVector & | y, | ||
| const double | alpha = 1.0, |
||
| const double | beta = 0.0 |
||
| ) | const [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.7.6.1