Modelica è un linguaggio ad oggetti open source basato su equazioni per la modellazione di sistemi fisici complessi contenenti, ad esempio, meccanica, elettronica, idraulica, termica e controlli.
Perché è nato il linguaggio modelica?
- Per la modellazione del comportamento dinamico di complessi sistemi multidominio.
- I modelli sono descritti da equazioni differenziali, algebriche e discrete.
- Nessuna modellazione tramite equazioni differenziali alle derivate parziali, cioé no FEM (metodi agli elementi finiti) e no CFD (Computational Fluid Dynamics), ma riutilizzo dei loro risultati.
Ambiente di Simulazione basato su Modelica
Dymola è un ambiente di simulazione basato su Modelica e completamente compatibile con tutte le sue librerie. Questo significa che Dymola è in grado di risolvere e simulare correttamente qualsiasi modello sviluppato con Modelica.
Caratteristiche del linguaggio Modelica
- Notazione matematica per matrici ed array non solo composti da numeri, ma anche da modelli.
- Sottomodelli rimpiazzabili e modificabili: ad esempio è possibile cambiare velocemente tra versioni diverse di una trasmissione in un modello di veicolo.
- Costrutti per definire sistemi discontinui e variabili, come ad esempio switch o attriti.
- Funzioni matematiche con un numero variabile di input / output. La parte procedurale di Modelica è usata come linguaggio di scripting.
- Chiamata di funzioni scritte in C, Fortran e Java all’interno di Modelica.
- Potente concetto di libreria (I compilatori dispongono di informazioni sufficienti per la ricerca automatica all’interno di modelli , la gestione della versione, aggiornamento dei modelli, …).
Linguaggio di modellazione ad oggetti
Modelica è un linguaggio di modellazione ad oggetti in cui:
- Ogni icona rappresenta un componente fisico (resistenza elettrica, pompa, …).
- Una linea di connessione rappresenta il reale accoppiamento fisico (cavo, flusso di fluido, flusso di calore, …).
- Un componente può essere costituito da sottosistemi connessi (= struttura gerarchica) e/o è descritto da equazioni.
- Attraverso algoritmi di manipolazione simbolica, la descrizione Modelica di alto livelloviene tradotta in un set di equazioni differenziali algebriche.
- Per ogni dominio vengono quindi definiti i relativi connettori causali e/o acausali (bidirezionali).
- Ogni tipologia di connettori è compatibile solo con se stessa, in quanto è definita a partire dalle grandezze fisiche relative al dominio ingeristico di appartenenza.
- Per ogni dominio vengono inoltre definite le leggi fisiche di bilancio relative ad ogni generico componente.
- I modelli sono costituiti da una rappresentazione sotto forma di codice sorgente Modelica e dalla relativa rappresentazione grafica sotto forma di schema a blocchi.
- Ogni blocco grafico rappresenta un’istanza di una classe definita all’esterno del modello.
- Le istanze di classi esterne possono venire modificate e rinominate in fase di dichiarazione.
- Le connessioni fra blocchi non sono altro che equazioni.
Hardware in the loop
Il codice sorgente Modelica di ogni modello può essere facilmente suddiviso in unità logiche e quindi partizionato definendo differenti task e subtask. Una volta definite tali unità logiche il tool di sviluppo basato su Modelica (Dymola) sarà in grado di suddividere automaticamente le equazioni e di generare codice per ogni target fisico, grazie alla struttura della sintassi Modelica.