我目前正在模拟一个区域供热网络模型,它包含了Dymola中的大量管道,希望计算整个网络的一些数据,即管道的总热损失。
最明显的方法是使用for循环遍历每个管道,并对各个热损失求和。然而,我不确定如何才能遍历每一个管道。网络中的每个管道都是我创建的" pipe“类的一个实例,声明如下:
replaceable model Pipe =
DHNAEE.Components.Pipe.PipeHeatLossMod_Double;然后,每个管道被定义为管道类的实例,如下所示:
Pipe dualPipeK30_c78(redeclare package Medium = Medium,diameter=0.02, thicknessIns=0.036, length=12.3, m_flow_nominal=5,nPorts = 1)我的问题是,有没有一种方法可以简单地迭代模型中“管道”类的所有实例,并对特定的输出进行求和,即每个实例的热损失?我目前正在用Python在后处理过程中做这件事,但是直接从Dymola得到它会更有益。
非常感谢,基思
发布于 2017-11-10 18:41:19
如果所有管道都使用您可以控制的特殊类,并且它是一个动态物理属性,那么您可以在您的管道类中添加类似(未测试)的内容:
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组件中(自动添加)。
将来可能会出现另一种选择(特别是当您不能修改管道类时):http://www.ep.liu.se/ecp/118/026/ecp15118245.pdf https://trac.modelica.org/Modelica/browser/MCP/public/MCP-0021_ComponentIterators
https://stackoverflow.com/questions/47218198
复制相似问题