51 #ifdef HAVE_STOKHOS_FORUQTK
58 template <
typename OrdinalType,
typename ValueType>
71 int order =
setup.basis.order();
76 int size =
setup.basis.size();
83 for (
int i=0; i<=
setup.p; i++)
92 for (
int i=0; i<=
setup.p; i++) {
93 n1[i] =
setup.basis.norm_squared(i);
107 for (
int i=0; i<=
setup.p; i++) {
109 for (
int j=0;
j<nqp;
j++)
110 n2[i] += w[
j]*v[
j][i]*v[
j][i];
124 for (
int i=0; i<=
setup.p; i++) {
126 for (
int k=0; k<nqp; k++)
127 mat(i,
j) += w[k]*v[k][i]*v[k][
j];
134 out <<
"\n Error, mat.normInf() < atol = " << mat.
normInf()
135 <<
" < " <<
setup.atol <<
": failed!\n";
136 out <<
"mat = " << mat << std::endl;
142 setup.basis.computeTripleProductTensor();
149 for (
int i=0; i<=
setup.p; i++) {
151 for (
int k=0; k<=
setup.p; k++) {
154 for (
int qp=0; qp<nqp; qp++)
155 c += w[qp]*v[qp][i]*v[qp][
j]*v[qp][k];
156 std::stringstream ss;
157 ss <<
"Cijk(" << i <<
"," <<
j <<
"," << k <<
")";
168 setup.basis.computeDerivDoubleProductTensor();
176 for (
int i=0; i<nqp; i++) {
179 setup.basis.evaluateBasesAndDerivatives(
x[i],
val[i], deriv[i]);
183 for (
int i=0; i<=
setup.p; i++) {
186 for (
int qp=0; qp<nqp; qp++)
187 b += w[qp]*deriv[qp][i]*
val[qp][
j];
188 std::stringstream ss;
189 ss <<
"Bij(" << i <<
"," <<
j <<
")";
238 setup.basis.evaluateBases(
x, v1);
246 for (
int i=2; i<=
setup.p; i++) {
247 b1 =
std::sqrt((i*i)/((2.0*i+1.0)*(2.0*i-1.0)));
248 v2[i] = (
x*v2[i-1] - b2*v2[i-2]) / b1;
259 setup.basis.evaluateBasesAndDerivatives(
x, val1, deriv1);
275 for (
int i=2; i<=
setup.p; i++) {
276 b1 =
std::sqrt((i*i)/((2.0*i+1.0)*(2.0*i-1.0)));
277 val2[i] = (
x*val2[i-1] - b2*val2[i-2])/b1;
286 for (
int i=2; i<=
setup.p; i++) {
287 b1 =
std::sqrt((i*i)/((2.0*i+1.0)*(2.0*i-1.0)));
288 deriv2[i] = (val2[i-1] +
x*deriv2[i-1] - b2*deriv2[i-2])/b1;
303 for (
int i=0; i<=
setup.p; i++)
304 v1[i] =
setup.basis.evaluate(
x, i);
312 for (
int i=2; i<=
setup.p; i++) {
313 b1 =
std::sqrt((i*i)/((2.0*i+1.0)*(2.0*i-1.0)));
314 v2[i] = (
x*v2[i-1] - b2*v2[i-2])/b1;
326 setup.basis.getRecurrenceCoefficients(a1, b1, c1, d1);
329 a2[0] = 0.0; b2[0] = 1.0; c2[0] = 1.0; d2[0] = 1.0;
330 for (
int i=1; i<=
setup.p; i++) {
332 b2[i] =
std::sqrt((i*i)/((2.0*i+1.0)*(2.0*i-1.0)));
352 setup.basis.getRecurrenceCoefficients(a1, b1, c1, d1);
360 for (
int i=0; i<=
setup.p; i++) {
362 for (
int j=0;
j<nqp;
j++)
363 a2[i] += w[
j]*
x[
j]*v[
j][i]*v[
j][i];
364 a2[i] = a2[i]*c1[i]/n1[i];
376 setup.basis.getRecurrenceCoefficients(a1, b1, c1, d1);
381 for (
int i=1; i<=
setup.p; i++) {
382 b2[i] = d1[i]*(c1[i]/c1[i-1])*(n1[i]/n1[i-1]);
388 #ifdef HAVE_STOKHOS_DAKOTA
390 int n = static_cast<int>(std::ceil((2*
setup.p+1)/2.0));
393 setup.basis.getQuadPoints(2*
setup.p, x1, w1, v1);
397 webbur::legendre_compute(n, &x2[0], &w2[0]);
399 for (
int i=0; i<
n; i++) {
401 v2[i].resize(
setup.p+1);
402 setup.basis.evaluateBases(x2[i], v2[i]);
409 for (
int i=0; i<
n; i++) {
410 std::stringstream ss1, ss2;
411 ss1 <<
"v1[" << i <<
"]";
412 ss2 <<
"v2[" << i <<
"]";
420 #ifdef HAVE_STOKHOS_FORUQTK
422 int n = static_cast<int>(std::ceil((
setup.p+1)/2.0));
425 setup.basis.getQuadPoints(
setup.p, x1, w1, v1);
431 double endpts[2] = {0.0, 0.0};
435 GAUSSQ_F77(&kind, &n, &alpha, &beta, &kpts, endpts, &b[0], &x2[0], &w2[0]);
437 for (
int i=0; i<
n; i++) {
439 v2[i].resize(
setup.p+1);
440 setup.basis.evaluateBases(x2[i], v2[i]);
447 for (
int i=0; i<
n; i++) {
448 std::stringstream ss1, ss2;
449 ss1 <<
"v1[" << i <<
"]";
450 ss2 <<
"v2[" << i <<
"]";