AERO-Optim is a simple aerodynamic shape optimization framework coupling FreeForm Deformation (FFD), automatic meshing with gmsh
and any CFD solver execution in the frame of an optimization algorithm based on inspyred
or pymoo
. It is composed of the following core components:
ffd.py
: which defines classes to perform FFD-based deformation of any 2D geometry,*mesh.py
: which define multiples classes to generate automatic meshes,simulator.py
: which defines a class to orchestrate CFD simulations including pre- and post-processing steps as well as progress monitoring,*optimizer.py
andevolution.py
: which define multiple classes to coordinate the optimization procedures withinspyred
orpymoo
.
The overall structure of the framework is illustrated on the Figure below:
In an optimization, classes are created from left to right based on the execution command and the configuration file. All components can be inherited and customized to meet any need and the righmost classes can be loaded and tested separately.
The full documentation is available HERE.
AERO-Optim requires Python 3.10 or newer and comes with a few dependencies listed in requirements.txt
and recalled below:
gmsh # to design and visualize meshes (MESH)
inspyred # optimization toolbox (OPTIM)
numpy # to manipulate geometries as arrays (FFD)
matplotlib # to visualize the generated deformed profiles (FFD)
pandas # to load simulation results (OPTIM)
pymoo # optimization toolbox (OPTIM)
scipy # to use quasi monte carlo samplers (FFD)
From the user's working directory, they can all be installed at once in a virtual environment with the following commands:
git clone https://github.com/mschouler/aero-optim.git
cd aero-optim
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
Details about the following topics are available on the documentation: