Modelica 中的条件组件
Conditional Components in Modelica
我想用条件表达式减少具有超过 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,
错误信息:
Undeclared variables: y since the declaration of y was conditionally
removed
在 OpenModelica 中,该模型有效。 所以我的问题是,这个 Modelica 兼容吗?
在 Modelica 3.4 规范第 4.4.5 节中,我没有发现任何会使该模型无效的内容。
感谢您的帮助。
否,因为 y
和 x
被声明为有条件的并且 4.4.5 包含语句 "A component declared with a condition-attribute can only be modified and/or used in connections".
没有特殊规则可以将它们从 if 语句的分支中删除。
我想用条件表达式减少具有超过 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, 错误信息:
Undeclared variables: y since the declaration of y was conditionally removed
在 OpenModelica 中,该模型有效。 所以我的问题是,这个 Modelica 兼容吗? 在 Modelica 3.4 规范第 4.4.5 节中,我没有发现任何会使该模型无效的内容。
感谢您的帮助。
否,因为 y
和 x
被声明为有条件的并且 4.4.5 包含语句 "A component declared with a condition-attribute can only be modified and/or used in connections".
没有特殊规则可以将它们从 if 语句的分支中删除。