を部分A
モデルとしC
、D
を拡張モデルとするA
。与えられたモデル
partial model X
A a[3];
end X;
X をインスタンス化するにはどうすればよいですか。たとえば、次のようなものです。
A X.a = {C,D,C};
更新:2つのバリエーションを試しました。一つは
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;
これは、 「入力、パラメーター、および変数はデフォルトでのみ設定できますが、変更されている可能性があります」という警告で失敗します。. もう一つは
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;
「Component a = {c,b,c}, but before a = << Empty >>. The components are not同一.」というエラーで失敗します。
次のことが可能であることに注意してください。
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;