维度未指定的Modelica数组

维度未指定的Modelica数组,modelica,openmodelica,Modelica,Openmodelica,给定一个带有x个连接器阵列的模型,其大小未指定,例如 connector con ... end con; model test con x[:]; end test; 如何用特定的大小来实例化x,例如这样的东西 test t(x = ?); ... equation connect(t.x[1], a); connect(t.x[2], b); ... 为什么需要未指定的维度?您可以这样做: connector con ... end con; model test constant

给定一个带有x个连接器阵列的模型,其大小未指定,例如

connector con
...
end con;

model test
con x[:];
end test;
如何用特定的大小来实例化x,例如这样的东西

test t(x = ?);
...
equation
connect(t.x[1], a);
connect(t.x[2], b);
...

为什么需要未指定的维度?您可以这样做:

connector con
...
end con;

model test
 constant Integer dim = 1;
 con x[dim];
end test;

// usage
test(dim = 10);
...
equation
  connect(t.x[1], a);
  connect(t.x[2], b);
...

这是真的,但我很好奇是否可以实例化一个包含未指定维度的数组的模型。维度需要在编译时就知道,所以即使在声明它们时它们是未知的,也需要在某个地方指定它们。如果你让con x[:]可替换并进行测试(redeclare con x[10]),也许它会起作用,但我不确定。有趣的是,模型测试是有效的,但似乎不可用,因为除非x是可替换的,否则它无法实例化。你确定在我的问题中声明时不能实例化它吗?你需要以某种方式指定维度。唯一的方法是通过绑定或重新声明。如果你有一个测试(x=y),其中y是一个cony[known_dim],它可能会给x一个维度,但你也会得到新的方程x[1]=y[1]。。。等等。好的,我明白了。谢谢你的解释。