Teko Version of the Day
Loading...
Searching...
No Matches
Public Member Functions | List of all members
Teko::BlockLowerTriInverseOp Class Reference

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

#include <Teko_BlockLowerTriInverseOp.hpp>

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

Public Member Functions

 BlockLowerTriInverseOp (BlockedLinearOp &L, const std::vector< LinearOp > &invDiag)
 This constructor explicitly takes a lower triangular matrix and inverse diagonal operators and builds a forward substitution operator.
 
virtual void implicitApply (const BlockedMultiVector &x, BlockedMultiVector &y, const double alpha=1.0, const double beta=0.0) const=0
 Perform a matrix vector multiply with this implicitly defined blocked operator.
 
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.
 

Inherited methods from Thyra::LinearOpBase

const BlockedLinearOp L_
 operator $ L $
 
std::vector< LinearOp > invDiag_
 (Approximate) Inverses of the diagonal operators
 
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productRange_
 Range vector space.
 
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productDomain_
 Domain vector space.
 
virtual VectorSpace range () const
 Range space of this operator.
 
virtual VectorSpace domain () const
 Domain space of this operator.
 
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.
 

Additional Inherited Members

- Protected Member Functions inherited from Teko::BlockImplicitLinearOp
virtual bool opSupportedImpl (const Thyra::EOpTransp M_trans) const
 Functions required by Thyra::LinearOpBase.
 

Detailed Description

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

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

Definition at line 63 of file Teko_BlockLowerTriInverseOp.hpp.

Constructor & Destructor Documentation

◆ BlockLowerTriInverseOp()

Teko::BlockLowerTriInverseOp::BlockLowerTriInverseOp ( BlockedLinearOp & L,
const std::vector< LinearOp > & invDiag )

This constructor explicitly takes a lower triangular matrix and inverse diagonal operators and builds a forward substitution operator.

This constructor explicitly takes a lower triangular matrix and inverse diagonal operators and builds a forward substitution operator.

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

Definition at line 55 of file Teko_BlockLowerTriInverseOp.cpp.

Member Function Documentation

◆ range()

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

Range space of this operator.

Implements Teko::BlockImplicitLinearOp.

Definition at line 82 of file Teko_BlockLowerTriInverseOp.hpp.

◆ domain()

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

Domain space of this operator.

Implements Teko::BlockImplicitLinearOp.

Definition at line 85 of file Teko_BlockLowerTriInverseOp.hpp.

◆ implicitApply() [1/3]

void Teko::BlockLowerTriInverseOp::implicitApply ( const BlockedMultiVector & src,
BlockedMultiVector & dst,
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 86 of file Teko_BlockLowerTriInverseOp.cpp.

◆ implicitApply() [2/3]

virtual void Teko::BlockImplicitLinearOp::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 implicitly defined blocked 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)

Implements Teko::BlockImplicitLinearOp.

◆ implicitApply() [3/3]

void Teko::BlockImplicitLinearOp::implicitApply ( const Thyra::EOpTransp M_trans,
const BlockedMultiVector & x,
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 $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)

Reimplemented from Teko::BlockImplicitLinearOp.

Definition at line 99 of file Teko_BlockImplicitLinearOp.cpp.

Member Data Documentation

◆ L_

const BlockedLinearOp Teko::BlockLowerTriInverseOp::L_
protected

operator $ L $

Definition at line 108 of file Teko_BlockLowerTriInverseOp.hpp.

◆ invDiag_

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

(Approximate) Inverses of the diagonal operators

Definition at line 109 of file Teko_BlockLowerTriInverseOp.hpp.

◆ productRange_

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

Range vector space.

Definition at line 111 of file Teko_BlockLowerTriInverseOp.hpp.

◆ productDomain_

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

Domain vector space.

Definition at line 112 of file Teko_BlockLowerTriInverseOp.hpp.


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