OpenModelica CVode仿真与FMU结果不一致问题排查
OpenModelica导出FMU通过FMPy仿真异常问题
OMEdit中仿真弹跳球模型时结果正确(高度始终非负),但使用对应FMU通过FMPy仿真时结果异常——高度会低于零。
使用的OpenModelica版本为Windows平台的v1.21.0-dev.beta.2,OMShell中生成FMU和仿真的代码如下:
loadFile("BouncingBall.mo") simulate(BouncingBall, method="cvode", stopTime=3, numberOfIntervals=60) plot(h) setCommandLineOptions("--fmiFlags=s:cvode") buildModelFMU(BouncingBall, version="2.0", fmuType="cs", fileNamePrefix="BouncingBall_cs")
FMPy仿真代码如下:
from fmpy import simulate_fmu from fmpy.util import plot_result result = simulate_fmu( filename='BouncingBall.fmu', validate=False, start_time=0, stop_time=3, solver='CVode', step_size=0.001, output_interval=5e-2, output=['h']) plot_result(result=result)
增大采样数或减小输出间隔可降低误差,这似乎表明CVode求解器无法自动调整步长。此前有相关问题在OpenModelica v1.20版本被修复,但当前仍出现结果异常,请问该问题是否与旧问题相关,还是我操作有误?
内容的提问来源于stack exchange,提问作者Twan Bearda
相关产品推荐
相关产品推荐

