Thyra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Thyra_MultiVectorAdapterBase_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_MULTI_VECTOR_ADAPTER_BASE_DECL_HPP
11 #define THYRA_MULTI_VECTOR_ADAPTER_BASE_DECL_HPP
12 
13 #include "Thyra_MultiVectorDefaultBase.hpp"
14 
15 
16 namespace Thyra {
17 
18 
20 template<class Scalar> class ScalarProdVectorSpaceBase;
21 
22 
34 template<class Scalar>
35 class MultiVectorAdapterBase : virtual public MultiVectorDefaultBase<Scalar>
36 {
37 public:
38 
41 
44  rangeScalarProdVecSpc() const = 0;
45 
48  domainScalarProdVecSpc() const = 0;
49 
58  virtual void euclideanApply(
59  const EOpTransp M_trans,
60  const MultiVectorBase<Scalar> &X,
61  const Ptr<MultiVectorBase<Scalar> > &Y,
62  const Scalar alpha,
63  const Scalar beta
64  ) const = 0;
65 
67 
75 
76 protected:
77 
81  bool opSupportedImpl(EOpTransp M_trans) const;
83  void applyImpl(
84  const EOpTransp M_trans,
85  const MultiVectorBase<Scalar> &X,
86  const Ptr<MultiVectorBase<Scalar> > &Y,
87  const Scalar alpha,
88  const Scalar beta
89  ) const;
91 
92 };
93 
94 
95 } // namespace Thyra
96 
97 
98 #endif // THYRA_MULTI_VECTOR_ADAPTER_BASE_DECL_HPP
RCP< const VectorSpaceBase< Scalar > > domain() const
Returns this-&gt;domainScalarProdVecSpc()
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
Node subclass that uses a default MultiVectorBase implementation to provide default implementations f...
Interface for a collection of column vectors called a multi-vector.
virtual RCP< const ScalarProdVectorSpaceBase< Scalar > > domainScalarProdVecSpc() const =0
bool opSupportedImpl(EOpTransp M_trans) const
virtual void euclideanApply(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const =0
Apply the linear operator to a multi-vector with respect to a Euclidean vector space where the scalar...
Node subclass for MultiVectorBase subclasses that allows the insertion of an application defined scal...
RCP< const VectorSpaceBase< Scalar > > range() const
Returns this-&gt;rangeScalarProdVecSpc()
virtual RCP< const ScalarProdVectorSpaceBase< Scalar > > rangeScalarProdVecSpc() const =0