47#include "Teuchos_UnitTestHarness.hpp"
48#include "Teuchos_TestingHelpers.hpp"
49#include "Teuchos_UnitTestRepository.hpp"
50#include "Teuchos_GlobalMPISession.hpp"
59 const double mean = 0.2;
60 const double std_dev = 0.1;
61 Teuchos::Array< Teuchos::RCP<const Stokhos::OneDOrthogPolyBasis<int,double> > > bases(d);
62 for (
int i=0; i<d; i++) {
65 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
69 Teuchos::RCP<const Stokhos::Quadrature<int,double> > quad =
73 Teuchos::RCP<Stokhos::Sparse3Tensor<int,double> > Cijk =
74 basis->computeTripleProductTensor();
82 for (
int i=0; i<d; i++)
83 u.term(i,1) = std_dev / (i+1);
90 for (
int j=0;
j<d;
j++)
91 w_mean += u.term(
j,1)*u.term(
j,1)/2.0;
92 w_mean = std::exp(w_mean);
93 for (
int i=0; i<basis->size(); i++) {
96 for (
int j=0;
j<d;
j++)
97 s *= std::pow(u.term(
j,1), multiIndex[
j]);
98 w[i] = w_mean*s/basis->norm_squared(i);
105#ifdef HAVE_STOKHOS_DAKOTA
110 const double mean = 0.2;
111 const double std_dev = 0.1;
112 Teuchos::Array< Teuchos::RCP<const Stokhos::OneDOrthogPolyBasis<int,double> > > bases(d);
113 for (
int i=0; i<d; i++) {
116 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
120 Teuchos::RCP<const Stokhos::Quadrature<int,double> > quad =
121 Teuchos::rcp(
new Stokhos::SparseGridQuadrature<int,double>(basis, p));
124 Teuchos::RCP<Stokhos::Sparse3Tensor<int,double> > Cijk =
125 basis->computeTripleProductTensor();
133 for (
int i=0; i<d; i++)
134 u.term(i,1) = std_dev / (i+1);
140 double w_mean = mean;
141 for (
int j=0;
j<d;
j++)
142 w_mean += u.term(
j,1)*u.term(
j,1)/2.0;
143 w_mean = std::exp(w_mean);
144 for (
int i=0; i<basis->size(); i++) {
147 for (
int j=0;
j<d;
j++)
148 s *= std::pow(u.term(
j,1), multiIndex[
j]);
149 w[i] = w_mean*s/basis->norm_squared(i);
158 Teuchos::GlobalMPISession mpiSession(&argc, &
argv);
159 return Teuchos::UnitTestRepository::runUnitTestsFromMain(argc,
argv);
int main(int argc, char *argv[])
TEUCHOS_UNIT_TEST(Stokhos_LogNormal_TP, UnitTest)
Multivariate orthogonal polynomial basis generated from a total-order complete-polynomial tensor prod...
Hermite polynomial basis.
A multidimensional index.
Class to store coefficients of a projection onto an orthogonal polynomial basis.
Orthogonal polynomial expansions based on numerical quadrature.
void exp(OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const OrthogPolyApprox< ordinal_type, value_type, node_type > &a)
Defines quadrature for a tensor product basis by tensor products of 1-D quadrature rules.
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)