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 节中,我没有发现任何会使该模型无效的内容。

感谢您的帮助。

否,因为 yx 被声明为有条件的并且 4.4.5 包含语句 "A component declared with a condition-attribute can only be modified and/or used in connections".

没有特殊规则可以将它们从 if 语句的分支中删除。