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

mat*_*tth 2 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));
Run Code Online (Sandbox Code Playgroud)

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

Adr*_*Pop 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.
Run Code Online (Sandbox Code Playgroud)

有一些工作正在进行,以扩展指定/处理注释的方式,但它将有一段时间,直到它进入Modelica规范:https: //trac.modelica.org/Modelica/ticket/1293(不对公众).