Stokhos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Stokhos_OrthogPolyExpansion.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Stokhos Package
4 //
5 // Copyright 2009 NTESS and the Stokhos contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef STOKHOS_ORTHOGPOLYEXPANSION_HPP
11 #define STOKHOS_ORTHOGPOLYEXPANSION_HPP
12 
13 #include <cmath>
14 #include <algorithm> // for std::min and std::max
15 
18 
19 namespace Stokhos {
20 
22  template <typename ordinal_type, typename value_type,
24  value_type> >
26  public:
27 
30 
33 
35  virtual ~OrthogPolyExpansion() {}
36 
38  virtual ordinal_type size() const = 0;
39 
42  getBasis() const = 0;
43 
46  getTripleProduct() const = 0;
47 
48  // Operations
49  virtual void unaryMinus(
52 
53  virtual void plusEqual(
55  const value_type& x) = 0;
56  virtual void minusEqual(
58  const value_type& x) = 0;
59  virtual void timesEqual(
61  const value_type& x) = 0;
62  virtual void divideEqual(
64  const value_type& x) = 0;
65 
66  virtual void plusEqual(
69  virtual void minusEqual(
72  virtual void timesEqual(
75  virtual void divideEqual(
78 
79  virtual void plus(
83  virtual void plus(
85  const value_type& a,
87  virtual void plus(
90  const value_type& b) = 0;
91  virtual void minus(
95  virtual void minus(
97  const value_type& a,
99  virtual void minus(
102  const value_type& b) = 0;
103  virtual void times(
107  virtual void times(
109  const value_type& a,
111  virtual void times(
114  const value_type& b) = 0;
115  virtual void divide(
119  virtual void divide(
121  const value_type& a,
123  virtual void divide(
126  const value_type& b) = 0;
127 
128  virtual void exp(
131  virtual void log(
134  virtual void log10(
137  virtual void sqrt(
140  virtual void cbrt(
143  virtual void pow(
147  virtual void pow(
149  const value_type& a,
151  virtual void pow(
154  const value_type& b) = 0;
155  virtual void cos(
158  virtual void sin(
161  virtual void tan(
164  virtual void cosh(
167  virtual void sinh(
170  virtual void tanh(
173  virtual void acos(
176  virtual void asin(
179  virtual void atan(
182 // virtual void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
183 // const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
184 // const OrthogPolyApprox<ordinal_type, value_type, node_type>& b) = 0;
185 // virtual void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
186 // const T& a,
187 // const OrthogPolyApprox<ordinal_type, value_type, node_type>& b) = 0;
188 // virtual void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
189 // const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
190 // const T& b) = 0;
191  virtual void acosh(
194  virtual void asinh(
197  virtual void atanh(
200  virtual void abs(
203  virtual void fabs(
206  virtual void max(
210  virtual void max(
212  const value_type& a,
214  virtual void max(
217  const value_type& b) = 0;
218  virtual void min(
222  virtual void min(
224  const value_type& a,
226  virtual void min(
229  const value_type& b) = 0;
230 
231  private:
232 
233  // Prohibit copying
235 
236  // Prohibit Assignment
238 
239  }; // class OrthogPolyExpansion
240 
241 } // namespace Stokhos
242 
243 #endif // STOKHOS_ORTHOGPOLYEXPANSION_HPP
virtual void fabs(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void acos(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void tanh(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void plus(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const OrthogPolyApprox< ordinal_type, value_type, node_type > &b)=0
Data structure storing a sparse 3-tensor C(i,j,k) in a a compressed format.
virtual void sinh(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void cbrt(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void asinh(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void cosh(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual ordinal_type size() const =0
Get expansion size.
virtual void divide(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const OrthogPolyApprox< ordinal_type, value_type, node_type > &b)=0
virtual void timesEqual(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const value_type &x)=0
Sparse3Tensor< ordinal_type, value_type > tp_type
Typename of TripleProduct tensor.
virtual void plusEqual(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const value_type &x)=0
Kokkos::Serial node_type
Abstract base class for orthogonal polynomial-based expansions.
OrthogPolyExpansion & operator=(const OrthogPolyExpansion &b)
virtual void tan(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void pow(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const OrthogPolyApprox< ordinal_type, value_type, node_type > &b)=0
virtual void cos(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void minus(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const OrthogPolyApprox< ordinal_type, value_type, node_type > &b)=0
virtual void max(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const OrthogPolyApprox< ordinal_type, value_type, node_type > &b)=0
virtual void sin(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void log10(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
Class to store coefficients of a projection onto an orthogonal polynomial basis.
virtual void log(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void asin(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void minusEqual(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const value_type &x)=0
virtual void min(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const OrthogPolyApprox< ordinal_type, value_type, node_type > &b)=0
virtual void sqrt(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void abs(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void divideEqual(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const value_type &x)=0
virtual void acosh(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual Teuchos::RCP< const OrthogPolyBasis< ordinal_type, value_type > > getBasis() const =0
Get basis.
virtual void atan(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void unaryMinus(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual void times(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const OrthogPolyApprox< ordinal_type, value_type, node_type > &b)=0
virtual void exp(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0
virtual Teuchos::RCP< const Sparse3Tensor< ordinal_type, value_type > > getTripleProduct() const =0
Get triple product.
virtual void atanh(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)=0