Stokhos Development
Public Member Functions | Protected Member Functions | Protected Attributes
Stokhos::PecosOneDOrthogPolyBasis< ordinal_type, value_type > Class Template Reference

Implementation of OneDOrthogPolyBasis via Pecos. More...

#include <Stokhos_PecosOneDOrthogPolyBasis.hpp>

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

List of all members.

Public Member Functions

 PecosOneDOrthogPolyBasis (const Teuchos::RCP< Pecos::OrthogonalPolynomial > &pecosPoly, const std::string &name, ordinal_type p)
 Constructor.
virtual ~PecosOneDOrthogPolyBasis ()
 Destructor.
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.

Protected Member Functions

 PecosOneDOrthogPolyBasis (ordinal_type p, const PecosOneDOrthogPolyBasis &basis)
 Copy constructor with specified order.

Protected Attributes

Teuchos::RCP
< Pecos::OrthogonalPolynomial > 
pecosPoly
 Pointer to Pecos orthgonal polynomial object.
std::string name
 Name of basis.
ordinal_type p
 Order of basis.
LevelToOrderFnPtr sparse_grid_growth_rule
 Sparse grid growth rule (as determined by Pecos)
Teuchos::Array< value_type > norms
 Norms.

Implementation of Stokhos::OneDOrthogPolyBasis methods

typedef OneDOrthogPolyBasis
< ordinal_type, value_type >
::LevelToOrderFnPtr 
LevelToOrderFnPtr
 Function pointer needed for level_to_order mappings.
virtual ordinal_type order () const
 Return order of basis (largest monomial degree $P$).
virtual ordinal_type size () const
 Return total size of basis (given by order() + 1).
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 ordinal_type quadDegreeOfExactness (ordinal_type n) const
virtual ordinal_type coefficientGrowth (ordinal_type n) const
 Evaluate coefficient growth rule for Smolyak-type bases.
virtual ordinal_type pointGrowth (ordinal_type n) const
 Evaluate point growth rule for Smolyak-type bases.
virtual LevelToOrderFnPtr getSparseGridGrowthRule () const
 Get sparse grid level_to_order mapping function.
virtual void setSparseGridGrowthRule (LevelToOrderFnPtr ptr)
 Set sparse grid rule.
virtual Teuchos::RCP
< OneDOrthogPolyBasis
< ordinal_type, value_type > > 
cloneWithOrder (ordinal_type p) const
 Clone this object with the option of building a higher order basis.

Detailed Description

template<typename ordinal_type, typename value_type>
class Stokhos::PecosOneDOrthogPolyBasis< ordinal_type, value_type >

Implementation of OneDOrthogPolyBasis via Pecos.


Constructor & Destructor Documentation

template<typename ordinal_type , typename value_type >
Stokhos::PecosOneDOrthogPolyBasis< ordinal_type, value_type >::PecosOneDOrthogPolyBasis ( const Teuchos::RCP< Pecos::OrthogonalPolynomial > &  pecosPoly,
const std::string &  name,
ordinal_type  p 
)

Constructor.

name is the name for the basis that will be displayed when printing the basis and p is the order of the basis.


Member Function Documentation

template<typename ordinal_type , typename value_type >
Teuchos::RCP< Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type > > Stokhos::PecosOneDOrthogPolyBasis< ordinal_type, value_type >::cloneWithOrder ( ordinal_type  p) const [virtual]

Clone this object with the option of building a higher order basis.

This method is following the Prototype pattern (see Design Pattern's textbook). The slight variation is that it allows the order of the polynomial to be modified, otherwise an exact copy is formed. The use case for this is creating basis functions for column indices in a spatially varying adaptive refinement context.

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

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

Compute derivative double product tensor.

The $(i,j)$ entry of the tensor $B_{ij}$ is given by $B_{ij} = \langle\psi_i'\psi_j\rangle$ where $\psi_l$ represents basis polynomial $l$ and $i,j=0,\dots,P$ where $P$ is the order of the basis.

This method is implemented by computing $B_{ij}$ using Gaussian quadrature.

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

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

Compute triple product tensor.

The $(i,j,k)$ entry of the tensor $C_{ijk}$ is given by $C_{ijk} = \langle\Psi_i\Psi_j\Psi_k\rangle$ where $\Psi_l$ represents basis polynomial $l$ and $i,j=0,\dots,P$ where $P$ is size()-1 and $k=0,\dots,p$ where $p$ is the supplied order.

This method is implemented by computing $C_{ijk}$ using Gaussian quadrature.

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

template<typename ordinal_type , typename value_type >
void Stokhos::PecosOneDOrthogPolyBasis< 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().

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

template<typename ordinal_type , typename value_type >
void Stokhos::PecosOneDOrthogPolyBasis< 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).

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

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

Get sparse grid level_to_order mapping function.

Predefined functions are: webbur::level_to_order_linear_wn Symmetric Gaussian linear growth webbur::level_to_order_linear_nn Asymmetric Gaussian linear growth webbur::level_to_order_exp_cc Clenshaw-Curtis exponential growth webbur::level_to_order_exp_gp Gauss-Patterson exponential growth webbur::level_to_order_exp_hgk Genz-Keister exponential growth webbur::level_to_order_exp_f2 Fejer-2 exponential growth

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

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

Return array storing norm-squared of each basis polynomial.

Entry $l$ of returned array is given by $\langle\psi_l^2\rangle$ for $l=0,\dots,P$ where $P$ is given by order().

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

template<typename ordinal_type , typename value_type >
ordinal_type Stokhos::PecosOneDOrthogPolyBasis< ordinal_type, value_type >::quadDegreeOfExactness ( ordinal_type  n) const [virtual]

Return polynomial degree of exactness for a given number of quadrature points.

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator