Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events 我太晚了 请考虑下面的MODEICA示例模型: model Detection2 Real x = (1-2*time)*1e5; parameter Real x_min=0.1; Real y; equation y = max(x,x_min); assert(y>x_min, "(assert) triggered at t = " + String(time), level=AssertionLevel.warning); when y <= x_min then Modelica.Utilities.Streams.print("(when) triggered at t = " + String(time)); end when; annotation (experiment(StopTime=1)); end Detection2;_Events_Printing_Assert_Modelica - Fatal编程技术网

Events 我太晚了 请考虑下面的MODEICA示例模型: model Detection2 Real x = (1-2*time)*1e5; parameter Real x_min=0.1; Real y; equation y = max(x,x_min); assert(y>x_min, "(assert) triggered at t = " + String(time), level=AssertionLevel.warning); when y <= x_min then Modelica.Utilities.Streams.print("(when) triggered at t = " + String(time)); end when; annotation (experiment(StopTime=1)); end Detection2;

Events 我太晚了 请考虑下面的MODEICA示例模型: model Detection2 Real x = (1-2*time)*1e5; parameter Real x_min=0.1; Real y; equation y = max(x,x_min); assert(y>x_min, "(assert) triggered at t = " + String(time), level=AssertionLevel.warning); when y <= x_min then Modelica.Utilities.Streams.print("(when) triggered at t = " + String(time)); end when; annotation (experiment(StopTime=1)); end Detection2;,events,printing,assert,modelica,Events,Printing,Assert,Modelica,当我在Dymola 2019FD01中对其进行模拟时,我得到以下结果: 结果看起来和预期的一样,但是assert消息和print语句都打印错误的时间,它们总是打印停止时间,而不是我预期的时间 这有两个部分: 为什么它没有在结束前触发?其原因是,由于数值原因,解算器为此类关系创建事件,并且不需要太多事件,因此,只要几乎是真的,即y> xymin -EPS,考虑一些小ε,就可以考虑y> xymin真。本规范第8.5节“事件和同步”对此进行了解释。 为什么它会在最后触发?原因是在模拟结束时有一个事件

当我在Dymola 2019FD01中对其进行模拟时,我得到以下结果:


结果看起来和预期的一样,但是assert消息和print语句都打印错误的时间,它们总是打印停止时间,而不是我预期的时间

这有两个部分:

为什么它没有在结束前触发?其原因是,由于数值原因,解算器为此类关系创建事件,并且不需要太多事件,因此,只要几乎是真的,即y> xymin -EPS,考虑一些小ε,就可以考虑y> xymin真。本规范第8.5节“事件和同步”对此进行了解释。 为什么它会在最后触发?原因是在模拟结束时有一个事件,因为模型可能包含terminal操作符。在某个活动中,比较会被更严格地对待。
如果您使用了x>x_min和x=x_min,那么x或者x_min,那么y可能略低于x_min,但是会触发消息。

这有两个部分:

为什么它没有在结束前触发?其原因是,由于数值原因,解算器为此类关系创建事件,并且不需要太多事件,因此,只要几乎是真的,即y> xymin -EPS,考虑一些小ε,就可以考虑y> xymin真。本规范第8.5节“事件和同步”对此进行了解释。 为什么它会在最后触发?原因是在模拟结束时有一个事件,因为模型可能包含terminal操作符。在某个活动中,比较会被更严格地对待。 如果使用了x>x_min和x=x_min,那么x或者x_min,那么y可能略低于x_min,但是会触发消息