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 >:

[legend]
List of all members.

Pure virtual functions to override in subclasses

virtual Teuchos::RefCountPtr<
const ScalarProdVectorSpaceBase<
RangeScalar > > 
rangeScalarProdVecSpc () const =0
 
virtual Teuchos::RefCountPtr<
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::RefCountPtr< const
VectorSpaceBase< RangeScalar > > 
range () const
 Returns this->rangeScalarProdVecSpc().
Teuchos::RefCountPtr< 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.

Related Functions

(Note that these are not member functions.)

void euclideanApply (const EuclideanLinearOpBase< Scalar > &M, const ETransp 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::RefCountPtr<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::RefCountPtr<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:

  • this->applySupports(conj)==true

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:

  • this->applyTransposeSupports(conj)==true

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::RefCountPtr< const VectorSpaceBase< RangeScalar > > Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::range  )  const
 

Returns this->rangeScalarProdVecSpc().

Definition at line 64 of file Thyra_EuclideanLinearOpBase.hpp.

template<class RangeScalar, class DomainScalar>
Teuchos::RefCountPtr< const VectorSpaceBase< DomainScalar > > Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar >::domain  )  const
 

Returns this->domainScalarProdVecSpc().

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
 

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

ToDo: Finish Documentation!

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
 

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

ToDo: Finish Documentation!

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 ETransp  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 Thu Sep 18 12:32:34 2008 for Thyra Operator/Vector Support by doxygen 1.3.9.1