Added functionality for smoothing the sensitivity derivatives
Summary
Adjoint-based sensitivity maps can now be optionally smoothed using a Laplace-Beltrami operator.
When computing sensitivity maps on surface meshes generated from industrial geometries, the outcome might appear noisy, especially if a volume-to-surface approach is used for meshing, like the one utilised by snappyHexMesh. Even though the sensitivity map is technically correct, the noisy patterns that appear might make the extraction of useful information challenging. This new feature facilitates the interpretation of the sensitivity map in such cases.
Details of new models
The sensitivity map can be smoothed using a Laplace-Beltrami operator of the form
where
The above-mentioned equation is solved on the part of the surface mesh defined by the patches on which the sensitivity map is computed, using the finiteArea infrastructure of OpenFOAM.
If an faMesh is provided, it will be used; otherwise it will be created on the fly based on either an faMeshDefinition dictionary in system or one constructed internally based on the sensitivity patches.
From an optimisation point of view, this smoothing can alternatively be seen as computing the sensitivity derivatives
where
Examples
An example of a noisy sensitivity map and its smoothed variants using different
$FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/sensitivityMaps/motorBike,
Risks
No risks are foreseen. To enable the smoothing, the smoothSensitivities
bool should be set to true
, along with some optional entries.
sensitivities
{
type surfacePoints;
patches (motorBikeGroup);
includeSurfaceArea false;
smoothSensitivities true;
meanRadiusMultiplier 10; // Optional, defaults to 10. Controls the smoothing radius
iters 2000; // Optional, defaults to 500
}
Since the Laplace-Beltrami equation is solved using the finiteArea framework, faSchemes
and faSolution
should be present under system
.
The smoothed sensitivity map is written in the smoothedSurfaceSens + adjointSolverName + sensitivityFormulation
file, under the current time-step.
References
The notion of sensitivity smoothing using a Laplace-Beltrami operator was used throught the seminal works of Antony Jameson. A reference can be found in
Vassberg J. C., Jameson A. (2006). Aerodynamic Shape Optimization Part I: Theoretical Background. VKI Lecture Series, Introduction to Optimization and Multidisciplinary Design, Brussels, Belgium, 8 March, 2006.
Merge request reports
Activity
changed milestone to %v2112
added community contribution finiteArea post-processing labels
requested review from @vaggelisp
assigned to @andy
Hi @andy
All integration changes seem fine, I will soon run some tests though to make sure everything is OK.
Hi @andy
Everything is ready from my side. I updated the description and pushed an updated tutorial that makes use of the new feature.
Feel free to merge.
That's great, thanks @vaggelisp
added 48 commits
-
e28dcf9c...0343d3d7 - 45 commits from branch
develop
- 3ef0d19e - ENH: added functionality for smoothing the sensitivity derivatives
- 90d62c33 - INT: Minor integration updates
- f6dfa76f - TUT: updated the motorbike tutorial
Toggle commit list-
e28dcf9c...0343d3d7 - 45 commits from branch
mentioned in commit aaf4f40b