我对 Modelica 中的混合建模范式感到困惑。一方面,事件是有用的,另一方面,它们是要避免的。让我解释一下我的情况:
我有一个大型模型,由一个社区中的多个建筑物组成,模拟了 1 年多。最初,模型运行非常缓慢。在尽可能多的 if 条件周围添加 noEvent() 极大地提高了速度。
随着开发的继续,模型的控制变得更加复杂,我又遇到了很多事件,有时间隔很短。给出一个想法:
Number of (model) time events : 28170
Number of (U) time events : 0
Number of state events : 22572
Number of step events : 0
这些事件会破坏输出(为了正确的后处理,我需要事件中的变量)并减慢模拟速度。而且,我感觉某些 noEvent(if...) 会导致意外行为。
我想知道在某些时间步强制我的事件并在这些时间步之间禁止它们是否是一种解决方案?理想情况下,我想根据某些条件触发这些“强制事件”。例如:白天他们应该每 15 分钟一次,每分钟都在高太阳辐射下,晚上我根本不想要事件。
这是个好主意吗?我想这会更快,因为许多状态事件将成为时间事件?如何使用 Modelica 3.2(在 Dymola 中)做到这一点?
预先感谢所有答案。罗尔