【问题标题】:Stopping simulation based on CPU time in Dymola/Modelica在 Dymola/Modelica 中基于 CPU 时间停止模拟
【发布时间】:2021-05-26 15:15:36
【问题描述】:

在 Dymola 中,我可以执行以下操作:

when time > 100 then
    assert(false,"Simulation taking too long");
end when;

根据时间变量本身停止模拟。

但是,我想做的是根据经过的 CPU 时间停止模拟。 Dymola 有一种输出 CPU 时间的方法,它在结果中显示为 CPUtime,但我不知道如何访问该变量。换句话说,这是我想做的,但 CPUtime 变量不在范围内:

when CPUtime > 100 then
    assert(false,"Simulation taking too long");
end when;

任何建议,无论是如何访问 CPUtime,或其他解决方法来终止基于 cpu 时间的模拟?

【问题讨论】:

标签: modelica dymola


【解决方案1】:

如前所述:

您可以在 Dymola 2022 的模拟设置中进行设置,或者通过设置 Advanced.Simulation.MaxRunTime

这是挂钟时间,这意味着如果您有一个并行模拟,它将在 10 秒后停止,而不是在内核一起花费 10 秒时停止,并且如果您出于某种奇怪的原因在模型它仍然会结束。

(这已经在评论中注明 - 感谢 Priyanka。但是,由于某种原因,stackoverflow 警告说 cmets 中的答案可能会丢失。)

【讨论】:

  • 这种“奇怪的原因”可能是外部函数不正确或者FMU不能正常返回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多