Feature/sobol sensitivity #9
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add Sobol Sensitivity Analysis to UQPCE
Description
This PR exposes UQPCE's existing Sobol sensitivity analysis capabilities through the OpenMDAO interface, making Sobol indices natively accessible as OpenMDAO outputs for use in optimization and analysis workflows.
Motivation
UQPCE already computes Sobol sensitivity indices internally, but these were not accessible through the OpenMDAO interface. This PR bridges that gap by creating an OpenMDAO component that exposes these indices as standard outputs, enabling their use in gradient-based optimization and sensitivity studies.
Implementation
New Component: SobolComp
uqpce/mdao/sobolcomp.pyuqpce.pce._helpers.calc_sobols()andcreate_total_sobols()functionsModified Files
uqpce/mdao/interface.pymodel_matrixfrominitialize()functionuqpce/mdao/uqpcegroup.pycompute_sobolsoption (default: False)model_matrixoption for Sobol computationcompute_sobols=TrueTechnical Details
Mathematical Formulation
For a PCE expansion:
f = Σ c_i Ψ_i(ξ)Individual Sobol indices:
Total Sobol indices:
Key Features
response:sobolsandresponse:total_sobolscompute_sobols=TrueUsage Example
Testing
test_sobol_integration.pyExample Output