Add dvs as real to optimization problem #236
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.
Purpose
DVs should be real before adding to pyOptSparse, otherwise implicit casting might fail and hang the optimization process, as happens with SLSQP described in mdolab/MACH-Aero#96. This was initially caused by a change in pyOptSparse (see this PR and comment).
This PR addresses this issue. Additionally, made a small refactor to reduce multiple raise Error calls.
Ideally, DVGeo DVs should not be allocated by default as complex, but cast as needed. This is however a more fundamental change. This PR is intended to get SLSQP working again quickly, as it has been broken for months, and allow SLSQP MACH-Aero integration tests to be added.
Expected time until merged
ASAP as MACH-Aero and SLSQP do not work past pyOptSparse 2.10
Type of change
Testing
Run MACH-Aero tests
Checklist
flake8
andblack
to make sure the Python code adheres to PEP-8 and is consistently formattedfprettify
or C/C++ code withclang-format
as applicable