Thyra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Thyra_PolynomialVectorTraits.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_POLYNOMIAL_VECTOR_TRAITS_HPP
11 #define THYRA_POLYNOMIAL_VECTOR_TRAITS_HPP
12 
13 #include "Thyra_VectorBase.hpp"
14 #include "Teuchos_PolynomialTraits.hpp"
15 #include "Thyra_VectorStdOps.hpp"
16 #include "Thyra_MultiVectorStdOps.hpp"
17 
18 namespace Teuchos {
19 
21 
26  template <typename Scalar>
27  class PolynomialTraits< Thyra::VectorBase<Scalar> > {
28  public:
29 
32 
34  typedef Scalar scalar_type;
35 
37  static inline Teuchos::RCP<coeff_type> clone(const coeff_type& c) {
38  return c.clone_v();
39  }
40 
42  static inline void copy(const coeff_type& x, coeff_type* y) {
43  Thyra::copy(x, Teuchos::ptr(y));
44  }
45 
47  static inline void assign(coeff_type* y, const scalar_type& alpha) {
48  Thyra::assign(Teuchos::ptr(y), alpha);
49  }
50 
52  static inline void update(coeff_type* y, const coeff_type& x,
53  const scalar_type& beta) {
54  Thyra::Vp_V(Teuchos::ptr(y), x, beta);
55  }
56 
57  }; // class PolynomialTraits< Thyra::VectorBase<Scalar> >
58 
59 } // end namespace Teuchos
60 
61 #endif // THYRA_POLYNOMIAL_VECTOR_TRAITS_HPP
Thyra::VectorBase< Scalar > coeff_type
Typename of coefficients.
static Teuchos::RCP< coeff_type > clone(const coeff_type &c)
Clone a coefficient.
Abstract interface for finite-dimensional dense vectors.
static void update(coeff_type *y, const coeff_type &x, const scalar_type &beta)
y = x + beta*y
static void assign(coeff_type *y, const scalar_type &alpha)
Assign a scalar to a coefficient.
static void copy(const coeff_type &x, coeff_type *y)
Copy a coefficient.
virtual RCP< VectorBase< Scalar > > clone_v() const =0
Returns a seprate cloned copy of *this vector with the same values but different storage.