Skip to content. | Skip to navigation

Personal tools
You are here: Home News & Event items Modelica 3.2 Revision 2 Specification Released

Modelica 3.2 Revision 2 Specification Released

The Modelica language specification 3.2 Revision 2 was released on July 30, 2013. The specification text is available here in pdf format and here with revision marks with respect to 3.2 revision 1.

This is a "clean-up" version of the Modelica specification, in order that:

  • all Modelica tool vendors interpret the standard in the same way (so ambiguities, inconsistencies and issues are fixed), and
  • the next version of the Modelica Standard Library (version 3.2.1, released in August 2013), will be fully compliant to this specification. Previously, the Modelica Standard Library had used some undocumented features, as well as vendor specific annotations. All this should be clarified with this new version of the specification.

For the Modelica users this means that starting with the next version of the Modelica Standard Library, version 3.2.1, the compatibility between Modelica tool vendors will be much better and it will be easier to utilize different Modelica tools on your models.

From "Appendix E" of the 3.2 Revision 2 specification


Main Changes in Modelica 3.2 Revision 2


The Modelica language was slightly adapted (in a backwards compatible way – except as listed below) in order that the Modelica Standard Library (MSL) version 3.2.1 is fully compliant to Modelica Language 3.2 Revision 2. This required the following improvements:

  • Possible to call a function through an instance name, section 5.3.2 
    (used in MSL 3.2 to compute the gravity acceleration in Modelica.Mechanics.MultiBody.World; this feature was also introduced in Modelica Language version 3.3 in May 2012).
  • New built-in operator Connections.rooted(A.R) to inquire whether an overdetermined type or record instance A.R in a call to Connections.branch(A.R,B.R) is closer to the root of the spanning tree than B.R, section 9.4.1 (used in MSL 3.2 to avoid algebraic loops in several components such as in Modelica.Mechanics.MultiBody.Joints.Revolute).
  • Several new annotations where vendor-specific variants were used in MSL 3.2; sections 7.3.4, 17.2, 17.3, 17.4, 17.5.4, and 17.6. (annotations checkbox, choicesAllMatching, DocumentationClass, InlineAfterIndexReduction, normallyConstant, Interval, Text (for connect), absoluteValue, defaultConnectionStructurallyInconsistent, obsolete, colorSelector, loadSelector, saveSelector).
  • Specified that Evaluate can also occur in types, since this is used in MSL and important for performance; section 17.3. Ticket #925.
  • Macros in graphical text items, section Ticket #659.
  • Initial equations are discrete – used in MSL for initialization of pre-variables, section 3.8.3. Ticket #853.
  • Updated noDerivative to be consistent with MSL, section 12.7.1. This is an incompatibility – but the other variant was not used. Ticket #1035.
  • Clarified handling of component with missingInnerMessage; section 17.6. Ticket #891.
  • Clarified definition of protected; section 4.1. Ticket #975, #1123.


 In addition several issues with the specification text were corrected:

  • Clarified an unclear sequence regarding functions as input arguments in section Ticket #1182.
  • Clarified allowed binding equations for redeclarations, section 4.7. Ticket #1111.
  • Unspecified enumerations now have defined semantics, section Ticket #834.
  • Transitively non-Replaceable, section 6.2.1. Ticket #854.
  • Modification text improved to not refer to inherited class, section 7.2. Ticket #1042.
  • Precedence for modifiers on constraining-clause clarified, section 7.3.2. Ticket #1128.
  • Clarified arrays for constraining type, 7.3.2. Ticket #1148.
  • Avoid all forms of connections depending on connections, section 8.3.3. Ticket #828.
  • Clarified equation count for if-equations, section 8.3.4. Ticket #888.
  • Complete definition of  reinit, section 8.3.6. Ticket #578. This forbids reinit in algorithms – but it was previously not well-defined.
  • Clarified initializaton of pre(vc) for a non-discrete (that is continuous-time) Real variable vc, section 8.6. Ticket #1195.
  • Only one way of handling arrays of connectors is now defined, Chapter 9. Ticket #757.
  • Example now use correct sine-source, section 9.1. Ticket #750.
  • Restricted parameters in connectors, section 9.3. Ticket #768.
  • Clarified type restrictions for some operators, section 10.3.4, 10.3.5. Ticket #622.
  • Clarified that if at least one array element is used on the left hand side of the assignment operator in an algorithm section, then the complete array is initialized in this section, section 11.1.2. Ticket #1190.
  • Record constructor corrected to not refer to keywords that should not occur, section 12.6. Ticket #907.
  • External storage of classes, sections, and 17.7.3. Tickets #1019, #892, #887.
  • Added example and explanation for inheritance restriction on operator record; section 14.6. Ticket #1065.
  • Contents of Chapter 16 was removed; this change was already decided for Modelica 3.3 and no tool had released an implementation of this feature. Ticket #1015.
  • Corrected license-example in section 17.8.2. Ticket #1127.
  • Grammar was internally restructured for short_class_definition, section 4.5,B.2.2. Ticket #1140.
Document Actions