在派生模型中设置枚举索引向量

时间:2018-04-27 14:58:49

标签: modelica

我定义

type Enum = enumeration(A, B, C);

partial model PM
  parameter Real[Enum] a;
...
end PM;

model M
  extends PM(a = {1, 2, 3});
...
end M;

给出错误。我最好的猜测是a = {1, 2, 3}是罪魁祸首。这确实是非法的,如果是的话,我如何在a中设置M

更新

经过进一步检查,我发现上述所有内容确实合法。让我全力以赴:

type Enum = enumeration(A, B, C);

connector Conn
  Real[Enum] a;
  flow Real[Enum] f;
end Conn;

model M1
  Conn conn;
equation
  conn.f = -conn.a;
end M1;

model M2
  Conn conn;
initial equation
  conn.a = {1, 2, 3};
equation
  der(conn.a) = conn.f;
end M2;

model M3
  M1 m1;
  M2 m2;
equation
  connect(m1.conn, m2.conn);
end M3;

这无法构建。但是,如果我只是将连接器类中的每个Enum更改为3,那么它可以正常工作。

1 个答案:

答案 0 :(得分:2)

这个例子(据我所知)是合法的,有些工具已经处理过了(假设没有其他隐藏的东西)。

由于您需要特定于工具的解决方法,因此您需要指定哪个工具。

合法性将在Modelica规范的后续版本中进一步澄清,因为它不清楚 - https://trac.modelica.org/Modelica/ticket/2212#comment:3