使用断言调试 Modelica

use asserts for debugging Modelica

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

在最终版本中,debug 将被设置为 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;

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