Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
support
operator_vector
adapter_support
Thyra_ScalarProdBase_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_BASE_DECL_HPP
11
#define THYRA_SCALAR_PROD_BASE_DECL_HPP
12
13
#include "Thyra_OperatorVectorTypes.hpp"
14
#include "Teuchos_Describable.hpp"
15
16
17
namespace
Thyra {
18
19
57
template
<
class
Scalar>
58
class
ScalarProdBase
:
virtual
public
Teuchos::Describable
{
59
public
:
60
63
70
bool
isEuclidean
()
const
71
{
return
isEuclideanImpl
(); }
72
94
Scalar
scalarProd
(
95
const
VectorBase<Scalar>
& x,
const
VectorBase<Scalar>
& y
96
)
const
97
{
return
scalarProdImpl
(x, y); }
98
132
void
scalarProds
(
133
const
MultiVectorBase<Scalar>
& X,
const
MultiVectorBase<Scalar>
& Y,
134
const
ArrayView<Scalar>
&scalarProds_out
135
)
const
136
{
scalarProdsImpl
(X, Y, scalarProds_out); }
137
145
RCP<const LinearOpBase<Scalar>
>
getLinearOp
()
const
146
{
return
getLinearOpImpl
(); }
147
149
150
protected
:
151
154
156
virtual
bool
isEuclideanImpl
()
const
= 0;
157
159
virtual
Scalar
scalarProdImpl
(
160
const
VectorBase<Scalar>
& x,
const
VectorBase<Scalar>
& y )
const
;
161
163
virtual
void
scalarProdsImpl
(
164
const
MultiVectorBase<Scalar>
& X,
const
MultiVectorBase<Scalar>
& Y,
165
const
ArrayView<Scalar>
&scalarProds_out
166
)
const
= 0;
167
169
virtual
RCP<const LinearOpBase<Scalar>
>
getLinearOpImpl
()
const
170
{
171
return
Teuchos::null;
172
}
173
175
176
};
177
178
179
}
// end namespace Thyra
180
181
182
#endif
// THYRA_SCALAR_PROD_BASE_DECL_HPP
Teuchos::ArrayView
Teuchos::Describable
Teuchos::RCP
Thyra::MultiVectorBase
Interface for a collection of column vectors called a multi-vector.
Definition
Thyra_MultiVectorBase_decl.hpp:464
Thyra::ScalarProdBase
Abstract interface for scalar products.
Definition
Thyra_ScalarProdBase_decl.hpp:58
Thyra::ScalarProdBase::scalarProd
Scalar scalarProd(const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const
Return the scalar product of two vectors in the vector space.
Definition
Thyra_ScalarProdBase_decl.hpp:94
Thyra::ScalarProdBase::isEuclidean
bool isEuclidean() const
Return if this is a Euclidean (identity) scalar product is the same as the dot product.
Definition
Thyra_ScalarProdBase_decl.hpp:70
Thyra::ScalarProdBase::scalarProdImpl
virtual Scalar scalarProdImpl(const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const
Default implementation calls scalarProdsImpl().
Definition
Thyra_ScalarProdBase_def.hpp:24
Thyra::ScalarProdBase::isEuclideanImpl
virtual bool isEuclideanImpl() const =0
Thyra::ScalarProdBase::getLinearOpImpl
virtual RCP< const LinearOpBase< Scalar > > getLinearOpImpl() const
Definition
Thyra_ScalarProdBase_decl.hpp:169
Thyra::ScalarProdBase::scalarProdsImpl
virtual void scalarProdsImpl(const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds_out) const =0
Thyra::ScalarProdBase::getLinearOp
RCP< const LinearOpBase< Scalar > > getLinearOp() const
Return a linear operator representing the scalar product Q.
Definition
Thyra_ScalarProdBase_decl.hpp:145
Thyra::ScalarProdBase::scalarProds
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.
Definition
Thyra_ScalarProdBase_decl.hpp:132
Thyra::VectorBase
Abstract interface for finite-dimensional dense vectors.
Definition
Thyra_VectorBase.hpp:115
Generated by
1.17.0