Modelica中的条件组件

tla*_*ask 3 modelica openmodelica dymola

我想使用条件表达式来简化大型通用模型,使其具有超过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;
Run Code Online (Sandbox Code Playgroud)

该模型在Dymola中不起作用,并显示错误消息:

未声明的变量:y,因为有条件地删除了y的声明

在OpenModelica中,模型起作用。所以我的问题是,此Modelica是否兼容? 在Modelica 3.4规范的第4.4.5节中,我没有发现任何会使该模型无效的东西。

谢谢您的帮助。

Han*_*son 5

否,因为yx声明为有条件的,并且4.4.5包含以下语句“声明为有条件属性的组件只能在连接中修改和/或使用”。

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