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

Forward decl. More...

#include <Thyra_ScalarProdVectorSpaceBase_decl.hpp>

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

Related Symbols

(Note that these are not member symbols.)

template<class Scalar >
RCP< const ScalarProdVectorSpaceBase< Scalar > > createSmallScalarProdVectorSpaceBase (const RCP< const VectorSpaceBase< Scalar > > &vs, const Ordinal dim)
 Create a small vector space casted to ScalarProdVectorSpaceBase.
 

Overridden from VectorSpaceBase

bool isEuclidean () const
 Returns getScalarProd()->isEuclidean()
 
Scalar scalarProd (const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const
 Returns getScalarProd()->scalarProd(x,y)
 
void scalarProdsImpl (const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds_out) const
 Calls getScalarProd()->scalarProds(X,Y,scalar_prods)
 

Constructors / initializers

 ScalarProdVectorSpaceBase ()
 Construct to use dot product as the default.
 
 ScalarProdVectorSpaceBase (const RCP< const ScalarProdBase< Scalar > > &scalarProd)
 Construct with a different scalar product.
 
virtual void setScalarProd (const RCP< const ScalarProdBase< Scalar > > &scalarProd)
 Set a different scalar product.
 
RCP< const ScalarProdBase< Scalar > > getScalarProd () const
 Return the current scalar product.
 

Additional Inherited Members

- Public Member Functions inherited from Thyra::VectorSpaceBase< Scalar >
virtual Ordinal dim () const =0
 Return the dimension of the vector space.
 
virtual bool isCompatible (const VectorSpaceBase< Scalar > &vecSpc) const =0
 Compare the compatibility of two vector spaces.
 
virtual RCP< const VectorSpaceFactoryBase< Scalar > > smallVecSpcFcty () const =0
 Return a VectorSpaceFactoryBase object for the creation of (usually serial) vector spaces with a small dimension.
 
void scalarProds (const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds_out) const
 Return the scalar product of each column in two multi-vectors in the vector space.
 
virtual bool hasInCoreView (const Range1D &rng=Range1D(), const EViewType viewType=VIEW_TYPE_DETACHED, const EStrideType strideType=STRIDE_TYPE_NONUNIT) const
 Returns true if this->acquireDetachedView(rng,...) returns a direct view of the range of data requested.
 
virtual RCP< const VectorSpaceBase< Scalar > > clone () const
 Clone this object (if supported).
 
virtual RCP< MultiVectorBase< Scalar > > createCachedMembersView (const RTOpPack::SubMultiVectorView< Scalar > &raw_mv) const
 Create a (possibly) cached multi-vector member that is a non-const view of raw multi-vector data. The caching mechanism must be implemented by child classes, by default this just calls the regular createMembersView.
 
virtual RCP< const MultiVectorBase< Scalar > > createCachedMembersView (const RTOpPack::ConstSubMultiVectorView< Scalar > &raw_mv) const
 Create a (possibly) cached multi-vector member that is a const view of raw multi-vector data. The caching mechanism must be implemented by child classes, by default this just calls the regular createMembersView.
 
- Protected Member Functions inherited from Thyra::VectorSpaceDefaultBase< Scalar >
RCP< MultiVectorBase< Scalar > > createMembers (int numMembers) const
 
RCP< VectorBase< Scalar > > createMemberView (const RTOpPack::SubVectorView< Scalar > &raw_v) const
 
RCP< const VectorBase< Scalar > > createMemberView (const RTOpPack::ConstSubVectorView< Scalar > &raw_v) const
 
RCP< MultiVectorBase< Scalar > > createMembersView (const RTOpPack::SubMultiVectorView< Scalar > &raw_mv) const
 
RCP< const MultiVectorBase< Scalar > > createMembersView (const RTOpPack::ConstSubMultiVectorView< Scalar > &raw_mv) const
 
- Protected Member Functions inherited from Thyra::VectorSpaceBase< Scalar >
virtual RCP< VectorBase< Scalar > > createMember () const =0
 Create a vector member from the vector space.
 

Detailed Description

template<class Scalar>
class Thyra::ScalarProdVectorSpaceBase< Scalar >

Forward decl.

Base subclass for VectorSpaceBase that allows the definition of an application-specific scalar product to be swapped in and out.

This subclass defines machinery for extracting out the definition of a scalar product as an object that can be replaced. The default implementation of scalar product is the Euclidean scalar product (i.e. dot product). The idea is that, in most cases, the definition of a scalar product may be more general than a specific concrete vector implementation (i.e. a single scalar product may work with all serial and all MPI-based vectors if, for example, it is implemented through an RTOpPack::RTOpT object). Or, a scalar product way work with any MPI SPMD vector or multi-vector. This subclass allows an application code to set a specialized scalar product without having to depend on a particular concrete vector (and vector space) implementation.

Almost every data-structure centric concrete VectorSpaceBase subclass should inherit from this subclass since it makes it easy for application developers to redefine the scalar product without having to create a new VectorSpaceBase subclass which can have many repercussions.

The reason that this machinery in this base subclass is separated out from the VectorSpaceDefaultBase interface class is that, first it would clutter the base interface since this machinery is an implementation artifact and, second, every VectorSpaceBase subclass will not utilize this machinery. For example, composite (see ProductVectorSpaceBase) and decorator subclasses should not derive from this subclass.

Definition at line 85 of file Thyra_ScalarProdVectorSpaceBase_decl.hpp.

Constructor & Destructor Documentation

◆ ScalarProdVectorSpaceBase() [1/2]

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

Construct to use dot product as the default.

Postconditions:

  • dynamic_cast<const EuclideanScalarProd<Scalar>*>(&*this->getScalarProd()) != NULL

Definition at line 58 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.

◆ ScalarProdVectorSpaceBase() [2/2]

template<class Scalar >
Thyra::ScalarProdVectorSpaceBase< Scalar >::ScalarProdVectorSpaceBase ( const RCP< const ScalarProdBase< Scalar > > & scalarProd)

Construct with a different scalar product.

Preconditions:

  • scalarProd.get()!=NULL (throw std::invalid_argument)

Postconditions:

Definition at line 64 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.

Member Function Documentation

◆ setScalarProd()

template<class Scalar >
void Thyra::ScalarProdVectorSpaceBase< Scalar >::setScalarProd ( const RCP< const ScalarProdBase< Scalar > > & scalarProd)
virtual

Set a different scalar product.

This function is made virtual so that subclasses can override it and take control of what happens. However, any override should call back on this base implementation to set the actual scalar product object.

Preconditions:

  • scalarProd.get()!=NULL (throw std::invalid_argument)

Postconditions:

Definition at line 72 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.

◆ getScalarProd()

template<class Scalar >
Teuchos::RCP< const ScalarProdBase< Scalar > > Thyra::ScalarProdVectorSpaceBase< Scalar >::getScalarProd ( ) const

Return the current scalar product.

Definition at line 82 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.

◆ isEuclidean()

template<class Scalar >
bool Thyra::ScalarProdVectorSpaceBase< Scalar >::isEuclidean ( ) const
virtual

◆ scalarProd()

template<class Scalar >
Scalar Thyra::ScalarProdVectorSpaceBase< Scalar >::scalarProd ( const VectorBase< Scalar > & x,
const VectorBase< Scalar > & y ) const
virtual

Returns getScalarProd()->scalarProd(x,y)

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 99 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.

◆ scalarProdsImpl()

template<class Scalar >
void Thyra::ScalarProdVectorSpaceBase< Scalar >::scalarProdsImpl ( const MultiVectorBase< Scalar > & X,
const MultiVectorBase< Scalar > & Y,
const ArrayView< Scalar > & scalarProds_out ) const
virtual

Calls getScalarProd()->scalarProds(X,Y,scalar_prods)

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 113 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.

Friends And Related Symbol Documentation

◆ createSmallScalarProdVectorSpaceBase()

template<class Scalar >
RCP< const ScalarProdVectorSpaceBase< Scalar > > createSmallScalarProdVectorSpaceBase ( const RCP< const VectorSpaceBase< Scalar > > & vs,
const Ordinal dim )
related

Create a small vector space casted to ScalarProdVectorSpaceBase.

Definition at line 177 of file Thyra_ScalarProdVectorSpaceBase_decl.hpp.


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