OrthogPolyApproximation Class Reference

approximation). More...

Inheritance diagram for OrthogPolyApproximation:

BasisPolyApproximation Approximation List of all members.

Public Member Functions

 OrthogPolyApproximation ()
 default constructor
 ~OrthogPolyApproximation ()
 destructor
void expansion_terms (const int &exp_terms)
 set numExpansionTerms
const int & expansion_terms () const
 get numExpansionTerms
void distributions (const Pecos::ShortArray &u_types, const Pecos::IntArray &int_rules, const Model &model)
 invoke distribution_types() and, if needed, distribution_parameters()
bool distribution_types (const Pecos::ShortArray &u_types, const Pecos::IntArray &int_rules)
 allocate polynomialBasis and basisTypes based on u_types
void distribution_basis ()
 allocate polynomialBasis based on basisTypes and integrationRules
void distribution_parameters (const Pecos::ShortArray &u_types, const Model &model)
 pass distribution parameters from model to polynomialBasis
const Array< Pecos::BasisPolynomial > & polynomial_basis () const
 get polynomialBasis
void polynomial_basis (const Array< Pecos::BasisPolynomial > &poly_basis)
 set polynomialBasis
void coefficients_norms_flag (bool flag)
 set Pecos::NumericGenOrthogPolynomial::coeffsNormsFlag
void resolve_inputs ()
 (numExpansionTerms and approxOrder) based on user input
void allocate_arrays ()
 initialize polynomialBasis, multiIndex, et al.
size_t sparse_grid_terms ()
 return the number of expansion terms for a sparse grid expansion

Static Public Member Functions

static void distributions (const Pecos::ShortArray &u_types, const Pecos::IntArray &int_rules, const Model &model, Array< Pecos::BasisPolynomial > &poly_basis, ShortArray &basis_types, ShortArray &gauss_modes)
 invoke distribution_types() and, if needed, distribution_parameters()
static bool distribution_types (const Pecos::ShortArray &u_types, const Pecos::IntArray &int_rules, ShortArray &basis_types, ShortArray &gauss_modes)
 allocate poly_basis and basis_types based on u_types
static void distribution_basis (const ShortArray &basis_types, const ShortArray &gauss_modes, Array< Pecos::BasisPolynomial > &poly_basis)
 allocate poly_basis based on basis_types and gauss_modes
static void distribution_parameters (const Pecos::ShortArray &u_types, const Model &model, Array< Pecos::BasisPolynomial > &poly_basis)
 pass distribution parameters from model to poly_basis

Protected Member Functions

int min_coefficients () const
 build the derived class approximation type in numVars dimensions
void find_coefficients ()
 orthogonal polynomials
void print_coefficients (std::ostream &s) const
 print the coefficients for the expansion
void compute_global_sensitivity ()
 Performs global sensitivity analysis using Sobol' Indices.
const Real & get_value (const RealVector &x)
 retrieve the response PCE value for a given parameter vector
const RealVector & get_gradient (const RealVector &x)
 and default DVV
const RealVector & get_gradient (const RealVector &x, const UIntArray &dvv)
 and given DVV
const Real & get_mean ()
 return the mean of the PCE, treating all variables as random
const Real & get_mean (const RealVector &x)
 treating a subset of the variables as random
RealVector get_mean_gradient ()
 vector, treating all variables as random
const RealVector & get_mean_gradient (const RealVector &x, const UIntArray &dvv)
 and given DVV, treating a subset of the variables as random
const Real & get_variance ()
 return the variance of the PCE, treating all variables as random
const Real & get_variance (const RealVector &x)
 treating a subset of the variables as random
const RealVector & get_variance_gradient ()
 vector, treating all variables as random
const RealVector & get_variance_gradient (const RealVector &x, const UIntArray &dvv)
 vector and given DVV, treating a subset of the variables as random
const Real & get_covariance (const RealVector &exp_coeffs_2)
 return the covariance of the PCE, treating all variables as random
const Real & norm_squared (size_t expansion_index)
 treating all variables as random
const Real & norm_squared_random (size_t expansion_index)
 treating a subset of the variables as random

Private Member Functions

void sparse_grid_multi_index (UShort2DArray &multi_index)
 initialize multiIndex using a sparse grid expansion
void quadrature_order_to_integrand_order (const UShortArray &quad_order, UShortArray &int_order)
 convert quadrature orders to integrand orders
void integrand_order_to_expansion_order (const UShortArray &int_order, UShortArray &exp_order)
 convert integrand orders to expansion orders
void sparse_grid_level_to_expansion_order (unsigned short ssg_level, UShortArray &exp_order)
 convert sparse grid levels to expansion orders
void append_unique (const UShort2DArray &tp_multi_index, UShort2DArray &multi_index)
 appear in multi_index
void update_pareto (const UShort2DArray &new_pareto, UShort2DArray &total_pareto)
 update the total Pareto set with new Pareto-optimal polynomial indices
bool assess_dominance (const UShort2DArray &new_pareto, const UShort2DArray &total_pareto)
 assess whether new_pareto is dominated by total_pareto
void assess_dominance (const UShortArray &new_order, const UShortArray &existing_order, bool &new_dominated, bool &existing_dominated)
 against an incumbent polynomial index set
Real multivariate_polynomial (const RealVector &x, size_t term)
 evaluated at a particular parameter set
void integration ()
 (expCoeffsSolnApproach is QUADRATURE or SPARSE_GRID)
void regression ()
 (expCoeffsSolnApproach is REGRESSION)
void expectation ()
 (expCoeffsSolnApproach is SAMPLING)
void gradient_check ()
 cross-validates alternate gradient expressions

Private Attributes

int numExpansionTerms
 number of terms in Polynomial Chaos expansion (length of chaosCoeffs)
ShortArray basisTypes
 or NUMERICALLY_GENERATED
ShortArray gaussModes
 FEJER2/FEJER2_SLOW.
Array< Pecos::BasisPolynomial > polynomialBasis
 constructing the multivariate orthogonal/interpolation polynomials
UShort2DArray multiIndex
 of the multivariate orthogonal polynomials
Real multiPolyNormSq
 norm-squared of one of the multivariate polynomial basis functions
short quadratureExpansion
 TENSOR_PRODUCT expansion.
short sparseGridExpansion
 HEURISTIC_TOTAL_ORDER, or TENSOR_PRODUCT_SUM expansion.

Detailed Description

approximation).

The OrthogPolyApproximation class provides a global approximation based on orthogonal polynomials. It is used primarily for polynomial chaos expansions (for stochastic finite element approaches to uncertainty quantification).


Member Function Documentation

size_t sparse_grid_terms (  ) 

return the number of expansion terms for a sparse grid expansion

Return the number of terms in a sparse-grid expansion.

const Real & get_mean (  )  [protected, virtual]

return the mean of the PCE, treating all variables as random

In this case, all expansion variables are random variables and the mean of the expansion is simply the first chaos coefficient.

Implements BasisPolyApproximation.

const Real & get_mean ( const RealVector &  x  )  [protected, virtual]

treating a subset of the variables as random

In this case, a subset of the expansion variables are random variables and the mean of the expansion involves evaluating the expectation over this subset.

Implements BasisPolyApproximation.

RealVector get_mean_gradient (  )  [protected, virtual]

vector, treating all variables as random

In this function, all expansion variables are random variables and any design/state variables are omitted from the expansion. In this case, the derivative of the expectation is the expectation of the derivative. The mixed derivative case (some design variables are inserted and some are augmented) requires no special treatment.

Implements BasisPolyApproximation.

const RealVector & get_mean_gradient ( const RealVector &  x,
const UIntArray dvv 
) [protected, virtual]

and given DVV, treating a subset of the variables as random

In this function, a subset of the expansion variables are random variables and any augmented design/state variables (i.e., not inserted as random variable distribution parameters) are included in the expansion. In this case, the mean of the expansion is the expectation over the random subset and the derivative of the mean is the derivative of the remaining expansion over the non-random subset. This function must handle the mixed case, where some design/state variables are augmented (and are part of the expansion: derivatives are evaluated as described above) and some are inserted (derivatives are obtained from expansionCoeffGrads).

Implements BasisPolyApproximation.

const Real & get_variance (  )  [protected, virtual]

return the variance of the PCE, treating all variables as random

In this case, all expansion variables are random variables and the variance of the expansion is the sum over all but the first term of the coefficients squared times the polynomial norms squared.

Implements BasisPolyApproximation.

const Real & get_variance ( const RealVector &  x  )  [protected, virtual]

treating a subset of the variables as random

In this case, a subset of the expansion variables are random variables and the variance of the expansion involves summations over this subset.

Implements BasisPolyApproximation.

const RealVector & get_variance_gradient (  )  [protected, virtual]

vector, treating all variables as random

In this function, all expansion variables are random variables and any design/state variables are omitted from the expansion. The mixed derivative case (some design variables are inserted and some are augmented) requires no special treatment.

Implements BasisPolyApproximation.

const RealVector & get_variance_gradient ( const RealVector &  x,
const UIntArray dvv 
) [protected, virtual]

vector and given DVV, treating a subset of the variables as random

In this function, a subset of the expansion variables are random variables and any augmented design/state variables (i.e., not inserted as random variable distribution parameters) are included in the expansion. This function must handle the mixed case, where some design/state variables are augmented (and are part of the expansion) and some are inserted (derivatives are obtained from expansionCoeffGrads).

Implements BasisPolyApproximation.

void integration (  )  [private]

(expCoeffsSolnApproach is QUADRATURE or SPARSE_GRID)

The coefficients of the PCE for the response are calculated using a Galerkin projection of the response against each multivariate orthogonal polynomial basis fn using the inner product ratio <f,Psi>/<Psi^2>, where inner product <a,b> is the n-dimensional integral of a*b*weighting over the support range of the n-dimensional (composite) weighting function. 1-D quadrature rules are defined for specific 1-D weighting functions and support ranges and approximate the integral of f*weighting as the Sum_i of w_i f_i. To extend this to n-dimensions, a tensor product quadrature rule or Smolyak sparse grid rule is applied using the product of 1-D weightings applied to the n-dimensional stencil of points. It is not necessary to approximate the integral for the denominator numerically, since this is available analytically.

void regression (  )  [private]

(expCoeffsSolnApproach is REGRESSION)

In this case, regression is used in place of Galerkin projection. That is, instead of calculating the PCE coefficients using inner product ratios, linear least squares is used to estimate the PCE coefficients which best match a set of response samples. This approach is also known as stochastic response surfaces. The least squares estimation is performed using DGELSS (SVD) or DGGLSE (equality-constrained) from LAPACK, based on the presence of an anchorPoint.

void expectation (  )  [private]

(expCoeffsSolnApproach is SAMPLING)

The coefficients of the PCE for the response are calculated using a Galerkin projection of the response against each multivariate orthogonal polynomial basis fn using the inner product ratio <f,Psi>/<Psi^2>, where inner product <a,b> is the n-dimensional integral of a*b*weighting over the support range of the n-dimensional (composite) weighting function. When interpreting the weighting function as a probability density function, <a,b> = expected value of a*b, which can be evaluated by sampling from the probability density function and computing the mean statistic. It is not necessary to compute the mean statistic for the denominator, since this is available analytically.

void gradient_check (  )  [private]

cross-validates alternate gradient expressions

This test works in combination with DEBUG settings in (Legendre,Laguerre,Jacobi,GenLaguerre)OrthogPolynomial::get_gradient().


The documentation for this class was generated from the following files:
Generated on Mon Jan 25 01:22:38 2010 for DAKOTA by  doxygen 1.5.1