Modelica is an open-source, object-oriented and equation-based language, used to model complex physical systems involving, for example, mechanics, electronics, hydraulics and controls.

Why is this language born?
  • To model the complex and dynamical behavior of multi-domain systems.
  • To model systems whose physical behavior can be described by differential, algebraic and/or discrete equations (i.e. no partial differential equations can be represented, thus excluding FEM and CFD applications).

Modelica-based Simulation Environment

Dymola is a Modelica-based simulation environment, fully compatible with all its libraries. This means that Dymola is capable of solving and simulating any model developed using the Modelica language.

Modelica Language Features
  • Mathematical notation for matrices and arrays which can be made not only by numbers, but even by models.
  • Replaceable and modifiable models: different versions of the same model can be replaced or switched among with ease.
  • Ability to represent systems characterised by discontinuities, like electrical switches or mechanical frictions.
  • Ability to introduce mathematical functions with a variable number of inputs/outputs, the instructions of which are executed in a procedural way.
  • External functions written in C/C++, FORTRAN and Java can be called from within a Modelica model.
  • Models can be organised in hierarchical packages and libraries.
Object-Oriented Language

Modelica is an object–oriented modeling language where:

  • Every icon can represent a specific physical component (e.g. electrical resistance, pump, etc.).
  • A connection line can represent a real physical coupling (e.g. electrical cables, fluid or heat flows, etc.).
  • A component can be made by several connected sub-systems (each one structured in hierarchical way) and/or described by equations.
  • Once set the solver, the high-level Modelica description is translated automatically into the corresponding C language code in order to solve the resulting set of algebraic differential equations.
  • For each physical domain or application field, specific connectors are provided; their type can be either causal (whose corresponding information flow direction is well defined) or acausal (whose corresponding information flow direction is not known a priori, but only run-time).
  • Each type of connector is compatible only with itself, as it is defined starting from the physical quantities relating to the specific physical/engineering domain it belongs to.
  • The connection of acausal connectors belonging to the same domain produces two types of equations, an equality one between the potential variables and a balance one between the flow variables.
  • Models consist of a textual representation (the actual Modelica code) and, optionally, of the corresponding graphical representation in terms of a block diagram where components are connected with each other.
  • Each graphical block is representative of an instance of a class/model.
  • The instances of classes/models can be modified (e.g. in terms of the value of its characteristic parameters) and renamed when declared.