If Else in Modelica
Branching with if and else in Modelica is straightforward.
model IfElseExample
function print
input String str;
external "C" print(str) annotation(Include="#include <stdio.h>");
end print;
equation
// Here's a basic example.
if 7 mod 2 == 0 then
print("7 is even");
else
print("7 is odd");
end if;
// You can have an `if` statement without an else.
if 8 mod 4 == 0 then
print("8 is divisible by 4");
end if;
// Logical operators like `and` and `or` are often useful in conditions.
if 8 mod 2 == 0 or 7 mod 2 == 0 then
print("either 8 or 7 are even");
end if;
// A variable can be declared before conditionals; it will be available in the current
// and all subsequent branches.
protected
Integer num = 9;
equation
if num < 0 then
print(String(num) + " is negative");
elseif num < 10 then
print(String(num) + " has 1 digit");
else
print(String(num) + " has multiple digits");
end if;
end IfElseExample;Note that in Modelica, you don’t need parentheses around conditions, but the then keyword is required after the condition. The end if is also required to close the if statement.
To run this Modelica model, you would typically use a Modelica simulation environment. The output would be similar to:
7 is odd
8 is divisible by 4
either 8 or 7 are even
9 has 1 digitModelica doesn’t have a direct equivalent to the ternary operator found in some other languages, so you’ll need to use a full if statement even for basic conditions.
It’s important to note that Modelica is primarily used for modeling and simulation of physical systems, so the way conditionals are used might differ from procedural programming languages. In Modelica, equations are solved simultaneously rather than executed sequentially.