如何快速定位Dymola非线性模型中触发IF97函数压力错误的变量
Dymola IF97介质低压报错快速定位方案
核心方法(无需生成全量非线性迭代日志)
方法1:内置断言断点调试
打开Simulation > Setup > Debug标签页,勾选Break on assert,运行模型到报错时Dymola会自动弹出完整调用栈,可直接查看触发g2函数调用的上层组件,顺路径就能拿到对应压力变量的完整层级名。2022及以上版本Dymola支持点击调用栈直接跳转至模型对应组件位置。方法2:结合现有日志缩小排查范围
你提供的dslog.txt显示,报错前最后一次有效事件是56087.88s时-vol_turbineHP1.drain[2].m_flow > 0.0的状态翻转,直接优先排查vol_turbineHP1高压缸1疏水出口[2]连接的下游容积、管道、换热器组件,这些组件的介质压力是最高风险项,无需全模型遍历。方法3:指定终止时间局部排查
将仿真停止时间设置为56598s(早于首次报错的时间点),运行到该时刻后在变量浏览器中筛选所有IF97介质组件的压力变量,找出数值小于1000Pa的项,即为引发报错的变量。也可在Output设置中仅勾选怀疑组件的压力变量输出,生成的日志体积仅数MB,不会出现臃肿问题。
临时调试规避方案
定位前可先在IF97介质包配置中把最低压力阈值略调低至610Pa,或开启介质压力钳位选项,让模型能跑完全程后再拉取压力变量的时间序列,直接定位跌至三相点压力以下的变量。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

