从Modelica标准库中更改模型中参数的注释(Evaluate = true / false)

时间:2014-02-22 16:52:49

标签: modelica

我在模拟中使用了Modelica标准库(MSL)中的一些组件。这些组件各有一些参数。例如,Modelica.Fluid.Sources.MassFlowSource_T有一个parameter m_flow。通常,可以在模拟运行之间更改参数,而无需重新编译。 m_flow不是这种情况,因为它有annotation(Evaluate=true),因此用于符号处理。
是否可以在实例化时更改参数的注释?我尝试了以下,但它没有用。

Modelica.Fluid.Sources.MassFlowSource_T source2(
    redeclare package Medium = Medium2,
    nPorts=1,
    m_flow=22.17 annotation(Evaluate=false));

当然有一些解决方法,比如首先制作副本并在那里更改注释或使用use_m_flow_in=true和常量源块。

1 个答案:

答案 0 :(得分:5)

据我所知,目前的Modelica规范无法做到这一点。 如果扩展MassFlowSource_T,某些工具可能会支持它:

model MassFlowSource_T_2
  extends Modelica.Fluid.Sources.MassFlowSource_T;
  // declare m_flow here again with annotation(Evaluate=false);
end MassFlowSource_T_2;

use MassFlowSource_T_2 when you declare source2.

正在进行一些工作以扩展指定/处理注释的方式 但是直到它进入Modelica规范还需要一段时间: https://trac.modelica.org/Modelica/ticket/1293(尚未向公众开放)。