|
Thyra Package Browser (Single Doxygen Collection) Version of the Day
|
Base subclass for VectorSpaceBase that allows the definition of an application-specific scalar product to be swapped in and out.
More...
#include <Thyra_ScalarProdVectorSpaceBase_decl.hpp>

Private Attributes | |
| RCP< const ScalarProdBase < Scalar > > | scalarProd_ |
Related Functions | |
(Note that these are not member functions.) | |
| 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. | |
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. | |
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) | |
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 72 of file Thyra_ScalarProdVectorSpaceBase_decl.hpp.
| Thyra::ScalarProdVectorSpaceBase< Scalar >::ScalarProdVectorSpaceBase | ( | ) |
Construct to use dot product as the default.
Postconditions:
dynamic_cast<const EuclideanScalarProd<Scalar>*>(&*this->getScalarProd()) != NULL
Definition at line 45 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.
| 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:
this->getScalarProd().get() == scalarProd.get()
| 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:
this->getScalarProd().get() == scalarProd.get()
Definition at line 59 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.
Referenced by Thyra::DiagonalQuadraticResponseOnlyModelEvaluator< Scalar >::setDiagonalBarVector().
| Teuchos::RCP< const ScalarProdBase< Scalar > > Thyra::ScalarProdVectorSpaceBase< Scalar >::getScalarProd | ( | ) | const |
Return the current scalar product.
Definition at line 69 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.
| bool Thyra::ScalarProdVectorSpaceBase< Scalar >::isEuclidean | ( | ) | const [virtual] |
Returns getScalarProd()->isEuclidean()
Reimplemented from Thyra::VectorSpaceBase< Scalar >.
Definition at line 79 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.
| 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 86 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.
References Thyra::VectorBase< Scalar >::space(), and THYRA_ASSERT_VEC_SPACES.
| 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 100 of file Thyra_ScalarProdVectorSpaceBase_def.hpp.
References Thyra::LinearOpBase< Scalar >::domain(), Thyra::LinearOpBase< Scalar >::range(), and THYRA_ASSERT_VEC_SPACES.
| 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 164 of file Thyra_ScalarProdVectorSpaceBase_decl.hpp.
RCP<const ScalarProdBase<Scalar> > Thyra::ScalarProdVectorSpaceBase< Scalar >::scalarProd_ [private] |
Definition at line 153 of file Thyra_ScalarProdVectorSpaceBase_decl.hpp.
1.7.4