首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dymola中迭代一个类的所有实例?

如何在Dymola中迭代一个类的所有实例?
EN

Stack Overflow用户
提问于 2017-11-10 16:05:13
回答 1查看 121关注 0票数 2

我目前正在模拟一个区域供热网络模型,它包含了Dymola中的大量管道,希望计算整个网络的一些数据,即管道的总热损失。

最明显的方法是使用for循环遍历每个管道,并对各个热损失求和。然而,我不确定如何才能遍历每一个管道。网络中的每个管道都是我创建的" pipe“类的一个实例,声明如下:

代码语言:javascript
复制
 replaceable model Pipe =
      DHNAEE.Components.Pipe.PipeHeatLossMod_Double;

然后,每个管道被定义为管道类的实例,如下所示:

代码语言:javascript
复制
 Pipe dualPipeK30_c78(redeclare package Medium = Medium,diameter=0.02, thicknessIns=0.036, length=12.3, m_flow_nominal=5,nPorts = 1)

我的问题是,有没有一种方法可以简单地迭代模型中“管道”类的所有实例,并对特定的输出进行求和,即每个实例的热损失?我目前正在用Python在后处理过程中做这件事,但是直接从Dymola得到它会更有益。

非常感谢,基思

EN

回答 1

Stack Overflow用户

发布于 2017-11-10 18:41:19

如果所有管道都使用您可以控制的特殊类,并且它是一个动态物理属性,那么您可以在您的管道类中添加类似(未测试)的内容:

代码语言:javascript
复制
   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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47218198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档