Skip to content

Releases: OpenModelica/OpenModelica

OpenModelica 1.23.0

20 May 13:28
0519250
Compare
Choose a tag to compare
OpenModelica 1.23.0 Pre-release
Pre-release

Version 1.23.0 of OpenModelica has many improvements and bug fixes compared to 1.22.3 (1.22.4 for Linux), plus some new useful features, in particular regarding the OMEdit GUI and the FMI export feature.

Proper rounding of decimal numbers

Real parameter values returned by the front-end when flattening models often had bad rounding, such as 499.99999999999 instead of 500 or 1.00000000000012 instead of 1.0. Also, bad rounding used to plague parameter values with unit conversions driven by displayUnit attributes in the OMEdit GUI. In some cases, very long decimal outputs such as 1200000000.0 were displayed, instead of the more easily understood 1.2e9.

This issue was tackled systematically and resolved thanks to rounding algorithms based on the Ryu library, see #8865 for a comprehensive list of all improvements. Now all Real values numbers that are expected to be represented as round decimal numbers are actually represented as such; additionally, decimal vs. scientific format is chosen according to heuristic rules, to ensure good readability by humans in all cases, without significant loss of precision.

OpenModelica Compiler (OMC)

The new front end has been further improved with about 25 issues solved, here is a complete list.

The front end can now provide clean BaseModelica flat output from the command line; experimental array-preserving flat output can also be obtained. See the User's Guide for more information.

The draft MLS 3.7 Sect. 7.1 now explicitly requires annotations at the end of a class to be carried over when extending model; this includes experiment annotations. This behaviour is now implemented in the frontend, so it is no longer necessary to re-add the experiment annotation when extending a class, see #10386.

Most of the work on the backend is still focused on developing the new backend; about 10 fixes were made to the current backend. Two notable improvements are worth mentioning:

  • the non-standard annotation(tearingSelect) was deprecated and replaced by annotation(__OpenModelica_tearingSelect)
  • according to the Modelica Language Specification Sect. 8.6 parameters with no binding and no explicitly set value now cause the compilation to fail, see #10386. This may cause some old models to fail during compilation, but it is the required behaviour by the specification, to guard against parameters that are accidentally left without a meaningful value. The fix is to provide the modifier for the parameters without bindings, or to add an explicit start = 0 modifier in the library model.

About 10 bug fixes were made to the C runtime.

Graphical Editor OMEdit

The quality of the OMEdit GUI was further improved over the previous version 1.22.3, with about 55 issues fixed, see the
complete list. Most of them are bug fixes, but there are also some new features:

  • Duplicate class feature now works correctly also when the class is duplicated in another scope #5346
  • Top-level model parameters can now be edited with the GUI #4408
  • Further optimization of the editor's response time when deleting components and adding/deleting connections #11920
  • All rounding issues in the GUI resolved #8865

FMI export

14 issues were addressed regarding FMI export, further improving the quality of that feature. We are currently testing over 80 libraries from the Package Manager collection by exporting FMI-CS FMUs with OMC and simulating them with CVODE using the FMPy tool; test reports can be reached from this page.

List of tickets closed in 1.23.0

List of closed tickets in 1.23.0. Over 140 issues were resolved.

Next releases

The next release 1.24.0 is planned to be released in Q4 2024. It should include further improvements to the GUI such as parameter editing in hierarchically structured model, restructured Simulation Setup dialog, Rename feature with refactoring, faster editing of large models in OMEdit, etc. Further improvements in FMI 2.0.x export are also planned.

Download it from: https://openmodelica.org

Full Changelog: v1.22.3...v1.23.0

OpenModelica 1.22.3

11 Mar 07:57
Compare
Choose a tag to compare

This patch release contains several fixes and improvements to the OMEdit GUI.
See the full list of the closed issues here.

OpenModelica 1.22.2

21 Feb 08:42
b20dd5b
Compare
Choose a tag to compare

This patch release contains several fixes and improvements, mostly to the OMEdit GUI

  • a critical bug when handling connections that causes OMEdit to crash when editing them was fixed
  • moving components around in diagrams in OMEdit is now much faster and responsive
  • several fixes to diagram visualization and parameter inputs in OMEdit
  • much faster FMU code export thanks to the clang compiler and parallel C source code compilation

A full list of closed issues can be found here.

OpenModelica 1.22.1

13 Dec 10:48
c949af0
Compare
Choose a tag to compare

This patch release contains several improvements to the OMEdit GUI:

  • It is now possible to handle 'each' and 'final' prefixes in parameter input dialogs
  • It is possible to close the Message Browser window if one wants to maximize the real estate for result plots. Only the status bar is displayed also over multiple re-runs or re-compilations, unless warnings or errors pop up
  • Some fixes to visualization glitches and OMEdit unexpected crashes

For the full list of improvements, see here.

OpenModelica 1.22.0

08 Nov 15:14
2997235
Compare
Choose a tag to compare

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

OpenModelica 1.21.0

18 Apr 09:52
ba00884
Compare
Choose a tag to compare

The 1.21.0 release of OpenModelica doesn't contain any major new feature, but it contains many improvements and bugfixes that significantly improved the quality of the software with respect to the previous 1.20.0 release.

The new single-step gbode solver has been further developed and can now be used as a serious alternative to the more established dassl, ida, and cvode solvers. A full-fledged GUI for its configuration is still not available and will be added in future versions. Currently, the method defaults to esdirk4, a general-purpose 4-th order implicit method. Other methods can be set with the -gbm simulation flag, and each method now automatically selects the best advanced options. All solvers use variable step-size with error control by default, but they can be turned to fixed time step by adding the -gbctrl=const simulation flag.

A completely overhauled architecture for the interaction between the OMEdit GUI and the underlying OMC compiler is now experimentally available in 1.21.0. It relies on the new frontend to instantiate the classes being edited, rather than trying to re-do it from scratch on the GUI side. This architecture provides faster user interaction and allowed to fix many shortcomings of the GUI, e.g. lack of proper support for replaceable classes with parameters, conditional connectors and parameter dialog activation depending on parameters, etc.

OpenModelica Compiler (OMC)

The new front end has been further improved with about 20 bug fixes, here is a complete list. Major development work went into supporting the development and fine-tuning a new API for the the OMEdit GUI, see tickets.

Several fixes were made to the current backend, although development work is now mostly focused on the new backend, which includes array-preserving code generation features. The new backend is still not capable of running most models from mainstream libraries. However, it is starting to show interesting results on selected large-scale test models, with size up to a million equations. These models can now be handled with reasonable amounts of time required to build and compile the simulation code. The new backend can be activated with the --newBackend compiler flag.

Several bug fixes were made to the code generation process. The new CMake-based build infrastructure has been further developed and is now nearly complete, including support for FMI generation.

Many bug fixes and improvements were made to the C runtime, mostly regarding the new gbode solver. This solver is fast reaching production quality and can now be used as a serious alternative to the mainstream dassl, ida, and cvode solvers; it also replaces deprecated obsolete solvers such as impeuler, trapezoid, imprungekutta, etc., that will be removed in future versions.

Graphical Editor OMEdit

About 60 issues were successfully addressed in the OMEdit graphical editor. Most notably, the performance of the GUI support for replaceable classes has been improved dramatically; therefore that option, which is required to use Modelica.Media and Modelica.Fluid, is no longer optional but always active by default.

About half of the addressed issues concern the development and fine tuning of the new instance-based interface, that is going to be much faster than the existing one and to address long-standing issues such as supporting conditional connectors and replaceable classes with parameter modifiers.

This new interface can be activated with the Tools | Options | General | Enable instance API option. It is mostly in place now, but it still requires further testing and debugging before it can replace the existing one for good. If you want to experiment with it, we suggest you to use the latest 1.22.0-dev nightly build version, that incorporates the latest developments and bug fixes. Please try that one before reporting issues on the bug tracker.

Scripting interfaces

The OMMatlab interface was significantly improved in this version, see tickets. In particular, it is now possible to linearize a system in many different conditions without recompiling it each time, which is useful model-based control design.

List of tickets closed in 1.21.0

List of closed tickets in 1.21.0. Over 130 issues were resolved.

Next releases

The next release 1.22.0 is planned to be release in Q4 2023. It will include the new instance-based editing in OMEdit, featuring support of conditional connectors, parameter-depending dialog annotation, hierarchical editing of models, and faster rendering of complex diagrams.

Download it from: https://openmodelica.org

Full Changelog: v1.20.0...v1.21.0

OpenModelica 1.20.0

02 Feb 11:14
d42a0e2
Compare
Choose a tag to compare

The first most notable feature of this release is the automatic installation of the Modelica Standard Library (MSL), which is now fully integrated with the Package Manager. Every time any tool of the OpenModelica suite (e.g. OMEdit, OMNotebook, OMShell, etc.) attempts to load a version of the MSL, it checks if it has already been installed in the user's set of system libraries, which is handled by the Package Manager and is located in the user's .openmodelica directory. If that directory is empty, either because of a fresh install, or because it has been deleted, then the MSL is automatically installed in the user's system libraries from cached zip files in the OpenModelica installation directory; in fact, both MSL 3.2.3 (which is backwards compatible with 3.2.2 and 3.2.1) and 4.0.0 are installed, so that any library created during the last ten years can run out of the box.

This automatic installation does not require any Internet connection, so it also works behind corporate firewalls or in situations with limited available bandwidth. This solution uses the same package manager that is also used to install other system libraries, contrary to the solution
implemented in versions 1.18.0 and 1.19.x, which used two different directories in the MODELICAPATH, one for the package manager and one for the preinstalled MSL, leading to slightly confusing duplicate installations of MSL.

OMEdit loads MSL 4.0.0 by default in the Libraries Browswer. However, if one then loads a package using MSL 3.2.3, it is possible to unload MSL 4.0.0 and load MSL 3.2.3 just with a click of a button.

The second most notable feature is that a new general purpose ODE solver, named gbode, was introduced. This solver is a fully configurable
single-step solver, supporting many different integration methods, both explicit and implicit, using either fixed time step or variable time
step with error control, handling event detection and dense output for accurate resampling over a regular time grid. Implemented methods
include Euler, Heun, Dormand-Prince, Gauss, Radau, Lobatto, Adams-Moulton, Fehlberg, SDIRK, ESDIRK, etc. Adaptive multi-rate
algorithms are also available within this solver, although this feature is still experimental. This solver replaces previously available solvers like euler, impeuler, trapezoid, etc., which are now deprecated and will be removed in future versions of the tool.

The solver is currently only available via simulation flags, which can be set in OMEdit under Simulation Setup | Simulation Flags | Additional Simulation Flags (optional). It will be supported via drop-down menus in future releases. See the User's Guide under Solving Modelica Models for further information.

OpenModelica Compiler (OMC)

The new front end has been further improved, with over a dozen bug fixes.

Some issues were fixed in the current backend, although most of the development work is now focused on the new backend, which can be optionally activated with the --newBackend compiler flag, and will become the default choice in a future release.

Regarding code generation several issues were fixed, including one that affected the ExternalMedia library, which is now fully supported by OpenModelica.

C Runtime

Besides introducing the new gbode solver, some other issues were fixed. The support for external input from CSV files was improved and better documented. See here for a full list of closed issues.

Graphical Editor OMEdit

Besides improved support of the Modelica Standard Library with the package manager, over a dozen issues were fixed, see the full list.

FMI

Main highlights: - The FMI import feature allows to import an FMU as a block in a Modelica model. This feature was broken in versions 1.18.0
and 1.19.0, it is now functional again, with some limitations, see the User's Guide for further information. Support for this feature must be explicitly activated with the Enable FMU Import checkbox in the Tools | Options | Simulation | Translation Flags tab of OMEdit. - Support of FMI code generation using CMake, see the documentation in the User's Guide.

  • Bug fixes.

See here for a full list of closed FMI issues.

List of tickets closed in 1.20.0

List of closed tickets in 1.20.0. Over 80 issues were resolved.

Next releases

A 1.20.1 bugfix version may be released if critical bugs are identified and resolved before January 2023. The next release 1.21.0 is planned to be beta-released in February 2023, and released in March 2023; it should include a completely restructured handling of model editing in OMEdit, including long awaited-for features like support of conditional connectors, parameter-depending dialog annotation, and faster rendering of complex diagrams.

Download it from: https://openmodelica.org

Full Changelog: v1.19.0...v1.20.0

OpenModelica 1.19.2

08 Jul 22:40
17fa8eb
Compare
Choose a tag to compare

Version 1.19.2 is a bugfix release, where some critical bugs that were present in 1.19.0 got fixed.

The most important one is #8772:
parameter dependencies were not handled correctly in some cases, leading to some parameters being wrongly evaluated to zero, which also impacted multibody system animations, see #8938.

Some further remaining issues with directory names containing accented letters were fixed in #8777. A problem with the delay operator was also fixed, see #9116.

Here is the complete list of bug fixes in release 1.19.2.

Download it from: https://www.openmodelica.org

OpenModelica 1.19.0

31 May 12:41
Compare
Choose a tag to compare

OpenModelica Compiler (OMC)

The new front end has been further improved, with over 40 bug fixes.

Several issues were fixed in the backend, most notably problems affecting event generation and issues involving algorithms and arrays, which led to a wrong diagnosis of under-determined system of equations. Overall, over 15 issues were addressed.

Regarding code generation 5 issues were fixed, mostly concerning corner cases that involved arrays, record, and slicing operators.

C Runtime

Remaining issues concerning Clock variables were resolved; so, starting from this version, the synchronous features of the Modelica language, in particular the Modelica.Clocked library, are now fully supported. The configuration of runtime and external libraries on Windows was substantially improved. A bug was fixed in daeMode that prevented correct event handling in state-less models, which now run correctly. Overall about 20 issues were fixed.

Graphical Editor OMEdit

The most important new feature in 1.19.0 is the fully integrated package management and conversion script support in the GUI. We suggest you to read the Package Management section of the user's guide for an introduction to the basic concepts.

The package management functionality is now available under the File | Manage Libraries menu. It is possible to install supported (or experimental) open-source libraries from the internet, and upgrade them when newer versions are released; all the required dependencies are installed automatically. The Windows installer by default also installs the basic versions of the Modelica standard library, as a fallback in case internet connection is not available, e.g. in corporate environments. All other libraries are no longer supplied with the installer and must be installed via the package manager. Off-line use of the package manager will be improved in future versions.

When right-clicking on a library in the libraries browser, a new context menu item "Convert to Newer versions of used libraries" is available. This allows you to convert your library to newer versions of its dependencies, once you have installed them. If the newer version of the used library is backwards compatible with the previous one, this just changes the uses annotation, otherwise, the conversion script is run automatically. The most common use of this feature is to upgrade models or libraries that you developed using the Modelica library 3.2.3 to use Modelica 4.0.0. We recommend that you use this functionality on your own libraries only; for libraries that you download from the internet, it is best to wait for the developers to perform the conversion and release new versions of their libraries, that you can then get through the package manager.

Support of the dynamicSelect annotation has been improved, although it is still not 100% functional in all cases.

The plotting of results has been significantly improved; appropriate prefixes are now automatically selected to avoid getting very large or very small numbers on the Y-axis.

Overall, over 40 issues were fixed since the previous 1.18.1 release.

Work is on going to provide full support of parameter-depending conditional connectors, parameter-depending dialog annotations, and editing of parameter modifiers in redeclared classes. Implementing these features requires a fundamental re-design of the way OMEdit interacts with the OMC environment to get the required information. These features should become available, at least experimentally, in the future 1.20.0 release.

FMI Export

- Introduced support for interpolation in CS-FMUs by setting "canInterpolateInputs=true" in modeldescription.xml - Introduced support for getting partial derivatives in ME-FMUs by setting "providesDirectionalDerivative=true" - Lots of improvements to OpenModelica FMU export configurations (black box as well as source code FMUs). - Added source-code nonlinear solver CMINPACK to source-code FMUs

  • Basic source-code FMU compilation with CMake; cross compilation with Docker now available on Windows.

About 10 issues fixed.

OMSimulator

- Support of importing and exporting Units and UnitDefinitions to SSP files. - Support for getting directional derivative in OMSimulator using both Symbolic Jacobians and numerical approximation using KINSOL solver.

List of tickets closed in 1.19.0

List of closed tickets in 1.19.0. About 180 issues were resolved.

Next releases

A 1.19.1 bugfix version may be released if critical bugs are identified and resolved before July 2022. The next release 1.20.0 is planned to be beta-released in July 2022, and release in September 2022. On-going work to further improve the level of support of the Buildings library should ensure a significant improvement in the level of support of most Modelica libraries in that upcoming release.

Download it from: https://www.openmodelica.org

OpenModelica 1.18.0

04 Sep 12:43
49be4fa
Compare
Choose a tag to compare

OpenModelica Compiler (OMC)

The development of the new front end continued further, after becoming the default in the previous version. The compiler can now successfully flatten 100% of the models of the Modelica Standard Library 3.2.3 and 4.0.0 that have an experiment annotation. It can also successfully flatten 100% of many other open-source Modelica libraries, such as Chemical, HelmholtzMedia, IBPSA, ModelicaTest, OpenIPSL, PNLib, PhotoVoltaics, PlanarMechanics, PowerGrids, PowerSysPro, PowerSystems, SystemDynamics, TAeZoSysPro, ThermofluidStream. The success ratio when flattening the models of the Buildings library is currently at 96%, on-going work aims at reaching 100% by the end of 2021. Overall, 20 front end issues were fixed since the last official release.

Regarding symbolic analysis and code generation, the handling of index reduction in non-trivial cases where the state constraints are spread among many equations has been improved by the introduction of the ASCC algorithm, coupled with the existing reshuffle loop algorithm; this had beneficial effects in particular on three-phase circuit models. Some bugs in the generation of symbolic jacobians for nonlinear systems were also fixed. Overall, 11 issues were resolved.

C Runtime

Full support of the spatialDistribution() operator was introduced, including accurate handling of events. Several low-level issues were resolved, involving memory leaks and segmentation faults.

C++ Runtime

The C++ runtime was improved to handle more Modelica language features that are used by the new frontend. The previously release OMC 1.17 had worse coverage for the C++ runtime since it used the new frontend by default without supporting it in the C++ code generator. With these improvements, the coverage of libraries improved significantly, also compared to previous versions of OpenModelica with the old frontend, since the new frontend handles more models correctly than the old one, see the regression report, column "Compilation".

Graphical Editor OMEdit

Several new features were added to the plotting functionality of OMEdit, in particular: - a "Fit to Diagram" button was added close to the zoom buttons to automatically adjust the extent of a model diagram to its actual content; - the sign of plotted variables can now be toggled by means of the context menu on the variable legends, to compare directly variables that are opposite in sign; - appropriate multiples of SI units (e.g. mW, W, kW, MW, GW for power) are automatically selected for display based on the order of magnitude of the variable, to avoid very large or very small numbers on the plot axes; - the rendering of plots and parameter windows on large and/or high-resolution screens was further improved.

Several bugs were also fixed; in total, 27 issues were addressed.

FMI Support and OMSimulator

FMI 2.0 export was further improved. OMSimulator development continues, over 30 issues were fixed.

Data reconciliation

The operation of power plants requires a good quality of the process data obtained through sensor measurements. Unfortunately, sensor measurements such as flow rates, temperatures, and pressures are subject to errors that lead to uncertainties in the assessment of the system's state. Operational margins are therefore set to take into account uncertainties on the system's state. Their effect is to decrease production because safety regulations put stringent limits on the thermal power of the plants. It is therefore important to compute the best estimates of the measurement uncertainties in order to increase power production by reducing operational margins as much as possible while still preserving system safety.

The best estimates can be obtained by combining data statistics with a knowledge a priori of the system in the form of a physical model. Data reconciliation is a technique that has been conceived in the process industry for that purpose. It is fully described in the VDI 2048 standard for the control and quality improvement of process data and their uncertainties by means of correction calculation for operation and acceptance tests".

An extension of Modelica to perform data reconciliation on Modelica models was developed together with EDF and is now fully implemented and integrated with the OMEdit GUI. The basic ideas are explained in this presentation, and a section DataReconciliation was added to the User's Guide, explaing how to use it step-by-step.

List of tickets closed in 1.18.0

We are currently transitioning from the old trac issue tracker to the GitHub issue tracker, which is fully integrated with the GitHub revision control and continuous integration framework that we use for the development of OpenModelica. Eventually, the old trac tickets will be migrated onto the GitHub issue tracker. For the time being, old tickets are still managed on trac, while new ones are on GitHub. Overall, about 80 issues were addressed successfully since the 1.17.0 release.

Next releases

A 1.18.1 bugfix release is planned later this year with some critical bug fixes that have been identified and partially addressed, but need some more testing. The next release 1.19.0 is planned to be released in February 2022, close to the OpenModelica Workshop and Annual Meeting.

Version 1.19.0 is expected to contain a GUI integrated in OMEdit for library handling and conversions. It is also planned to successfully run 100% or close to 100% of the Buildings 7.0.1 library. This will be a major milestone, given the broad extent and complexity of that library.

Download it from: https://www.openmodelica.org