Replies: 1 comment
-
|
Keep in mind this is just what I found from investigation - I'm not a Dakota developer so I may be misunderstanding things, but I think I have a pretty good answer for you. Also note that this is a general overview of the process - the mathematics of each method (e.g. Clenshaw-Curtis, the Gramm-Schmidt orthogonalization, etc.) are not something worth explaining in a forum post - so see the attached papers you've already listed if you are not familiar. From the docs for polynomial_chaos, the two basis polynomial families are askey and wiener. Since you have not chosen one in your dakota input file, the "default if no option is selected" is listed as the 'Extended' option. I think you already knew this, but this is where the docs note that some "numerical integration" method is used. If you then dig around the Dakota source code, you'll find in dakota/src/DakotaApproximation.cpp that if the approximation type is _orthog_polynomial, Dakota returns an approximation that is done using PECOS, the SNL library packaged with it created for such purposes. In PECOS' source, https://github.com/snl-dakota/pecos/tree/021b5f27ec3be4c98fc266cb2a16f7a0e62932ea/src, you'll find what you're looking for in NumericGenOrthogPolynomial. There, you will see that for HISTOGRAM_BIN approximations, PECOS uses cc_bounded_integral(), which is a a Clenshaw-Curtis quadrature with the inner product defined by your provided histogram data. So, in summary, using a monomial basis, Dakota (through PECOS) performs Gramm-Schmidt orthogonalizations using an inner product defined with your histogram as the weighting function. It numerically approximates this integral via a Clenshaw-Curtis quadrature. The inner product is used in the discretized Stieltjes procedure, which involves a three-term recurrence involving constants computed from the inner product(s). That procedure produces the unique set of basis polynomials relative to your given histogram bin distribution. While I'm pretty sure you meant 'rebuild the polynomials' in regards to forming the basis polynomials, if you meant the actual full approximation, then the documentation for 'polynomial_chaos' states that it obtains alpha_i coefficients using "5. linear regression (specified with expansion_order and either collocation_points or collocation_ratio), using either over-determined (least squares) or under-determined (compressed sensing) approaches." The other aspects of the method (Golub-Welsch vs. Chebyshev, etc.) are things that, from what I can tell, don't come into play in your specific example because of your keyword specifications. Hope this helps! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello,
I am doing some CFD simulations with different inputs (inflow angles) and then trying to build a PCE model so that I can rebuild the response at other inflow angles that were not simulated.
I first did a dummy dakota run so that it selects 16 inflow angles from the pdf. The pdf of my inflow angles is not a recognizable shape, therefore I selected
histogram_bin_uncertainand provided the pdf. Once, I had these 16 angles, I ran CFD simulations. Now I am trying to rebuild the response at another angle.However, I can't seem to figure out how to rebuild the polynomials for the
histogram_bin_uncertainvariable. I looked a bit at the documentation for pce (here) but it does not explain how the polynomials are numerically calculated. An older theory guide (page 30 here) states :So my main question is:
What is the actual method to numerically generate the polynomials when using
histogram_bin_uncertain?Here is my dakota input file:
Beta Was this translation helpful? Give feedback.
All reactions