48 const Teuchos::RCP<
const ProductBasis<ordinal_type,value_type> >& product_basis,
49 const index_set_type& index_set,
50 const value_type duplicate_tol,
51 const point_compare_type& point_compare)
53#ifdef STOKHOS_TEUCHOS_TIME_MONITOR
54 TEUCHOS_FUNC_TIME_MONITOR(
"Stokhos: Sparse Grid Generation");
57 typedef SmolyakBasis<ordinal_type,value_type> smolyak_basis_type;
58 smolyak_basis_type smolyak_basis(
59 product_basis->getCoordinateBases(), index_set, duplicate_tol);
61 typedef SmolyakPseudoSpectralOperator<ordinal_type,value_type,point_compare_type> smolyak_operator_type;
62 smolyak_operator_type smolyak_operator(smolyak_basis,
true,
true,
64 ordinal_type nqp = smolyak_operator.point_size();
65 ordinal_type npc = product_basis->size();
68 quad_points.resize(nqp);
69 quad_weights.resize(nqp);
70 quad_values.resize(nqp);
71 typedef typename smolyak_operator_type::const_set_iterator const_iterator;
73 for (const_iterator it = smolyak_operator.set_begin();
74 it != smolyak_operator.set_end(); ++it, ++i) {
75 quad_points[i] = it->first.getTerm();
76 quad_weights[i] = it->second.first;
77 quad_values[i].resize(npc);
78 product_basis->evaluateBases(quad_points[i], quad_values[i]);