Stokhos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Stokhos_ForUQTKOrthogPolyExpansion.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_FORUQTKORTHOGPOLYEXPANSION_HPP
11 #define STOKHOS_FORUQTKORTHOGPOLYEXPANSION_HPP
12 
13 #include "Stokhos_ConfigDefs.h"
14 #ifdef HAVE_STOKHOS_FORUQTK
15 
17 
18 namespace Stokhos {
19 
25  template <typename ordinal_type, typename value_type>
26  class ForUQTKOrthogPolyExpansion :
27  public OrthogPolyExpansionBase<ordinal_type, value_type,
28  Stokhos::StandardStorage<ordinal_type, value_type> > {
29  public:
30 
32 
33  enum EXPANSION_METHOD {
34  TAYLOR,
35  INTEGRATION
36  };
37 
39  ForUQTKOrthogPolyExpansion(
40  const Teuchos::RCP<const OrthogPolyBasis<ordinal_type,value_type> >& basis,
42  EXPANSION_METHOD method = TAYLOR,
43  value_type rtol = 1.0e-12);
44 
46  virtual ~ForUQTKOrthogPolyExpansion() {}
47 
48  // Operations
49  void timesEqual(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
50  const value_type& x);
51  void divideEqual(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
52  const value_type& x);
53 
54  void timesEqual(
55  OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
56  const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
57  void divideEqual(
58  OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
59  const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
60 
61 
62  void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
63  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
64  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
65  void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
66  const value_type& a,
67  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
68  void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
69  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
70  const value_type& b);
71  void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
72  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
73  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
74  void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
75  const value_type& a,
76  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
77  void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
78  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
79  const value_type& b);
80 
81  void exp(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
82  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
83  void log(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
84  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
85  void log10(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
86  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
87  void sqrt(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
88  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
89  void cbrt(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
90  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
91  void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
92  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
93  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
94  void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
95  const value_type& a,
96  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
97  void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
98  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
99  const value_type& b);
100  void cos(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
101  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
102  void sin(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
103  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
104  void tan(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
105  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
106  void cosh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
107  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
108  void sinh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
109  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
110  void tanh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
111  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
112  void acos(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
113  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
114  void asin(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
115  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
116  void atan(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
117  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
118  void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
119  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
120  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
121  void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
122  const value_type& a,
123  const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
124  void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
125  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
126  const value_type& b);
127  void acosh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
128  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
129  void asinh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
130  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
131  void atanh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
132  const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
133 
134  private:
135 
136  // Prohibit copying
137  ForUQTKOrthogPolyExpansion(const ForUQTKOrthogPolyExpansion&);
138 
139  // Prohibit Assignment
140  ForUQTKOrthogPolyExpansion& operator=(const ForUQTKOrthogPolyExpansion& b);
141 
142  protected:
143 
145  int order;
146 
148  int dim;
149 
151  ordinal_type sz;
152 
154  double rtol;
155 
157  EXPANSION_METHOD method;
158 
159  }; // class ForUQTKOrthogPolyExpansion
160 
161 } // namespace Stokhos
162 
164 
165 #endif // HAVE_STOKHOS_FORUQTK
166 
167 #endif // STOKHOS_FORUQTKORTHOGPOLYEXPANSION_HPP
KOKKOS_INLINE_FUNCTION PCE< Storage > sqrt(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > tan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > sinh(const PCE< Storage > &a)
atanh(expr.val())
Data structure storing a sparse 3-tensor C(i,j,k) in a a compressed format.
KOKKOS_INLINE_FUNCTION PCE< Storage > pow(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > tanh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cbrt(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > acos(const PCE< Storage > &a)
atan2(expr1.val(), expr2.val())
Kokkos::Serial node_type
asinh(expr.val())
KOKKOS_INLINE_FUNCTION PCE< Storage > cosh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > atan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > exp(const PCE< Storage > &a)
acosh(expr.val())
KOKKOS_INLINE_FUNCTION PCE< Storage > sin(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > log(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > log10(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > asin(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cos(const PCE< Storage > &a)