Thyra Version of the Day
Thyra::DefaultAddedLinearOp< Scalar > Class Template Reference

Concrete composite `LinearOpBase` subclass that creates an implicitly added linear operator out of one or more constituent `LinearOpBase` objects. More...

`#include <Thyra_DefaultAddedLinearOp_decl.hpp>`

Inheritance diagram for Thyra::DefaultAddedLinearOp< Scalar >:
[legend]

List of all members.

## Related Functions

(Note that these are not member functions.)

template<class Scalar >
RCP< LinearOpBase< Scalar > > nonconstAdd (const RCP< LinearOpBase< Scalar > > &A, const RCP< LinearOpBase< Scalar > > &B, const std::string &label="")
Form an implicit addition of two linear operators: `M = A + B`.
template<class Scalar >
RCP< const LinearOpBase< Scalar > > add (const RCP< const LinearOpBase< Scalar > > &A, const RCP< const LinearOpBase< Scalar > > &B, const std::string &label="")
Form an implicit addition of two linear operators: `M = A + B`.
template<class Scalar >
RCP< LinearOpBase< Scalar > > nonconstSubtract (const RCP< LinearOpBase< Scalar > > &A, const RCP< LinearOpBase< Scalar > > &B, const std::string &label="")
Form an implicit subtraction of two linear operators: `M = A - B`.
template<class Scalar >
RCP< const LinearOpBase< Scalar > > subtract (const RCP< const LinearOpBase< Scalar > > &A, const RCP< const LinearOpBase< Scalar > > &B, const std::string &label="")
Form an implicit subtraction of two linear operators: `M = A - B`.

## Constructors/initializers/accessors

Constructs to uninitialized.
DefaultAddedLinearOp (const ArrayView< const RCP< LinearOpBase< Scalar > > > &Ops)
DefaultAddedLinearOp (const ArrayView< const RCP< const LinearOpBase< Scalar > > > &Ops)
void initialize (const ArrayView< const RCP< LinearOpBase< Scalar > > > &Ops)
Initialize given a list of non-const linear operators.
void initialize (const ArrayView< const RCP< const LinearOpBase< Scalar > > > &Ops)
Initialize given a list of const linear operators.
void uninitialize ()
Set to uninitialized.

int numOps () const

bool opIsConst (const int k) const

RCP< LinearOpBase< Scalar > > getNonconstOp (const int k)

RCP< const LinearOpBase< Scalar > > getOp (const int k) const

## Overridden from LinearOpBase

RCP< const VectorSpaceBase
< Scalar > >
range () const
Returns `this->getOp(0).range() if <t>this->numOps() > 0` and returns `Teuchos::null` otherwise.
RCP< const VectorSpaceBase
< Scalar > >
domain () const
Returns `this->getOp(this->numOps()-1).domain()` if <t>this->numOps() > 0 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

## Overridden from Teuchos::Describable

std::string description () const
Prints just the name `DefaultAddedLinearOp` along with the overall dimensions and the number of constituent operators.
void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Prints the details about the constituent linear operators.
THYRA_DEPRECATED DefaultAddedLinearOp (const int numOps, const RCP< const LinearOpBase< Scalar > > Ops[])
THYRA_DEPRECATED DefaultAddedLinearOp (const int numOps, const RCP< LinearOpBase< Scalar > > Ops[])
Deprecated.
THYRA_DEPRECATED void initialize (const int numOps_in, const RCP< LinearOpBase< Scalar > > Ops[])
Deprecated.
THYRA_DEPRECATED void initialize (const int numOps_in, const RCP< const LinearOpBase< Scalar > > Ops[])
Deprecated.

## Detailed Description

### template<class Scalar> class Thyra::DefaultAddedLinearOp< Scalar >

Concrete composite `LinearOpBase` subclass that creates an implicitly added linear operator out of one or more constituent `LinearOpBase` objects.

This class represents a added linear operator `M` of the form:

```
M = Op[0] + Op[1] + ... + Op[numOps-1]

```

where `Op[]` is an array of `numOps` `LinearOp` objects. Of course the operator `M` is not constructed explicitly but instead just applies the constituent linear operators accordingly using temporaries.

In other words, this class defines `apply()` as:

```
y = alpha*M*x + beta*y
= alpha * ( Op[0]*x + Op[1]*x + ... * Op[numOps-1]*x ) + beta * y

```

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

Definition at line 85 of file Thyra_DefaultAddedLinearOp_decl.hpp.

## Constructor & Destructor Documentation

template<class Scalar >

Constructs to uninitialized.

Postconditions:

• `this->numOps()==0`

Definition at line 58 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 Thyra::DefaultAddedLinearOp< Scalar >::DefaultAddedLinearOp ( const ArrayView< const RCP< LinearOpBase< Scalar > > > & Ops )

Calls `initialize()`.

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

Definition at line 63 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 Thyra::DefaultAddedLinearOp< Scalar >::DefaultAddedLinearOp ( const ArrayView< const RCP< const LinearOpBase< Scalar > > > & Ops )

Calls `initialize()`.

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

Definition at line 71 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 Thyra::DefaultAddedLinearOp< Scalar >::DefaultAddedLinearOp ( const int numOps, const RCP< const LinearOpBase< Scalar > > Ops[] )

Deprecated.

Definition at line 243 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 THYRA_DEPRECATED Thyra::DefaultAddedLinearOp< Scalar >::DefaultAddedLinearOp ( const int numOps, const RCP< LinearOpBase< Scalar > > Ops[] )

Deprecated.

## Member Function Documentation

template<class Scalar >
 void Thyra::DefaultAddedLinearOp< Scalar >::initialize ( const ArrayView< const RCP< LinearOpBase< Scalar > > > & Ops )

Initialize given a list of non-const linear operators.

Parameters:
 Ops [in] Array (length `numOps`) of constituent linear operators and their aggregated default definitions of the non-transposed operator.

Preconditions:

• `numOps > 0`
• `Ops != NULL`
• `Ops[k].op().get()!=NULL`, for `k=0...numOps-1`

Postconditions:

• `this->numOps()==numOps`
• `this->getOp(k).op().get()==Ops[k].op().get()`, for `k=0...numOps-1`

Definition at line 79 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 void Thyra::DefaultAddedLinearOp< Scalar >::initialize ( const ArrayView< const RCP< const LinearOpBase< Scalar > > > & Ops )

Initialize given a list of const linear operators.

Parameters:
 numOps [in] Number of constituent operators. Ops [in] Array (length `numOps`) of constituent linear operators and their aggregated default definitions of the non-transposed operator.

Preconditions:

• `numOps > 0`
• `Ops != NULL`
• `Ops[k].op().get()!=NULL`, for `k=0...numOps-1`

Postconditions:

• `this->numOps()==numOps`
• `this->getOp(k).op().get()==Ops[k].op().get()`, for `k=0...numOps-1`

Definition at line 92 of file Thyra_DefaultAddedLinearOp_def.hpp.

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

Set to uninitialized.

Postconditions:

• `this->numOps()==0`

Definition at line 105 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 int Thyra::DefaultAddedLinearOp< Scalar >::numOps ( ) const` [virtual]`
template<class Scalar >
 bool Thyra::DefaultAddedLinearOp< Scalar >::opIsConst ( const int k ) const` [virtual]`
template<class Scalar >
 Teuchos::RCP< LinearOpBase< Scalar > > Thyra::DefaultAddedLinearOp< Scalar >::getNonconstOp ( const int k ) ` [virtual]`
template<class Scalar >
 Teuchos::RCP< const LinearOpBase< Scalar > > Thyra::DefaultAddedLinearOp< Scalar >::getOp ( const int k ) const` [virtual]`
template<class Scalar >
 Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultAddedLinearOp< Scalar >::range ( ) const` [virtual]`

Returns `this->getOp(0).range() if <t>this->numOps() > 0` and returns `Teuchos::null` otherwise.

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 159 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultAddedLinearOp< Scalar >::domain ( ) const` [virtual]`

Returns `this->getOp(this->numOps()-1).domain()` if <t>this->numOps() > 0 and returns `Teuchos::null` otherwise.

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 168 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 Teuchos::RCP< const LinearOpBase< Scalar > > Thyra::DefaultAddedLinearOp< Scalar >::clone ( ) const` [virtual]`

Reimplemented from Thyra::LinearOpBase< Scalar >.

Definition at line 177 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 std::string Thyra::DefaultAddedLinearOp< Scalar >::description ( ) const` [virtual]`

Prints just the name `DefaultAddedLinearOp` along with the overall dimensions and the number of constituent operators.

Reimplemented from Teuchos::Describable.

Definition at line 187 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 void Thyra::DefaultAddedLinearOp< Scalar >::describe ( Teuchos::FancyOStream & out, const Teuchos::EVerbosityLevel verbLevel ) const` [virtual]`

Prints the details about the constituent linear operators.

This function outputs different levels of detail based on the value passed in for `verbLevel`:

ToDo: Finish documentation!

Reimplemented from Teuchos::Describable.

Definition at line 197 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 THYRA_DEPRECATED void Thyra::DefaultAddedLinearOp< Scalar >::initialize ( const int numOps_in, const RCP< LinearOpBase< Scalar > > Ops[] ) ` [inline]`

Deprecated.

Definition at line 234 of file Thyra_DefaultAddedLinearOp_decl.hpp.

template<class Scalar >
 THYRA_DEPRECATED void Thyra::DefaultAddedLinearOp< Scalar >::initialize ( const int numOps_in, const RCP< const LinearOpBase< Scalar > > Ops[] ) ` [inline]`

Deprecated.

Definition at line 243 of file Thyra_DefaultAddedLinearOp_decl.hpp.

template<class Scalar >
 bool Thyra::DefaultAddedLinearOp< Scalar >::opSupportedImpl ( EOpTransp M_trans ) const` [protected, virtual]`

Returns `true` only if all constituent operators support `M_trans`.

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 269 of file Thyra_DefaultAddedLinearOp_def.hpp.

template<class Scalar >
 void Thyra::DefaultAddedLinearOp< Scalar >::applyImpl ( const EOpTransp M_trans, const MultiVectorBase< Scalar > & X, const Ptr< MultiVectorBase< Scalar > > & Y, const Scalar alpha, const Scalar beta ) const` [protected, virtual]`

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 280 of file Thyra_DefaultAddedLinearOp_def.hpp.

## Friends And Related Function Documentation

template<class Scalar >
 RCP< LinearOpBase< Scalar > > nonconstAdd ( const RCP< LinearOpBase< Scalar > > & A, const RCP< LinearOpBase< Scalar > > & B, const std::string & label = `""` ) ` [related]`

Form an implicit addition of two linear operators: `M = A + B`.

template<class Scalar >
 RCP< const LinearOpBase< Scalar > > add ( const RCP< const LinearOpBase< Scalar > > & A, const RCP< const LinearOpBase< Scalar > > & B, const std::string & label = `""` ) ` [related]`

Form an implicit addition of two linear operators: `M = A + B`.

template<class Scalar >
 RCP< LinearOpBase< Scalar > > nonconstSubtract ( const RCP< LinearOpBase< Scalar > > & A, const RCP< LinearOpBase< Scalar > > & B, const std::string & label = `""` ) ` [related]`

Form an implicit subtraction of two linear operators: `M = A - B`.

template<class Scalar >
 RCP< const LinearOpBase< Scalar > > subtract ( const RCP< const LinearOpBase< Scalar > > & A, const RCP< const LinearOpBase< Scalar > > & B, const std::string & label = `""` ) ` [related]`

Form an implicit subtraction of two linear operators: `M = A - B`.

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