/POEMs

Proposals for OpenMDAO Enhancements

Primary LanguageHTMLApache License 2.0Apache-2.0

OpenMDAO POEM Process

The POEM process is the official mechanism for proposing, discussing, revising, and ultimately approving or rejecting all changes to the OpenMDAO project which effect its user interaction. The process involves writing, reading, and discussing documents called POEMs (proposal for OpenMDAO enhancement).

This process governs all API changes, feature additions, and feature removals to the OpenMDAO project. It is also recursive because it governs any changes to itself.

The process serves two primary and equally important purposes:

  1. Announce all changes to the user interface of OpenMDAO to users of the framework before they are added to the main repository

  2. Provide a mechanism for external users to propose changes to the user interface for OpenMDAO

How does it work?

The rules are described in the POEM_000.md document in this repository. The OpenMDAO POEMs repository (i.e. this repo) contains a full record of all POEMs submitted, starting November 1st, 2019. Both the core development team and external users participate, and input on any POEM is welcome from any user at any time.

How can I keep up to date on POEMs?

All POEM activity is managed within this repository, via PRs and comments to those PRs. The best way to track that activity is to star and watch this repository. That way, github's built in notification system to get emails when things are changing. Github has lots of great docs on this!

List of POEMs

POEM ID Title Author Status
000 POEM Purpose and Guidelines Justin S. Gray integrated
001 Units update for better astrodynamics support Rob Falck integrated
002 New capability for user to send a termination signal to an OpenMDAO process so that SNOPT in pyoptsparse can terminate cleanly. Ken Moore integrated
003 Allowing addition of I/O during Configure Anil Yildirim; Justin Gray; Rob Falck integrated
004 Creating Interpolant Class For 1D Splines Danny Kilkenny integrated
005 An OpenMDAO Plugin System Bret Naylor integrated
006 Re-work the user experience in the N2 diagram Herb Schilling integrated
007 String Compatibility for ExternalCodeComp and ExternalCodeImplicitComp Command Options Danny Kilkenny integrated
008 Nonlinear Solver Refactor Danny Kilkenny integrated
009 setup/configure API Changes Rob Falck rejected
010 add argument recordable to options.declare Rob Falck integrated
011 Expand problem recording options Rob Falck; Herb Schilling integrated
012 Give the user the option to select the LAPACK driver for use in the SVD used in KrigingSurrogate Herb Schilling integrated
013 Unit conversion enhancements Rob Falck integrated
014 Removal of XDSM viewer to be replaced by third-party plugin Rob Falck integrated
015 Automatic creation of IndepVarComp outputs for all unconnected inputs Justin Gray integrated
016 Linear algebra components can perform multiple calculations. Rob Falck integrated
017 User can specify units when adding design variables, constraints, and objectives. Ken Moore integrated
018 indices and src_indices can contain slices Ken Moore integrated
019 Random Vectors in Directional Derivatives Kevin Jacobson integrated
020 KSComp option to automatically add corresponding constraint Rob Falck integrated
021 _post_configure moved to public API Rob Falck rejected
022 POEM 022: Shape inputs/outputs by connection or copy from another component variable Josh Anibal integrated
023 Remove reconfigure code from the current code base Bret Naylor integrated
024 Calculating ExecComp Jacobian with symbolic derivatives Péter Onódi rejected
025 allow GA to seek pareto frontier Ken Moore integrated
026 Remove support for factorial function in ExecComp Steve Ryan integrated
027 Approximation flag and state tracking John Jasa integrated
028 check_partials input warnings Eliot Aretskin-Hariton rejected
029 Retrieval of IO Variable Metadata Bret Naylor integrated
030 User Accessible Complex Step Justin Gray integrated
031 Improved Aitken Relaxation justinsgray integrated
032 Detailed Driver Scaling Report Justin Gray integrated
033 Linear Constraints in Check Totals justinsgray integrated
034 Units library function to simplify units. Ken Moore rejected
035 More generalized behavior in promoted inputs. Rob Falck integrated
036 Serialization of Kriging training weights dakror integrated
037 Give list_problem_vars the option to output unscaled variables. optional real name integrated
038 Raise an error if a user declares a sub-jacobian to have a value of zero. Kenneth-T-Moore accepted
039 User Function Registration in ExecComp Justin Gray integrated
040 Integration with IPython notebooks robfalck integrated
041 Add expressions to ExecComp after instantiation robfalck integrated
042 DOEDriver different number of levels for different DVs. Péter Onódi integrated
043 No src_indices warning when both components are distributed Mark Leader rejected
044 OpenMDAO-Specific Warnings Rob Falck integrated
045 Promote-as change robfalck rejected
046 Definition of serial and distributed variables justinsgray, naylor-b, joanibal, anilyildirim, kejacobson integrated
047 Component I/O independance from Problem Object Andrew Ellis integrated
048 Semistructured Training Data for MetaModel justinsgray integrated
049 Removal of matrix-matrix derivative APIs justinsgray, naylor-b integrated
050 Fix val/value inconsistency in the API robfalck integrated
051 Modifications to relative step sizing in finite difference Ken Moore integrated
052 Function based component definition for OpenMDAO justinsgray, Ben Margolis, Kenny Lyons rejected
053 Make src_indices behave in the same way as indices applied to a normal numpy array naylor-b, swryan integrated
054 Specifying source array as flat or non-flat when setting src_indices or dv or constraint indices naylor-b integrated
055 Min/Max Variable Print Option for Arrays Andrew Ellis integrated
056 Function based API usable by OpenMDAO and others Bret Naylor integrated
057 OpenMDAO function based components Bret Naylor integrated
058 Fixed grid interpolation methods Kenneth-T-Moore integrated
059 Unitless And Percentage Based Units Andrew Ellis integrated
060 Reports robfalck integrated
061 The openmdao:allow_desvar tag @robfalck integrated
062 Stricter Option Naming @naylor-b integrated
063 Allow multiple responses on a single variable @robfalck integrated
064 Simple Caching for Matrix-Free Derivative APIs jsgray rejected
065 Add a 'proc_group' option to add_subsystem @naylor-b integrated
066 Adopt NEP29 @robfalck integrated
067 Add a method to Vector to compute a hash. @naylor-b integrated
068 Nonlinear Solver System Output Caching Andrew Lamkin integrated
069 Declare residual names for implicit components Josh Anibal integrated
070 Inputs report @robfalck integrated
071 POEM_071 - Change ExecComp to use declare_coloring Rob Falck integrated
072 Add ability to modify bounds and scaling of implicit outputs and optimizer variables after creation. Rob Falck integrated
073 Add ability for DOEDriver to compute and record total derivatives. Tucker Babcock integrated
074 Suggest variables close in name on failed connection attempt Josh Anibal integrated
075 Convention for distributed/serial variables and when to allreduce Kevin Jacobson integrated
076 Directional total derivative checks Kevin Jacobson integrated
077 Derivative checks with multiple step sizes Kevin Jacobson integrated
078 Add ability to filter inputs to only those that are connected to IndepVarComp. Rob Falck integrated
079 Raise exception if the initial design point exceeds bounds. Rob Falck integrated
080 Add an activation function to the standard component set. Rob Falck rejected
081 Add Submodel Component to standard component set. Nate Steffen integrated
082 Add ability to easily retrieve all independent variables within a Problem. Rob Falck integrated
083 Specifying order when adding a subsystem Rob Falck rejected
084 Add a set of jax functions and documentation on using jax with OpenMDAO. Rob Falck integrated
085 Export view_connections to csv Carl Recine integrated
086 Top-level setting of system options. Rob Falck integrated
087 Expand functionality of dynamic shaping. Bret Naylor integrated
088 User-configurable load_case functionality. Rob Falck integrated
089 Optimization efficiency improvements (relevance reduction revisited). Rob Falck integrated
090 Auto ordering of Group subsystems. Bret Naylor integrated
091 Eliminate combined jacobian-based and matrix free capability in a single component. Bret Naylor integrated
092 User-defined function hook for pre-processing option set. Ken Moore integrated
093 Linear solution caching Shugo Kaneko integrated
099 InputResidsComp Rob Falck integrated