稍微概括的例子:
当我定义模型方程时,如何创建一个有异常的 for 循环?
以下工作:
model Test
Real[9] q;
equation
q[2] = 1.2;
q[4] = 1.4;
for i in {1,3,5,6,7,8,9} loop
q[i] = 0;
end for;
end Test;
Run Code Online (Sandbox Code Playgroud)
但我更愿意写一些类似的东西:
model Test
Real[9] q;
equation
q[2] = 1.2;
q[4] = 1.4;
for i in 1:9 and not in {2,4} loop
q[i] = 0;
end for;
end Test;
Run Code Online (Sandbox Code Playgroud)
这可能吗?
这应该是可能的,只要您确保每个未知数都有一个等式。
可能不是完美的解决方案,但实际上非常可读:
model LoopException
Real[9] q;
equation
q[2] = 1.2;
q[4] = 1.4;
for i in 1:9 loop
if Modelica.Math.Vectors.find(i, {2, 4}) == 0 then
q[i] = 0;
end if;
end for;
end LoopException;
Run Code Online (Sandbox Code Playgroud)
作为替代方案,您也可以尝试编写一个“带迭代器的数组构造函数”(Modelica Language Spec. Sec. 10.4.1),但这可能会有点混乱......
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |