如何减少响应外部函数抛出异常的时间步长
How to reduce timestep in response to external function throwing exception
我有一个调用外部函数的 Modelica 模型。如果时间步长过大,经常会导致外部C++代码抛出异常。
似乎正确的回应是减少时间步长并重试。有没有办法减少响应异常的时间步长?
没有直接标准化的方式,但是你可以捕获异常并且return它作为Modelica的错误标志并使用assert
,或在 C 包装器中使用 ModelicaError
(在 C++ 的 catch-part 中使用 ModelicaError 是可能的)。
规范指出,在断言失败(或调用 ModelicaError)后,模拟可能会继续进行另一次评估,例如,使用更短的步长,或通过更改迭代变量的值。
我有一个调用外部函数的 Modelica 模型。如果时间步长过大,经常会导致外部C++代码抛出异常。
似乎正确的回应是减少时间步长并重试。有没有办法减少响应异常的时间步长?
没有直接标准化的方式,但是你可以捕获异常并且return它作为Modelica的错误标志并使用assert
,或在 C 包装器中使用 ModelicaError
(在 C++ 的 catch-part 中使用 ModelicaError 是可能的)。
规范指出,在断言失败(或调用 ModelicaError)后,模拟可能会继续进行另一次评估,例如,使用更短的步长,或通过更改迭代变量的值。