首页 文章

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

提问于
浏览
0

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

有没有办法捕获该错误(通过调用 error() 引发,我猜)并告诉Simulink "Ehy, the step size you're using is too big"?

EDIT :我正在使用 ode45 求解器,但是除了模拟时间显着增加之外,即使使用 ode23tbode15s 也没有任何变化 .

1 回答

  • 0

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

相关问题