D.9.1 Contributors to the Modelica Language, Version 3.0
The Modelica 3.0 specification was newly structured and written by Peter
Fritzson using text from the previous specification and also adding new
explanatory text. This draft specification was afterwards improved by
members of the Modelica Association.
The concept of balanced models (which is the major change of the
language) was developed by Hans Olsson with contributions from Martin
Otter, Hilding Elmqvist, and Sven Erik Mattsson. The original
inspiration was from Mike Tiller.
This goes together with making the type interface and sub-typing cleaner
and stricter (the new chapter 6). This concept fixes flaws of the
language that have been pointed out by Sébastien Furic.
The graphical annotations have been redesigned and improved by Daniel
Hedberg, Erik Areskog, Dag Brück, and Hilding Elmqvist with
contributions from Peter Aronsson and Gerd Kurzbach.
The following members of the Modelica Association participated at design
meetings and contributed to the Modelica 3.0 specification:
Peter Aronsson, MathCore AB, Linköping, Sweden
Bernhard Bachmann , University of Applied Sciences, Bielefeld, Germany
John Batteh, Ford Motor Company, Dearborn, MI, U.S.A.
David Broman, Linköping University, Linköping, Sweden
Peter Bunus, Linköping University, Linköping, Sweden
Dag Brück, Dynasim, Lund, Sweden
Francesco Casella, Politecnico di Milano, Milano, Italy
Christoph Clauß, Fraunhofer Institute for Integrated Circuits, Dresden,
Thomas Doumenc, Dassault Systèmes, Paris, France
Jonas Eborn, Modelon AB, Lund, Sweden
Hilding Elmqvist, Dynasim, Lund, Sweden
Rüdiger Franke, ABB Corporate Research, Ladenburg, Germany
Peter Fritzson, Linköping University, Sweden
Sebastien Furic, Imagine, Roanne, France
Anton Haumer, Technical Consulting & Electrical Engineering,
Daniel Hedberg, MathCore AB, Linköping, Sweden
Carsten Heinrich, Institut für Luft- und Kältetechnik gGmbH, Dresden,
Olof Johansson, Linköping University, Linköping, Sweden
Christian Kral, arsenal research, Vienna, Austria
Roland Kossel, TLK Thermo GmbH, Braunschweig, Germany
Gerd Kurzbach, ITI GmbH, Dresden, Germany
Christian Kral, arsenal research, Vienna, Austria
Kilian Link, Siemens AB, Erlangen, Germany
José Diaz Lopez, Dynasim AB, Lund, Sweden
Karin Lund, Fachhochschule Ulm, Germany
Håkan Lundvall, Linköping University, Linköping, Sweden
Ludwig Marvan, VA TECH ELIN EBG Elektronik GmbH & Co, Vienna, Austria
Sven Erik Mattsson, Dynasim, Lund, Sweden
Jakob Mauss, Qtronic GmbH, Berlin, Germany
Chuck Newman, Ford Motor Company, Dearborn, MI, U.S.A.
Kaj Nyström, Linköping University, Linköping, Sweden
Hans Olsson, Dynasim, Lund, Sweden
Martin Otter, German Aerospace Center, Oberpfaffenhofen, Germany
Markus Plainer, Arsenal Research, Vienna, Austria
Adrian Pop, Linköping University, Linköping, Sweden
Katrin Prölß, Technical University Hamburg-Harburg, Germany
Christoph Richter, Technical University of Braunschweig, Braunschweig,
Anders Sandholm, Linköping University, Linköping, Sweden
Christian Schweiger, German Aerospace Center, Oberpfaffenhofen, Germany
Michael Tiller, Ford Motor Company/Emmeskay, Dearborn, MI, U.S.A
Hubertus Tummescheit, Modelon AB, Lund, Sweden
Hans-Jürg Wiesmann, ABB Switzerland Ltd.,Corporate Research, Baden,
D.9.2 Main Changes in Modelica 3.0
Modelica 3.0 is a “clean-up” version of the Modelica language. For
example, the specification is newly written to define the language in a
better way, errors in the language are fixed, unclear or undefined items
are more precisely described, and mild restrictions are introduced into
the language in order that a Modelica translator can much earlier and
more precisely detect modeling errors. Automated conversion of models to
Modelica 3.0 is possible. Furthermore, a tool can potentially handle
much larger models.
This Modelica version is for the first time (slightly) not backward
compatible to previous versions (all previous versions have been
backward compatible with exception of tiny issues as newly introduced
keywords). As a result, e.g., “unsafe” models of previous Modelica
versions are no longer valid. It is expected that Modelica tool vendors
provide (semi-) automatic mechanisms for conversion of models and
The following main changes in Modelica 3.0 are not backwards compatible:
Restrictions to connectors (see section 9.3): For each non-partial
connector class the number of flow variables shall be equal to the
number of variables that are neither parameter, constant, input,
output, nor flow. For example, the following connector is illegal in
flow Real r3;
In a non-partial model or block, all non-connector inputs of model or block components must have binding equations.
A component declared with the inner or outer prefix shall not be of a
class having top-level public connectors containing inputs.
Modifiers for components shall only contain redeclarations of
replaceable elements and binding equations for parameters, constants,
inputs and variables having a default binding equation.
All non-partial model and block classes must be locally balanced (see section 4.7). This means that the local number of unknowns equals the local equation size. Together with other restrictions, this leads to the strong property that a simulation model is always globally balanced (i.e., the number of unknowns is equal to the number of equations).
Prefixes input, output, inner, outer, flow are not allowed in a record
The built-in operators abs and sign do no longer
generate events but are implicitly defined with a noEvent
The constraining-clause of a replaceable class or component is changed from keyword extends to the new keyword constrainedby (since the extends keyword could lead to the wrong impression that the redeclared model must inherit from the constraining class, but this is not the case).
The isPresent construct, which was not implemented in tools, was removed.
The following changes in the Modelica 3.0 graphical annotations are also not backwards compatible:
Changed the definition of icon placement (record Transformation), so
that the actual coordinates of the icon of a model instance are
defined in the class where the instance is defined and no longer in
the class where the icon is defined (this was a flaw in the Modelica
2.0 graphical annotations).
Improved the definition of the rotation of a graphical primitive.
Change fontSize unit from DrawingUnit to pt (since this is the usual
unit for fonts).
The following main changes in Modelica 3.0 are backwards compatible:
New element-wise operators: .+, .-, .*, ./, .^.
A third argument AssertionLevel to built-in function assert() in order that warnings can optionally be defined.
New annotations section 18.1:
In this section it is precisely defined how vendor-specific
annotations should be marked. Any tool shall save files with all
standard annotations (defined in chapter 18) and all vendor-specific
annotations intact. The advantage is that a typo in non-vendor
annotations can now be detected and marked as an error, whereas in
previous versions this had to be ignored.
New annotation in section 18.2:
preferredView = info, diagram or text
New annotation annotation 18.2:
StartTime, StopTime, Tolerance to define important parameters of an experiment setup.
New annotations for graphical annotations in section 18.6:
New attribute Smooth = enumeration(None, Bezier) for graphical objects
and connection lines (Bezier defines a Bezier spline).
New attribute visible in record Placement allows making a graphical
annotation invisible (e.g. after inheritance).
New attributes startAngle, endAngle in record ellipse to define part
of an ellipse.
New layer specific annotations IconMap and DiagramMap for extends.
New attribute horizontalAlignment to the Text record to define the horizontal alignment of text.
New annotations for schematic animation and interactive user input in
DynamicSelect to modify annotation literals by the actual values of variables.
OnMouseDownSetBoolean, OnMouseUpSetBoolean, OnMouseMoveXSetReal,
OnMouseMoveYSetReal, OnMouseDownEditReal, OnMouseDownEditString to
interactively set the variable of a class during simulation.
The following errors have been fixed in the Modelica specification:
Syntax rule for a function call (e.g., according to the grammar in
Modelica 2.2 a function call of the form
Modelica.Math.Matrices.eig() was invalid because the function name
could not have ‘.’. However, all Modelica tools supported the
desired “full Modelica name” also for function calls).