48template <
typename ordinal_type,
typename value_type>
53 ordinal_type new_order,
bool use_pce_qp,
bool normalize) :
58 Teuchos::Array< Teuchos::RCP<const OneDOrthogPolyBasis<ordinal_type, value_type> > > new_coordinate_bases(new_dim);
61 for (ordinal_type k=0; k<new_dim; k++) {
62 new_coordinate_bases[k] = Teuchos::rcp(
63 new StieltjesPCEBasis<ordinal_type,value_type>(
64 new_order, Teuchos::rcp(&(pces[k]),
false), quad, use_pce_qp,
70 tensor_basis = Teuchos::rcp(
71 new CompletePolynomialBasis<ordinal_type,value_type>(new_coordinate_bases)
75 const Teuchos::Array<value_type>& weights = quad->getQuadWeights();
76 const Teuchos::Array< Teuchos::Array<value_type> >& points =
77 quad->getQuadPoints();
79 Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > > new_points =
80 Teuchos::rcp(
new Teuchos::Array< Teuchos::Array<value_type> >(nqp));
81 Teuchos::RCP< Teuchos::Array<value_type> > new_weights =
82 Teuchos::rcp(
new Teuchos::Array<value_type>(weights));
83 for (ordinal_type i=0; i<nqp; i++)
84 (*new_points)[i].resize(new_dim);
85 for (ordinal_type k=0; k<new_dim; k++) {
86 Teuchos::Array<value_type> st_points;
87 Teuchos::Array<value_type> st_weights;
88 Teuchos::Array< Teuchos::Array<value_type> > st_values;
89 new_coordinate_bases[k]->getQuadPoints(new_order+1, st_points, st_weights,
92 for (ordinal_type i=0; i<nqp; i++)
93 (*new_points)[i][k] = st_points[i];
95 gs_basis = Teuchos::rcp(
96 new GramSchmidtBasis<ordinal_type,value_type>(tensor_basis,
103 Teuchos::RCP<const OrthogPolyBasis<ordinal_type,value_type> > new_basis =
105 gs_quad = Teuchos::rcp(
106 new UserDefinedQuadrature<ordinal_type,value_type>(new_basis,
113template <
typename ordinal_type,
typename value_type>
114Teuchos::RCP<const Stokhos::OrthogPolyBasis<ordinal_type, value_type> >
121template <
typename ordinal_type,
typename value_type>
122Teuchos::RCP<Stokhos::Quadrature<ordinal_type, value_type> >
129template <
typename ordinal_type,
typename value_type>
137 ordinal_type dim = pces.size();
138 if (new_pces.size() != pces.size())
139 new_pces.resize(dim);
140 for (ordinal_type k=0; k<dim; k++) {
141 OrthogPolyApprox<ordinal_type,value_type> p_tensor(tensor_basis);
142 p_tensor.term(k, 0) = pces[k].mean();
143 p_tensor.term(k, 1) = 1.0;
144 new_pces[k].reset(gs_basis);
145 gs_basis->transformCoeffs(p_tensor.coeff(), new_pces[k].coeff());
Class to store coefficients of a projection onto an orthogonal polynomial basis.
Abstract base class for quadrature methods.
void computeReducedPCEs(const Teuchos::Array< OrthogPolyApprox< ordinal_type, value_type > > &pces, Teuchos::Array< OrthogPolyApprox< ordinal_type, value_type > > &new_pces)
Get reduced PCEs.
StieltjesGramSchmidtBuilder(const Teuchos::RCP< const Quadrature< ordinal_type, value_type > > &quad, const Teuchos::Array< OrthogPolyApprox< ordinal_type, value_type > > &pces, ordinal_type new_order, bool use_pce_qp, bool normalize)
Constructor.
Teuchos::RCP< const OrthogPolyBasis< ordinal_type, value_type > > getReducedBasis() const
Get reduced basis.
Teuchos::RCP< Quadrature< ordinal_type, value_type > > getReducedQuadrature() const
Get reduced quadrature.