44template <
typename coeff_type>
52template <
typename coeff_type>
56 const Teuchos::RCP<const Epetra_BlockMap>& theMap) :
62template <
typename coeff_type>
66 const Teuchos::RCP<const Epetra_BlockMap>& theMap,
67 const typename traits_type::cloner_type& cloner)
73template <
typename coeff_type>
81template <
typename coeff_type>
87template <
typename coeff_type>
99template <
typename coeff_type>
104 const Teuchos::RCP<const Epetra_BlockMap>& new_map,
105 const typename traits_type::cloner_type& cloner)
111template <
typename coeff_type>
120template <
typename coeff_type>
125 Teuchos::RCP< const Stokhos::ProductBasis<ordinal_type, value_type> >
126 product_basis = Teuchos::rcp_dynamic_cast< const Stokhos::ProductBasis<ordinal_type, value_type> >(basis_,
true);
129 theTerm[dimension] = order;
131 return *(this->coeff_[this->map_->LID(index)]);
134template <
typename coeff_type>
139 Teuchos::RCP< const Stokhos::ProductBasis<ordinal_type, value_type> >
140 product_basis = Teuchos::rcp_dynamic_cast< const Stokhos::ProductBasis<ordinal_type, value_type> >(basis_,
true);
143 theTerm[dimension] = order;
145 return *(this->coeff_[this->map_->LID(index)]);
148template <
typename coeff_type>
151evaluate(
const Teuchos::Array<value_type>& basis_values, coeff_type& result)
const
156 traits_type::update(result, basis_values[i], *(this->coeff_[i]));
159template <
typename coeff_type>
163 const Teuchos::Array<value_type>& basis_values,
164 const Teuchos::Array<value_type>& basis_norms,
165 const coeff_type& vec)
170 i_gid = this->map_->GID(i);
171 traits_type::update(*(this->coeff_[i]),
172 weight*basis_values[i_gid]/basis_norms[i_gid],
177template <
typename coeff_type>
180print(std::ostream& os)
const
183 os <<
"Stokhos::VectorOrthogPoly of global size "
184 << this->map_->NumGlobalElements() <<
", local size " << sz <<
" in basis "
185 <<
"\n" << basis_->getName() <<
":" << std::endl;
187 Teuchos::RCP< const Stokhos::ProductBasis<ordinal_type, value_type> >
188 product_basis = Teuchos::rcp_dynamic_cast< const Stokhos::ProductBasis<ordinal_type, value_type> >(basis_);
190 if (product_basis != Teuchos::null) {
193 os <<
"Term " << i <<
" (";
195 os << trm[
j] <<
", ";
196 os << trm[trm.
size()-1] <<
"):" << std::endl;
197 traits_type::print(os, *(this->coeff_[this->map_->LID(i)]));
202 os <<
"Term " << this->map_->GID(i) <<
":" << std::endl;
203 traits_type::print(os, *(this->coeff_[i]));
A multidimensional index.
Teuchos::Array< ordinal_type > index
index terms
ordinal_type size() const
Size.
Abstract base class for multivariate orthogonal polynomials.
A product (in the mathematical sense) container class whose coefficients are vectors,...
A container class storing an orthogonal polynomial whose coefficients are vectors,...
Teuchos::RCP< const Stokhos::OrthogPolyBasis< ordinal_type, value_type > > basis() const
Get basis.
VectorOrthogPoly & operator=(const VectorOrthogPoly &)
Assignment.
void sumIntoAllTerms(const value_type &weight, const Teuchos::Array< value_type > &basis_values, const Teuchos::Array< value_type > &basis_norms, const coeff_type &vec)
Evaluate polynomial at supplied basis values.
ProductContainer< coeff_type >::ordinal_type ordinal_type
Typename of ordinals.
virtual ~VectorOrthogPoly()
Destructor.
std::ostream & print(std::ostream &os) const
Print polynomial.
void reset(const Teuchos::RCP< const Stokhos::OrthogPolyBasis< ordinal_type, value_type > > &new_basis, const Teuchos::RCP< const Epetra_BlockMap > &new_map, const typename traits_type::cloner_type &cloner)
Reset to a new basis.
ProductContainer< coeff_type >::value_type value_type
Typename of values.
Teuchos::RCP< const Stokhos::OrthogPolyBasis< ordinal_type, value_type > > basis_
Basis.
VectorOrthogPoly()
Constructor with no basis.
void evaluate(const Teuchos::Array< value_type > &basis_values, coeff_type &result) const
Evaluate polynomial at supplied basis values.
coeff_type & term(ordinal_type dimension, ordinal_type order)
Get term for dimension dimension and order order.