使用CoolProp时,在Simulink中动态减小步长

时间:2015-03-26 15:33:24

标签: matlab exception-handling simulink

我有一个模型,它从S函数调用一个库进行热力学性质计算(CoolProp)。如果其输入无意义,此库会引发错误并突然停止模拟,这有时会在Simulink扰乱状态时发生,特别是当模型中存在Step块时,即使其输出为浮动的!我认为这是一个预见系统状态变化的尝试,我注意到减小步长可以减少问题,但我无法在10 us(是的,微秒!)时间步进行模拟20'000 s已经花了15分钟,步长为5秒!

有没有办法捕捉到这个错误(通过调用error()来提出,我猜)并告诉Simulink“Ehy,你使用的步长太大了”?

编辑:我正在使用ode45解算器,但即使使用ode23tbode15s也没有任何变化,除了模拟时间显着增加。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用固定步长求解器,您可能希望使用变步长解算器,这将根据模型的动态调整步长。如果你有一个数字僵硬的系统(似乎是这种情况),你可能想要使用ode15sode23t。您可以将求解器步长约束在最小和最大步长之间。有关详细信息,请参阅文档中的Choosing a solver