我目前正在模拟一个区域供热网络模型,其中包含Dymola中的许多管道,并希望计算有关整个网络的一些数据,即管道中的总热量损失。
显而易见的方法是使用for循环迭代每个管道并将各个热量损失相加。但我不确定如何迭代每根管道。网络中的每个管道都是我创建的类的一个实例" Pipe"声明如下:
replaceable model Pipe =
DHNAEE.Components.Pipe.PipeHeatLossMod_Double;
然后将每个管道定义为Pipe类的实例,如下所示:
Pipe dualPipeK30_c78(redeclare package Medium = Medium,diameter=0.02, thicknessIns=0.036, length=12.3, m_flow_nominal=5,nPorts = 1)
我的问题是,有没有办法可以简单地遍历所有类的实例" Pipe"在模型中并总结一个特定的输出,即每个的热量损失?我目前在后期处理过程中使用Python进行此操作,但是直接从Dymola获取此信息会更有益。
非常感谢, 基思
答案 0 :(得分:3)
如果所有管道都使用您可以控制的特殊类,并且它是一个动态物理属性,您可以在Pipe-class中添加类似(未测试)的内容:
outer MyHeatCapacitor heatSink;
model MyHeatCapacitor
extends Modelica.Thermal.HeatTransfer.Components.HeatCapacitor;
annotation(missingInnerMessage="Need to add global heatSink");
end MyHeatCapacitor;
equation
connect(..., heatSink.port);
然后全局热量损失将被收集在该heatSink组件中(自动添加)。
将来可能有另一种选择(特别是当你无法修改Pipe-class时): http://www.ep.liu.se/ecp/118/026/ecp15118245.pdf https://trac.modelica.org/Modelica/browser/MCP/public/MCP-0021_ComponentIterators