2

我正在研究在 Modelica 的建筑物库中开发的热水储存模型。使用 Dymola 通过 Dassl 模拟模型,我将模拟的时间步长从 1s 更改为 1200s,但我没有看到模拟结果有任何变化。它与求解器有关吗?如果您能提供帮助,我将不胜感激。

4

1 回答 1

5

首先我的假设:对于“时间步长”,您指的是下面屏幕截图中显示的“间隔长度”。

Dymola 模拟设置

如果是这样,这是完全正确的行为。“输出间隔”独立于模拟本身。像 DASSL 这样的可变步长求解器自行选择步长,并对计算点的输出进行插值 - 这些计算点可能在不同的时间点计算。您可以使用 Dymola 的“模拟分析”功能检查求解器所采取的步骤。

如果您想影响求解器采取的实际步骤,您还有其他一些可能性:

  1. 更改“公差”,也显示在屏幕截图中。较小的容差可能会导致较小的步长,从而提高精度以及降低性能,反之亦然。
  2. 有几个变量会直接影响步长:
    • Advanced.Simulation.StepSizeMax限制上限或步长
    • Advanced.Simulation.StepSizeMin限制下限或步长
    • Advanced.Simulation.StepSizeStart设置初始步长

小心使用高级变量,因为它们会影响性能和稳定性。旁注:“间隔长度/间隔数”可能会对模拟结果产生一些影响,因为 DASSL 在选择其初始步长时会考虑此设置。但这种影响可能会根据动态而消失。

于 2020-07-14T14:23:55.707 回答