Edit me

The following is an aerodynamic shape optimization case for the Prowim wing-propeller configuration. Refer to this paper for more simulations and optimization results.

Case: Wing-propeller aerodynamic optimization
Geometry: Prowim wing
Objective function: Drag
Design variables: 120 FFD points moving in the y direction
Constraints: Volume, thickness, curvature and lift
Propeller model: Actuator disk
Mach number: 0.3
Mesh cells: 690 K
Adjoint solver: DARhoSimpleFoam

Fig. 1. Mesh and FFD points for the Prowim wing-propeller case

To run this case, first download tutorials and untar it. Then go to tutorials-main/Prowim_Wing_Propeller and run the “preProcessing.sh” script to generate the mesh:

./preProcessing.sh

We recommend running this case on an HPC system with 20 CPU cores:

mpirun -np 20 python runScript.py 2>&1 | tee logOpt.txt
self.geometry.nom_addCurvatureConstraint1D(
            "curvature1",
            start=[0.12, 0, 0.02],
            end=[0.12, 0, 0.6],
            nPts=20,
            axis=[0, 1, 0],
            curvatureType="mean",
            scaled=False,
        )

The optimized wing shape might have arti cial wavy distribution in the spanwise direction, to prevent this a spanwise curvature constraint is imposed on on the wing surfaces. start and end are two endpoints of the reference line, nPts is the number of nodes on the reference line, axis is the direction used to project the reference line on the desired surface, curvatureType it the calculation method of the curvature, and scaled scales calculated curvatures during the optimization with initial curvature i True .

self.add_constraint("geometry.curvature1", lower=0.0, upper=0.1, scaler=1.0)

Above line pass curvature constraints to the top level. lower is the lower boundary, upper is the upper boundary, scaler scales the constraint with the given number.

Fig. 2. Animation of the Prowim wing-propeller case optimization