【问题标题】:Barriers to translation stage in Modelica?Modelica 翻译阶段的障碍?
【发布时间】:2015-03-27 14:56:15
【问题描述】:

一些一般性的 Modelica 建议?

我们已经建立了一个模型,其中包含大约 2000 个方程和三个来自测量数据的输入向量。使用 OpenModelica,模拟的尝试已经开始在翻译阶段挂起(运行几个小时,过去需要不到一分钟),现在我经常“失去与 omc.exe 的连接”。是否可能有一些累积的情况会降低翻译/编译性能?

一般来说,有没有什么好的经验法则可以让模拟更轻松、更快?我意识到,根据耦合,附加方程可能会以指数方式增加所得方程组的大小 - 这可能是个问题吗?

感谢您的意见!

【问题讨论】:

  • 方程有特殊的结构吗?它们只是整个系统的一部分吗?如果是,与系统其余部分的耦合条件是什么?
  • 系统建模很简单,集热器通过流口串联。几乎所有的方程式和联系都到了能量平衡的尽头。输入数据直接连接到每个模块,但由于缺乏编码经验,我相信我正在为每个模块(12x)创建数据的新副本。这 12 个模块被调用并排列在一个单独的组件中,以六个为一组——这就是耦合发生的地方。一个模块中获得的热量传递到下一个模块(它是一串太阳能集热器)。
  • 我怀疑您想从外部文件加载数据。如果您要根据在 Modelica 中声明的 Modelica 数据构建插值表,您可能会遇到这些类型的问题。但是如果该工具在运行时加载它,您可以避免对所有数据进行符号处理(这对您没有帮助)。我只是在这里猜测。

标签: simulation modelica openmodelica


【解决方案1】:

应该不会花那么长时间。好像是个bug。 您可以在此处报告此错误: https://trac.openmodelica.org/OpenModelica(新票)。 如果您的模型是公开的,您可以将其发布到那里,如果不是,您可以私下联系 OpenModelica 团队。

【讨论】:

    【解决方案2】:

    我在代码中做了一些清理;并得到重复 12 次(模块)的部分,直到约 180 个方程;在此过程中,我将输入向量(以及模块引用的 2D 查找表)的大小减少了很多——它们都减少到几百个值。它现在正在运行——模拟在合理的时间内运行,每次几分钟。

    由于所有这些表都是在 Modelica 函数中定义的(正如您所指出的,Tiller 先生),因此缩小它们可能有助于提高性能。我曾假设所有这些数据只是分散在一个内存阵列中,没有经过任何真正的处理,但也许情况并非如此......是时候更多地了解这个环境中的幕后情况了(一如既往) .

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      相关资源
      最近更新 更多