2017-04-13 108 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

我不能肯定地说,自从我真的不知道你在做什么。你的建议可能会很好。另一种选择是只使用可替换的模型。没有更多的工作知识,我无法给你更好的答案。 –