Skip to content

If-Bedingungen (PML)

Verzweigungen in eSim

In eSim ist es möglich, Anweisungen und Gleichungen verzweigt auszuführen. Dazu werden if-Anweisungen verwendet, für die folgende Syntax gilt:

Ein Vergleich zwischen Variablen wird mit dem doppelten Gleichheitszeichen als Operator (==) durchgeführt.
Ungleichungen werden mit den Verhältniszeichen < und > bzw. <= und >= gebildet.
Ein logisches oder wird durch zwei senkrechte Striche || (Pipe) dargestellt.

If-else-Konstrukt für abschnittsweise definierte Gleichungen

Im Unterschied zu den Case-Bedingungen handelt es sich bei den if-Bedingungen nicht um eine prozedurale Programmierung, sondern um die abschnittsweise Definition einer Funktion. Das If-else-Konstrukt wird nach folgendem Muster gebildet.

if (Bedingung)

            Gleichung1;

else

            Gleichung2;

end if

 

Beispiele

Einfaches Beispiel

if(C_water < C_air)

Cr = C_water/C_air;

else

Cr = C_air/C_water;

end if

Erstes Beispiel mit Gleichungen in den Ausführungspfaden

if(T< 0)

c_p = 2.22 [kJ/kg K];

else if (T<100)

c_p = 4.18 [kJ/kg K];

else

c_p = 1.86 [kJ/kg K];

end if

Zweites Beispiel mit Gleichungen in den Ausführungspfaden

if(T_calc < 0.073 | | T_calc > 60)

c_p = 2.0 [kJ/kg K] * T_calc;

else if (T_calc < 0.2)

c_p = 3.0 [kJ/kg K] * T_calc;

else

c_p = 4.0 [kJ/kg K] * T_calc;

end if

Beispiele mit Zuweisungen in den Ausführungspfaden

if(T_calc < 0.073 | | T_calc > 60)

c_p := 2.0 [kJ/kg K] * T_calc;

else if (T_calc < 0.2)

c_p := 3.0 [kJ/kg K] * T_calc;

else

c_p := 4.0 [kJ/kg K] * T_calc;

end if

In Gleichungen können nur die Variablen berechnet werden, die in allen Ausführungspfaden vorkommen.

Im nachfolgenden Beispiel befindet sich im letzten Ausführungspfad eine andere zu berechnende Variable.

if(T_calc < 0.073 | | T_calc > 60)

// c_p kann berechnet werden

c_p := 2.0 [kJ/kg K] * T_calc;

else if (T_calc < 0.2)

// c_p kann berechnet werden

c_p := 3.0 [kJ/kg K] * T_calc;

else

// Fehler! Der letzte Pfad weist eine andere Variable zu.

c_v := 4.0 [kJ/kg K] * T_calc;

end if

Im nachfolgenden Beispiel kann nur c_p berechnet werden, da T_calc im letzten Pfad fehlt.

if(T_calc < 0.073 | | T_calc > 60)

// c_p in T_calc in diesem Pfad

c_p = 2.0 [kJ/kg K] * T_calc;

else if (T_calc < 0.2)

// c_p in T_calc in diesem Pfad

c_p = 3.0 [kJ/kg K] * T_calc;

else

// c_p in diesem Pfad

c_p = 4.0 [kJ/kg K]

end if

An den Anfang scrollen