forked from OpenMDAO/OpenMDAO1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release-notes.txt
486 lines (403 loc) · 24.8 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
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
OpenMDAO1 Version 1.7.4 Alpha Release Notes
April 2, 2018
*Getting OpenMDAO1@master into release
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.7.3 Alpha Release Notes
November 16, 2016
Features:
* New tutorial added for Hohmann Transfer.
Bug fixes:
* Fixed a problem in the setup.py that caused the model viewer to not be fully packaged into 1.7.2.
---------------------------------------------------------------------------------------------------
OpenMDAO Version 1.7.2 Alpha Release Notes
September 19, 2016
Features:
* solver iprint updates:
+added a '-1' level to disable printing failures
+added arg 'recursion' to print_all_convergence
+When in a preconditioner, prepend the solver nametype with PRECON:
* Added pre_setup and post_setup methods to Group
* User can specify an `active_tol` on constraints, which prevents the solving of
the adjoint if the constraint value is below that given value.
* Added a tagging system to the documentation.
* Added n^2 diagram generator from `view_model` function
and included documentation examples and instructions on its use.
* User can now pick KSP algorithm type (there are many options, e.g. richardson, gmres)
* User can call `assemble_jacobian` on any group if they want to see the actual partial derivatives jacobian
* default step size when using Complex Step is now 1e-30
* Case recording updates:
+Derivatives were added to case recording.
+Added case recording version to metadata
+Changed case recording heirarchy so that top level is 'Metadata' and 'Cases'.
+Deprecated: CsvRecorder and DumpRecorder
Bug fixes:
* Fixed Brent solver to work with latest scipy.
* Made sure user can no longer use 'low' and 'high' instead of 'lower' and 'upper'.
* Fixed problem where example tests were failing when using nosetests.
* Fixed a bug where too many feedback vars were created when breaking connections.
---------------------------------------------------------------------------------------------------
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')
---------------------------------------------------------------------------------------------------
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.
Bug 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.
---------------------------------------------------------------------------------------------------
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.
---------------------------------------------------------------------------------------------------
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