创建可更换媒体包阵列
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;
如果可能的话,我想创建一组可替换的媒体包,然后用户可以使用可用的选项更改每个选项。
以下是定义介质的典型方法。
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;