OpenMDAO Logo

An open-source framework for efficient multidisciplinary optimization.

December 19, 2013
by Justin Gray
Comments Off on OpenMDAO 0.9.3 Released

OpenMDAO 0.9.3 Released

OpenMDAO version 0.9.3 has been released today.  This is again mostly a maintenance release, with a couple of new features.

To see which bugfixes have been included in 0.9.3, see the release notes.

Our support of the new 0.9.0 release will continue as bugs and feature requests keep coming in!

December 11, 2013
by Justin Gray
Comments Off on OpenMDAO Version 0.9.2 Released

OpenMDAO Version 0.9.2 Released

OpenMDAO version 0.9.2 has been released today.  This is again mostly a maintenance release, with a couple of small new features.  We want to thank our users for finding and submitting some great real-world bugs that have helped us greatly improve OpenMDAO.  Please keep the forum posts and bug reports coming!

To see which bugfixes have been included in 0.9.2, see the release notes.

Future work on OpenMDAO in the near-term will be focused on fixing new bugs as they arise, continuing derivatives work, and then turning an eye toward performance issues. Stay tuned!

December 5, 2013
by Justin Gray
Comments Off on OpenMDAO Releases 0.9.1 Bugfix Release.

OpenMDAO Releases 0.9.1 Bugfix Release.

Check out the downloads section for the latest version of OpenMDAO from Thursday, December 5, 2013.  This release is mostly to fix several bugs/installation issues that cropped up as a result of the release of the major new functionality contained within last month’s 0.9.0.  Read about it here.

November 13, 2013
by Justin Gray
Comments Off on OpenMDAO 0.9.0 Brings Large Amounts of New Functionality

OpenMDAO 0.9.0 Brings Large Amounts of New Functionality

This release incorporates a brand new capability for calculating the gradient of your models based on the work of John Hwang and Dr. Joaquim Martins at the University of Michigan. This change was 5 months in the making and represents a massive re-write of some of the core of OpenMDAO. At the user-interface level, while there are some changes, the differences are fairly minor and are restricted to the way you specify analytic derivatives to the framework.

The main purpose of the re-write was to bring improved scalability to our derivatives calculations, but the new functionality also includes support for forward and adjoint derivatives. To give you an idea of what we mean by scalability, we have recently solved a satellite design problem with 25,000 design variables and analytic derivatives. The code for that work is being set up as a plugin. You can take a sneak peek at the work here, but we’re still working to prepare the code for easier consumption (adding some docs and making a real tutorial out of it). The plugin should be cleaned up in the next two to three weeks.

The derivatives stuff is very new, and we’re currently working to make it easier for people to use. There is a lot of capability in the derivatives system (e.g., automatic finite-difference checking, derivatives for geometry) that is not as easy to use as it should be. So in the next month or two, we’ll be adding a few new API methods to make those capabilities more accessible and adding the necessary documentation to show you how to use it.

Derivatives are not the only new feature in this release though. Here are some of the other new features:

  • Support for array parameters: Just add any array to solver or optimizer and it will automatically add each element of the array as a separate parameter to your driver.
  • New geometry tutorial: We’ve put together a simple free-form deformation geometry example that you can run and have shown you how to execute a DOE on it.
  • Connection Expressions: You can now have connections where the source term is an expression of one or more values, e.g., connect(“A.x + B.x”, “C.y”)
  • File Variables can be initialized with strings: Setting up file variables used to be a little tricky, but you can now initialize them with a string representing the path to the file of interest.

 

Backwards-incompatible Change

In older versions of OpenMDAO it was possible to make connections between components located in different assemblies. For example, if you had two assemblies, asm1 and asm2, the old version of OpenMDAO would allow you to do things like ‘top.connect(‘asm1.y’, ‘asm2.comp1.x’). In the current version of OpenMDAO, only variables within the scope of the same assembly can be connected. This means that comp1.x has to be made visible as a variable of asm2, typically by calling asm2.create_passthrough(‘comp1.x’), which creates a variable ‘x’ in asm2 and connects it to comp1.x. Once that is done, top.connect(‘asm1.y’,’asm2.x’) will connect asm1.y to asm2.x, which is connected inside of asm2 to comp1.x.

In summary:

# this works in versions before 0.9
top.connect(‘asm1.y’, ‘asm2.comp1.x’)

# this works in 0.9 and later
top.asm2.create_passthrough(‘comp1.x’)
top.connect(‘asm1.y’, ‘asm2.x’)

This same restriction also applies to parameters, objectives and constraints defined in a driver. They may only reference variables found in the same scope that contains the driver.

For example:

# this works in versions before 0.9
top.driver.add_constraint(‘asm.comp1.x = 0’)

# this works in 0.9 and later
top.asm.create_passthrough(‘comp1.x’)
top.add_constraint(‘asm.x = 0’)

October 9, 2013
by Justin Gray
Comments Off on Hyperloop in OpenMDAO

Hyperloop in OpenMDAO

Some of the OpenMDAO team worked on a Hyperloop model in their spare time. The initial results from the activity are pretty encouraging. Although not everything worked out as well as had been guessed in the original Tesla/Space-X proposal, it still seems feasible from a technical standpoint.

This model mostly focused on the design/sizing of the pod itself from an aerodynamic and thermodynamic cycle perspective. This allowed us to make some estimates about the required tube sizes and theoretical maximum speeds achievable for such a system. It looks like you’ll be able to about Mach .85, and the tube will need to be about 4 meters in diameter. These results are highly preliminary, and there is still lots of work that needs to be done on this model. But this plugin is a solid start. If there is a lot of public interest, we may continue working on it. We’re also very open to any outside contributions on this effort!

Check out the github repository or review the docs we put together for the plugin.

August 27, 2013
by Justin Gray
Comments Off on Version 0.8.1 And Beyond

Version 0.8.1 And Beyond

OpenMDAO version 0.8.1 was released today. In it, there are several improvements to help with installation issues, significant improvements to the geometry viewer, and a few minor bug fixes. This is mostly a maintenance release for the framework, including a number of under-the-covers changes that you won’t directly see. Go grab the latest version here.

We’re working hard toward a 0.9.0 release in the next month or so and also toward a full 1.0 release early in FY14. A number of our users have asked us what new stuff will be included in that work. In the near term, we’re working hard on implementing a new and very advanced derivatives capability in the framework. While we currently have an API for working with components that can provide their own derivatives, it’s not the most elegant solution. It also does not scale well to problems with more than a few hundred variables and doesn’t have strong support for components that provide an adjoint vector.

So for the last few months, we’ve been working closely with Dr. Quim Martins and John Hwang from the MDO Lab at the University of Michigan to implement a more flexible and scalable coupled derivatives system. The work is heavily based on their recent publication in the AIAA Journal. This method for solving for the coupled derivatives will work for problems with thousands of variables. We’re currently working to test this new system on a sample problem that John Hwang developed for the design of a small satellite. This problem is computationally inexpensive enough to be run on a single computer, but it still has over 30,000 design variables, which makes it an excellent test case for the new derivatives system.

July 29, 2013
by Justin Gray
Comments Off on External Contribution from Dr. Young-Ki Lee

External Contribution from Dr. Young-Ki Lee

Dr. Young Ki Lee, of the Aerospace Systems Design Laboratory at the Georgia Institute of Technology, has earned the distinction of becoming the very first external contributor to the OpenMDAO project. Dr. Lee sent a pull request for a bug fix having to do with CSV case recorder that he both identified and repaired. View his fix on github. Dr. Lee gets extra credit for adding a new test to check for this bug and make sure the fix works. This bug fix was merged into the codebase, and all the tests passed! His fix will be released with the next version of OpenMDAO.

This is not the first external contribution to OpenMDAO project, but all previous contributions had been to our plugins repository. It’s the first external contribution to the core OpenMDAO source. We think it’s awesome that OpenMDAO has been useful for his research at Georgia Tech and that he took the time to find and fix the bug.

July 20, 2013
by Justin Gray
Comments Off on OpenMDAO v 0.8.0 released!

OpenMDAO v 0.8.0 released!

OpenMDAO version 0.8.0 has been released. There are several things of note that have happened in this release. This is a maintenance release focusing heavily on improving our installation process.

Updating Dependencies
A number of our dependencies were causing some installation trouble for a number of reasons. We’ve updated those packages to the latest versions and changed our dependency download process to use https (vs http).

We have updated our versions of:
virtualenv to 1.9.1
setuptools to 0.9.5
pyzmq to 13.1.0

Supported Python Versions
The adoption of these newer versions has led us to no longer support Python2.6. If you are on a platform such as RedHat that for some reason is pegged to 2.6, you can still easily install Python2.7 separately alongside Python2.6, with 2.7 as the non-default Python; then run our install by explicitly calling “python2.7”

Supported Platforms Updated
We have also been updating the platforms on which we regularly run our automated tests. As of this release, we have started testing on the most recent three Ubuntu distributions: Ubuntu Pangolin, Quetzal and Ringtail. We have dropped testing on the prior three distributions: Meerkat, Narwhal and Ocelot. Our intent is to start adding supported platforms using some of the popular scientific distributions like Enthought, Python(x,y) and possibly Anaconda.

For more details of the release, check out the release notes. If you have any questions, please address those to us in our forums!

June 10, 2013
by Justin Gray
Comments Off on OpenMDAO v0.7.0 released!

OpenMDAO v0.7.0 released!

June 10th marks the release of OpenMDAO 0.7.0, which contains several new things of note, including a few backwards-incompatible changes, several important new features (some straight from the forums), and of course, a few bug fixes.

Please stop by the downloads page and check out the release notes.

Fork me on GitHub