设A是部分模型,C、D是扩展A的模型。给出一个模型
partial model X
A a[3];
end X;我如何实例化X,例如沿着
A X.a = {C,D,C};更新:我尝试了两个变体。一个是
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;如果警告"May只设置默认输入、参数和变量,但修改了a“,则会失败。另一个是
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= <<空>>。组件是不相同的。”
请注意,可以执行以下操作。
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使用参数数组。再一次,下面的想法来实现这一点,是行不通的。
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;发布于 2015-04-03 09:36:47
是。实例化部分模型而不从非部分模型扩展它是非法的。像这样的东西可能会起作用:
model Y
extend X(a = {C, D, C});
end Y;那就是你想要的。
发布于 2015-04-03 07:31:00
阿法克 a partial关键字意味着您的模型无法实例化,因此您可能也必须使用extend X。
https://stackoverflow.com/questions/29424371
复制相似问题