Thyra Version of the Day
Loading...
Searching...
No Matches
Related Symbols | List of all members

Concrete LinearOpBase subclass that creates an implicit LinearOpBase object using the inverse action of a LinearOpWithSolveBase object. More...

#include <Thyra_DefaultInverseLinearOp_decl.hpp>

Inheritance diagram for Thyra::DefaultInverseLinearOp< Scalar >:
Inheritance graph
[legend]

Related Symbols

(Note that these are not member symbols.)

template<class Scalar >
RCP< LinearOpBase< Scalar > > nonconstInverse (const RCP< LinearOpWithSolveBase< Scalar > > &A, const Ptr< const SolveCriteria< Scalar > > &fwdSolveCriteria=Teuchos::null, const EThrowOnSolveFailure throwOnFwdSolveFailure=THROW_ON_SOLVE_FAILURE, const Ptr< const SolveCriteria< Scalar > > &adjSolveCriteria=Teuchos::null, const EThrowOnSolveFailure throwOnAdjSolveFailure=THROW_ON_SOLVE_FAILURE)
 Form a non-const implicit inverse operator M = inv(A).
 
template<class Scalar >
RCP< LinearOpBase< Scalar > > inverse (const RCP< const LinearOpWithSolveBase< Scalar > > &A, const Ptr< const SolveCriteria< Scalar > > &fwdSolveCriteria=Teuchos::null, const EThrowOnSolveFailure throwOnFwdSolveFailure=THROW_ON_SOLVE_FAILURE, const Ptr< const SolveCriteria< Scalar > > &adjSolveCriteria=Teuchos::null, const EThrowOnSolveFailure throwOnAdjSolveFailure=THROW_ON_SOLVE_FAILURE)
 Form a const implicit inverse operator M = inv(A).
 

Overridden from LinearOpBase

RCP< const VectorSpaceBase< Scalar > > range () const
 Returns this->getLows()->domain() if <t>this->getLows().get()!=NULL and returns Teuchos::null otherwise.
 
RCP< const VectorSpaceBase< Scalar > > domain () const
 Returns this->getLows()->range() if <t>this->getLows().get()!=NULL and returns Teuchos::null otherwise.
 
RCP< const LinearOpBase< Scalar > > clone () const
 
bool opSupportedImpl (EOpTransp M_trans) const
 Returns true only if all constituent operators support M_trans.
 
void applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 

Constructors/initializers/accessors

 DefaultInverseLinearOp ()
 Constructs to uninitialized (see postconditions for uninitialize()).
 
 DefaultInverseLinearOp (const RCP< LinearOpWithSolveBase< Scalar > > &lows, const SolveCriteria< Scalar > *fwdSolveCriteria=NULL, const EThrowOnSolveFailure throwOnFwdSolveFailure=THROW_ON_SOLVE_FAILURE, const SolveCriteria< Scalar > *adjSolveCriteria=NULL, const EThrowOnSolveFailure throwOnAdjSolveFailure=THROW_ON_SOLVE_FAILURE)
 
 DefaultInverseLinearOp (const RCP< const LinearOpWithSolveBase< Scalar > > &lows, const SolveCriteria< Scalar > *fwdSolveCriteria=NULL, const EThrowOnSolveFailure throwOnFwdSolveFailure=THROW_ON_SOLVE_FAILURE, const SolveCriteria< Scalar > *adjSolveCriteria=NULL, const EThrowOnSolveFailure throwOnAdjSolveFailure=THROW_ON_SOLVE_FAILURE)
 
void initialize (const RCP< LinearOpWithSolveBase< Scalar > > &lows, const SolveCriteria< Scalar > *fwdSolveCriteria=NULL, const EThrowOnSolveFailure throwOnFwdSolveFailure=THROW_ON_SOLVE_FAILURE, const SolveCriteria< Scalar > *adjSolveCriteria=NULL, const EThrowOnSolveFailure throwOnAdjSolveFailure=THROW_ON_SOLVE_FAILURE)
 Initialize given a non-const LinearOpWithSolveBase object and an optional .
 
void initialize (const RCP< const LinearOpWithSolveBase< Scalar > > &lows, const SolveCriteria< Scalar > *fwdSolveCriteria=NULL, const EThrowOnSolveFailure throwOnFwdSolveFailure=THROW_ON_SOLVE_FAILURE, const SolveCriteria< Scalar > *adjSolveCriteria=NULL, const EThrowOnSolveFailure throwOnAdjSolveFailure=THROW_ON_SOLVE_FAILURE)
 Initialize given a non-const LinearOpWithSolveBase object and an optional .
 
void uninitialize ()
 Set to uninitialized.
 

Overridden from InverseLinearOpBase

bool isLowsConst () const
 
RCP< LinearOpWithSolveBase< Scalar > > getNonconstLows ()
 
RCP< const LinearOpWithSolveBase< Scalar > > getLows () const
 

Overridden from Teuchos::Describable

std::string description () const
 
void describe (FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 

Additional Inherited Members

- Public Member Functions inherited from Thyra::LinearOpBase< Scalar >
bool opSupported (EOpTransp M_trans) const
 Return if the M_trans operation of apply() is supported or not.
 
void apply (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 Apply the linear operator to a multi-vector : Y = alpha*op(M)*X + beta*Y.
 
- Protected Member Functions inherited from Thyra::LinearOpBase< Scalar >

Detailed Description

template<class Scalar>
class Thyra::DefaultInverseLinearOp< Scalar >

Concrete LinearOpBase subclass that creates an implicit LinearOpBase object using the inverse action of a LinearOpWithSolveBase object.

This class represents an implicit inverse linear operator:

M = inv(A)

where A is any LinearOpWithSolveBase object. Specifically, the solve(...) function A is used to implement this->apply() and the solveTranspose(...) function A is used to implement this->applyTranspose().

SolveCriteria objects can be associated with A to define the solve criterion for calling the A.solve(...,fwdSolveCriteria) and A.solveTranspose(...,adjSolveCriteria).

Definition at line 86 of file Thyra_DefaultInverseLinearOp_decl.hpp.

Constructor & Destructor Documentation

◆ DefaultInverseLinearOp() [1/3]

template<class Scalar >
Thyra::DefaultInverseLinearOp< Scalar >::DefaultInverseLinearOp ( )

Constructs to uninitialized (see postconditions for uninitialize()).

Definition at line 59 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ DefaultInverseLinearOp() [2/3]

template<class Scalar >
Thyra::DefaultInverseLinearOp< Scalar >::DefaultInverseLinearOp ( const RCP< LinearOpWithSolveBase< Scalar > > & lows,
const SolveCriteria< Scalar > * fwdSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnFwdSolveFailure = THROW_ON_SOLVE_FAILURE,
const SolveCriteria< Scalar > * adjSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnAdjSolveFailure = THROW_ON_SOLVE_FAILURE )

Calls initialize().

Definition at line 64 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ DefaultInverseLinearOp() [3/3]

template<class Scalar >
Thyra::DefaultInverseLinearOp< Scalar >::DefaultInverseLinearOp ( const RCP< const LinearOpWithSolveBase< Scalar > > & lows,
const SolveCriteria< Scalar > * fwdSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnFwdSolveFailure = THROW_ON_SOLVE_FAILURE,
const SolveCriteria< Scalar > * adjSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnAdjSolveFailure = THROW_ON_SOLVE_FAILURE )

Calls initialize().

Rather than calling this constructor directly, consider using the non-member helper functions described here.

Definition at line 80 of file Thyra_DefaultInverseLinearOp_def.hpp.

Member Function Documentation

◆ initialize() [1/2]

template<class Scalar >
void Thyra::DefaultInverseLinearOp< Scalar >::initialize ( const RCP< LinearOpWithSolveBase< Scalar > > & lows,
const SolveCriteria< Scalar > * fwdSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnFwdSolveFailure = THROW_ON_SOLVE_FAILURE,
const SolveCriteria< Scalar > * adjSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnAdjSolveFailure = THROW_ON_SOLVE_FAILURE )

Initialize given a non-const LinearOpWithSolveBase object and an optional .

Parameters
lows[in] The LinearOpWithSolveBase object that will solve(...) and/or solveTranspose(...) will be called on. Note that *this may give up non-const views of *lows so that *lows may be changed through clients of this object.
fwdSolveCriteria[in] The criteria used to call lows->solve(...). If fwdSolveCriteria==NULL then the default solve criteria built into *lows will be used. If fwdSolveCriteria!=NULL then *fwdSolveCriteria will be copied internally. Warning! If shallow copy is used by any parameters in fwdSolveCriteria->extraParameter these these parameters will be "remembered" by *this.
adjSolveCriteria[in] The criteria used to call lows->solveTranspose(...). If adjSolveCriteria==NULL then the default solve criteria built into *lows will be used. If adjSolveCriteria!=NULL then *adjSolveCriteria will be copied internally. Warning! If shallow copy is used by any parameters in adjSolveCriteria->extraParameter these these parameters will be "remembered" by *this.

Preconditions:

  • lows.get() != NULL

Postconditions:

Definition at line 96 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ initialize() [2/2]

template<class Scalar >
void Thyra::DefaultInverseLinearOp< Scalar >::initialize ( const RCP< const LinearOpWithSolveBase< Scalar > > & lows,
const SolveCriteria< Scalar > * fwdSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnFwdSolveFailure = THROW_ON_SOLVE_FAILURE,
const SolveCriteria< Scalar > * adjSolveCriteria = NULL,
const EThrowOnSolveFailure throwOnAdjSolveFailure = THROW_ON_SOLVE_FAILURE )

Initialize given a non-const LinearOpWithSolveBase object and an optional .

Parameters
lows[in] The LinearOpWithSolveBase object that will solve(...) and/or solveTranspose(...) will be called on. Note that *this may give up non-const views of *lows so that *lows may be changed through clients of this object.
fwdSolveCriteria[in] The criteria used to call lows->solve(...). If fwdSolveCriteria==NULL then the default solve criteria built into *lows will be used. If fwdSolveCriteria!=NULL then *fwdSolveCriteria will be copied internally. Warning! If shallow copy is used by any parameters in fwdSolveCriteria->extraParameter these these parameters will be "remembered" by *this.
adjSolveCriteria[in] The criteria used to call lows->solveTranspose(...). If adjSolveCriteria==NULL then the default solve criteria built into *lows will be used. If adjSolveCriteria!=NULL then *adjSolveCriteria will be copied internally. Warning! If shallow copy is used by any parameters in adjSolveCriteria->extraParameter these these parameters will be "remembered" by *this.

Preconditions:

  • lows.get() != NULL

Postconditions:

Definition at line 112 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ uninitialize()

template<class Scalar >
void Thyra::DefaultInverseLinearOp< Scalar >::uninitialize ( )

Set to uninitialized.

Postconditions:

Definition at line 128 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ isLowsConst()

template<class Scalar >
bool Thyra::DefaultInverseLinearOp< Scalar >::isLowsConst ( ) const
virtual

◆ getNonconstLows()

template<class Scalar >
Teuchos::RCP< LinearOpWithSolveBase< Scalar > > Thyra::DefaultInverseLinearOp< Scalar >::getNonconstLows ( )
virtual

◆ getLows()

template<class Scalar >
Teuchos::RCP< const LinearOpWithSolveBase< Scalar > > Thyra::DefaultInverseLinearOp< Scalar >::getLows ( ) const
virtual

◆ range()

template<class Scalar >
Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultInverseLinearOp< Scalar >::range ( ) const
virtual

Returns this->getLows()->domain() if <t>this->getLows().get()!=NULL and returns Teuchos::null otherwise.

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 167 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ domain()

template<class Scalar >
Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultInverseLinearOp< Scalar >::domain ( ) const
virtual

Returns this->getLows()->range() if <t>this->getLows().get()!=NULL and returns Teuchos::null otherwise.

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 176 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ clone()

template<class Scalar >
Teuchos::RCP< const LinearOpBase< Scalar > > Thyra::DefaultInverseLinearOp< Scalar >::clone ( ) const
virtual

Reimplemented from Thyra::LinearOpBase< Scalar >.

Definition at line 185 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ description()

template<class Scalar >
std::string Thyra::DefaultInverseLinearOp< Scalar >::description ( ) const
virtual

Reimplemented from Teuchos::Describable.

Definition at line 195 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ describe()

template<class Scalar >
void Thyra::DefaultInverseLinearOp< Scalar >::describe ( FancyOStream & out,
const Teuchos::EVerbosityLevel verbLevel ) const

Definition at line 210 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ opSupportedImpl()

template<class Scalar >
bool Thyra::DefaultInverseLinearOp< Scalar >::opSupportedImpl ( EOpTransp M_trans) const
protectedvirtual

Returns true only if all constituent operators support M_trans.

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 255 of file Thyra_DefaultInverseLinearOp_def.hpp.

◆ applyImpl()

template<class Scalar >
void Thyra::DefaultInverseLinearOp< Scalar >::applyImpl ( const EOpTransp M_trans,
const MultiVectorBase< Scalar > & X,
const Ptr< MultiVectorBase< Scalar > > & Y,
const Scalar alpha,
const Scalar beta ) const
protectedvirtual

Friends And Related Symbol Documentation

◆ nonconstInverse()

template<class Scalar >
RCP< LinearOpBase< Scalar > > nonconstInverse ( const RCP< LinearOpWithSolveBase< Scalar > > & A,
const Ptr< const SolveCriteria< Scalar > > & fwdSolveCriteria = Teuchos::null,
const EThrowOnSolveFailure throwOnFwdSolveFailure = THROW_ON_SOLVE_FAILURE,
const Ptr< const SolveCriteria< Scalar > > & adjSolveCriteria = Teuchos::null,
const EThrowOnSolveFailure throwOnAdjSolveFailure = THROW_ON_SOLVE_FAILURE )
related

Form a non-const implicit inverse operator M = inv(A).

◆ inverse()

template<class Scalar >
RCP< LinearOpBase< Scalar > > inverse ( const RCP< const LinearOpWithSolveBase< Scalar > > & A,
const Ptr< const SolveCriteria< Scalar > > & fwdSolveCriteria = Teuchos::null,
const EThrowOnSolveFailure throwOnFwdSolveFailure = THROW_ON_SOLVE_FAILURE,
const Ptr< const SolveCriteria< Scalar > > & adjSolveCriteria = Teuchos::null,
const EThrowOnSolveFailure throwOnAdjSolveFailure = THROW_ON_SOLVE_FAILURE )
related

Form a const implicit inverse operator M = inv(A).


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