使用断言调试 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
输入没有改变。
在 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
输入没有改变。