2017-04-13 17 views
1

私はそれは可能だと思いますが、私は例を見つけることができなかったのでわからないです。パラメータパネルで直接モデルを継承するモデルを選択できるようにしたいと考えています。Modelica - 'extend'ドロップダウンメニュー

私は、ソリューションの2種類を想像することができます:私は中から選択したいと思います:より良い私がやりたいかを説明する例:

extends model1 annotation(choices(choice(model1 "Ref"),choice(model2 "New"))); 

または

extends replaceable model1 annotation(choices(choice(redeclare model1 "Ref"),choice(redeclare model2 "New"))); 

更新'Data1'と 'Data2'のうち、モデルを拡張する 'Final'のパラメータパネル。

package test 

partial model Data1 
    parameter Real a=1; 
    parameter Real b=2; 
end Data1; 

partial model Data2 
    parameter Real a=1.1; 
    parameter Real b=1.8; 
end Data1; 

model Final 
    extends Data1; //(or Data2) 
    Real y; 
equation 
    y = a*time+b; 
end Final; 

end test; 

答えて

1

extendsを交換することはできません。モデル内でredeclaredの交換可能なモデルを使用できますが、拡張モデル自体は使用できません。たとえば:

extends model1(redeclare replaceable ...)

あなたはそれを拡張し、交換可能に使用する必要がないように、あなたの構造を再編成することができるはずです。

+0

私が正しく理解している場合: – Songio

+0

私が正しく理解していれば、交換可能なモデル(COMP)を宣言し、メインモデル(MAIN)でINTモデルを拡張するための中間モデル使用するCOMPモデルを選択できるようにするためのredeclare節。それはあまり複雑ではありませんが、ストレートフォワードではありません...そして、私はこの場合ドロップダウンメニューを使用できるかどうかわかりません... – Songio

+0

私は確かに最善の方法が何であるかについては言えません私はあなたが何をしているのか本当に分かっていません。あなたが示唆しているものはうまくいくかもしれないもう1つの選択肢は、交換可能なモデルを使用することだけです。あなたの仕事の知識がなければ、私はあなたにもっと良い答えを与えることはできません。 –