创建可更换媒体包阵列

Create array of replaceable media packages

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

以下是定义介质的典型方法。

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

以下是我希望可以完成的原型,其中每个 "Mediums" 可能是不同的媒体。

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

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

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

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;