Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar > Class Template Reference
[Basic Support Subclasses Abstracting Application-Specific Scalar Products]

Base interface for Euclidean linear operators. More...

#include <Thyra_EuclideanLinearOpBaseDecl.hpp>

Inheritance diagram for Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >:

Inheritance graph
[legend]
List of all members.

Pure virtual functions to override in subclasses

virtual Teuchos::RCP< const
ScalarProdVectorSpaceBase<
RangeScalar > > 
rangeScalarProdVecSpc () const =0
 
virtual Teuchos::RCP< const
ScalarProdVectorSpaceBase<
DomainScalar > > 
domainScalarProdVecSpc () const =0
 
virtual void euclideanApply (const EConj conj, const MultiVectorBase< DomainScalar > &X, MultiVectorBase< RangeScalar > *Y, const RangeScalar alpha, const RangeScalar beta) const =0
 Apply the linear operator to a multi-vector with respect to a Euclidean vector space where the scalar product is the dot product.

Virtual functions with default implementations.

virtual void euclideanApplyTranspose (const EConj conj, const MultiVectorBase< RangeScalar > &X, MultiVectorBase< DomainScalar > *Y, const DomainScalar alpha, const DomainScalar beta) const
 Apply the linear operator to a multi-vector with respect to a Euclidean vector space where the scalar product is the dot product.

Overridden functions from OpBase

Teuchos::RCP< const VectorSpaceBase<
RangeScalar > > 
range () const
 Returns this->rangeScalarProdVecSpc().
Teuchos::RCP< const VectorSpaceBase<
DomainScalar > > 
domain () const
 Returns this->domainScalarProdVecSpc().

Overridden functions from LinearOpBase

void apply (const EConj conj, const MultiVectorBase< DomainScalar > &X, MultiVectorBase< RangeScalar > *Y, const RangeScalar alpha, const RangeScalar beta) const
 Apply the non-transposed linear operator to a multi-vector using an application-specific definition of the scalar product.
void applyTranspose (const EConj conj, const MultiVectorBase< RangeScalar > &X, MultiVectorBase< DomainScalar > *Y, const DomainScalar alpha, const DomainScalar beta) const
 Apply the transposed linear operator to a multi-vector using an application-specific definition of the scalar product.

Protected Member Functions

void euclidean_apply_impl (const EConj conj, const MultiVectorBase< DomainScalar > &X, MultiVectorBase< RangeScalar > *Y, const RangeScalar alpha, const RangeScalar beta) const
void euclidean_applyTranspose_impl (const EConj conj, const MultiVectorBase< RangeScalar > &X, MultiVectorBase< DomainScalar > *Y, const DomainScalar alpha, const DomainScalar beta) const

Related Functions

(Note that these are not member functions.)

void euclideanApply (const EuclideanLinearOpBase< Scalar > &M, const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, MultiVectorBase< Scalar > *Y, const Scalar alpha, const Scalar beta)
 Call EuclideanLinearOpBase<Scalar>::euclideanApply() as a global function call (for a single scalar type).

Detailed Description

template<class RangeScalar, class DomainScalar>
class Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >

Base interface for Euclidean linear operators.

Most generic subclass implementations should derive from this base interface since it allows an application-specific definition of the scalar product. Note that almost every concrete implementation of MultiVectorBase should derive from this interface.

ToDo: Finish Documentation!

Definition at line 49 of file Thyra_EuclideanLinearOpBaseDecl.hpp.


Member Function Documentation

template<class RangeScalar, class DomainScalar>
virtual Teuchos::RCP<const ScalarProdVectorSpaceBase<RangeScalar> > Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::rangeScalarProdVecSpc (  )  const [pure virtual]

Implemented in Thyra::SerialLinearOpBase< Scalar >, Thyra::SpmdLinearOpBase< Scalar >, and Thyra::SpmdMultiVectorBase< Scalar >.

template<class RangeScalar, class DomainScalar>
virtual Teuchos::RCP<const ScalarProdVectorSpaceBase<DomainScalar> > Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::domainScalarProdVecSpc (  )  const [pure virtual]

Implemented in Thyra::SerialLinearOpBase< Scalar >, Thyra::DefaultSpmdMultiVector< Scalar >, and Thyra::SpmdLinearOpBase< Scalar >.

template<class RangeScalar, class DomainScalar>
virtual void Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::euclideanApply ( const EConj  conj,
const MultiVectorBase< DomainScalar > &  X,
MultiVectorBase< RangeScalar > *  Y,
const RangeScalar  alpha,
const RangeScalar  beta 
) const [pure virtual]

Apply the linear operator to a multi-vector with respect to a Euclidean vector space where the scalar product is the dot product.

Preconditions:

template<class RangeScalar, class DomainScalar>
void Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::euclideanApplyTranspose ( const EConj  conj,
const MultiVectorBase< RangeScalar > &  X,
MultiVectorBase< DomainScalar > *  Y,
const DomainScalar  alpha,
const DomainScalar  beta 
) const [virtual]

Apply the linear operator to a multi-vector with respect to a Euclidean vector space where the scalar product is the dot product.

Preconditions:

The default implementation throws an exception with a very good error message.

Definition at line 43 of file Thyra_EuclideanLinearOpBase.hpp.

template<class RangeScalar, class DomainScalar>
Teuchos::RCP< const VectorSpaceBase< RangeScalar > > Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::range (  )  const [virtual]

Returns this->rangeScalarProdVecSpc().

Implements Thyra::LinearOpBase< RangeScalar, DomainScalar >.

Definition at line 64 of file Thyra_EuclideanLinearOpBase.hpp.

template<class RangeScalar, class DomainScalar>
Teuchos::RCP< const VectorSpaceBase< DomainScalar > > Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::domain (  )  const [virtual]

Returns this->domainScalarProdVecSpc().

Implements Thyra::LinearOpBase< RangeScalar, DomainScalar >.

Definition at line 71 of file Thyra_EuclideanLinearOpBase.hpp.

template<class RangeScalar, class DomainScalar>
void Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::apply ( const EConj  conj,
const MultiVectorBase< DomainScalar > &  X,
MultiVectorBase< RangeScalar > *  Y,
const RangeScalar  alpha,
const RangeScalar  beta 
) const [virtual]

Apply the non-transposed linear operator to a multi-vector using an application-specific definition of the scalar product.

ToDo: Finish Documentation!

Implements Thyra::LinearOpBase< RangeScalar, DomainScalar >.

Definition at line 79 of file Thyra_EuclideanLinearOpBase.hpp.

template<class RangeScalar, class DomainScalar>
void Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::applyTranspose ( const EConj  conj,
const MultiVectorBase< RangeScalar > &  X,
MultiVectorBase< DomainScalar > *  Y,
const DomainScalar  alpha,
const DomainScalar  beta 
) const [virtual]

Apply the transposed linear operator to a multi-vector using an application-specific definition of the scalar product.

ToDo: Finish Documentation!

Reimplemented from Thyra::LinearOpBase< RangeScalar, DomainScalar >.

Definition at line 91 of file Thyra_EuclideanLinearOpBase.hpp.


Friends And Related Function Documentation

template<class RangeScalar, class DomainScalar>
void euclideanApply ( const EuclideanLinearOpBase< Scalar > &  M,
const EOpTransp  M_trans,
const MultiVectorBase< Scalar > &  X,
MultiVectorBase< Scalar > *  Y,
const Scalar  alpha,
const Scalar  beta 
) [related]

Call EuclideanLinearOpBase<Scalar>::euclideanApply() as a global function call (for a single scalar type).

Calls M.euclideanApply(...,X,Y,alpha,beta) or M.euclideanApplyTranspose(...,X,Y,alpha,beta).

Definition at line 171 of file Thyra_EuclideanLinearOpBaseDecl.hpp.


The documentation for this class was generated from the following files:
Generated on Wed May 12 21:42:36 2010 for Thyra Operator/Vector Support by  doxygen 1.4.7