Modelica - 'extends' 带有下拉菜单
Modelica - 'extends' with drop-down menu
我认为这是可能的,但我不确定,因为我找不到任何例子。我希望能够直接在参数面板中选择我要继承的模型。
我可以想象两种解决方案:
extends model1 annotation(choices(choice(model1 "Ref"),choice(model2 "New")));
或
extends replaceable model1 annotation(choices(choice(redeclare model1 "Ref"),choice(redeclare model2 "New")));
更新:更好地解释我想做什么的示例:我想从 'Final' 的参数面板中选择要扩展的模型,在 'Data1' 和 'Data2' 之间.
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;
不可能有可替换的extends
。您可以在要扩展的模型中使用 redeclared
的可替换模型,但不能在扩展模型本身中使用。例如:
extends model1(redeclare replaceable ...)
您应该能够重组您的结构,这样就不必使用可替换的扩展。
我认为这是可能的,但我不确定,因为我找不到任何例子。我希望能够直接在参数面板中选择我要继承的模型。
我可以想象两种解决方案:
extends model1 annotation(choices(choice(model1 "Ref"),choice(model2 "New")));
或
extends replaceable model1 annotation(choices(choice(redeclare model1 "Ref"),choice(redeclare model2 "New")));
更新:更好地解释我想做什么的示例:我想从 'Final' 的参数面板中选择要扩展的模型,在 'Data1' 和 'Data2' 之间.
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;
不可能有可替换的extends
。您可以在要扩展的模型中使用 redeclared
的可替换模型,但不能在扩展模型本身中使用。例如:
extends model1(redeclare replaceable ...)
您应该能够重组您的结构,这样就不必使用可替换的扩展。