Thyra Version of the Day
Loading...
Searching...
No Matches
Thyra::ScaledLinearOpBase< Scalar > Class Template Referenceabstract

Applies left or right sclaing to the linear operator. More...

#include <Thyra_ScaledLinearOpBase.hpp>

Inheritance diagram for Thyra::ScaledLinearOpBase< Scalar >:

Non-virtual public interface functions.

bool supportsScaleLeft () const
 Determines if this objects supports left scaling.
bool supportsScaleRight () const
 Determines if this objects supports right scaling.
void scaleLeft (const VectorBase< Scalar > &row_scaling)
 Left scales operator with diagonal scaling operator.
void scaleRight (const VectorBase< Scalar > &col_scaling)
 Right scales operator with diagonal scaling operator.

Protected virtual functions to be overridden by subclasses.

virtual bool supportsScaleLeftImpl () const =0
virtual bool supportsScaleRightImpl () const =0
virtual void scaleLeftImpl (const VectorBase< Scalar > &row_scaling)=0
virtual void scaleRightImpl (const VectorBase< Scalar > &col_scaling)=0

Additional Inherited Members

virtual RCP< const VectorSpaceBase< Scalar > > range () const =0
 Return a smart pointer for the range space for this operator.
virtual RCP< const VectorSpaceBase< Scalar > > domain () const =0
 Return a smart pointer for the domain space for this operator.
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.
virtual RCP< const LinearOpBase< Scalar > > clone () const
 Clone the linear operator object (if supported).
virtual bool opSupportedImpl (EOpTransp M_trans) const =0
 Override in subclass.
virtual void applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const =0
 Override in subclass.

Detailed Description

template<class Scalar>
class Thyra::ScaledLinearOpBase< Scalar >

Applies left or right sclaing to the linear operator.

This interface represents a linear operator M that explicitly applies left or right scaling by a diagonal (vector) operator d. # Left scaling:

M = dM

or Right scaling:

M = Md

where:

  • M is the LinearOp object,

  • d is the VectorBase object representing the diagonal scaling operator.

Definition at line 50 of file Thyra_ScaledLinearOpBase.hpp.

Member Function Documentation

◆ supportsScaleLeft()

template<class Scalar>
bool Thyra::ScaledLinearOpBase< Scalar >::supportsScaleLeft ( ) const
inline

Determines if this objects supports left scaling.

Definition at line 58 of file Thyra_ScaledLinearOpBase.hpp.

◆ supportsScaleRight()

template<class Scalar>
bool Thyra::ScaledLinearOpBase< Scalar >::supportsScaleRight ( ) const
inline

Determines if this objects supports right scaling.

Definition at line 63 of file Thyra_ScaledLinearOpBase.hpp.

◆ scaleLeft()

template<class Scalar>
void Thyra::ScaledLinearOpBase< Scalar >::scaleLeft ( const VectorBase< Scalar > & row_scaling)
inline

Left scales operator with diagonal scaling operator.

\precondtion supportsScaleLeft()==true

Definition at line 70 of file Thyra_ScaledLinearOpBase.hpp.

◆ scaleRight()

template<class Scalar>
void Thyra::ScaledLinearOpBase< Scalar >::scaleRight ( const VectorBase< Scalar > & col_scaling)
inline

Right scales operator with diagonal scaling operator.

\precondtion supportsScaleRight()==true

Definition at line 77 of file Thyra_ScaledLinearOpBase.hpp.

◆ supportsScaleLeftImpl()

◆ supportsScaleRightImpl()

◆ scaleLeftImpl()

◆ scaleRightImpl()


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