This linear operator approximates the inverse of a block operator using a block decomposition. More...
#include <Teko_LU2x2InverseOp.hpp>
Public Member Functions | |
LU2x2InverseOp (const BlockedLinearOp &A, const LinearOp &invA00, const LinearOp &invS) | |
This constructor explicitly takes the parts of required to build the inverse operator. More... | |
LU2x2InverseOp (const BlockedLinearOp &A, const LinearOp &hatInvA00, const LinearOp &tildeInvA00, const LinearOp &invS) | |
This constructor explicitly takes the parts of required to build the inverse operator. More... | |
Inherited methods from Thyra::LinearOpBase | |
virtual VectorSpace | range () const |
Range space of this operator. More... | |
virtual VectorSpace | domain () const |
Domain space of this operator. More... | |
virtual void | implicitApply (const BlockedMultiVector &x, BlockedMultiVector &y, const double alpha=1.0, const double beta=0.0) const |
Perform a matrix vector multiply with this 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... | |
Protected Attributes | |
const BlockedLinearOp | A_ |
operator More... | |
const LinearOp | hatInvA00_ |
inverse of More... | |
const LinearOp | tildeInvA00_ |
inverse of More... | |
const LinearOp | invS_ |
inverse of More... | |
const LinearOp | A10_ |
operator More... | |
const LinearOp | A01_ |
operator More... | |
Teuchos::RCP< const Thyra::ProductVectorSpaceBase < double > > | productRange_ |
Range vector space. More... | |
Teuchos::RCP< const Thyra::ProductVectorSpaceBase < double > > | productDomain_ |
Domain vector space. More... | |
Related Functions | |
(Note that these are not member functions.) | |
ModifiableLinearOp | createDiagnosticLinearOp (const Teuchos::RCP< std::ostream > &os, const ModifiableLinearOp &A, const std::string &label) |
Constructor method for building DiagnosticLinearOp . More... | |
ModifiableLinearOp | createDiagnosticLinearOp (const Teuchos::RCP< std::ostream > &os, const LinearOp &A, const std::string &label) |
Constructor method for building DiagnosticLinearOp . More... | |
ModifiableLinearOp | createDiagnosticLinearOp (const Teuchos::RCP< std::ostream > &os, const Teko::LinearOp &fwdOp, const ModifiableLinearOp &A, const std::string &label) |
Constructor method for building DiagnosticLinearOp . More... | |
LinearOp | createLU2x2InverseOp (BlockedLinearOp &A, LinearOp &invA00, LinearOp &invS) |
Constructor method for building LU2x2InverseOp . More... | |
LinearOp | createLU2x2InverseOp (BlockedLinearOp &A, LinearOp &invA00, LinearOp &invS, const std::string &str) |
Constructor method for building LU2x2InverseOp . More... | |
LinearOp | createLU2x2InverseOp (BlockedLinearOp &A, LinearOp &hatInvA00, LinearOp &tildeInvA00, LinearOp &invS) |
Constructor method for building LU2x2InverseOp . More... | |
LinearOp | createLU2x2InverseOp (BlockedLinearOp &A, LinearOp &hatInvA00, LinearOp &tildeInvA00, LinearOp &invS, const std::string &str) |
Constructor method for building LU2x2InverseOp . 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... | |
This linear operator approximates the inverse of a block operator using a block decomposition.
For a matrix that is blocked like
this class evaluates the given and the inverse of the Schur complement. The factorization is defined as
where the Schur complement is . In order to do this 2 evaluations of and a single evalution of are needed. For increased flexibility both evaluations of can be specified independently. For righthand side vector and solution vector the two inverses ( -hat and -tilde) are needed to evaluate
,
where is an intermediate step.
Definition at line 101 of file Teko_LU2x2InverseOp.hpp.
Teko::LU2x2InverseOp::LU2x2InverseOp | ( | const BlockedLinearOp & | A, |
const LinearOp & | invA00, | ||
const LinearOp & | invS | ||
) |
This constructor explicitly takes the parts of required to build the inverse operator.
This constructor explicitly takes the parts of required to build the inverse operator.
[in] | A | The block operator. |
[in] | invA00 | An approximate inverse of , used for both and |
[in] | invS | An approximate inverse of . |
Definition at line 63 of file Teko_LU2x2InverseOp.cpp.
Teko::LU2x2InverseOp::LU2x2InverseOp | ( | const BlockedLinearOp & | A, |
const LinearOp & | hatInvA00, | ||
const LinearOp & | tildeInvA00, | ||
const LinearOp & | invS | ||
) |
This constructor explicitly takes the parts of required to build the inverse operator.
This constructor explicitly takes the parts of required to build the inverse operator.
[in] | A | The block operator. |
[in] | hatInvA00 | An approximate inverse of |
[in] | tildeInvA00 | An approximate inverse of |
[in] | invS | An approximate inverse of . |
Definition at line 90 of file Teko_LU2x2InverseOp.cpp.
|
inlinevirtual |
Range space of this operator.
Implements Teko::BlockImplicitLinearOp.
Definition at line 137 of file Teko_LU2x2InverseOp.hpp.
|
inlinevirtual |
Domain space of this operator.
Implements Teko::BlockImplicitLinearOp.
Definition at line 140 of file Teko_LU2x2InverseOp.hpp.
|
virtual |
Perform a matrix vector multiply with this operator.
The apply
function takes one vector as input and applies the inverse decomposition. The result is returned in . If this operator is reprsented as then (ignoring conjugation!).
[in] | x | |
[in,out] | y | |
[in] | alpha | (default=1) |
[in] | beta | (default=0) |
Implements Teko::BlockImplicitLinearOp.
Definition at line 107 of file Teko_LU2x2InverseOp.cpp.
|
related |
Constructor method for building DiagnosticLinearOp
.
Constructor method for building DiagnosticLinearOp
.
[in] | os | Output stream to print diagnostics to |
[in] | A | Operator to be wrapped |
[in] | label | String for outputing with diagnostics |
Definition at line 172 of file Teko_DiagnosticLinearOp.hpp.
|
related |
Constructor method for building DiagnosticLinearOp
.
Constructor method for building DiagnosticLinearOp
.
[in] | os | Output stream to print diagnostics to |
[in] | A | Operator to be wrapped |
[in] | label | String for outputing with diagnostics |
Definition at line 190 of file Teko_DiagnosticLinearOp.hpp.
|
related |
Constructor method for building DiagnosticLinearOp
.
Constructor method for building DiagnosticLinearOp
.
[in] | os | Output stream to print diagnostics to |
[in] | fwdOp | Forward operator to compute residual with |
[in] | A | Operator to be wrapped |
[in] | label | String for outputing with diagnostics |
Definition at line 209 of file Teko_DiagnosticLinearOp.hpp.
|
related |
Constructor method for building LU2x2InverseOp
.
Constructor method for building LU2x2InverseOp
.
[in] | A | 2x2 Operator to be decomposed |
[in] | invA00 | Approximate inverse of the operators block. |
[in] | invS | Approximate inverse of the Schur complement |
Definition at line 196 of file Teko_LU2x2InverseOp.hpp.
|
related |
Constructor method for building LU2x2InverseOp
.
Constructor method for building LU2x2InverseOp
.
[in] | A | 2x2 Operator to be decomposed |
[in] | invA00 | Approximate inverse of the operators block. |
[in] | invS | Approximate inverse of the Schur complement |
[in] | str | String to label the operator |
Definition at line 215 of file Teko_LU2x2InverseOp.hpp.
|
related |
Constructor method for building LU2x2InverseOp
.
Constructor method for building LU2x2InverseOp
.
[in] | A | 2x2 Operator to be decomposed |
[in] | hatInvA00 | First approximate inverse of the operators block. |
[in] | tildeInvA00 | Second approximate inverse of the operators block. |
[in] | invS | Approximate inverse of the Schur complement |
Definition at line 237 of file Teko_LU2x2InverseOp.hpp.
|
related |
Constructor method for building LU2x2InverseOp
.
Constructor method for building LU2x2InverseOp
.
[in] | A | 2x2 Operator to be decomposed |
[in] | hatInvA00 | First approximate inverse of the operators block. |
[in] | tildeInvA00 | Second approximate inverse of the operators block. |
[in] | invS | Approximate inverse of the Schur complement |
[in] | str | String to label the operator |
Definition at line 257 of file Teko_LU2x2InverseOp.hpp.
|
protected |
operator
Definition at line 165 of file Teko_LU2x2InverseOp.hpp.
|
protected |
inverse of
Definition at line 166 of file Teko_LU2x2InverseOp.hpp.
|
protected |
inverse of
Definition at line 167 of file Teko_LU2x2InverseOp.hpp.
|
protected |
inverse of
Definition at line 168 of file Teko_LU2x2InverseOp.hpp.
|
protected |
operator
Definition at line 171 of file Teko_LU2x2InverseOp.hpp.
|
protected |
operator
Definition at line 172 of file Teko_LU2x2InverseOp.hpp.
|
protected |
Range vector space.
Definition at line 174 of file Teko_LU2x2InverseOp.hpp.
|
protected |
Domain vector space.
Definition at line 175 of file Teko_LU2x2InverseOp.hpp.