Introduction to the OpenMDAO FrameworkΒΆ

MDAO stands for Multidisciplinary Analysis and Optimization. OpenMDAO is an open source framework for analyzing and solving MDAO problems. In OpenMDAO, a problem is represented by a system of objects called components. These objects have input and output attributes and can perform some sort of calculation when they are executed. You can connect the inputs and outputs of one component to those of other components, allowing data to be passed between them.

The following figure gives a conceptual view of what a simple Component might look like. This Component has two inputs (a, b) and one output (c). The calculation that it performs is to add the two inputs to produce the output.

../_images/Component.png

Conceptual View of a Simple Component

Components within OpenMDAO can be as simple or complex as necessary. The inputs and outputs to a Component are Python objects, so they are not limited to being simple types like floating point or integer.

A Workflow is an object that determines execution order for a group of Components.

A Driver is a special kind of Component that executes a Workflow repeatedly until some condition is met. Some examples of Drivers are optimizers, solvers, and design space explorers.

An Assembly is a special kind of Component that contains one or more Drivers and a group of Components. By default an Assembly contains one Driver called driver. When an Assembly executes, it runs driver, which in turn executes its Workflow. A Driver’s Workflow may contain other Drivers, which allows for nested iteration schemes. The execution of each Driver will run its corresponding workflow until that Driver decides it is finished. Each Driver may contain its own Workflow, or it may use the default Workflow that is maintained by the Assembly. The default Workflow contains all non-Driver Components in the Assembly.

The next figure shows an example of an Assembly with one Driver and four Components. A solid line between two Components indicates that one of them is supplying inputs to the other. Each dashed line between a Driver and a Component indicates an Expression object in the Driver that references an input or output variable on the Component. The arrow at the end of a dashed or solid line indicates the direction of the data flow between two connected objects.

../_images/DriverFlow.png

View of an Assembly with one Driver

The functionality of OpenMDAO can be extended through the use of plugins. In the figure below, objects of the sort found outside of the Framework box can be integrated into the framework as plugins. This means that a user can create any of these and the framework will understand how to interact with them. This is possible because plugins have a specific interface that the framework expects. To learn how to create your own plugins, see the Plugin Developer Guide.

../_images/TopContext.png

Top Level Context Diagram

This concludes a brief introduction to OpenMDAO. Please see the next section for details on system requirements and how to install the software.

OpenMDAO Home

Previous topic

User Guide

Next topic

System Requirements

This Page