Welcome to the Git repo of OpenLEGO!
OpenLEGO stands for "Open-source Link between AGILE and OpenMDAO", which is just what it does. It links together two major efforts in the field of Multidisciplinary Design Analysis and Optimization (MDAO) which are both aming to make MDAO more readily applicable in the engineering industry.
The AGILE project is an international research collaboration , funded by the European Commission, with the ultimate goal of reaching:
"... a speed up of 40% when solving realistic MDO problems compared to today's state-of-the-art."
One way this speed up is envisaged is creating tools which allow engineers to manipulate the analysis and design tools, connected to one another within a multidisciplinary analysis or optimization architecture, as if they were building blocks that one could take apart and fit together another way effortlessly - much like LEGO blocks. If they could be treated as such, it becomes easier for engineers to set-up and reconfigure large, interconnected frameworks of tools.
Within AGILE the KADMOS package was developed for this purpose. This Open-source software, written in Python, uses graph theory to provide tools for automated (re)configuration and visualization of complex MDAO problems on an abstract level.
As of yet unrelated to the AGILE project is the OpenMDAO framework. This Open-source platform provides classes and interfaces wrapping complex data logic and high performance optimization algorithms. It allows for problems to be decomposed into isolated components and groups of components, which can easily be tied together to form complex, multidisciplinary analysis and optimization systems.
OpenLEGO enables to user to combine the strength of both of these projects by providing a direct link between KADMOS and OpenMDAO. By using OpenLEGO the user can manipulate MDAO problems from a high, abstract level using KADMOS and then automatically generate and run an OpenMDAO problem from it.
The OpenLEGO package can be installed using the setup.py
file provided in the root of this repo. Any required packages
should automatically be installed alongside it.
The following packages are required by OpenLEGO:
Two example cases have been added in the example
folder to serve as a tutorials, as well as show cases of OpenLEGO:
- The Sellar problem: This case can be run by executing
examples/sellar.py
. It sets up and solves the Sellar optimization problem. This test case is also described by KADMOS and OpenMDAO. More information on this problem can be found at: - A wing optimization problem: This case can be run by executing
examples/wing_opt.py
. It sets up and solves a very basic aero-structural wing optimization problem using the Open-source dAEDalus tool. Note that dAEDalus is not included in this repo and should be obtained and installed separately before this example case can be run.
OpenLEGO is being developed by Daniël de Vries as part of an MSc thesis at the TU Delft. This current state of this work should be considered as an early beta and is subject to change. Feel free to post any feedback on the code, suggestions for new features, and general ideas.
NOTE: OpenLEGO was not developed under the umbrella of the AGILE project and did not receive funding from it.