Предварительное распределение размеров массивов в скрипте Modelica mos - PullRequest
2 голосов
/ 27 января 2020

Я пишу сценарий mos в Dymola, в котором я динамически вычисляю элементы массива внутри для циклов . Много информации выводится в командном окне. каждый раз, когда он печатает

Redeclaring variable: Real traj_phie [34, 1002];
Redeclaring variable: Real traj_phie [35, 1002];

et c. Я не хочу " redeclare " мой массив каждый раз, я просто хочу " fill " его. Решит ли эту проблему предварительное распределение размера массива? Если так, как я могу предварительно выделить массив в скрипте mos? Я пробовал разные способы, например

Real[50,1002] traj_phie;

, для которых Димола выдает ошибку. Итак, мои вопросы: 1) Предварительное выделение массива в скрипте mos 2) Подавление вывода команды. Кто-нибудь может мне помочь? Спасибо

1 Ответ

3 голосов
/ 27 января 2020

Есть расширенный флаг, который позволяет вам подавить вывод команды:

Advanced.EchoScriptCommands = false

Для инициализации вектора, матрицы или массива с определенным размером используйте функцию fill (). В Modelica нет ничего похожего на NaN, поэтому вам нужно инициализировать с определенным значением.

Затем вы можете использовать операции среза, чтобы назначить только интересующую вас строку / строку / элементы.

traj_phie = fill(0.0, 50, 10);

// Assign line by-line
for i in 1:50 loop
  traj_phie[i, :] = i*ones(10);
end for;
...