2017-04-13 107 views
1

我認爲這是可能的,但我不知道,因爲我找不到任何示例。我希望能夠直接在參數面板中選擇要繼承的模型。Modelica - '擴展'與下拉菜單

我可以想像兩種解決方案:

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

如果我理解正確,我應該創建一箇中間模型(INT),僅用於聲明其中的可替換模型(COMP),並且在主模型(MAIN)中擴展INT模型一個可以選擇要使用的COMP模型的redeclare子句。它不是太複雜,但不是直接的...順便說一句,我不知道我是否可以在這種情況下使用下拉菜單... – Songio

+0

我不能肯定地說,自從我真的不知道你在做什麼。你的建議可能會很好。另一種選擇是隻使用可替換的模型。沒有更多的工作知識,我無法給你更好的答案。 –