Modelica 在派生模型中设置枚举索引向量
我定义Modelica 在派生模型中设置枚举索引向量,modelica,Modelica,我定义 type Enum = enumeration(A, B, C); 及 及 这是一个错误。我最好的猜测是a={1,2,3}是罪魁祸首。这确实是非法的吗?如果是,我如何在M中设置a 更新 经过进一步的检查,我发现上面的一切都是合法的。让我全力以赴: type Enum = enumeration(A, B, C); connector Conn Real[Enum] a; flow Real[Enum] f; end Conn; model M1 Conn conn;
type Enum = enumeration(A, B, C);
及
及
这是一个错误。我最好的猜测是a={1,2,3}
是罪魁祸首。这确实是非法的吗?如果是,我如何在M
中设置a
更新 经过进一步的检查,我发现上面的一切都是合法的。让我全力以赴:
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
,那么它就可以工作。这个示例(据我所知)是合法的,并且一些工具已经处理了它(假设没有其他隐藏)
由于您需要特定于工具的解决方案,因此需要指定哪个工具
合法性将在Modelica规范的后续版本中进一步澄清,因为不清楚-感谢您的建议。我使用的是Wolfram | One,其行为可能与SystemModeler相同。我也刚刚添加了一个更新。
model M
extends PM(a = {1, 2, 3});
...
end 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;