我在计算固体冲压发动机内两相流颗粒二次燃烧时,C颗粒燃烧采用openfoam自带的模型,B颗粒的燃烧自己编写的表面燃烧模型,但计算时总是在空气和颗粒接触不久之后发散。MaxCo为1时,自适应时间步长大概在2e-6s左右,多次尝试后存在以下几种情况:
(1)两种颗粒的Cloud都启用表面燃烧时,不管如何调整species的Cp等物性参数,均会在0.0068s时出现Energy -> temperature conversion failed to converge,输出的报错信息显示,温度在1000±1K之间来回振荡;
(2)两种颗粒的Cloud都启用表面燃烧,但B颗粒所有反应的速率都设为0时,计算在0.0116s发散,从报错信息来看,应该是ReactingMultiphaseParcel中的calc函数调用后,MomentumParcel的move()函数计算出错;
(3)C颗粒启用表面燃烧模型,B颗粒的表面燃烧模型选择none,此时计算不会发散。
对于情况(1),在将thermo.C文件中的tol_从1e-4改为2e-4后能继续往后计算,到0.0073s时还是发散了。但情况(2)反应速率均为0的情况下,在我理解中应该跟情况(3)是等价的,不知道为什么一个报错,一个却能顺利计算。