forked from OpenMDAO/OpenMDAO1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release-notes.txt
349 lines (286 loc) · 17.2 KB
/
release-notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
OpenMDAO Version 1.6.3 Alpha Release Notes
March 17, 2016
Features:
* User can call alloc_jacobian() to pre-allocate jacobian with correct sizes for everything.
* User can get more compact check_partials: user can limit the component to check by name, can ask for a more compact print out.
* Setup error messages are now all delayed until the end of setup.
Bug fixes:
* Fixed bug in FD check_partials that gave partials off by 8 orders of magnitude and a negative sign.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.6.2 Alpha Release Notes
March 14, 2016
Features:
* Added ability to limit FD'd state variables.
* group.list_unit_conversions() method replaces the old unit conversion output from check_setup.
Bug fixes:
* run_once now calls apply_nonlinear at the end.
* Bug fix for relevance reduction when using precoditioner with gmres.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.6.1 Alpha Release Notes
March 12, 2016
Features
* Problem has run_once method, which (surprisingly!) runs through a model one time.
* Problem.check_partial_derivatives() and Problem.check_total_derivatives() call run_once() automatically, if model has not been run.
* Improved error msg when you have multiple connected parameters with no ultimate src, but different units or initial values.
* Internal refactor of relevance reduction in the LinearGaussSeidel solver.
* Added Implicit Components tutorials.
* Added a secondary validation option for check_partial_derivatives via fd_options['extra_check_partials_form'], useful to compare complex-step with FD.
BugFixes
* Bug fix for petscKSP in parallel.
* Integer values for scalar and adder are supported.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.6.0 Alpha Release Notes
March 1, 2016
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.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.5.0 Alpha Release Notes
January 19, 2016
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.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.4.1 Alpha Release Notes
November 24, 2015
Features
* User now gets an error if passing "promotes" keyword arg into any system. Should help reduce
confusion when making models.
* Newton Solver will respect state variable bounds.
Bugfixes
* The original check to see if a linear solver with maxiter>1 was needed was too strict
in some cases where a component had states. If a component defines its own solve_linear method
then an iterative solver isn't needed, even if the component has states.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.4.0 Alpha Release Notes
November 18, 2015
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.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.3.0 Alpha Release Notes
November 4, 2015
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.
Features
* Added some explanatory animations to the Basics section of the User Guide.
* Users can now finite difference in parallel for derivatives.
* Improved warning/error system for connected input problems.
* Added ability to capture variable metadata to recorders.
* User can now set fd mode to complex_step for fd_jacobian method on component.
* Added new option to recorders to specify to not save Params, Unknowns, Resids.
Bugfixes
* Fixed a bug in sparse Jacobian so that it no longer computes nor creates knowably zero entries.
* Fixed some documentation errors in the recorder tutorial.
* Fixed a bug wherein unknown values were not updated when using Python 3.x
* Created a more descriptive error message for a user trying to access a variable
unavailable in the current process.
* Components now required to properly initialize their outputs.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.2.0 Alpha Release Notes
October 15, 2015
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 StackOverflow tag if you
experience any difficulties.
Features
* Users can solve for derivatives with a LinGS solver
* check_partial_derivatives now loops over all variables in a component.
* Updated many docstrings and the generate_docstring function to include options.
Bugfixes
* Fixed precedence for fd settings in check_partial_derivatives.
* Fixed small bug in setup's reporting of unit conversions.
* Fixed bug regarding Jacobian size disagreement in brachistochrone_slsqp problem.
* Fixed a bug with scaler and adder in pyoptsparse_driver.
* Fixed a bug in Jacobian sizing
* Fix so the Jacobian returned to pyoptsparse reflects sparsity of constraints with
respect to the design vars.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.1.1 Alpha Release Notes
September 22, 2015
* Fixed a problem with a missing dependency for our documentation build on openmdao.readthedocs.org
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.1.0 Alpha Release Notes
September 22, 2015
API Changes
* Renamed 'ParamComp' to 'IndepVarComp,'' because it’s really just a component that
supplies one or more independent variables as outputs, and it has no parameters. And
overuse of term 'param' may have been causing confusion.
* 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.'
* ConstraintComp is going away, but user can add constraints directly to an optimizer
via driver.add_constraint(‘<var_name>’, lower=xxx, upper=xxx, equals=xxxx)
Features
* Multiple documentation changes and fixes, including:
- an example for running check_partial_derivatives,
- an MPI parallelization tutorial,
- ExecComp example that shows how to handle array vars,
- better auto-documentation of our components/drivers (now including Options).
* User can solve for derivatives with a Petsc KSP solver.
* User can now create a recorder using SQLlite as the db w/shelve API.
* GMRES linear solver now uses solve_linear method for preconditioning.
* Added iprint output to all the linear and nonlinear solvers.
* Convert CADRE problem for use with the Alpha, including Linear Gauss-Seidel.
* Added support for distributed components.
* Added Surrogate Generators
* Further work on parallel, incuding:
- Got parallel working with petsc 3.6.
- Got parallel derivs in adjoint when voi are under parallel goups
- Get gradient calculation working for constraints that live in (or below) parallel systems under MPI.
Bugfixes:
* Fixed bug where derivative calculation breaks when a parameter sub_slice is added to a driver.
* pyoptsparse now works with Python 3.4.x
* Made dump recorder work in parallel for CADRE. Also, updated drivers so that all obj/cons are gathered by the time we record.
* When calling group.subsystems with local=True, execution order of systems is now preserved.
* User now gets a clearer error about petscImpl if they try to run under MPI without the petsc_impl
* ExecComp now raises an exception if any of the kwargs passed to init are not variables found in the ExecComp equations.
* Driver.set_param no longer ignores 'indices' metadata.
* Promotion of a non-existent variable now provides full path name in the error message.
* Fixed a bug in reverse mode when using apply_linear
* Now skips tests (instead of failing) in test_mpi_derivs.py if petsc4py is not installed on host system.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.0.5 Alpha Release Notes
August 12, 2015
* Forgot to update __version__ <:)
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.0.4 Alhpa Release Notes
August 12, 2015
Features:
* Speed up Setup() a lot!
* ExternalCode component added, with documentation added to User Guide.
* MetaModel component docs examples
* User can connect a single element from a src array to a target scalar float variable.
* imports made simpler, now from top-level packages (e.g. core, components, etc.)
* MPI parallelization tutorial added to User Guide.
* Distributed component tutorial added to User Guide.
* check_partial_derivatives example added to User Guide.
* Changed filenames and option names for internal consistency
* refactored the variable access from Problem so all vars are now
referenced via promoted names
Bug Fixes:
*Fixed bug where there was a key error when finite-differencing a Problem with
params buried in sub-Groups.
* Fixed a bug where connections to promoted vars with src_indices were broken.
* pyoptsparse now works with Python3
* fixed a key error when finite differencing across groups with param comps
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.0.3 Alpha Release Notes
July 24, 2015
* Another version issue, this time with the docs. <:)
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.0.2 Alpha Release Notes
July 24, 2015
* Forgot to update __version__ <:)
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.0.1 Alpha Release Notes
July 24, 2015
* Auto-ordering of children of a Group (no longer running in instantiation order)
* Manual ordering of children of a Group is possible via the set_order method on Group
* MetaModel component and Kriging surrogate model were added
* Docs hosted on read-the-docs now
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.0 Alpha Release Notes
July 20, 2015
Initial Release
Differences from previous code base:
* 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 any inefficiencies
* Parallel execution (and parallel adjoint derivatives) with an MPI distributed-memory data passing system
Install: http://openmdao.org/docs/getting-started/install.html