首页 > 解决方案 > 使用断言调试 Modelica

问题描述

在 Modelica 中,可以定义 aprotected final constant Boolean debug然后在断言语句中使用它来在调试时打印出一些值,类似于下面显示的代码(或在 github 上看到的)。

在最终版本中,调试将被设置为 false。这会减慢模拟速度还是会消除断言,因为调试是一个常数?

model debugexample
  parameter Real a;
  parameter Real b;
  Real sum;

protected 
  final constant Boolean debug = false "set to true while debugging";

equation 
  assert(not debug, "a=" + String(a), level=AssertionLevel.warning);
  sum = a+b;
end debugexample;

标签: debuggingconstantsassertmodelica

解决方案


断言将被消除,因为debug它是恒定的。如果debug是一个参数,但是断言可能(取决于工具)仍然只被调用一次而不是每个时间步,因为Boolean断言的输入没有改变。


推荐阅读