如果可能的话,我想创建一个可替换的媒体包数组,然后用户可以使用可用的选项更改每个选项。
以下是定义媒体的典型方法。
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中是不允许的......谢谢。
答案 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;