Thyra Version of the Day
Loading...
Searching...
No Matches
Thyra_ScalarProdVectorSpaceBase_decl.hpp
1// @HEADER
2// *****************************************************************************
3// Thyra: Interfaces and Support for Abstract Numerical Algorithms
4//
5// Copyright 2004 NTESS and the Thyra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef THYRA_SCALAR_PROD_VECTOR_SPACE_BASE_DECL_HPP
11#define THYRA_SCALAR_PROD_VECTOR_SPACE_BASE_DECL_HPP
12
13#include "Thyra_OperatorVectorAdapterSupportTypes.hpp"
14#include "Thyra_VectorSpaceDefaultBase.hpp"
15
16
17namespace Thyra {
18
19
52template<class Scalar>
53class ScalarProdVectorSpaceBase : virtual public VectorSpaceDefaultBase<Scalar> {
54public:
55
58
69
86 const RCP<const ScalarProdBase<Scalar> > &scalarProd );
87
108 virtual void setScalarProd(
109 const RCP<const ScalarProdBase<Scalar> > &scalarProd );
110
114
116
119
121 bool isEuclidean() const;
123 Scalar scalarProd(
124 const VectorBase<Scalar>& x, const VectorBase<Scalar>& y ) const;
126 void scalarProdsImpl(
128 const ArrayView<Scalar> &scalarProds_out ) const;
129
131
132private:
133
135
136};
137
138
143template<class Scalar>
146 const RCP<const VectorSpaceBase<Scalar> > &vs,
147 const Ordinal dim
148 )
149{
151 vs->smallVecSpcFcty()->createVecSpc(dim), true);
152}
153
154
155} // end namespace Thyra
156
157
158#endif // THYRA_SCALAR_PROD_VECTOR_SPACE_BASE_DECL_HPP
Interface for a collection of column vectors called a multi-vector.
Abstract interface for scalar products.
bool isEuclidean() const
Returns getScalarProd()->isEuclidean()
RCP< const ScalarProdVectorSpaceBase< Scalar > > createSmallScalarProdVectorSpaceBase(const RCP< const VectorSpaceBase< Scalar > > &vs, const Ordinal dim)
Create a small vector space casted to ScalarProdVectorSpaceBase.
Scalar scalarProd(const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const
Returns getScalarProd()->scalarProd(x,y)
ScalarProdVectorSpaceBase()
Construct to use dot product as the default.
void scalarProdsImpl(const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds_out) const
Calls getScalarProd()->scalarProds(X,Y,scalar_prods)
RCP< const ScalarProdBase< Scalar > > getScalarProd() const
Return the current scalar product.
virtual void setScalarProd(const RCP< const ScalarProdBase< Scalar > > &scalarProd)
Set a different scalar product.
Abstract interface for finite-dimensional dense vectors.
Abstract interface for objects that represent a space for vectors.
Node VectorSpaceBase subclass that provides default implementations for many functions using a defaul...
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
T_To & dyn_cast(T_From &from)