OpenMDAO Logo

An open-source framework for efficient multidisciplinary optimization.

January 9, 2023
by Eliot Aretskin-Hariton
Comments Off on Happy New Year from the OpenMDAO Team

Happy New Year from the OpenMDAO Team

We are continuing to tackle the requests for capabilities and features which came up at the OpenMDAO workshop in October 2022. Given the new year, we will be updating our roadmap soon to plan a general path for development in 2023.

Justin Gray has departed the OpenMDAO team after over a decade of leading the project. The OpenMDAO project is a direct result of Justin’s effort to expand adjoint-based optimization and increase the complexity of NASA’s system-modeling capabilities for aviation. Under Justin’s leadership, OpenMDAO was developed from the idea that adjoint-based optimization would be more efficient, to successful system-level studies of novel hybrid and all-electric aircraft. Justin’s future effort will be focused on a start-up that he co-founded and we have no doubt he will be successful to anything he applies his talents to. If you wish to reach out to him personally, please contact him via Justin’s personal email.

We often said that Justin did the work of two people and so it’s no surprise that we have two people stepping up to fulfill different aspects that Justin previously managed. Rob Falck will continue as the development team lead for OpenMDAO and Dymos, managing aspects of the codes’ technical development. Eliot Aretskin-Hariton will be the external partnerships lead. Eliot organized the 2022 OpenMDAO workshop and has also been serving as the integration-lead for the large system-level optimizations that the team has been publishing over the last few years including the Tilt-wing and Quad-Rotor concept vehicles. (You can read more about those in Publications if you have not read them already.) If you’re looking for new ways to collaborate with the OpenMDAO team, please send Eliot an email.

-Eliot and Rob

November 17, 2022
by Eliot Aretskin-Hariton
Comments Off on 2022 Workshop Proceedings

2022 Workshop Proceedings

PDFs of the presentations are available below. Videos of the presentations will be uploaded to youtube and linked here after they are edited in the coming month. Check this post for updates.

Government and Industry Presentations

  • OpenMDAO Development Update (pdf | video)- Rob Falck, NASA
  • Improvements to Interpolators & Lessons Learned (pdf | video) – John Jasa, NASA
  • Dymos Development Update (pdf | video) – Rob Falck, NASA
  • Model-Based Systems Analysis & Engineering (MBSA&E) for the Sustainable Flight National Partnership (SFNP) (pdf | video) – Eric Hendricks, NASA
  • Training resources being developed (pdf | video) – John Jasa, NASA
  • Co-design of Transmission & Distribution for improved power system planning and Operation (pdf | video) – Aadil Latif, NREL
  • Project Gemini: Towards Gradient-Based Optimization Using Measures of Effectiveness (pdf | video) – Christopher Lupp, AFRL
  • Gradient-Based Optimization of Power and Thermal Management Systems (pdf | video) – Christopher Lupp, AFRL
  • Leveraging on OpenMDAO to enhance MDO capability at ONERA (pdf | video) – Sébastien Defoort, ONERA
  • Mphys: Standardizing High-Fidelity Optimization with OpenMDAO (pdf | video) – Kevin Jacobson, NASA
  • Community Needs Discussion (video)

Academia Presentations

  • MDO with Coupled Adjoints: From the Unified Derivatives Equation to OpenMDAO (pdf | video) – Joaquim Martins, University of Michigan
  • Conceptual Aircraft Design in OpenMDAO (pdf | video) – Eytan Adler, University of Michigan
  • Towards Efficient Aero-Structural-Acoustic Optimization for Urban Air Mobility Vehicle Design (pdf | video) – Bernardo Pacini, University of Michigan
  • Aeropropulsive Design Optimization and Nonlinear Solver Development in OpenMDAO (pdf | video) – Anil Yildirim, University of Michigan
  • Coupled Spacecraft System and Trajectory Optimization Framework using GMAT and OpenMDAO (pdf | video) – Gage Harris, Iow a State University
  • Design of Floating Offshore Wind Turbines Using OpenMDAO and Dymos (pdf | video) – Yong Hoon Lee, University of Memphis
  • Topology Optimization, Second Derivatives and OpenMDAO (pdf | video) – Graeme Kennedy, Georgia Institute of Technology
  • Multidisciplinary Design Optimization for Novel Offshore Systems (pdf | video) – Kapil Khanal, Cornell University

October 11, 2022
by Justin Gray
Comments Off on Open Position at NASA Glenn with the OpenMDAO Applications Team

Open Position at NASA Glenn with the OpenMDAO Applications Team

If you’re interested in a job at NASA, we have a current opening posted on the USA Jobs website for a position within the branch that both develops OpenMDAO and builds applications for it like pyCycle, Dymos, and Mphys to do systems analysis and conceptual aircraft design. In this position you’d be working on propulsion modeling, electric aircraft propuslsion system design, as well as a decent amount of code development.

If you’re looking for a broad new challenge, and like working with OpenMDAO, please apply!

August 30, 2022
by Justin Gray
Comments Off on 2022 OpenMDAO Workshop — Now with more Mphys!

2022 OpenMDAO Workshop — Now with more Mphys!

With the OpenMDAO community converging (pun intended!) on NASA Glenn Research Center for the
OpenMDAO Workshop, the Mphys community will be using the opportunity to hold a one day workshop on Oct. 26th. That is ​immediately following the OpenMDAO Workshop on October 24th and 25th.
Mphys is a collaboratively developed OpenMDAO library which is tackling
one of the major barriers to wider adoption of high-fidelity MDAO:
modularity through standardized interfaces for the coupling of multiphysics problems.

The Mphys Workshop will be an opportunity to learn more about multiphysics optimization and see the types of problems people are applying it to.
It will also be a chance to participate in the planning for the next steps of Mphys development.

Whether you’ve been collaborating with us on Mphys for years or will be new to Mphys,
we’re looking forward to seeing you there! Register here.
If you are not able to join us in person, we are planning to have a virtual attendance option.
Stay tuned for more information on that

Agenda

8:00am – Refreshments
8:30am – Welcome
8:45am – State of OpenMDAO development – Visualization Tools / N2, Reporting System (
9:45am – State of OpenMDAO development – Improvements to Interpolators & Why not to use Piecewise Linear
10:00am – Break
10:15am – State of Dymos development – New Dymos Features
10:45am – Model-Based Systems Analysis & Engineering (MBSA&E) Effort and vision / overview
11:30am – Training resources being developed
12:00pm to 12:15pm – Lunch Starts
1:15pm – Poems, critical ones being worked on (#69 + others)
1:30pm – NREL uses of OpenMDAO – Aadil Latif
2:00pm – AFRL/QUAD Aero-Propulsion system optimization
2:30pm – AFRL Effectiveness-Based Design: Current Work and Future Challenges
3:00pm – AFRL – creating a PTMS tool in OpenMDAO
3:30pm – Break
3:45pm – ONERA – FAST-OAD and WhatsOpt
4:15pm – Community Needs Discussion
5:00pm – End of Day 1

Day 1 Evening:
6:00pm – Dinner and Board Games at TableTop Cafe Event

Day 2 Morning:
8:00am – Refreshments
8:30am – Welcome
8:45am – UMich Presentations – broad view of theory, applications, and future MDO Lab work
9:15am – UMich Presentations – OpenConcept
9:45am – UMich Presentations – OpenMDAO Solver Development / aeropropulsive work for Thesis
10:15am – Break + Exchange Store for Swag
10:45am – UMich Presentations – aeroacoustic optimization of eVTOL vehicles
11:15am – MPhys Overview that will include MDO Lab contributions
11:45am – Open Discussion
12:00pm to 12:15pm – Lunch Starts
1:15pm – Iowa State University – OpenMDAO & GMAT Integration
1:45pm – University of Memphis – Design of Floating Offshore Wind Turbines
2:15pm – Structural and Topology Optimization Applications from Georgia Tech
2:45pm – Cornell – Design Optimization of Offshore Systems
3:15pm – Break
3:30pm – Open Discussion
5:00pm – End of Day 2

July 25, 2022
by Justin Gray
Comments Off on In-person OpenMDAO Workshop October 24/25

In-person OpenMDAO Workshop October 24/25

The OpenMDAO workshop is returning to the NASA Glenn Research Center in Cleveland Ohio on October 24-25th. Signup for a seat now! We have a few open slots for external presentations, and you can propose a topic when you sign up.

This is an opportunity for users and developers to meet and have conversations about the next steps for OpenMDAO development, the capabilities you’d like to see added to the toolbox, and the challenges you’re facing with your current implementations. In our first workshop we presented some of the new tools we were building and the POEM process for how the community could interact with the Dev team and propose upgrades. The world got in the way of holding follow up in-person annual workshops, but we did host a 2020 reverse hackathon to maintain links to the community and get a better sense of the kinds or problems that you were facing. These were great opportunities for you, our valued users, to give the Dev team feedback on areas we could work on improving.

For this next in-person workshop we’d like to present you with some of the new tools we’ve built in the last four years and new training resources we are creating for you. Additionally, we want to hear from you about what stumbling blocks exist in your organizations that are preventing OpenMDAO usage. We also want to hear from our users about the cool new things you’re building in OpenMDAO and what are your biggest challenges to adopting OpenMDAO internal to your organization.

We look forward to seeing you in Cleveland to be a part of the OM community!

July 13, 2022
by Justin Gray
Comments Off on A new FREE text book on MDO!

A new FREE text book on MDO!

Professors Martins and Ning have published a new text book on multidisciplinary design optimization, and they’ve generously decided to give the digital version away for free!

There are good lessons on Problem formulation (Section 1.2), comparisons of gradient-based and gradient-free algorithms (Sections 1.4.1-1.4.3), and overview of numerical solver algorithms (Section 3.6), and a great introduction to various MDO concepts (Section 13) — including an introduction to the MAUD equations that underpin OpenMDAO (Section 13.2.6). If you want to learn more about some of the various techniques for taking derivatives of your numerical models, I highly recommend Chapter 6.

They’ve provide code and examples from the textbook in a companion github repo. You can learn more about how AD works, test out surrogate modeling methods, or try out a 10 bar truss example.

They also have a set of lectures based on the content of the book free on youtube

It takes a lot of work to put a text book like this together, and its a true service to the community to offer the digital version for free. If you find it useful in your work, you can thank the authors by citing their book:

@book{mdobook,
author = {Martins, Joaquim R. R. A. and Ning, Andrew},
title = {Engineering Design Optimization},
isbn = {9781108833417},
publisher = {Cambridge University Press},
month = {Jan},
year = {2022}
}



March 22, 2022
by Justin Gray
Comments Off on You want reports? I’ll give you reports — V3.17

You want reports? I’ll give you reports — V3.17

OpenMDAO can produce a bunch of very useful report like the N2 diagram, and the scaling report. However, we noticed that a lot of users didn’t know they existed, or did know but didn’t think to generate them during development/debugging. So we’ve decided to automatically make as many reports as we can.

There are a bunch of user controllable settings you can configure to get the exact reports you want, set where they get stored, or turn them off completely.

There are now also some new ipython widets that you can use to build sort-of-gui like things, and to more quickly plot the results of your case databases.

Check out all the details in the release notes

November 19, 2021
by Justin Gray
Comments Off on OpenMDAO V3.14: I feel the need — the need for speed

OpenMDAO V3.14: I feel the need — the need for speed

OpenMDAO is used to design airplanes, so I think the Top Gun reference is appropriate.

OpenMDAO V3.14 is chocked full of speedy goodness. You can check out the full release notes for all the details, but I wanted to highlight two key developments that each give speed in their own special way

Faster Structured Interpolation

The in-house OpenMDAO Applications team had found that some of their Dymos applications were spending excessive amounts of time computing interpolations from data tables from the StructuredMetaModel component. We’ve known for a while that our interpolation code wasn’t super fast. In fact we specifically chose an implementation that we knew to be slower, because it offered N-dimensional capability.

However the bottlenecks in our own work got bad enough that we felt it was time to add some less flexible, but a lot faster option. The new interpolants only work for a fixed dimensionality (i.e. 1D or 3D), but they are about 100x faster. We have a new naming scheme, laid out in POEM 058. Any interpolation method that starts with its dimension (e.g. 3Dlagrange3) is one of the new fast ones. We started off with 1D and 3D interpolants because these were the ones we needed. We plan to add some 2D ones in the future though.

If you are using StrucuturedMetaModel, these new methods are worth a try for sure. If you are using cubic or scipy-cubic then I highly recommend that you give lagrange3 a try, or the 3D-lagrange3 if you are using 3D data. You’ll get a significant speed up either way.

Functional Component API

We’ve introduced a new component API, that can possibly help you code a bit faster. This feature is so big, it spans two whole POEMs: 056 and 057. If you’re going to use the new API, you should definitely read both poems.

Just to be clear, this new API is not going to replace the existing class based one but will live along side it. The new API, as the name suggests lets you build components using standard python functions. It works with both explicit functions and implicit ones

import openmdao.api as om
import openmdao.func_api as omf

def func(a=2.0, b=3.0):
    x = 2. * a
    y = b - 1.0 / 3.0
    return x, y

f = (omf.wrap(func)
        .defaults(method='cs')
        .declare_partials(of='x', wrt='a')
        .declare_partials(of='y', wrt='b'))

p = om.Problem()
p.model.add_subsystem('comp', om.ExplicitFuncComp(f))
p.setup()
p.run_model()
J = p.compute_totals(of=['comp.x', 'comp.y'], wrt=['comp.a', 'comp.b'])

If you don’t like the boiler plate of the class APIs, you may find this API to be a lot cleaner. If you happen to have a library of existing python functions, you’ll probably find this API to be a nice way to integrate that into OpenMDAO without having to write any class wrappers yourself.

The most fundamental motivation for this new API is that it more easily supports algorithmic differentiation (AD). AD relies on functional APIs, and OpenMDAO’s classed based API was always a tough fit. So if you’ve wanted to try out JAX or pyTorch then this new API is for you!

Adding analytic derivatives offers huge computational benefits, but is often a very slow development step. We’ve also found that when taking derivatives by hand, we tend toward smaller components to keep the derivations simpler.
Our goal with the functional API is to help alleviate the development bottleneck of derivatives, and offer a path for having larger chunks of engineering code in single components.

October 8, 2021
by Justin Gray
Comments Off on Announcing OpenMDAO V3.13

Announcing OpenMDAO V3.13

OpenMDAO V3.13.0 is live. You can read the release notes for complete details, but there are a few key changes worth highlighting:

There are some minor improvements to the way OpenMDAO computes relative step sizes. Full details in POEM 051, but in short you can now ask for step sizes for array variables on a per element basis or from an avg array value. The old method has been kept as well for backwards compatibility, though it is deprecated and will be removed in a later version.

POEMS 053 and 054 summarize a change to the way src_indices work. It’s a bit subtle, so I encourage you to read the POEMS. The key take away though is that src_indices behavior now matches what numpy does with array indexing. This is a backwards incompatible change, though you can can check for its impact by using OpenMDAO V3.12 which will give you a clear deprecation warning.

Another small tidibit: We’re starting to work on on speeding up the interpolation routines. We’re not done yet, but we have some early progress. Check out the akima1d and trilinear interpolation methods if you’re looking for speedier table lookups.

July 16, 2021
by Justin Gray
Comments Off on V3.10 – OpenMDAO on Google Collab!

V3.10 – OpenMDAO on Google Collab!

We revamped our docs based on jupyter notebooks, so you can run all our docs code on Google Collab. Just look for the rocket-ship icon in the upper right corner of a docs page!

That will take you to a live notebook of the same docs page so you can try things out in your browser without installing anything locally. Check out the paraboliod optimization example running in the cloud.

New features and APIs

V3.10 has a lot of new features, APIs, and some important deprecations. You can get all the details in the release notes, but here are the highlights.

  • Major redesign of the APIs for distributed components and variables. See POEM_046 for a lot of details. You now specify distributed independently on each variable.
  • We now use val everywhere (before there was a mix of val and value. The older keyword has been deprecated, which gives you a chance to update before the 4.0 release. See POEM_050.
  • An error is raised if you run check_partials and the same settings are used for both the approximated derivatives and the check.
    Note: We found a surprising number of cases where this was happening. The check is useless in this case. So You might get an new error, but you should be glad that you’re finding what is effectively a bug in your code.
  • You can now use “fancy” indices (i.e. multi-dimensional slices) for constraints
  • There is a new flag called under_finite_difference in components to tell you when you’re being finite-differenced (mirrors the existing under_complex_step flag)

New Logo

Have you noticed out new logo? Feel free to stamp it on any thing you like!

OpenMDAO Logo
Fork me on GitHub