Stokhos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
test
UnitTest
Stokhos_TensorProductPseudoSpectralExpansionUnitTest.cpp
Go to the documentation of this file.
1
// $Id$
2
// $Source$
3
// @HEADER
4
// ***********************************************************************
5
//
6
// Stokhos Package
7
// Copyright (2009) Sandia Corporation
8
//
9
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
10
// license for use of this work by or on behalf of the U.S. Government.
11
//
12
// Redistribution and use in source and binary forms, with or without
13
// modification, are permitted provided that the following conditions are
14
// met:
15
//
16
// 1. Redistributions of source code must retain the above copyright
17
// notice, this list of conditions and the following disclaimer.
18
//
19
// 2. Redistributions in binary form must reproduce the above copyright
20
// notice, this list of conditions and the following disclaimer in the
21
// documentation and/or other materials provided with the distribution.
22
//
23
// 3. Neither the name of the Corporation nor the names of the
24
// contributors may be used to endorse or promote products derived from
25
// this software without specific prior written permission.
26
//
27
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
28
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
31
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
//
39
// Questions? Contact Eric T. Phipps (etphipp@sandia.gov).
40
//
41
// ***********************************************************************
42
// @HEADER
43
44
#include "Teuchos_UnitTestHarness.hpp"
45
#include "Teuchos_TestingHelpers.hpp"
46
#include "Teuchos_UnitTestRepository.hpp"
47
#include "Teuchos_GlobalMPISession.hpp"
48
49
#include "
Stokhos.hpp
"
50
#include "
Stokhos_UnitTestHelpers.hpp
"
51
52
namespace
PseudoSpectralExpansionUnitTest
{
53
54
// Common setup for unit tests that defines what pseudospectral expansion
55
// we are testing
56
template
<
typename
OrdinalType,
typename
ValueType>
57
struct
UnitTestSetup
{
58
typedef
Stokhos::TensorProductBasis<OrdinalType,ValueType>
product_basis_type
;
59
ValueType
rtol
,
atol
;
60
ValueType
crtol
,
catol
;
61
OrdinalType
sz
;
62
Teuchos::RCP<const product_basis_type>
basis
;
63
Teuchos::RCP<const Stokhos::Quadrature<OrdinalType,ValueType> >
quad
;
64
Teuchos::RCP<const Stokhos::PseudoSpectralOperator<OrdinalType,ValueType> >
ps_op
;
65
Teuchos::RCP<Stokhos::Sparse3Tensor<int,double> >
Cijk
,
Cijk_linear
;
66
Teuchos::RCP< Stokhos::PseudoSpectralOrthogPolyExpansion<OrdinalType,ValueType> >
exp
,
exp_linear
;
67
Stokhos::OrthogPolyApprox<OrdinalType,ValueType>
x
,
y
,
u
,
u2
,
cx
,
cu
,
cu2
,
sx
,
su
,
su2
;
68
ValueType
a
;
69
70
UnitTestSetup
() {
71
rtol
= 1e-4;
72
atol
= 1e-5;
73
crtol
= 1e-12;
74
catol
= 1e-12;
75
a
= 3.1;
76
const
OrdinalType d = 2;
77
const
OrdinalType p = 7;
78
79
// Create product basis
80
Teuchos::Array< Teuchos::RCP<const Stokhos::OneDOrthogPolyBasis<OrdinalType,ValueType> > > bases(d);
81
for
(OrdinalType i=0; i<d; i++)
82
bases[i] =
83
Teuchos::rcp(
new
Stokhos::LegendreBasis<OrdinalType,ValueType>
(p));
84
85
basis
=
86
Teuchos::rcp(
new
product_basis_type
(bases));
87
88
// Tensor product quadrature
89
quad
=
90
Teuchos::rcp(
new
Stokhos::TensorProductQuadrature<OrdinalType,ValueType>
(
basis
));
91
92
// Tensor product pseudospectral operator
93
Teuchos::Array< Stokhos::EvenGrowthRule<OrdinalType> > point_growth(d);
94
ps_op
=
95
Teuchos::rcp(
new
Stokhos::TensorProductPseudoSpectralOperator<OrdinalType,ValueType>
(*
basis
,
true
));
96
97
// Triple product tensor
98
Cijk
=
basis
->computeTripleProductTensor();
99
Cijk_linear
=
basis
->computeLinearTripleProductTensor();
100
101
// Quadrature expansion
102
exp
=
103
Teuchos::rcp(
new
Stokhos::PseudoSpectralOrthogPolyExpansion<OrdinalType,ValueType>
(
basis
,
Cijk
,
ps_op
));
104
exp_linear
=
105
Teuchos::rcp(
new
Stokhos::PseudoSpectralOrthogPolyExpansion<OrdinalType,ValueType>
(
basis
,
Cijk_linear
,
ps_op
));
106
107
// Create approximation
108
sz
=
basis
->size();
109
x
.reset(
basis
);
110
y
.reset(
basis
);
111
u
.reset(
basis
);
112
u2
.reset(
basis
);
113
cx
.reset(
basis
, 1);
114
x
.term(0, 0) = 1.0;
115
cx
.term(0, 0) =
a
;
116
cu
.reset(
basis
);
117
cu2
.reset(
basis
, 1);
118
sx
.reset(
basis
, d+1);
119
su
.reset(
basis
, d+1);
120
su2
.reset(
basis
, d+1);
121
for
(OrdinalType i=0; i<d; i++) {
122
x
.term(i, 1) = 0.1;
123
sx
.term(i, 1) = 0.0;
124
}
125
y
.term(0, 0) = 2.0;
126
for
(OrdinalType i=0; i<d; i++)
127
y
.term(i, 1) = 0.25;
128
}
129
130
};
131
132
// typedef int OrdinalType;
133
// typedef double ValueType;
134
UnitTestSetup<int,double>
setup
;
135
136
}
137
138
// Include unit tests for the above setup class
139
#include "
Stokhos_PseudoSpectralExpansionUnitTest.hpp
"
140
141
int
main
(
int
argc,
char
*
argv
[] ) {
142
Teuchos::GlobalMPISession mpiSession(&argc, &
argv
);
143
return
Teuchos::UnitTestRepository::runUnitTestsFromMain(argc,
argv
);
144
}
Stokhos.hpp
argv
char * argv[]
Definition
Stokhos_HouseTriDiagUnitTest.cpp:286
setup
UnitTestSetup< Kokkos::Cuda > setup
Definition
Stokhos_KokkosArrayKernelsUnitTest_Cuda.cpp:53
Stokhos_PseudoSpectralExpansionUnitTest.hpp
main
int main(int argc, char *argv[])
Definition
Stokhos_TensorProductPseudoSpectralExpansionUnitTest.cpp:141
Stokhos_UnitTestHelpers.hpp
Stokhos::LegendreBasis
Legendre polynomial basis.
Definition
Stokhos_LegendreBasis.hpp:68
Stokhos::OrthogPolyApprox
Class to store coefficients of a projection onto an orthogonal polynomial basis.
Definition
Stokhos_OrthogPolyApprox.hpp:63
Stokhos::PseudoSpectralOrthogPolyExpansion
Orthogonal polynomial expansions based on numerical quadrature.
Definition
Stokhos_PseudoSpectralOrthogPolyExpansion.hpp:63
Stokhos::TensorProductBasis
Multivariate orthogonal polynomial basis generated from a tensor product of univariate polynomials.
Definition
Stokhos_TensorProductBasis.hpp:70
Stokhos::TensorProductPseudoSpectralOperator
An operator for building pseudo-spectral coefficients using tensor-product quadrature.
Definition
Stokhos_TensorProductPseudoSpectralOperator.hpp:62
Stokhos::TensorProductQuadrature
Defines quadrature for a tensor product basis by tensor products of 1-D quadrature rules.
Definition
Stokhos_TensorProductQuadrature.hpp:58
PseudoSpectralExpansionUnitTest
Definition
Stokhos_PseudoSpectralExpansionUnitTest.hpp:44
PseudoSpectralExpansionUnitTest::UnitTestSetup
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:57
PseudoSpectralExpansionUnitTest::UnitTestSetup::cu2
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > cu2
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::exp
Teuchos::RCP< Stokhos::PseudoSpectralOrthogPolyExpansion< OrdinalType, ValueType > > exp
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:67
PseudoSpectralExpansionUnitTest::UnitTestSetup::sz
OrdinalType sz
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:62
PseudoSpectralExpansionUnitTest::UnitTestSetup::exp_linear
Teuchos::RCP< Stokhos::PseudoSpectralOrthogPolyExpansion< OrdinalType, ValueType > > exp_linear
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:67
PseudoSpectralExpansionUnitTest::UnitTestSetup::quad
Teuchos::RCP< const Stokhos::Quadrature< OrdinalType, ValueType > > quad
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:64
PseudoSpectralExpansionUnitTest::UnitTestSetup::u
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > u
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::UnitTestSetup
UnitTestSetup()
Definition
Stokhos_TensorProductPseudoSpectralExpansionUnitTest.cpp:70
PseudoSpectralExpansionUnitTest::UnitTestSetup::x
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > x
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::su
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > su
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::Cijk
Teuchos::RCP< Stokhos::Sparse3Tensor< int, double > > Cijk
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:66
PseudoSpectralExpansionUnitTest::UnitTestSetup::rtol
ValueType rtol
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:60
PseudoSpectralExpansionUnitTest::UnitTestSetup::crtol
ValueType crtol
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:61
PseudoSpectralExpansionUnitTest::UnitTestSetup::cx
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > cx
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::ps_op
Teuchos::RCP< const Stokhos::PseudoSpectralOperator< OrdinalType, ValueType > > ps_op
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:65
PseudoSpectralExpansionUnitTest::UnitTestSetup::a
ValueType a
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:69
PseudoSpectralExpansionUnitTest::UnitTestSetup::cu
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > cu
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::Cijk_linear
Teuchos::RCP< Stokhos::Sparse3Tensor< int, double > > Cijk_linear
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:66
PseudoSpectralExpansionUnitTest::UnitTestSetup::atol
ValueType atol
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:60
PseudoSpectralExpansionUnitTest::UnitTestSetup::product_basis_type
Stokhos::TotalOrderBasis< OrdinalType, ValueType > product_basis_type
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:59
PseudoSpectralExpansionUnitTest::UnitTestSetup::u2
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > u2
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::catol
ValueType catol
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:61
PseudoSpectralExpansionUnitTest::UnitTestSetup::y
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > y
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::basis
Teuchos::RCP< const product_basis_type > basis
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:63
PseudoSpectralExpansionUnitTest::UnitTestSetup::su2
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > su2
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
PseudoSpectralExpansionUnitTest::UnitTestSetup::sx
Stokhos::OrthogPolyApprox< OrdinalType, ValueType > sx
Definition
Stokhos_QuadraturePseudoSpectralExpansionUnitTest.cpp:68
UnitTestSetup
Definition
Stokhos_SacadoMPVectorCommTests.cpp:71
Generated by
1.17.0