如何减少响应外部函数抛出异常的时间步长

How to reduce timestep in response to external function throwing exception

我有一个调用外部函数的 Modelica 模型。如果时间步长过大,经常会导致外部C++代码抛出异常。

似乎正确的回应是减少时间步长并重试。有没有办法减少响应异常的时间步长?

没有直接标准化的方式,但是你可以捕获异常并且return它作为Modelica的错误标志并使用assert,或在 C 包装器中使用 ModelicaError(在 C++ 的 catch-part 中使用 ModelicaError 是可能的)。

规范指出,在断言失败(或调用 ModelicaError)后,模拟可能会继续进行另一次评估,例如,使用更短的步长,或通过更改迭代变量的值。