ENH: new objective functions for adjoint-based optimisation
Summary
Added five new objective functions for use in adjoint-based optimisation.
Details of new models
The new objective functions mainly target internal flow optimisation problems. A short description and an indicative example for each of them follows. All figures that follow depict the velocity magnitude.
flowRate
Computes and minimizes/maximizes the volume-flow rate through a given set of patches. An indicative application follows, in which the flow-rate though the upper part of the duct should be maximized (flow from left to right).
Initial geometry (52.8% of the flow-rate goes through the upper part) | Optimised geometry (53.7% of the flow-rate goes through the upper part) |
---|---|
![]() |
![]() |
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/fork-uneven/flowRate
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveFlowRate
flowRatePartition
Used to distribute the inlet flow-rate to outlet patches with prescribed target percentages. An indicative application follows, in which the equal distribution of the inlet flow-rate to the two outlets is targeted.
Initial geometry (52.8%/47.2% distribution between the upper/lower outlets) | Optimised geometry (equally distributed flow) |
---|---|
![]() |
![]() |
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/fork-uneven/flowRatePartition
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveFlowRatePartition
uniformityPatch
Enhances the flow uniformity by minimizing the velocity variance computed on prescribed (outlet) patches (the lower outlet patch in this case).
Initial geometry | Optimised geometry (velocity variance reduced by 34%) |
---|---|
![]() |
![]() |
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/fork-uneven/uniformityPatch
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityPatch
uniformityCellZone
Enhances the flow uniformity by minimizing the velocity variance within prescribed cellZones.
In this case, the boundaries of the target cellZone are highlighted in black.
Initial geometry | Optimised geometry (velocity variance reduced by 34%) |
---|---|
![]() |
![]() |
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/laminar/opt/unconstrained/uniformityCellZone
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityCellZone
powerDissipation
Computes and minimizes the fluid power dissipation that takes place within given cellZones. If the cellZone covers the entire flow domain, this objective is equivalent to volume flow-rate weighted total pressure losses (i.e. the PtLosses
objective function).
The boundaries of the target cellZone are highlighted in black.
Initial geometry | Optimised geometry (Power dissipation reduced by 57% within the cellZone) |
---|---|
![]() |
![]() |
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/opt/powerDissipation
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectivePowerDissipation
Merge request reports
Activity
changed milestone to %v2212
assigned to @andy
Hi @vaggelisp - please do force push whenever you need. won't cause any issues for us.
- Resolved by Vaggelis Papoutsis
added 1 commit
- 6440913b - STYLE: return nullptr instead of tmp<volVectorField>(nullptr)
- Resolved by Vaggelis Papoutsis
- Resolved by Vaggelis Papoutsis
- Resolved by Andrew Heather
@Prashant - would you mind to run
Alltest
? For some reason, I couldn't get it completed for this branch.
added 1 commit
- d07756f3 - INT: minor changes in new objective functions
- Resolved by Vaggelis Papoutsis
Thanks @vaggelisp - all looks good - any last changes before merging?
added 32 commits
-
d07756f3...3ab182b1 - 28 commits from branch
develop
- c9f0f2db - ENH: adjointRASModel now also returns the Jacobian of nut w.r.t. U
- f44fd2f8 - ENH: added some auxiliary functions in objective
- 3b05f3ae - ENH: added new objective functions
- 0291036a - TUT: tutorials for the new objective functions
Toggle commit list-
d07756f3...3ab182b1 - 28 commits from branch