Improved function inlining
Manual selection of iteration variables in tearing algorithm - Hand Guided Tearing (HGT)
Support for external objects
Simulation of Co-simulation FMUs in Python
Improved compiler execution speed
Improved compiler memory efficiency
Support for MSL CombiTables
Improvements to the CasADi-based collocation optimization algorithm, including support for non-fixed time horizons and supplying nominal trajectories for scaling purposes
Updated to MSL 3.2
The following compliance improvements have been made:
Support for external objects (classes extending the predefined partial class ExternalObject)
Support for the same component being added from more than one extends clause.
Many bug fixes, notably concerning inheritance and redeclares.
There is now support for MSL CombiTables, both 1D and 2D. The table can be either read from file or explicitly supplied as a parameter matrix.
The tearing algorithm in the compiler can now be influenced by user selected residuals and iteration variables, in order to make such selections explicit, e.g., to exploit physical insight in the choice of iteration variables. The selections are made by means of vendor specific annotations and can be done at the component level and at the system level.
Improved support for inlining of functions. Notably a new in-lining mode has been added, where functions that can be inlined without introducing additional variables to the model. The inlining algorithm has also been expanded to handle more situations.
The compilation times for large simulation models has been reduced by more than two orders of magnitudes. Also, the memory required to compile large models has been decreased by two orders of magnitude. As a consequence, larger models up to 100.000 equations can be comfortably compiled on a standard computer.
The possibility to compile in a separate process from the Python interface has been added. This is enabled with an argument to
compile_fmux which is
False by default. It is also possible to pass arguments to the JVM. This enables, among other things, users on 64 bit Windows to use a 64 bit JRE (Java Runtime Environment) for compiling a model.
Support for simulation of co-simulation FMUs following the FMI version 1.0 has been implemented and follows the same work-flow as for loading and simulating an model exchange FMU, i.e:
from pyfmi import load_fmu model = load_fmu("CS_Model.fmu") res = model.simulate(final_time=1.0) ...
The following features have been added to the CasADi-based collocation algorithm
Support for non-fixed time horizons, allowing the formulation of, for example, minimum-time problems
Possibility to supply nominal trajectories based on simulation results, which are used to compute (possibly time-variant) scaling factors. This makes it possible to conveniently obtain good scaling for all variables in a model.
Possibility to use more advanced interpolation of optimized inputs based on collocation polynomials, instead of linear interpolation, providing higher accuracy when simulating a system using optimized inputs
Setting of nominal attributes from Python in loaded models