我在模拟中使用了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
和常量源块。
答案 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(尚未向公众开放)。