部分模型的 Modelica 数组 [英] Modelica array of partial model
问题描述
设 A
为部分模型,C
、D
为扩展 A
的模型.给定一个模型
Let A
be a partial model and C
, D
be models which extend A
. Given a model
partial model X
A a[3];
end X;
我如何实例化 X,例如类似的东西
how can I instantiate X, e.g. something along the lines of
A X.a = {C,D,C};
更新:我尝试了 2 个变体.一个是
Update: I tried 2 variants. One is
package P
partial model A end A;
model B extends A; end B;
model C extends A; end C;
partial model X
A a[3];
end X;
model Y extends X(a={c,b,c});
B b;
C c;
end Y;
end P;
失败并显示警告只能使用默认值设置输入、参数和变量,但已修改.".另一个是
which fails with the warning "May only set inputs, parameters, and variables with default, but modified a.". The other one is
package P
partial model A end A;
model B extends A; end B;
model C extends A; end C;
partial model X
replaceable A a[3];
end X;
model Y extends X;
redeclare A a={c,b,c};
B b;
C c;
end Y;
end P;
失败并出现错误组件 a = {c,b,c},但以前是 a = << Empty >>.组件不相同."
请注意,可以执行以下操作.
Note that it is possible to do the following.
package P
partial model A end A;
model B extends A; end B;
model C extends A; end C;
partial model X
A a[3] = {a1,a2,a3};
replaceable A a1,a2,a3;
end X;
model Y extends X;
redeclare B a1;
redeclare C a2;
redeclare B a3;
end Y;
end P;
但我希望 P.X
使用参数数组.再说一次,实现此目的的以下想法行不通.
But I want P.X
to use a parametric array. Then again, the following idea to achieve this, does not work.
package P
partial model A end A;
model B extends A; end B;
model C extends A; end C;
partial model X
parameter Integer N;
replaceable A a[N] = fill(ai,N);
A ai;
end X;
model Y extends X(N=3);
redeclare A a[3] = {b,c,b};
B b;
C c;
end Y;
end P;
推荐答案
是的.实例化部分模型而不从非部分模型扩展它是非法的.像这样的事情可能会奏效:
Yes. Is illegal to instantiate a partial model without extending it from a non-partial model. Something like this might work:
model Y
extend X(a = {C, D, C});
end Y;
那么 Y.a 就是你想要的.
Then Y.a is what you want.
这篇关于部分模型的 Modelica 数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!