我想用条件表达式减少超过300000个方程的大型通用模型,这样只剩下相关的部分。 为了说明问题,我有以下最小模型:
model Test
parameter Boolean level1=true;
parameter Boolean level2=false;
Integer x=1 if level1;
Integer y=2 if level2;
Integer z;
equation
if level1 and level2 then
z = x+y;
elseif level1 then
z = x;
elseif level2 then
z = y;
else
z=0;
end if;
end Test;
此模型在Dymola中不起作用, 错误消息:
未声明的变量:y因为y的声明是有条件的 除去
在OpenModelica中,该模型有效。 所以我的问题是,这个Model Modelica是否合规? 在Modelica 3.4规范第4.4.5节中,我没有找到任何会使该模型无效的内容。
感谢您的帮助。
答案 0 :(得分:5)
不,因为y
和x
被声明为条件,4.4.5包含语句“使用条件属性声明的组件只能在连接中修改和/或使用”。
没有特殊规则可以从if语句的分支中删除它们。