Stokhos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Stokhos_JacobiBasisImp.hpp
Go to the documentation of this file.
1
// $Id: Stokhos_JacobiBasisImp.hpp,v 1.1.1.1 2010/02/10 20:22:35 kevin Exp $
2
// $Source: /usr/local/cvs/UQ/Ops/Stokhos_JacobiBasisImp.hpp,v $
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
template
<
typename
ordinal_type,
typename
value_type>
45
Stokhos::JacobiBasis<ordinal_type, value_type>::
46
JacobiBasis
(
ordinal_type
p
,
47
value_type
alphaIndex,
48
value_type
betaIndex,
bool
normalize
,
Stokhos::GrowthPolicy
growth
) :
49
RecurrenceBasis
<
ordinal_type
,
value_type
>(
"Jacobi"
,
p
,
normalize
,
growth
),
50
alphaIndex_
(alphaIndex),
51
betaIndex_
(betaIndex)
52
{
53
this->
setup
();
54
55
#ifdef HAVE_STOKHOS_DAKOTA
56
this->
setSparseGridGrowthRule
(webbur::level_to_order_linear_wn);
57
#endif
58
}
59
60
template
<
typename
ordinal_type,
typename
value_type>
61
Stokhos::JacobiBasis<ordinal_type, value_type>::
62
JacobiBasis
(
ordinal_type
p
,
const
JacobiBasis
& basis) :
63
RecurrenceBasis
<
ordinal_type
,
value_type
>(
p
, basis),
64
alphaIndex_
(basis.
alphaIndex_
),
65
betaIndex_
(basis.
betaIndex_
)
66
{
67
// Compute coefficients in 3-term recurrsion
68
computeRecurrenceCoefficients
(
p
+1, this->
alpha
, this->
beta
, this->
delta
,
69
this->
gamma
);
70
71
// Setup rest of recurrence basis
72
this->
setup
();
73
}
74
75
template
<
typename
ordinal_type,
typename
value_type>
76
Stokhos::JacobiBasis<ordinal_type, value_type>::
77
~JacobiBasis
()
78
{
79
}
80
81
template
<
typename
ordinal_type,
typename
value_type>
82
bool
83
Stokhos::JacobiBasis<ordinal_type, value_type>::
84
computeRecurrenceCoefficients
(
ordinal_type
n,
85
Teuchos::Array<value_type>&
alpha
,
86
Teuchos::Array<value_type>&
beta
,
87
Teuchos::Array<value_type>&
delta
,
88
Teuchos::Array<value_type>&
gamma
)
const
89
{
90
value_type
a =
alphaIndex_
;
91
value_type
b =
betaIndex_
;
92
93
if
(a==0.0 && b==0.0)
94
{
95
alpha
[0] = 0.0;
96
beta
[0] = 1.0;
97
delta
[0] = 1.0;
98
gamma
[0] = 1.0;
99
}
100
else
101
{
102
alpha
[0] =
getB
(0)/
getA
(0);
103
beta
[0] = 1.0;
104
delta
[0] =
getC
(0)/
getA
(0);
105
gamma
[0] = 1.0;
106
}
107
for
(
ordinal_type
i=1; i<n; i++)
108
{
109
alpha
[i] =
getB
(i)/
getA
(i);
110
beta
[i] =
getD
(i)/
getA
(i);
111
delta
[i] =
getC
(i)/
getA
(i);
112
gamma
[i] = 1.0;
113
}
114
115
return
false
;
116
}
117
118
119
template
<
typename
ordinal_type,
typename
value_type>
120
value_type
Stokhos::JacobiBasis<ordinal_type, value_type>::getA
(
int
n)
const
121
{
122
return
2*(n+1)*(n+
alphaIndex_
+
betaIndex_
+1)*(2*n+
alphaIndex_
+
betaIndex_
);
123
}
124
125
template
<
typename
ordinal_type,
typename
value_type>
126
value_type
Stokhos::JacobiBasis<ordinal_type, value_type>::getB
(
int
n)
const
127
{
128
value_type
a =
alphaIndex_
;
129
value_type
b =
betaIndex_
;
130
return
-(2*n+a+b+1)*(a*a-b*b);
131
}
132
133
template
<
typename
ordinal_type,
typename
value_type>
134
value_type
Stokhos::JacobiBasis<ordinal_type, value_type>::getC
(
int
n)
const
135
{
136
value_type
a =
alphaIndex_
;
137
value_type
b =
betaIndex_
;
138
return
poch3
(2*n+a+b);
139
}
140
141
template
<
typename
ordinal_type,
typename
value_type>
142
value_type
Stokhos::JacobiBasis<ordinal_type, value_type>::getD
(
int
n)
const
143
{
144
value_type
a =
alphaIndex_
;
145
value_type
b =
betaIndex_
;
146
return
2*(n+a)*(n+b)*(2*n + a + b + 2);
147
}
148
149
template
<
typename
ordinal_type,
typename
value_type>
150
value_type
Stokhos::JacobiBasis<ordinal_type, value_type>::poch3
(
value_type
m)
const
151
{
152
return
(m+2)*(m+1)*m;
153
}
154
155
template
<
typename
ordinal_type,
typename
value_type>
156
Teuchos::RCP<Stokhos::OneDOrthogPolyBasis<ordinal_type,value_type> >
157
Stokhos::JacobiBasis<ordinal_type,value_type>::
158
cloneWithOrder
(
ordinal_type
p
)
const
159
{
160
return
161
Teuchos::rcp(
new
Stokhos::JacobiBasis<ordinal_type,value_type>
(
p
,*
this
));
162
}
Stokhos::JacobiBasis
Jacobi polynomial basis.
Definition
Stokhos_JacobiBasis.hpp:95
Stokhos::JacobiBasis::alphaIndex_
value_type alphaIndex_
Definition
Stokhos_JacobiBasis.hpp:160
Stokhos::JacobiBasis::poch3
value_type poch3(value_type x) const
Definition
Stokhos_JacobiBasisImp.hpp:150
Stokhos::JacobiBasis::computeRecurrenceCoefficients
virtual bool computeRecurrenceCoefficients(ordinal_type n, Teuchos::Array< value_type > &alpha, Teuchos::Array< value_type > &beta, Teuchos::Array< value_type > &delta, Teuchos::Array< value_type > &gamma) const
Compute recurrence coefficients.
Definition
Stokhos_JacobiBasisImp.hpp:84
Stokhos::JacobiBasis::getC
value_type getC(int n) const
Definition
Stokhos_JacobiBasisImp.hpp:134
Stokhos::JacobiBasis::getD
value_type getD(int n) const
Definition
Stokhos_JacobiBasisImp.hpp:142
Stokhos::JacobiBasis::getA
value_type getA(int n) const
Definition
Stokhos_JacobiBasisImp.hpp:120
Stokhos::JacobiBasis::~JacobiBasis
~JacobiBasis()
Destructor.
Definition
Stokhos_JacobiBasisImp.hpp:77
Stokhos::JacobiBasis::betaIndex_
value_type betaIndex_
Definition
Stokhos_JacobiBasis.hpp:161
Stokhos::JacobiBasis::JacobiBasis
JacobiBasis(ordinal_type p, value_type alphaIndex, value_type betaIndex, bool normalize=false, GrowthPolicy growth=SLOW_GROWTH)
Constructor.
Definition
Stokhos_JacobiBasisImp.hpp:46
Stokhos::JacobiBasis::getB
value_type getB(int n) const
Definition
Stokhos_JacobiBasisImp.hpp:126
Stokhos::JacobiBasis::cloneWithOrder
virtual Teuchos::RCP< OneDOrthogPolyBasis< ordinal_type, value_type > > cloneWithOrder(ordinal_type p) const
Clone this object with the option of building a higher order basis.
Definition
Stokhos_JacobiBasisImp.hpp:158
Stokhos::ordinal_type
Stokhos::RecurrenceBasis::normalize
bool normalize
Normalize basis.
Definition
Stokhos_RecurrenceBasis.hpp:310
Stokhos::RecurrenceBasis::growth
GrowthPolicy growth
Smolyak growth policy.
Definition
Stokhos_RecurrenceBasis.hpp:313
Stokhos::RecurrenceBasis::alpha
Teuchos::Array< value_type > alpha
Recurrence coefficients.
Definition
Stokhos_RecurrenceBasis.hpp:322
Stokhos::RecurrenceBasis::beta
Teuchos::Array< value_type > beta
Recurrence coefficients.
Definition
Stokhos_RecurrenceBasis.hpp:325
Stokhos::RecurrenceBasis::p
ordinal_type p
Order of basis.
Definition
Stokhos_RecurrenceBasis.hpp:307
Stokhos::RecurrenceBasis::gamma
Teuchos::Array< value_type > gamma
Recurrence coefficients.
Definition
Stokhos_RecurrenceBasis.hpp:331
Stokhos::RecurrenceBasis::delta
Teuchos::Array< value_type > delta
Recurrence coefficients.
Definition
Stokhos_RecurrenceBasis.hpp:328
Stokhos::RecurrenceBasis::setSparseGridGrowthRule
virtual void setSparseGridGrowthRule(LevelToOrderFnPtr ptr)
Set sparse grid rule.
Definition
Stokhos_RecurrenceBasis.hpp:225
Stokhos::RecurrenceBasis::setup
virtual void setup()
Setup basis after computing recurrence coefficients.
Definition
Stokhos_RecurrenceBasisImp.hpp:89
Stokhos::RecurrenceBasis::RecurrenceBasis
RecurrenceBasis(const std::string &name, ordinal_type p, bool normalize, GrowthPolicy growth=SLOW_GROWTH)
Constructor to be called by derived classes.
Definition
Stokhos_RecurrenceBasisImp.hpp:49
Stokhos::GrowthPolicy
GrowthPolicy
Enumerated type for determining Smolyak growth policies.
Definition
Stokhos_RecurrenceBasis.hpp:50
Generated by
1.17.0