Установка индексируемого перечисления вектора в производной модели

Я определяю

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

Другие вопросы по тегам