Nella prima parte abbiamo visto l’implementazione in codice Modelica di un semplice modello di una massa a cui viene applicata una forza costante:

Forza costante applicata ad una massa

Forza costante applicata ad una massa

model MassaForza "Massa spinta da una forza costante"
 parameter Real m=2 "Massa del blocco";
 parameter Real f=6 "Forza applicata";
 Real s "Posizione del blocco";
 Real v "Velocità del bloco";
 annotation(Diagram(Rectangle(extent=)));
 equation
 v = der(s);
 m*der(v) = f;
 end MassaForza;

In questo seconda parte andremo a spiegare più nel dettaglio le varie parti di codice. La keyword “equation” serve a separare la parte iniziale di dichiarazione delle variabili, dalla sezione relativa alle equazioni. Nella sezione relativa alle equazioni troveremo le equazioni differenziali e algebriche relative alle variabili che sono state dichiarate. In Modelica è OBBLIGATORIO dichiarare ogni variabile prima che questa possa venire utilizzata. E’ importante comprendere che in Modelica all’interno della sezione “equation” vengono definite equazioni e non assegnazioni come quelle definite in linguaggi procedurali quali C, C++ o Fortran.
La forma generale:

equazione1 = equazione2;

definisce una uguaglianza matematica fra le espressioni a destra e sinistra dell’uguale. Ogni equazione ricordiamo che deve necessariamente terminare con un punto e virgola “;”.
Andiamo ora a parlare dell’operatore “der(…)“, esso è un operatore standard Modelica che definisce una derivata rispetto al tempo della variabile definita all’interno dell’operatore, i.e. der(v)= dv/dt. Nella sintassi Modelica questo è l’unico operatore esistente per il calcolo delle derivate prime. Per andare a definire derivate di ordine superiore è quindi necessario andare ad introdurre delle variabili ausiliarie come nell’esempio ” v = der (s)”. Le espressioni in Modelica come si può vedere vengono scritte sostanzialmente in una notazione matematica standard. In Dymola è inoltre possibile andare a visualizzare in notazione matematica standard le equazioni scritte:

Notazione matematica

Visualizzazione delle equazioni in notazione matematica in Dymola

Le operazioni di base in Modelica sono naturalmente “+ – * / ( )”. Quindi “a1″ e “a2″ risultano essere assolutamente equivalenti:

a1 = (b-2)*(b+4);
a2 = b^2+2*b-8;

Ogni modello può contenere delle annotazioni opzionali che conterranno informazioni che saranno utilizzate dal tool di modellazione (in questo caso Dymola) in fase di modellazione e/o simulazione. Ad esempio all’interno delle notazioni sono contenute le informazioni relative alla documentazione testuale allegata ad ogni modello, all’icona del blocco ed al layout del menu di parametrizzazione del modello.

Modelica supporta le seguenti tipologie di variabili:

Modelica Descrizione Esempio
Real Numero Floating point (solitamente composto da 16 cifre significative) 1.0, -3.3456, 1e-14, 1.5e5
Integer Numero intero 3, 5 ,-8
Boolean Numero logico false, true
String Stringa di caratteri “ciao mondo”
Enumeration Enumerazione type Extrapolation= enumeration (HoldLastPoint, LastTwoPoints, Periodic);

Nell’esempio che abbiamo visto abbiamo utilizzato solamente variabili di tipo Real, ora vediamo un altro esempio in cui andremo a definire ed utilizzare tutte le tipologie di variabili che abbiamo appena visto:

model TipologieDiVariabili "Modello che fa uso di diverse tipologie di variabili"
 parameter Real a = 2.8 "Parametro reale";
 parameter Integer b = 6 "Parametro intero";
 type Extrapolation = enumeration(
      HoldLastPoint,
      LastTwoPoints,
      Periodic);
 parameter Extrapolation c "Enumerazione";
 String d =  "Stringa";
 parameter Boolean e = true "Parametro booleano";

 Real l "Parametro reale";
 Integer f "Parametro intero";
 String g;
 Boolean h "Parametro booleano";
 Extrapolation i "Enumerazione";

equation 
i = Extrapolation.HoldLastPoint;
a = l + 3.5;
b = f - 1;
d = g;
e = h;
 end TipologieDiVariabili;