# 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