Modelica mos脚本中数组大小的预分配

Preallocation of array sizes in Modelica mos script

我正在 Dymola 中编写一个 mos 脚本,我在其中动态计算 for 循环中的数组元素。命令 window 上打印了很多信息。每次打印

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

等我不想每次都“重新声明”我的数组,我只想“填充”它。数组大小的预分配会解决这个问题吗?如果是这样,我如何在 mos 脚本中预分配数组?我尝试了不同的方式,比如

Real[50,1002] traj_phie;

Dymola 为此引发错误。所以我的问题是 1) mos脚本中的数组预分配 2) 抑制命令输出。 有人能帮我吗? 谢谢

有一个高级标志,可以让你抑制命令输出:

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;