ObstacleDesign via RegularizedComplementarity#1621
Open
thartland wants to merge 27 commits into
Open
Conversation
…s matrices in places where appropriate for the obstacle design problem
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new obstacle-design example that formulates an obstacle problem via regularized complementarity and solves the resulting MPEC using ContinuationSolvers, integrating Smith functional objectives/weak forms and enabling mass-weighted norms for mesh-refinement robustness.
Changes:
- Introduces
obstacle_design_example.cppdemonstrating an obstacle design workflow built onMPECSolver. - Adds CMake plumbing to build/install the new example and register it as an example test.
- Hooks the new
obstacle_designexample directory into the top-level examples build.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| examples/obstacle_design/obstacle_design_example.cpp | New obstacle design example and a Smith-backed ObstacleDesignProblem adapter for objective/derivative callbacks. |
| examples/obstacle_design/CMakeLists.txt | Builds/installs the new example and adds an MPI example test when continuation support is enabled. |
| examples/CMakeLists.txt | Adds the obstacle_design subdirectory to the examples build. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…om check on parallel/serial mesh refinement command line argument
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR adds the capability to solve a design problem subject to an obstacle problem.
The obstacle problem is, formally
The optimality conditions, with pressure$p$ Lagrange multiplier associated to the inequality constraint and regularized Fisher-Burmeister complementarity, are then constraints of an upper-level design problem
The example problem uses a discretization of the design objective functional
with scalars$\gamma_{0},\gamma_{1},\gamma_{2},\gamma_{3}\geq 0$ .
This PR updates smiths submodule ContinuationSolvers which contains some of the necessary backend solver technology. The smith obstacle design problem example uses a
SmithObstacleDesignProblemderiving from ContinuationSolversObstacleDesignProblemto then utilize asmith::FunctionalObjectiveandsmith::FunctionalWeakForm's for design objective function, gradient, and Hessian callbacks. Furthermore, the solver uses appropriate mass weighted norms so that the nonlinear solver iterations do not show dramatic dependence on the degree of mesh refinement.Here is the design fields I obtain when running with serial refinement 2. For context the upper surface is the displacement field, the bottom surface is the optimal obstacle, and the scalar field plotted in color over each surface is the pressure field.