我在模拟中使用了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和常量源块.
据我所知,目前的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(不对公众).
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |