Установка индексируемого перечисления вектора в производной модели
Я определяю
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 ответ
Пример является (насколько я могу судить) легальным, и некоторые инструменты уже обрабатывают его (при условии, что больше ничего не скрыто).
Поскольку вам нужен обходной путь для конкретного инструмента, вам нужно указать, какой инструмент.
Законность будет более подробно разъяснена в более поздних версиях спецификации Modelica, поскольку она была неясной - https://trac.modelica.org/Modelica/ticket/2212