Modelica® – A Unified Object-Oriented Language for Systems Modeling
Language Specification
Version 3.5
February 18, 2021
Modelica Association
Abstract
This document defines the Modelica11 1 Modelica is a registered trademark of the Modelica Association. language, version 3.5, which is developed by the Modelica Association, a non-profit organization with seat in Linköping, Sweden. Modelica is a freely available, object-oriented language for modeling of large, complex, and heterogeneous systems. It is suited for multi-domain modeling, for example, mechatronic models in robotics, automotive and aerospace applications involving mechanical, electrical, hydraulic control and state machine subsystems, process oriented applications and generation and distribution of electric power. Models in Modelica are mathematically described by differential, algebraic and discrete equations. No particular variable needs to be solved for manually. A Modelica tool will have enough information to decide that automatically. Modelica is designed such that available, specialized algorithms can be utilized to enable efficient handling of large models having more than one hundred thousand equations. Modelica is suited and used for hardware-in-the-loop simulations and for embedded control systems. More information is available at https://www.modelica.org.
Copyright © 1998-2020, Modelica Association (https://www.modelica.org)
All rights reserved. Reproduction or use of editorial or pictorial content is permitted, i.e., this document can be freely distributed especially electronically, provided the copyright notice and these conditions are retained. No patent liability is assumed with respect to the use of information contained herein. While every precaution has been taken in the preparation of this document no responsibility for errors or omissions is assumed.
The contributors to this and to previous versions of this document are listed in appendix D. All contributors worked voluntarily and without compensation.
Contents
- Preface
- 1 Introduction
- 2 Lexical Structure
- 3 Operators and Expressions
- 4 Classes, Predefined Types, and Declarations
- 5 Scoping, Name Lookup, and Flattening
- 6 Interface or Type Relationships
- 7 Inheritance, Modification, and Redeclaration
- 8 Equations
- 9 Connectors and Connections
- 10 Arrays
- 11 Statements and Algorithm Sections
- 12 Functions
- 13 Packages
- 14 Overloaded Operators
- 15 Stream Connectors
-
16 Synchronous Language Elements
- 16.1 Rationale for Clocked Semantics
- 16.2 Definitions
- 16.3 Clock Constructors
- 16.4 Clocked State Variables
- 16.5 Partitioning Operators
- 16.6 Clocked When-Clause
- 16.7 Clock Partitioning
- 16.8 Continuous-Time Equations in Clocked Partitions
- 16.9 Initialization of Clocked Partitions
- 16.10 Other Operators
- 16.11 Semantics
- 17 State Machines
-
18 Annotations
- 18.1 Vendor-Specific Annotations
- 18.2 Annotations for Documentation
- 18.3 Annotations for Code Generation
- 18.4 Annotations for Simulations
- 18.5 Annotation for single use of class
- 18.6 Annotations for Graphical Objects
- 18.7 Annotations for the Graphical User Interface
- 18.8 Annotations for Version Handling
- 18.9 Annotations for Access Control to Protect Intellectual Property
- 18.10 Annotations for Functions
- 18.11 Annotation Choices for Modifications and Redeclarations
- 18.12 Annotation for External Libraries and Include Files
- 19 Unit Expressions
- 20 The Modelica Standard Library
- A Modelica Concrete Syntax
- B Modelica DAE Representation
- C Derivation of Stream Equations
- D Modelica Revision History