OpenMDAO Logo

An open-source framework for efficient multidisciplinary optimization.

July 18, 2016
by Justin Gray
Comments Off on OpenMDAO 1.7.1

OpenMDAO 1.7.1

OpenMDAO v1.7.1 is now available!

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

Here are the release notes for 1.7.1:
________________________________________________________
OpenMDAO Version 1.7.1 Alpha Release Notes
July 18, 2016

Features:
* Newton and NLGS solvers now also check for convergence by monitoring the unknown vectors for when it falls below a tolerance `utol`.
* The print_all_convergence function in Problem now has an argument level that lets you choose between:
0 — only display failures
1 — display iteration counts
2 — display residuals each iteration (this is the default)
* Added a SAND example from our users into our Examples section in our documentation.
* Implemented better error handling when user gives too many args to connect.
* Modified linear_system so that its derivatives are solved with an additional LU back-substitution solve_linear.

Bug fixes:
* Fixed bug in relevance checking related to pass_by_obj vars.
* Fixed doc problem where multiple requirements sections listed under Examples on docs main page.
* Fix for keyerror when you have an array scaler on a design variable or constraint and are using SLSQP
(so the return_type for jacobian is array) under full_model fd.
* Non-python files are no longer missing from our distribution.
* Fixed a bug where residual scaling/unscaling was applied to a finite-differenced Jacobian when it shouldn’t be.
* Fixed bug in Newton derivative calculation when containing system is set to ‘fd’ or ‘cs’.
* Fix for Newton when solving a system that has been set to ‘fd’ (or ‘cs’)

June 30, 2016
by Justin Gray
Comments Off on OpenMDAO v1.7.0

OpenMDAO v1.7.0

OpenMDAO v1.7.0 is now available!

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

Here are the release notes for 1.7.0:
OpenMDAO Version 1.7.0 Alpha Release Notes
June 30, 2016

Backwards-Incompatible Change:
1. ‘fd_options’ is now ‘deriv_options’ in systems.
2. New ‘type’ option allows the user to select between analytic, finite difference, or complex step.
3. The ‘force_fd’ option is no longer needed because of type.
4. The ‘complex_step’ choice has been removed from the ‘form’ option.
5. The ‘step_type’ option is now ‘step_calc’.
6. New explicit options ‘check_type’, ‘check_form’, ‘check_step_calc’, and ‘check_step_size’
allow you to control the fd check during check_partial_derivatives.
7. Old code will still work, but will raise deprecation warnings.

Features:
* NAS access component
* The output of check_partial_derivatives has been modified so that absolute or
relative errors that exceed a tolerance are flagged with a ‘*’.
The tolerances can be specified via call arguments.
* User can now specify a scaler on any residual by specifying a resid_scaler during add_state.
OpenMDAO see the residual divided by this number.
* A new Model Structure Viewer has been added for viewing the data dependency of your model.
* Updated our Kriging surrogate model based on Sci-kit learn’s Kriging module.
* Added support for parallel DOEs using multiprocessing.
* Converted NREL Tutorial from OpenMDAO 0.1x to OpenMDAO 1.x
* The default Line Search for the Newton solver is now None.
The Backtracking Line Search has been overhauled to use the Armijo-Goldstein for termination.

Bugs fixes:
* Fixed a bug in the lower limiting for state variables.
* Fixed a bug in the KSP solver related to relevance reduction.
* Fixed a bug in fd partials checking.
* Fixed a bug in Radians to Degrees unit conversion.
* Fixed a bug in Newton Backtracking to ignore pass_by_obj variables.
* Fixed where using `abs` in ExecComp expression gave bad derivatives.

May 10, 2016
by Justin Gray
Comments Off on OpenMDAO v1.6.4

OpenMDAO v1.6.4

OpenMDAO v1.6.4 is now available!

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

Here are the release notes for 1.6.4:

OpenMDAO Version 1.6.4 Alpha Release Notes
May 10, 2016

Features:
* User can get more compact output from check_partial_derivatives via `compact_print=True` argument
* User can call alloc_jacobian() to pre-allocate jacobian with correct sizes for everything when jacobian structure is fully dense
* Setup messages, warnings, and errors are now all delayed and given all that the same time, at the end of setup.
* Components can now raise AnalysisError when a component fails to have solver or driver handle the situation cleanly. Note: solvers and drivers need to be written to handle this correctly
* Systems (Groups & Components) will set a _jacobian_changed flag, so that solver can know if they need to do some extra work.
* Pyoptsparse Driver will catch AnalysisError and pass fail-flag to pyopt-sparse.
* Added error msg to top of run and run_once in case force_fd is changed from its setting pre-setup.
* User can call list_params method on a group to get a list of all the parameters that don’t have any src at that level of the hierarchy.
* Add a test support utility function to check for the presence of fd_options[‘force_fd’]=True in a group.
* Added option to DirectSolver to improve performance by manually assembling the Jacobian.
* Added support for caching the LU factorization to the DirectSolver. This is the default option.
* We now raise an error if more than one objective is added to a driver that does not support multiple objectives.
* User can specify a scaler when adding an output or state. That number is internally used to scale the variable in the unknowns vector.
* User can specify a resid_scaler when adding a state. That number is internally used to scale the resids vector.
* Many documentation fixes and improvements.
* Coming in next release, a model structure viewer.
* Coming in next release, a basic profiler.

Bug fixes:
* Fixed a sign inconsistency in the derivatives systems with Residuals.
* Fixed error-checking for solver maxiter when there are cycles or states.
* Fixed error message for things that shouldn’t be changed after setup to be more user-friendly.
* Fixed bug when distrib comp used with parallel DOE.

March 1, 2016
by Justin Gray
Comments Off on OpenMDAO 1.6.0 Released

OpenMDAO 1.6.0 Released

OpenMDAO v1.6.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.6.0

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

Here are the release notes for 1.6.0:

Backwards-Incompatible Change
*System names must be valid Python names:
Because we add subsystems as attributes of their parent system, the name of each system must be a valid Python name. Otherwise we will raise an exception.

Features
*User now has the ability to call check_total_derivs and have it just do the driver-relevant params/cons/objs instead of every param/unknown in the model.
*Multiple local components are now allowable in a parallel system.
*User can choose to complex step a full model for total derivatives.
*We now account for Jacobian sparsity patern that arises from src_indices connections. This is available for the pyoptsparse driver.
*Documented more of our MPI functionality.
*Added support for File variables.
*Case recorders now save derivative information by default. You can turn this off in the recorder options.
*Pass-by-object connections will now convert units if the object is numeric.
*Now raise an error if a user tries to add the same constraint/param twice.
*Made Brent solver work for when state variable is an element of an array variable.
*Sped up setup of model
*Test nsga2 with pyoptsparse wrapper.
*Added dynamic load balancing option for PredeterminedRunsDriver.
*Removed getitem() function from System class.
*Added complex step example to the FD tutorial.
*Edited paraboloid tutorial and sellar tutorial to include lines where we set initial guesses.

Bugfixes
*Components without outputs now allow linearize to return an empty dict ({}).
*User can now specify units for ExecComp values.
*Two_sided_constraints are now supported in ScipyOptimizer.
*Unit conversions were being reported for pass-by-object variables.
*Fixed bug in check_setup when connecting array_src to scalar target.
*Cleared up problems that ExternalComp had with timeout and Windows process termination.
*check_total_derivatives did not work under single_voi_relevance_reduction because the vectors were setup for only fwd or rev.
*DOE des-vars with array variables didn’t work.
*optlatinhypercube was missing the load_balance arg.
*Fixed bug where RBF interpolator returned NaN when a Jacobian is requested at a point in the training set.
*Fixed a bug where finite difference of a group would error out if there was a pass-by-object param or unknown in any sub-component.
*All metamodel training data is now params.
*Bogus unit conversion msg when inputs that share a source have different units.
*Fixed bug where the size of src_indices could exceed the size of the source.

January 19, 2016
by Justin Gray
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 Justin Gray
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 Justin Gray
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 Justin Gray
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 Justin Gray
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 Justin Gray
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.

Fork me on GitHub