Inheritance diagram for OrthogPolyApproximation:

Public Member Functions | |
| OrthogPolyApproximation () | |
| default constructor | |
| OrthogPolyApproximation (const ProblemDescDB &problem_db, const size_t &num_acv) | |
| standard constructor | |
| ~OrthogPolyApproximation () | |
| destructor | |
| void | expansion_terms (const int &exp_terms) |
| set numExpansionTerms | |
| const int & | expansion_terms () const |
| get numExpansionTerms | |
| void | basis_types (const ShortArray &basis) |
| set basisTypes | |
| const ShortArray & | basis_types () const |
| get basisTypes | |
| void | jacobi_alphas (const RealDenseVector &alphas) |
| pass alpha_stat parameters to JACOBI polynomial bases | |
| void | jacobi_betas (const RealDenseVector &betas) |
| pass beta_stat parameters to JACOBI polynomial bases | |
| void | generalized_laguerre_alphas (const RealDenseVector &alphas) |
| pass alpha_stat parameters to GENERALIZED_LAGUERRE polynomial bases | |
| void | resolve_inputs () |
| (numExpansionTerms and approxOrder) based on user input | |
| void | allocate_arrays () |
| initialize polynomialBasis, multiIndex, et al. | |
Protected Member Functions | |
| int | min_coefficients () const |
| build the derived class approximation type in numVars dimensions | |
| void | find_coefficients () |
| orthogonal polynomials | |
| void | print_coefficients (ostream &s) const |
| print the coefficients for the expansion | |
| const Real & | get_value (const RealVector &x) |
| retrieve the response PCE value for a given parameter vector | |
| const RealBaseVector & | get_gradient (const RealVector &x) |
| and default DVV | |
| const RealBaseVector & | 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 | |
| const RealBaseVector & | get_mean_gradient () |
| vector, treating all variables as random | |
| const RealBaseVector & | 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 RealBaseVector & | get_variance_gradient () |
| vector, treating all variables as random | |
| const RealBaseVector & | get_variance_gradient (const RealVector &x, const UIntArray &dvv) |
| vector and given DVV, treating a subset of the 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 | |
| const RealVector & | get_multivariate_polynomials (const RealVector &xi) |
| 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 |
| HERMITE, LEGENDRE, LAGUERRE, JACOBI, or GENERALIZED_LAGUERRE. | |
| Array< BasisPolynomial > | polynomialBasis |
| constructing the multivariate orthogonal/interpolation polynomials | |
| UShort2DArray | multiIndex |
| of the multivariate orthogonal polynomials | |
| RealVector | wienerAskeyChaos |
| a particular xi (returned by get_multivariate_polynomials()) | |
| Real | multiPolyNormSq |
| norm-squared of one of the multivariate polynomial basis functions | |
| RealVectorArray | chaosSamples |
| sample points (num_pts array of numExpansionTerms vectors) | |
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).
| 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.
| const RealBaseVector & 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 RealBaseVector & 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 RealBaseVector & 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 RealBaseVector & 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().
1.5.1