18 namespace QuadExpansionUnitTest {
21 template <
typename OrdinalType,
typename ValueType>
30 Stokhos::OrthogPolyApprox<OrdinalType,ValueType> x,
y,
u,
u2,
cx,
cu,
cu2,
sx,
su,
su2;
39 const OrdinalType d = 2;
40 const OrdinalType p = 7;
44 for (OrdinalType i=0; i<d; i++)
78 for (OrdinalType i=0; i<d; i++) {
83 for (OrdinalType i=0; i<d; i++)
97 OrdinalType nqp = weights.
size();
100 for (OrdinalType i=0; i<c.
size(); i++)
105 for (OrdinalType k=0; k<nqp; k++) {
108 for (
int i=0; i<c.
size(); i++)
113 template <
class Func>
124 OrdinalType nqp = weights.
size();
127 for (OrdinalType i=0; i<c.
size(); i++)
132 for (OrdinalType k=0; k<nqp; k++) {
133 ValueType val1 = aa.
evaluate(points[k], values[k]);
134 ValueType val2 = b.
evaluate(points[k], values[k]);
135 ValueType
val = func(val1, val2);
136 for (
int i=0; i<c.
size(); i++)
141 template <
class Func>
153 OrdinalType nqp = weights.
size();
156 for (OrdinalType i=0; i<c.
size(); i++)
161 for (OrdinalType k=0; k<nqp; k++) {
162 ValueType val2 = b.
evaluate(points[k], values[k]);
163 ValueType
val = func(aa, val2);
164 for (
int i=0; i<c.
size(); i++)
169 template <
class Func>
181 OrdinalType nqp = weights.
size();
184 for (OrdinalType i=0; i<c.
size(); i++)
189 for (OrdinalType k=0; k<nqp; k++) {
190 ValueType val1 = aa.
evaluate(points[k], values[k]);
191 ValueType
val = func(val1, b);
192 for (
int i=0; i<c.
size(); i++)
258 return 0.5*
std::log((1.0+a)/(1.0-a));
263 double operator() (
double a,
double b)
const {
return a + b; }
266 double operator() (
double a,
double b)
const {
return a - b; }
269 double operator() (
double a,
double b)
const {
return a * b; }
272 double operator() (
double a,
double b)
const {
return a / b; }
665 setup.exp->plus(ru, v, w);
781 setup.exp->minus(ru, v, w);
897 setup.exp->times(ru, v, w);
1029 setup.exp->divide(ru, v, w);
1214 setup.exp->plusEqual(ru, v);
1267 setup.exp->minusEqual(ru, v);
1268 setup.exp->unaryMinus(v, v);
KOKKOS_INLINE_FUNCTION PCE< Storage > sqrt(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > tan(const PCE< Storage > &a)
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > cu2
TEUCHOS_UNIT_TEST(Stokhos_QuadExpansion, UMinus)
KOKKOS_INLINE_FUNCTION PCE< Storage > sinh(const PCE< Storage > &a)
value_type evaluate(const Teuchos::Array< value_type > &point) const
Evaluate polynomial approximation at a point.
virtual Teuchos::RCP< Stokhos::Sparse3Tensor< ordinal_type, value_type > > computeLinearTripleProductTensor() const
Compute linear triple product tensor where k = 0,1,..,d.
double operator()(double a) const
KOKKOS_INLINE_FUNCTION PCE< Storage > pow(const PCE< Storage > &a, const PCE< Storage > &b)
double operator()(double a, double b) const
void computePCE1(Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &c, const Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &aa)
bool comparePCEs(const PCEType &a1, const std::string &a1_name, const Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &a2, const std::string &a2_name, const ValueType &rel_tol, const ValueType &abs_tol, Teuchos::FancyOStream &out)
virtual const Teuchos::Array< Teuchos::Array< value_type > > & getBasisAtQuadPoints() const =0
Get values of basis at quadrature points.
double operator()(double a) const
void computePCE2RC(Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &c, const Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &aa, ValueType b)
double operator()(double a) const
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > cx
double operator()(double a) const
double operator()(double a) const
double operator()(double a) const
KOKKOS_INLINE_FUNCTION PCE< Storage > tanh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cbrt(const PCE< Storage > &a)
double operator()(double a) const
void computePCE2(Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &c, const Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &aa, const Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &b)
double operator()(double a) const
Teuchos::RCP< const Stokhos::CompletePolynomialBasis< OrdinalType, ValueType > > basis
KOKKOS_INLINE_FUNCTION PCE< Storage > acos(const PCE< Storage > &a)
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > su
virtual const Teuchos::Array< value_type > & getQuadWeights() const =0
Get quadrature weights.
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > sx
virtual const Teuchos::Array< Teuchos::Array< value_type > > & getQuadPoints() const =0
Get quadrature points.
static int runUnitTestsFromMain(int argc, char *argv[])
Teuchos::RCP< const Stokhos::Quadrature< OrdinalType, ValueType > > quad
UnitTestSetup< int, double > setup
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
void reset(const Teuchos::RCP< const Stokhos::OrthogPolyBasis< ordinal_type, value_type > > &new_basis, ordinal_type sz=0)
Reset to a new basis.
Teuchos::RCP< Stokhos::QuadOrthogPolyExpansion< OrdinalType, ValueType > > exp_linear
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > su2
Teuchos::RCP< Stokhos::Sparse3Tensor< int, double > > Cijk
double operator()(double a) const
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > u
double operator()(double a) const
virtual Teuchos::RCP< Stokhos::Sparse3Tensor< ordinal_type, value_type > > computeTripleProductTensor() const
Compute triple product tensor.
KOKKOS_INLINE_FUNCTION PCE< Storage > cosh(const PCE< Storage > &a)
Teuchos::RCP< Stokhos::Sparse3Tensor< int, double > > Cijk_linear
double operator()(double a) const
double operator()(double a, double b) const
double operator()(double a, double b) const
double operator()(double a) const
double operator()(double a) const
double operator()(double a) const
void computePCE2LC(Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &c, ValueType aa, const Stokhos::OrthogPolyApprox< OrdinalType, ValueType > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > atan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > exp(const PCE< Storage > &a)
double operator()(double a, double b) const
int main(int argc, char **argv)
double operator()(double a) const
double operator()(double a) const
ScalarType f(const Teuchos::Array< ScalarType > &x, double a, double b)
virtual ordinal_type size() const
Return total size of basis.
double operator()(double a, double b) const
KOKKOS_INLINE_FUNCTION PCE< Storage > sin(const PCE< Storage > &a)
ordinal_type size() const
Return size.
double operator()(double a) const
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > cu
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > u2
Teuchos::RCP< Stokhos::QuadOrthogPolyExpansion< OrdinalType, ValueType > > exp
KOKKOS_INLINE_FUNCTION PCE< Storage > log(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > log10(const PCE< Storage > &a)
virtual const Teuchos::Array< value_type > & norm_squared() const
Return array storing norm-squared of each basis polynomial.
KOKKOS_INLINE_FUNCTION PCE< Storage > asin(const PCE< Storage > &a)
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > x
KOKKOS_INLINE_FUNCTION PCE< Storage > cos(const PCE< Storage > &a)
Defines quadrature for a tensor product basis by tensor products of 1-D quadrature rules...
double operator()(double a) const
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > y
reference term(ordinal_type dimension, ordinal_type order)
Get coefficient term for given dimension and order.