[WIP] Add a Sobolev smoothing method to the discrete adjoint gradient calculation.#1439
Closed
thomasdick wants to merge 104 commits intosu2code:developfrom
Closed
[WIP] Add a Sobolev smoothing method to the discrete adjoint gradient calculation.#1439thomasdick wants to merge 104 commits intosu2code:developfrom
thomasdick wants to merge 104 commits intosu2code:developfrom
Conversation
…screte adjoint driver.
…ions for the linear solver of the FE system.
…nto feature_GradientSmoothing
…dding options and functions to handle zero boundary conditions (Dirichlet + Neumann).
Added output routines to SysVector for debugging.
…nd nVar. Added Matrix output for dabugging.
Added epsilon Parameter for the Laplace-Beltrami-Operator.
…nd element for debugging.
…ed. Some clean up of debugging features.
…nto feature_GradientSmoothing
Added a multiplication by the stiffness matrix of the adjoint mesh deformation function.
- added functionality to extract surface connectivity - changed CSysMatrix to take other connectivities for the sparsity pattern - extended elements to deal with higher dimensional coordinate embedding.
…eatures from previous development merged into the new structure.
…ace. Included Eigen into SU2 for linear algebra calculations.
Changes to the OneShot history output.
…ndsmoothing_7.1.1
Extensions to the OneShot optimizer output.
- Group config options for gradient smoothing and One Shot together - Fit parameter Jacobian computation into new grid_movement code structure - Adaptations to changes in code structure (linear algebra/ parallelisation) - Rework of Evaluation/taping for the constraint functions - Changed version numbers
- Calculation of Quad element gradients on boundaries now works as expected.
- Reset reordering of Ansatz functions in CTRIA1, which was changed by merges.
- Output of sensitivities from gradient smoothing solver to discrete
adjoint solver no longer writes non solutions from ghost cells of
uninvolved ranks.
- Added functions for resetting solution and mesh. - Added a linesearch backtracking loop. - Added constraints for design variables.
…le *coord_old) which was accidentaly removed.
internal optimizer running and validated.
Removed some unnecessary functions.
pcarruscag
reviewed
Nov 15, 2021
Comment on lines
+201
to
+204
| # Eigen library for linear algebra | ||
| if get_option('enable-eigen') | ||
| su2_deps += [declare_dependency(include_directories: 'externals/eigen')] | ||
| endif |
Member
There was a problem hiding this comment.
We can add it as a submodule.
Contributor
Author
There was a problem hiding this comment.
Thanks for the suggestion.
I checked the other WIP projects and it seems that Ole uses Eigen in his draft #1217.
In addition, I found that Eigen is already included in subprojects/Mutationpp/thirdparty/eigen.
I can ask this in the next developer meeting, maybe there is more interest in adding it as a submodule.
5 tasks
Contributor
Author
|
Created a new draft based on a rebased branch with cleaner commit history. |
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.
Proposed Changes
This is a solver I have been working on for some time.
The proposed solver is a treatment of the discrete adjoint sensitivities based on the idea of Sobolev gradient smoothing. This is done by solving an elliptic PDE with the sensitivities, i.e., ( e1 Id - e2 Laplace) delta_x = - dF / dx, with different weights e1, e2.
Such treatment can help prevent noise in the derivative computation and leads to smoother design updates. Especially, when working in a One Shot optimization context.
The new solver constructs the necessary operator and solves it using the finite elements features in SU2. It also includes the possibility to take the mesh parameterization into account and smooth the sensitivities w.r.t. the design parameters.
I will update this draft and the comments, but I wanted to share this first version. I would be happy if anyone wants to comment on it.
The draft needs some steps to be done, including:
PR Checklist
Put an X by all that apply. You can fill this out after submitting the PR. If you have any questions, don't hesitate to ask! We want to help. These are a guide for you to know what the reviewers will be looking for in your contribution.