Modelica è un linguaggio ad oggetti open source che si basa su equazioni e viene impiegato per la modellazione di sistemi fisici complessi che coinvolgono, ad esempio, aspetti meccanici, elettronici, idraulici, termici e controllistici.
Perché è nato il linguaggio Modelica?
- Per la modellazione del comportamento dinamico di sistemi complessi multidominio.
- Per la modellazione di sistemi il cui comportamento fisico sia descritto da equazioni differenziali, algebriche e discrete (no uso di equazioni differenziali alle derivate parziali, cioè impieghi in ambito FEM o CFD).
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 secondo il linguaggio Modelica.
Caratteristiche del linguaggio Modelica
- Notazione matematica per dichiarare matrici ed array non solo composti da numeri, ma anche da modelli.
- Sottomodelli rimpiazzabili e modificabili: versioni diverse di uno stesso tipo di modello possono essere sostituite con rapidità e semplicità.
- Possibilità di descrivere sistemi caratterizzati da discontinuità, come ad esempio switch elettrici o attriti meccanici.
- Possibilità di introdurre funzioni matematiche con un numero variabile di input/output il cui contenuto viene eseguito in maniera procedurale.
- Possibilità di richiamare all’interno di un modello Modelica funzioni esterne scritte in C/C++, FORTRAN e Java.
- Possibilità di impacchettare i modelli in packages e librerie.
Linguaggio di modellazione ad oggetti
Modelica è un linguaggio di modellazione ad oggetti in cui:
- Ogni icona può rappresentare un componente fisico (es. resistenza elettrica, pompa, ecc.).
- Una linea di connessione può rappresentare un reale accoppiamento fisico (cavi elettrici, flusso di fluido, di calore, ecc.).
- Un componente può essere costituito da sottosistemi connessi (ciascuno con la propria struttura gerarchica) e/o essere descritto da equazioni.
- Attraverso un solutore simbolico, la descrizione Modelica di alto livello viene tradotta in linguaggio C in modo da risolvere il set di equazioni differenziali algebriche risultante.
- Per ogni dominio fisico o campo di applicazione sono previsti specifici connettori che possono essere o di tipo causale (in cui il flusso dell’informazione delle corrispondenti connessioni è ben definito) o di tipo acausale (in cui il flusso dell’informazione delle corrispondenti connessioni non è noto a priori, ma solo in fase di risoluzione delle equazioni).
- Ogni tipologia di connettore è compatibile solo con se stessa, in quanto è definita a partire dalle grandezze fisiche relative al dominio fisico/ingegneristico di appartenenza.
- La connessione di connettori acausali appartenenti allo stesso dominio produce due tipologie di equazioni, una di uguaglianza tra le variabili potenziali e una di bilancio tra le variabili flusso.
- I modelli sono costituiti da una rappresentazione testuale (il codice Modelica vero e proprio) e, opzionalmente, dalla corrispondente rappresentazione grafica in termini di diagramma a blocchi in cui i componenti sono collegati tra loro.
- Ogni blocco grafico è rappresentativo di un’istanza di una classe/modello.
- Le istanze di classi/modelli possono essere modificate (ad esempio in termini del valore dei parametri caratteristici) e rinominate quando dichiarate.