OpenMDAO Logo

An open-source MDAO framework written in Python.

January 19, 2016
by admin
Comments Off on OpenMDAO 1.5.0 Released!

OpenMDAO 1.5.0 Released!

OpenMDAO v1.5.0 is now available!
And remember, we are now pip-installable, as we are now indexed on pypi:
https://pypi.python.org/pypi/openmdao/1.5.0

Feel free to ask questions on our Stack Overflow tag if you experience any difficulties.

Here are the release notes for 1.5.0:

OpenMDAO Version 1.5.0 Alpha Release Notes
Features
* Proper MPI/PETSC installation/testing/usage now documented in User Guide.
* User can run a DOE in parallel.
* Removed pyoptsparse output from our test output to declutter things.
* User can run a model in parallel using pass_by_obj data transfer under MPI.
* Pyoptdriver now supports saving its history file.
* User can call cleanup method on problem that closes all recorders.
* Converted Brent driver from OpenMDAO Classic to OpenMDAO 1.x
* Case recorder will (optionally) save gradient information from driver cases that requested a gradient in that run.
* OpenMDAO now makes suggestions to user how to improve efficiency when the layout of systems in the model is not optimal.
* OpenMDAO now uses feature of pyOptSparse that allows a single Jacobian element to be sparse.

Bugfixes
* User now gets an error if they pass `promotes` keyword arg into any System.
* Dealt with the duplicate executions of explicit comps when using a solver.
* Fixed bug in accessing prob.unknowns and prob.resids.
* Fixed bug where pyOptSparse/SLSQP failed with Pointer.
* Fixed a bug in pass_by_obj_check_derivatives.
* Fixed MPI hangs that were related to use of Python 3.
* Fixed a bug in ExecComp expressions that didn’t allow the use of ‘:’ notation.
* Added missing documentation of ‘.keys()’ in recorder documentation.
* Fixed a bug in the pass_by_obj params.
* Fixed a problem in recent CADRE runs.

December 16, 2015
by admin
Comments Off on OpenMDAO.org Server Migration Will Cause (Hopefully) Brief Website Outage

OpenMDAO.org Server Migration Will Cause (Hopefully) Brief Website Outage

UPDATE: The migration went pretty well, and openmdao.org should be back at full strength. Please report any problems to our support email.

OpenMDAO.org is being migrated to newer, faster servers on Thursday evening – Friday morning, December 17-18, 2015.
We expect the website to be down for some of that time, or longer, if there are complications.
While OpenMDAO.org is down, our code is still available on Github, our docs at ReadTheDocs, and support available at Stack Overflow .

November 18, 2015
by admin
Comments Off on OpenMDAO v 1.4.0 Released!

OpenMDAO v 1.4.0 Released!

OpenMDAO v 1.4.0 is now available.

API Change
* When using ‘add_desvar’ and ‘add_constraint’, there were inconsistent names for setting
bounds. (low, high vs. lower, upper), which was becoming confusing to users. The new
standard is that all are consistently set using “lower” and “upper”, and the others are deprecated.

Default Setting Changes
* Recording option ‘record_metadata’ now defaults to True for all recorders except CSVRecorder.
* The default linear solver will now be LinearGaussSeidel.

Features
* OpenMDAO 1.3 and onward will be pip-installable, as the project is now indexed on pypi:
https://pypi.python.org/pypi/openmdao/ (installation docs updated)
* Added a “restart” option to the ScipyGMRES solver.
* Added a new real-world example problem (beam-sizing) in the User Guide’s Tutorials section.
* Recorders now have an option to turn off recording of Params, Unknowns, Resids.
* Recorders now include metadata for objectives, design variables, and constraints.
* Parameters may now be declared without val or shape being given.
* Users can now turn on ‘iprint’ recursively for all solvers in a Problem;
do this by calling ‘print_all_convergence’ on a problem after calling setup.
* Users now receive a check_setup warning about any scalar integer variable or any list value.

Bugfixes
* Added a much more descriptive error message if a Jacobian item is the incorrect size.
* Improved shape mismatch errors for connections to be much more specific.
* Updated everything in the Examples directory to run without error.
* Fixed a bug with SqliteRecorder that occurred when running in parallel.
* OpenMDAO’s memory footprint has been reduced by removing some data duplication.
* ‘pass_by_obj’ vars may now be added to a gradient-free driver.

As always, even though we are still in alpha, we apologize if our API changes
cause any problems. Feel free to ask questions on our Stack Overflow tag if you experience any difficulties.

November 4, 2015
by admin
Comments Off on OpenMDAO v 1.3.0 is Released!

OpenMDAO v 1.3.0 is Released!

OpenMDAO v 1.3.0 is now available.

API Change:
We changed our minor version to 1.3.0 due to a minor API change. The function named `jacobian` has been changed everywhere to the clearer, more descriptive, more correct `linearize`. Use of `jacobian` is deprecated, please change your files accordingly to avoid tons of warning and, eventually, bitter disappointment.

As always, even though we are still in alpha, we apologize if our API changes
cause any problems. Even though this change should be a quick search and replace, feel free to ask questions on our Stack Overflow tag if you experience any difficulties.

October 15, 2015
by admin
Comments Off on OpenMDAO v1.2.0

OpenMDAO v1.2.0

Today marks the release of OpenMDAO 1.2.0, which contains several features and bugfixes, but which is highlighted by an API change:

API Change
The way imports work in OpenMDAO has changed. Importing things from their parent module
no longer works. Importing things directly from their source files still works.
A new namespace, “openmdao.api” has been created, from which you can import anything
you previously got from a module file.

Examples:
#Example 1: old way, import from module, no longer supported
from openmdao.core import Component, Group
from openmdao.components import IndepVarComp
from openmdao.solvers import ScipyGMRES

#Example 2: directly from source file (still works), to do same as Ex 1.
from openmdao.core.component import Component
from openmdao.core.group import Group
from openmdao.components.indep_var_comp import IndepVarComp
from openmdao.solvers.scipy_gmres import ScipyGMRES

#Example 3: new way using openmdao.api, to do same as Ex 1.
from openmdao.api import Component, Group, IndepVarComp, ScipyGMRES

As always, even though we are still in alpha, we apologize if our API changes
cause any problems. Feel free to ask questions on our Stack Overflow tag if you
experience any difficulties.

September 22, 2015
by admin
Comments Off on OpenMDAO 1.1.0 Release Highlighted by API Changes

OpenMDAO 1.1.0 Release Highlighted by API Changes

OpenMDAO is proud to announce the release of version 1.1.0 (Alpha). Many new enhancements were added, and bugfixes made. Those are detailed in the release notes. Of major importance, however, are a couple changes to our API that bear special mention here.

We’ve made one set of API changes to hopefully cut down on confusion due to overuse of the word ‘param’. The first thing we’ve done is change the name of ParamComp to IndepVarComp, because it’s really just a component that supplies one or more independent variables as outputs, and it has no parameters. ParamComp has been deprecated but will eventually be removed. Secondly, we changed the names of some Driver methods, replacing param with desvar, which is short for ‘design variable’. So set_param is now set_desvar, get_params is now get_desvars, and add_param is now add_desvar.

The other set of API changes refers to ConstraintComp. Specifically, the ConstraintComp is going away. We have a new interface for adding constraints. You still use the add_constraint method, but now you specify an “upper” or “lower” bounds (or “equals” for equality constraints.)

e.g. driver.add_constraint(‘(var_name)’, lower=xxx, upper=xxx, equals=xxxx).

This API change enabled us to easily support double-sided constraints, which SNOPT can use.

We apologize for any inconvenience that these API changes may cause.

August 22, 2015
by admin
Comments Off on New MDAO book by Dr. Sobieski

New MDAO book by Dr. Sobieski

Dr. Jaroslaw Sobieski is one of the founding fathers of the MDAO discipline, and he’s published a new book, with co-authors Alan Morris and Michel van Tooren. It’s titled “Multidisciplinary Design Optimization Supported by Knowledge Based Engineering”. The book focuses on MDAO and its link to Knowledge Based Engineering (KBE), but also covers the link between design optimization and concurrent computing technology.

July 20, 2015
by admin
Comments Off on The Alpha Has Landed. Welcome to OpenMDAO 1.0.0A

The Alpha Has Landed. Welcome to OpenMDAO 1.0.0A

You may have noticed that there have not been a lot of commits to the OpenMDAO-Framework repository lately. Don’t worry, we’ve still been working hard on OpenMDAO. We’ve just been doing it under a different repository, for the 1.0 Alpha release. Why a separate repo?  Well, it’s because the OpenMDAO 1.0.0 Alpha is a ground-up, from-scratch rewrite of the entire framework guided by three main principles:

  1. The code base should have as few dependencies as possible
  2. The user-facing API should be as small and self-consistent as possible
  3. There should not be any “magic” happening without the user’s knowledge

In order to follow those principles, we needed to free ourselves to consider all aspects of the framework design, including the model-building API. When we started working on this new code, we weren’t even sure that the experiment would work out.   Making big, backwards-incompatible API changes was not an easy decision, because we value our users highly, and don’t want to lose you.  But as development continued, it became clear that the new code was far superior to the existing one, and the design that caused the backwards-incompatible changes was worth the costs. Here are some of the key highlights of what has improved in the 1.0.0 Alpha:

  • 10x smaller code base (~5000 lines of code compared to ~50,000 before)
  • Compatible with both Python 2.7+ and Python 3.4+
  • Install using pip, just like any other Python package
  • No more Traits dependency, and no more weird class-like variable definitions anymore!
  • Ability to manually group components to be finite-differenced together
  • No more dataflow/workflow duality. Now you just define a single model hierarchy
  • No more Assembly overhead. Grouping components no longer introduces large inefficiencies
  • Parallel execution (and parallel adjoint derivatives) with an MPI distributed-memory data passing system
  • New support forum on StackOverflow

What does “Alpha” Mean?

Alpha means that we’ve got the core of the new OpenMDAO done, and it is fairly stable. But we still reserve the right to make minor tweaks to the API. Also, we are currently missing some functionality when compared to OpenMDAO <= 0.13.0. What’s missing? Well, the major stuff is:

  • No External Code (file wrappers)
  • No MetaModel or surrogate model generators
  • No DOE/CID drivers
  • No automatic execution ordering
  • No support for our older plugins

That being said, we’re working hard to improve the code every day. So if you do choose to install the Alpha, we hope you’ll clone our Github repo to do it. That way you can pull down the latest code updates easily. A Beta release that will be more feature-complete and with a more written-in-stone API is coming, but you don’t have to wait for the official release. Our repo is getting daily feature additions and bug fixes. In fact, installing the Alpha and giving us feedback is the best way to help get the missing features you most dearly want moved to the top of the pile!

“There is no such thing as a free lunch”

As we said,  to get all this shiny awesomeness into 1.0.0 we had to make some major backwards-incompatible changes to the user API.  Sadly, your old models aren’t going to work without some fairly significant re-factoring. We know that this is going to cause a bit of pain for a our current users, so we’ve taken a couple steps to help minimize the impact as much as possible. First, we’ll keep all the old versions (and their docs) up and available on our archive page. Second, we’ll keep the old support forum around for help with models on the older version. Keeping support separate for old and new versions will minimize confusion somewhat.  Therefore, questions regarding the alpha should go up on StackOverflow. We won’t be actively developing any new features or bug fixes for the older versions, but we’ll do our best to help users with their models on the older versions as long as possible. When you are ready to make the switch, we’ve provided a conversion guide to show you how translate models from old to new.

July 14, 2015
by admin
Comments Off on OpenMDAO 1.0 Alpha is Coming

OpenMDAO 1.0 Alpha is Coming

We are going to release OpenMDAO 1.0 Alpha on July 22. This release is a massive re-write of the OpenMDAO framework. The rewrite yielded a reduction of our code base to around 5000 lines of code, sped it up, and simplified a lot of the underlying complexity that had been causing users a lot of trouble. Of course, progress often comes at a cost. So OpenMDAO 1.0 is going to be backwards incompatible with all the older versions of OpenMDAO (0.13.0 and older). We’ll keep the older versions around, including all the docs, and we’ll still provide some support for them as well. But moving forward, all of our development and our own model building will be on the new version.

In preparation for the new release, we’ll be updating our website and getting new docs out there. So you’ll start to see some changes to the website in the next week, talking about the alpha and moving things around to provide links to the older content so you can still get to it if you need it.

We’ll be getting out much more information when we make the actual release, so stay tuned.

May 5, 2015
by admin
Comments Off on OpenMDAO v0.13.0 Now Available

OpenMDAO v0.13.0 Now Available

OpenMDAO is now available for installation via virtualenv (download) or Anaconda.

Instructions on both methods of installation are here.

Release notes for 0.13.0 that detail the several bug fixes and new features can be found here.

Anaconda Win32 NOTE:  Please note that even though the Anaconda Win32 installation works fine and is stable, that testing has behaved strangely and inconsistently on that platform, and sometimes tests fail due to imports going bad, even though the items in question can be manually imported and are in fact there.  These failures appear to be due to sys.path being altered by a test somewhere in openmdao.main’s tests previous to the failures. Doing  openmdao test --no-path-adjustment will prevent this from happening and get your tests to pass again.

Fork me on GitHub