Breaking changes:
- change input args to `forward` method of models from arrays to dictionaries,
add `forward_with_array` method that works like the old `forward`
- models no longer need to define the names of `con_outputs`, as these can now
be dynamically defined by simulations in `sim_config.con_output_names`
- outputs can now be automatically collected from submodels. For example,
the `power` output from submodel `vehicle.engine` will become
`vehicle.engine.power` at top level output.
- To make use of the automatic collection of outputs, the user must:
1) call all submodels with `call_submodel` method
2) construct the outputs of the parent model using the `make_outputs_dict`
method.
- the name of the states derivative `states_dot` now follow the same name
as states, so no need to add `_dot` to the name.
- using new `LoggingConfig` for logging settings, simplify logging
configuration, and also fix logging bug: now if we're logging convergence
history, the last iteration will always be logged
Other notable changes:
- change scaling of decision variables from giving IPOPT to handle to
manual scaling of the NLP functions ourselves. This appears to work better
in certain situations. (eg, when we have energy in J, in the order of 1e7).
**Full Changelog**: https://github.com/numagic/lumos/compare/v0.0.2rc3...v0.0.2rc4