Skip to content

OpenModelica 1.22.0

Compare
Choose a tag to compare
@casella casella released this 08 Nov 15:14
· 480 commits to master since this release
2997235

The main highlight of the 1.22.0 release of OpenModelica is a significant improvement of the OMEdit GUI, made possible by the new instance-based architecture for the interaction between the OMEdit GUI and the underlying OMC compiler, which is now activated by default; see below for further details. Many bugs were also fixed, leading to a much improved user experience, compared to the previous 1.21.0 release.

OpenModelica Compiler (OMC)

The new front end has been further improved with about 25 bug fixes, here is a complete list. The conversion from Integer to Enumeration, which was introduced in Modelica 3.4, is now supported by OMC.

Most of the work on the backend is currently focused on developing the new backend; a few fixes were made to the current backend. The --tearingMethod=noTearing was deprecated, because it breaks models with discrete variables involved in algebraic loops, --tearingMethod=minimalTearing should be used instead. A few bug fixes were also made to the code generation process.

Several bug fixes and improvements were made to the C runtime. A new simulation flag -lv_system was added, to enable logging of solver behaviour for selected systems; together with -lv_time, this allows to avoid huge log files when debugging solver issues taking place at some point in time with some specific system of equations.

Several improvements were made to the C++ runtime:

  • support for ExternalMedia library (fix record inputs of external functions and bindings of records to scalar variables)
  • support for ThermofluidStream library (fix array dimensions of created temporary variables)
  • preliminary support for DAE mode
  • fixed issue with start attributes for iteration variables of implicit nonlinear systems, which were previously lost

Graphical Editor OMEdit

As mentioned above, the new instance-based infrastructure for model editing is now firmly in place and is activated by default. This supports long awaited-for features, namely conditional connectors and parameter input dialogs activated by boolean variables, replaceable classes and models with parameter editing. It also improves the support of the DynamicSelect annotation. In case of remaining issues, it is still possible to de-activate the new infrastructure and fall back to the old one, using the checkbox Tools | Options | General | Optional Features | Disable new instance-based graphical editing of models.

Connection handling and rendering is also much improved:

  • it is no longer possible to make connections between incompatible connectors (that previously only failed later on when trying to compile the model);
  • connection lines are drawn with a white background that allows to reveal bogus connections that were previously hidden by the component itself (e.g., inadvertently short-circuiting a resistor or capacitor). It also show clearly that two apparently crossing connection lines have no actual connection to each other;
  • connection lines spanning a connection set with more than one connector are now rendered with dot-like branching points, increasing readability.

Over 70 issues were successfully addressed in the OMEdit graphical editor. About 35 issues concerned the debugging and fine-tuning of the new instance-based infrastructure.

Scripting interfaces

Improvement made to the OMMatlab concening the efficiency of the linearize() API function call were ported to OMPython and OMJulia. The updated implementation avoids recompiling the model from scratch every time when multiple calls to linearize() are made on the same model, resulting in dramatic performance improvement.

FMI support

Further development work was carried out to support source-code FMI export across all operating systems using CMAKE, see closed tickets, in addition to the old workflow that was based on GNU makefiles and only worked in POSIX environments. This functionality, documented here, is now mostly in place, though it requires more testing to become fully usable. To get the latest developments in FMI export support, consider trying the 1.23.0-dev nightly builds.

A new flag --nonStandardExposeLocalIOs was introduced to export input/output connectors of sub-models, like sources, sinks and sensors. The default value 0 expose the top-level public inputs and outputs, the value 1 also exposes public inputs and outputs of components, the value 2 also exposes public inputs and outputs of components within components, and so on.

List of tickets closed in 1.22.0

List of closed tickets in 1.22.0. 140 issues were resolved.

Next releases

The next release 1.23.0 is planned to be release in Q2 2024. It should include further improvements to the GUI such as parameter editing in hiearchically structured model, fully functional Duplicate feature, restructured Simulation Setup dialog, etc. Further improvements in FMI 2.0.x export are also planned.

Download it from: https://openmodelica.org

Full Changelog: v1.21.0...v1.22.0