创建可替换媒体包的数组

时间:2017-10-23 17:31:32

标签: modelica dymola openmodelica

如果可能的话,我想创建一个可替换的媒体包数组,然后用户可以使用可用的选项更改每个选项。

以下是定义媒体的典型方法。

  replaceable package Medium = Modelica.Media.Interfaces.PartialMedium
    "Coolant medium" annotation (choicesAllMatching=true);

以下是我希望可以做到的原型,其中每个“媒体”可能是不同的媒体。

parameter Integer n = 1 "Number of media models";
replaceable package Medium[n] = {Modelica.Media.Interfaces.PartialMedium}
    "Coolant medium" annotation (choicesAllMatching=true);

然而,这是不可接受的模式。我也试过在记录上使用变体,但没有成功。有任何想法吗?也许这在Modelica中是不允许的......谢谢。

1 个答案:

答案 0 :(得分:2)

如果可以创建这样的数组,请考虑如何使用它:

model M
  replaceable package Medium[n];
  medium[1] m1; // "Creates a Medium array of size 1"; not reference to Medium 1
  Real r = Medium[1].f(...); // Disallowed syntax; function names do not contain subscripts
end M;

您可以尝试以下方法(适用于OpenModelica;未在Dymola中测试),但价值有限:

package M
  constant Real r;
end M;

model Test
  M[2] m(r={1,2});
  M m1=m[1];
  M m2=m[2];
end Test;