Teko  Version of the Day
 All Classes Files Functions Variables Pages
Public Member Functions | Protected Attributes | List of all members
Teko::BlockUpperTriInverseOp Class Reference

This linear operator computes the inverse of a upper triangular matrix. More...

#include <Teko_BlockUpperTriInverseOp.hpp>

Inheritance diagram for Teko::BlockUpperTriInverseOp:
Inheritance graph
[legend]

Public Member Functions

 BlockUpperTriInverseOp (BlockedLinearOp &U, const std::vector< LinearOp > &invDiag)
 This constructor explicitly takes an upper triangular matrix and inverse diagonal operators and builds a back substitution 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...
 
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 U_
 operator $ U $ More...
 
std::vector< LinearOp > invDiag_
 (Approximate) Inverses of the diagonal operators More...
 
Teuchos::RCP< const
Thyra::ProductVectorSpaceBase
< double > > 
productRange_
 Range vector space. More...
 
Teuchos::RCP< const
Thyra::ProductVectorSpaceBase
< double > > 
productDomain_
 Domain vector space. 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...
 

Detailed Description

This linear operator computes the inverse of a upper triangular matrix.

This linear operator computes the inverse of an upper triangular matrix. This requires, the upper triangular blocks, as well as the inverse of the operators on the diagonal.

Definition at line 63 of file Teko_BlockUpperTriInverseOp.hpp.

Constructor & Destructor Documentation

Teko::BlockUpperTriInverseOp::BlockUpperTriInverseOp ( BlockedLinearOp &  U,
const std::vector< LinearOp > &  invDiag 
)

This constructor explicitly takes an upper triangular matrix and inverse diagonal operators and builds a back substitution operator.

This constructor explicitly takes the parts of $ A $ required to build the inverse operator.

This constructor explicitly takes an upper triangular matrix and inverse diagonal operators and builds a back substitution operator.

Parameters
[in]UUpper triangular matrix object
[in]invDiagVector containing the inverse of the diagonal blocks

This constructor explicitly takes the parts of $ A $ required to build the inverse operator.

Parameters
[in]AThe block $ 2 \times 2 $ $A$ operator.
[in]invA00An approximate inverse of $ A_{00} $.
[in]invSAn approximate inverse of $ S = -A_{11} + A_{10} A_{00}^{-1} A_{01} $.

Definition at line 65 of file Teko_BlockUpperTriInverseOp.cpp.

Member Function Documentation

virtual VectorSpace Teko::BlockUpperTriInverseOp::range ( ) const
inlinevirtual

Range space of this operator.

Implements Teko::BlockImplicitLinearOp.

Definition at line 80 of file Teko_BlockUpperTriInverseOp.hpp.

virtual VectorSpace Teko::BlockUpperTriInverseOp::domain ( ) const
inlinevirtual

Domain space of this operator.

Implements Teko::BlockImplicitLinearOp.

Definition at line 83 of file Teko_BlockUpperTriInverseOp.hpp.

void Teko::BlockUpperTriInverseOp::implicitApply ( const BlockedMultiVector &  x,
BlockedMultiVector &  y,
const double  alpha = 1.0,
const double  beta = 0.0 
) const
virtual

Perform a matrix vector multiply with this operator.

The apply function takes one vector as input and applies the inverse $ LDU $ decomposition. The result is returned in $y$. If this operator is reprsented as $M$ then $ y = \alpha M x + \beta y $ (ignoring conjugation!).

Parameters
[in]x
[in,out]y
[in]alpha(default=1)
[in]beta(default=0)

Implements Teko::BlockImplicitLinearOp.

Definition at line 84 of file Teko_BlockUpperTriInverseOp.cpp.

void Teko::BlockUpperTriInverseOp::implicitApply ( const Thyra::EOpTransp  M_trans,
const BlockedMultiVector &  src,
BlockedMultiVector &  dst,
const double  alpha = 1.0,
const double  beta = 0.0 
) const
virtual

Perform a matrix vector multiply with this implicitly defined blocked operator.

Perform a matrix vector multiply with this operator.

The apply function takes one vector as input and applies a linear operator. The result is returned in $y$. If this operator is reprsented as $M$ then $ y = \alpha M x + \beta y $

Parameters
[in]x
[in,out]y
[in]alpha(default=1)
[in]beta(default=0)

The apply function takes one vector as input and applies the inverse $ LDU $ decomposition. The result is returned in $y$. If this operator is reprsented as $M$ then $ y = \alpha M x + \beta y $ (ignoring conjugation!).

Parameters
[in]x
[in,out]y
[in]alpha(default=1)
[in]beta(default=0)

Reimplemented from Teko::BlockImplicitLinearOp.

Definition at line 103 of file Teko_BlockUpperTriInverseOp.cpp.

Member Data Documentation

const BlockedLinearOp Teko::BlockUpperTriInverseOp::U_
protected

operator $ U $

Definition at line 123 of file Teko_BlockUpperTriInverseOp.hpp.

std::vector<LinearOp> Teko::BlockUpperTriInverseOp::invDiag_
protected

(Approximate) Inverses of the diagonal operators

Definition at line 124 of file Teko_BlockUpperTriInverseOp.hpp.

Teuchos::RCP<const Thyra::ProductVectorSpaceBase<double> > Teko::BlockUpperTriInverseOp::productRange_
protected

Range vector space.

Definition at line 126 of file Teko_BlockUpperTriInverseOp.hpp.

Teuchos::RCP<const Thyra::ProductVectorSpaceBase<double> > Teko::BlockUpperTriInverseOp::productDomain_
protected

Domain vector space.

Definition at line 127 of file Teko_BlockUpperTriInverseOp.hpp.


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