Modelica

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le langage de modélisation orienté objet Modelica est destiné à permettre une modélisation pratique de systèmes complexes, par exemple, des systèmes comportant des composantes mécaniques, électriques, hydraulique, thermique, … Son usage se rapproche des langages VHDL-AMS et Verilog-A (tous deux issus de l'industrie électronique) dans le sens où il décrit un système sous la forme d'un ensemble d'équations. Le simulateur associé a pour tâche de résoudre le système d'équations à chaque pas temporel.

Il a cependant une vocation plus généraliste que ses concurrents et bénéficie des avantages de son orientation objet (héritage des caractéristiques d'un modèle par un autre, typage flexible). Par contre, son usage reste pour l'instant assez limité en électronique, domaine de prédilection du VHDL-AMS ou du Verilog-A.

Le langage, les bibliothèques et certains outils de simulation de Modelica sont libres, prêts à l'emploi et sont issus d'une demande industrielle. Le développement et la promotion de Modelica est organisée par l'association à but non lucratif Modelica Association.

Son développement a commencé en 2000.

Objectif et principes[modifier | modifier le code]

Le but du langage est de décrire l'évolution de systèmes dynamiques. les modèles sont décrits par des équations différentielles — mais pas des équations aux dérivées partielles —, des équations algébriques et des équations discrètes.

Le langage dispose d'un environnement de simulation graphique (édition de schémas fonctionnels. Une icône représente un composant physique (résisteur, pompe, …) ; pour le logiciel, c'est une équation, ou bien un ensemble de sous-composants connectés. Les connexions représentent un couplage entre les blocs (fil électrique, canalisation, …).

L'interface permet d'exporter la simulation en code C.

Applications[modifier | modifier le code]

Modelica est mise en œuvre dans des logiciels commerciaux :

et dans des logiciels libres :

Liens externes[modifier | modifier le code]