Stokhos Development
Stokhos::RecurrenceBasis< ordinal_type, value_type > Class Template Reference

Implementation of OneDOrthogPolyBasis based on the general three-term recurrence relationship:

for where , , and . More...

#include <Stokhos_RecurrenceBasis.hpp>

Inheritance diagram for Stokhos::RecurrenceBasis< ordinal_type, value_type >:
[legend]
Collaboration diagram for Stokhos::RecurrenceBasis< ordinal_type, value_type >:
[legend]

List of all members.

## Public Member Functions

virtual ~RecurrenceBasis ()
Destructor.
virtual void getRecurrenceCoefficients (Teuchos::Array< value_type > &alpha, Teuchos::Array< value_type > &beta, Teuchos::Array< value_type > &delta, Teuchos::Array< value_type > &gamma) const
Return recurrence coefficients defined by above formula.
virtual void evaluateBasesAndDerivatives (const value_type &point, Teuchos::Array< value_type > &vals, Teuchos::Array< value_type > &derivs) const
Evaluate basis polynomials and their derivatives at given point point.
Set tolerance for zero in quad point generation.
Implementation of Stokhos::OneDOrthogPolyBasis methods
virtual ordinal_type order () const
Return order of basis (largest monomial degree ).
virtual ordinal_type size () const
virtual const Teuchos::Array
< value_type > &
norm_squared () const
Return array storing norm-squared of each basis polynomial.
virtual const value_type & norm_squared (ordinal_type i) const
Return norm squared of basis polynomial i.
virtual Teuchos::RCP
< Stokhos::Dense3Tensor
< ordinal_type, value_type > >
computeTripleProductTensor () const
Compute triple product tensor.
virtual Teuchos::RCP
< Stokhos::Sparse3Tensor
< ordinal_type, value_type > >
computeSparseTripleProductTensor (ordinal_type order) const
virtual Teuchos::RCP
< Teuchos::SerialDenseMatrix
< ordinal_type, value_type > >
computeDerivDoubleProductTensor () const
Compute derivative double product tensor.
virtual void evaluateBases (const value_type &point, Teuchos::Array< value_type > &basis_pts) const
Evaluate each basis polynomial at given point point.
virtual value_type evaluate (const value_type &point, ordinal_type order) const
Evaluate basis polynomial given by order order at given point point.
virtual void print (std::ostream &os) const
Print basis to stream os.
virtual const std::string & getName () const
Return string name of basis.
virtual void getQuadPoints (ordinal_type quad_order, Teuchos::Array< value_type > &points, Teuchos::Array< value_type > &weights, Teuchos::Array< Teuchos::Array< value_type > > &values) const
Compute quadrature points, weights, and values of basis polynomials at given set of points points.
virtual int getSparseGridRule () const
Get sparse grid rule number as defined by Dakota's webbur package.
virtual void setSparseGridRule (int rule)
Set sparse grid rule.
virtual int getSparseGridGrowthRule () const
Get sparse grid rule growth rule as defined by Dakota's webbur package.
virtual void setSparseGridGrowthRule (int rule)
Set sparse grid growth rule.

## Protected Member Functions

RecurrenceBasis (const std::string &name, ordinal_type p, bool normalize)
Constructor to be called by derived classes.
RecurrenceBasis (ordinal_type p, const RecurrenceBasis &basis)
Copy constructor with specified order.
virtual void computeRecurrenceCoefficients (ordinal_type n, Teuchos::Array< value_type > &alpha, Teuchos::Array< value_type > &beta, Teuchos::Array< value_type > &delta) const =0
Compute recurrence coefficients.
void setup ()
Setup basis after computing recurrence coefficients.

## Protected Attributes

std::string name
Name of basis.
ordinal_type p
Order of basis.
bool normalize
Normalize basis.
Tolerance for quadrature points near zero.
int sparse_grid_rule
Sparse grid rule (as determined by Pecos)
int sparse_grid_growth_rule
Sparse grid growth rule (as determined by Pecos)
Teuchos::Array< value_type > alpha
Recurrence coefficients.
Teuchos::Array< value_type > beta
Recurrence coefficients.
Teuchos::Array< value_type > delta
Recurrence coefficients.
Teuchos::Array< value_type > gamma
Recurrence coefficients.
Teuchos::Array< value_type > norms
Norms.

## Detailed Description

### template<typename ordinal_type, typename value_type> class Stokhos::RecurrenceBasis< ordinal_type, value_type >

Implementation of OneDOrthogPolyBasis based on the general three-term recurrence relationship:

for where , , and .

Derived classes implement the recurrence relationship by implementing computeRecurrenceCoefficients(). If normalize = true in the constructor, then , otherwise . Note that a three term recurrence can always be defined with in which case the polynomials are monic. However typical normalizations of some polynomial families (see Stokhos::LegendreBasis) require the extra terms.

## Constructor & Destructor Documentation

template<typename ordinal_type , typename value_type >
 Stokhos::RecurrenceBasis< ordinal_type, value_type >::RecurrenceBasis ( const std::string & name, ordinal_type p, bool normalize )  [protected]

Constructor to be called by derived classes.

name is the name for the basis that will be displayed when printing the basis, p is the order of the basis, normalize indicates whether the basis polynomials should have unit-norm, and quad_zero_tol is used to replace any quadrature point within this tolerance with zero (which can help with duplicate removal in sparse grid calculations).

## Member Function Documentation

template<typename ordinal_type , typename value_type >
 Teuchos::RCP< Teuchos::SerialDenseMatrix< ordinal_type, value_type > > Stokhos::RecurrenceBasis< ordinal_type, value_type >::computeDerivDoubleProductTensor ( ) const [virtual]

Compute derivative double product tensor.

The entry of the tensor is given by where represents basis polynomial and where is the order of the basis.

This method is implemented by computing using Gaussian quadrature.

template<typename ordinal_type , typename value_type >
 virtual void Stokhos::RecurrenceBasis< ordinal_type, value_type >::computeRecurrenceCoefficients ( ordinal_type n, Teuchos::Array< value_type > & alpha, Teuchos::Array< value_type > & beta, Teuchos::Array< value_type > & delta ) const [protected, pure virtual]

Compute recurrence coefficients.

Derived classes should implement this method to compute their recurrence coefficients. n is the number of coefficients to compute. Derived classes should call this method in their constructor, followed be setup() to fully setup the basis. The method is also called by getQuadPoints() if a quadrature order greater than twice the polynomial order is requested.

template<typename ordinal_type , typename value_type >
 Teuchos::RCP< Stokhos::Dense3Tensor< ordinal_type, value_type > > Stokhos::RecurrenceBasis< ordinal_type, value_type >::computeTripleProductTensor ( ) const [virtual]

Compute triple product tensor.

The entry of the tensor is given by where represents basis polynomial and where is size()-1 and where is the supplied order.

This method is implemented by computing using Gaussian quadrature.

template<typename ordinal_type , typename value_type >
 void Stokhos::RecurrenceBasis< ordinal_type, value_type >::evaluateBases ( const value_type & point, Teuchos::Array< value_type > & basis_pts ) const [virtual]

Evaluate each basis polynomial at given point point.

Size of returned array is given by size(), and coefficients are ordered from order 0 up to order order().

template<typename ordinal_type , typename value_type >
 void Stokhos::RecurrenceBasis< ordinal_type, value_type >::getQuadPoints ( ordinal_type quad_order, Teuchos::Array< value_type > & points, Teuchos::Array< value_type > & weights, Teuchos::Array< Teuchos::Array< value_type > > & values ) const [virtual]

Compute quadrature points, weights, and values of basis polynomials at given set of points points.

quad_order specifies the order to which the quadrature should be accurate, not the number of quadrature points. The number of points is given by (quad_order + 1) / 2. Note however the passed arrays do NOT need to be sized correctly on input as they will be resized appropriately.

The quadrature points and weights are computed from the three-term recurrence by solving a tri-diagional symmetric eigenvalue problem (see Gene H. Golub and John H. Welsch, "Calculation of Gauss Quadrature Rules", Mathematics of Computation, Vol. 23, No. 106 (Apr., 1969), pp. 221-230).

template<typename ordinal_type , typename value_type >
 virtual int Stokhos::RecurrenceBasis< ordinal_type, value_type >::getSparseGridGrowthRule ( ) const [inline, virtual]

Get sparse grid rule growth rule as defined by Dakota's webbur package.

This method is needed for building Smolyak sparse grids out of this basis. Returns growth rule appropriate for Gaussian quadrature points.

template<typename ordinal_type , typename value_type >
 virtual int Stokhos::RecurrenceBasis< ordinal_type, value_type >::getSparseGridRule ( ) const [inline, virtual]

Get sparse grid rule number as defined by Dakota's webbur package.

This method is needed for building Smolyak sparse grids out of this basis. A rule number of 10 is not defined by the webbur package, and this rule number is used internally by Stokhos::SparseGridQuadrature to pass an arbitrary one-dimensional basis to that package.

template<typename ordinal_type , typename value_type >
 const Teuchos::Array< value_type > & Stokhos::RecurrenceBasis< ordinal_type, value_type >::norm_squared ( ) const [virtual]

Return array storing norm-squared of each basis polynomial.

Entry of returned array is given by for where is given by order().

template<typename ordinal_type , typename value_type >
 void Stokhos::RecurrenceBasis< ordinal_type, value_type >::setup ( )  [protected]

Setup basis after computing recurrence coefficients.

Derived classes should call this method after computing their recurrence coefficients in their constructor to finish setting up the basis.

The documentation for this class was generated from the following files:
• Stokhos_RecurrenceBasis.hpp
• Stokhos_RecurrenceBasisImp.hpp