Stokhos
Development
|
An operator for building pseudo-spectral coefficients using tensor-product quadrature. More...
#include <Stokhos_TensorProductPseudoSpectralOperator.hpp>
Public Types | |
typedef ordinal_t | ordinal_type |
typedef value_t | value_type |
typedef PseudoSpectralOperator < ordinal_type, value_type, point_compare_type > | base_type |
typedef base_type::point_type | point_type |
typedef base_type::point_set_type | point_set_type |
typedef base_type::point_map_type | point_map_type |
typedef base_type::iterator | iterator |
typedef base_type::const_iterator | const_iterator |
typedef base_type::set_iterator | set_iterator |
typedef base_type::const_set_iterator | const_set_iterator |
typedef MultiIndex< ordinal_type > | multiindex_type |
Public Types inherited from Stokhos::PseudoSpectralOperator< ordinal_t, value_t, point_compare_type > | |
typedef ordinal_t | ordinal_type |
typedef value_t | value_type |
typedef TensorProductElement < ordinal_type, value_type > | point_type |
typedef std::map< point_type, std::pair< value_type, ordinal_type > , point_compare_type > | point_set_type |
typedef Teuchos::Array < point_type > | point_map_type |
typedef point_map_type::iterator | iterator |
typedef point_map_type::const_iterator | const_iterator |
typedef point_set_type::iterator | set_iterator |
typedef point_set_type::const_iterator | const_set_iterator |
Public Member Functions | |
TensorProductPseudoSpectralOperator (const ProductBasis< ordinal_type, value_type > &product_basis, bool use_pst_=false, multiindex_type multiindex=multiindex_type(), const point_compare_type &point_compare=point_compare_type()) | |
Constructor. | |
virtual | ~TensorProductPseudoSpectralOperator () |
Destructor. | |
ordinal_type | point_size () const |
Number of points. | |
ordinal_type | coeff_size () const |
Number of coefficients. | |
iterator | begin () |
Iterator to begining of point set. | |
iterator | end () |
Iterator to end of point set. | |
const_iterator | begin () const |
Iterator to begining of point set. | |
const_iterator | end () const |
Iterator to end of point set. | |
set_iterator | set_begin () |
Iterator to begining of point set. | |
set_iterator | set_end () |
Iterator to end of point set. | |
const_set_iterator | set_begin () const |
Iterator to begining of point set. | |
const_set_iterator | set_end () const |
Iterator to end of point set. | |
ordinal_type | index (const point_type &point) const |
Get point index for given point. | |
const point_type & | point (ordinal_type n) const |
Get point for given index. | |
virtual void | transformQP2PCE (const value_type &alpha, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &input, Teuchos::SerialDenseMatrix< ordinal_type, value_type > &result, const value_type &beta, bool trans=false) const |
Transform values at quadrature points to PCE coefficients. More... | |
virtual void | transformPCE2QP (const value_type &alpha, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &input, Teuchos::SerialDenseMatrix< ordinal_type, value_type > &result, const value_type &beta, bool trans=false) const |
Transform PCE coefficients to quadrature values. More... | |
Public Member Functions inherited from Stokhos::PseudoSpectralOperator< ordinal_t, value_t, point_compare_type > | |
PseudoSpectralOperator () | |
Constructor. | |
virtual | ~PseudoSpectralOperator () |
Destructor. | |
Protected Member Functions | |
void | apply_direct (const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const value_type &alpha, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &input, Teuchos::SerialDenseMatrix< ordinal_type, value_type > &result, const value_type &beta, bool trans) const |
Apply transformation operator using direct method. | |
void | apply_pst (const Teuchos::Array< Teuchos::SerialDenseMatrix< ordinal_type, value_type > > &Ak, const value_type &alpha, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &input, Teuchos::SerialDenseMatrix< ordinal_type, value_type > &result, const value_type &beta, bool trans, bool reorder_input, bool reorder_result) const |
Apply tranformation operator using PST method. More... | |
Protected Attributes | |
bool | use_pst |
Use partial-summation-transformation. | |
ordinal_type | coeff_sz |
Number of coefficients. | |
ordinal_type | dim |
Dimension. | |
point_set_type | points |
Quadrature points. | |
point_map_type | point_map |
Map index to point term. | |
bool | reorder |
Do we need to reorder coefficients for PST. | |
Teuchos::Array< ordinal_type > | perm |
Permutation array when reordering for PST. | |
Teuchos::SerialDenseMatrix < ordinal_type, value_type > | qp2pce |
Matrix mapping points to coefficients. | |
Teuchos::SerialDenseMatrix < ordinal_type, value_type > | pce2qp |
Matrix mapping coefficients to points. | |
Teuchos::Array < Teuchos::SerialDenseMatrix < ordinal_type, value_type > > | qp2pce_k |
Matrix mapping points to coefficients for each dimension for PST. | |
Teuchos::Array < Teuchos::SerialDenseMatrix < ordinal_type, value_type > > | pce2qp_k |
Matrix mapping coefficients to points for each dimension for PST. | |
Teuchos::BLAS< ordinal_type, value_type > | blas |
BLAS wrappers. | |
An operator for building pseudo-spectral coefficients using tensor-product quadrature.
|
inlineprotected |
Apply tranformation operator using PST method.
For k=1,...,d, let A_k be the m_k-by-n_k quadrature operator for dimension k and A = A_1 ... A_d be m--n where m = m_1...m_d and n = n_1...n_d. For any two matrices B and C and vector x, (B C)x = vec( C*X*B^T ) = vec( C*(B*X^T)^T ) where x = vec(X), and the vec() operator makes a vector out of a matrix by stacking columns. Applying this formula recursively to A yields the simple algorithm for computing y = A*x (x is n-by-1 and y is m-by-1): X = x; for k=1:d n = n / n_k; X = reshape(X, n, n_k); X = A_k*X'; n = n * m_k; end y = reshape(X, m, 1);
When x has p columns, it is somehwat more complicated because the standard transpose above isn't correct. Instead the transpose needs to be applied to each p block in X.
The strategy here for dealing with transposed input and result is to transpose them when copying to/from the temporary buffers used in the algorithm.
References Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::dim, and Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::perm.
Referenced by Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::transformPCE2QP(), and Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::transformQP2PCE().
|
inlinevirtual |
Transform PCE coefficients to quadrature values.
input
is a vector storing polynomial chaos coefficients and result
will contain the resulting values at the quadrature points. input
and result
can have multiple columns for vector-valued functions and set trans
to true if these (multi-) vectors are layed out in a transposed fashion.
Implements Stokhos::PseudoSpectralOperator< ordinal_t, value_t, point_compare_type >.
References Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::apply_direct(), Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::apply_pst(), Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::pce2qp, Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::pce2qp_k, Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::reorder, and Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::use_pst.
|
inlinevirtual |
Transform values at quadrature points to PCE coefficients.
input
is a vector storing values of a function at the quadrature points, and result
will contain the resulting polynomial chaos coefficients. input
and result
can have multiple columns for vector-valued functions and set trans
to true if these (multi-) vectors are layed out in a transposed fashion.
Implements Stokhos::PseudoSpectralOperator< ordinal_t, value_t, point_compare_type >.
References Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::apply_direct(), Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::apply_pst(), Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::qp2pce, Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::qp2pce_k, Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::reorder, and Stokhos::TensorProductPseudoSpectralOperator< ordinal_t, value_t, point_compare_type >::use_pst.