Welcome to ModelicaSpecification’s documentation!¶
- Introduction
- Lexical Structure
- Classes, Predefined Types, and Declarations
- Scoping, Name Lookup, and Flattening
- Interface or Type Relationships
- Inheritance, Modification, and Redeclaration
- Equations
- Connectors and Connections
- Arrays
- Statements and Algorithm Sections
- Functions
- Packages
- Overloaded Operators
- Stream Connectors
- Synchronous Language Elements
- State Machines
- Annotations
- Vendor-Specific Annotations
- Annotations for Documentation
- Annotations for Code Generation
- Annotations for Simulation Experiments
- Annotation for single use of class
- Annotations for Graphical Objects
- Annotations for the Graphical User Interface
- Annotations for Version Handling
- Annotations for Access Control to Protect Intellectual Property
- Annotations for Functions
- Annotation Choices for Modifications and Redeclarations
- Annotation for External Libraries and Include Files
- The Modelica Standard Library
- Glossary
- Modelica Concrete Syntax
- Modelica DAE Representation
- Derivation of Stream Equations
- Modelica Revision History
- Literature
Copyright © 1998-2017, 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 . All contributors worked voluntarily and without compensation.
Preface¶
Modelica is a freely available, object-oriented language for modeling of large, complex, and heterogeneous physical systems. From a user’s point of view, models are described by schematics, also called object diagrams. Examples are shown in the next figure:
A schematic consists of connected components, like a resistor, or a hydraulic cylinder. A component has “connectors” (often also called “ports”) that describe the interaction possibilities, e.g., an electrical pin, a mechanical flange, or an input signal. By drawing connection lines between connectors a physical system or block diagram model is constructed. Internally a component is defined by another schematic or on “bottom” level, by an equation based description of the model in Modelica syntax.
The Modelica language is a textual description to define all parts of a model and to structure model components in libraries, called packages. An appropriate Modelica simulation environment is needed to graphically edit and browse a Modelica model (by interpreting the information defining a Modelica model) and to perform model simulations and other analysis. Information about such environments is available at www.modelica.org/tools. Basically, all Modelica language elements are mapped to differential, algebraic and discrete equations. There are no language elements to describe directly partial differential equations, although some types of discretized partial differential equations can be reasonably defined, e.g., based on the finite volume method and there are Modelica libraries to import results of finite-element programs.
This document defines the details of the Modelica language. It is not intended to learn the Modelica language with this text. There are better alternatives, such as the Modelica books referenced at www.modelica.org/publications. This specification is used by computer scientist to implement a Modelica translator and by modelers who want to understand the exact details of a particular language element.
The Modelica language has been developed since 1996. This document describes version 3.4 of the Modelica language. A complete summary is available in .