OF使用SIMPLE计算10步报错停止,SIMPLEC成功迭代收敛的原因
-
各位Foamers,几分钟前那个帖子,关于T形管模拟计算10步报错终止的问题我已经解决,解决方法是在fvSolution的子字典中将consistent关键字调成yes,使用SIMPLEC算法,就能够成功模拟了。但是我仍然疑惑不解,为什么SIMPLE算法出错,而SIMPLEC算法却成功运行呢?下面是0文件夹下的文件截图,我猜想,是不是我这些初边条件设置只适合SIMPLEC算法?求大神帮忙解答,谢谢!!
-
压力和速度的松弛因子设置了没?
-
@队长别开枪 你好,我后来又仔细查看了一些算例中SIMPLE算法和SIMPLEC算法设置的一些区别,发现正如你所说,错误在松弛因子的设置上面,,,我发现SIMPLEC的松弛因子设置是这样的:
relaxationFactors { equations { U 0.9; ".*" 0.9 } }
而SIMPLE算法的松弛因子是下面这样的:
relaxationFactors { fields { p 0.3; } equations { U 0.7; k 0.7; eplison 0.7; } }
对此,我又有一些疑惑,之前我采用了SIMPLE算法计算,而松弛因子设置采用的是第一种,所以才出现计算10步出现错误,后面改成第二种,就可以运行了,也就是说,这是因为每一种算法,有其对应的松弛因子设置吗?而对于第一种设置(SIMPLEC)来说,没有fields子字典,是不是表示对压力没有进行松弛计算?还有一个疑惑是,equations子字典中的“ . * ”表示什么东西?期待你的回复,谢谢!!
-
@队长别开枪 补充一句,刚才上面“.*” 0.9后面少写了一个分号;
-
@d-benjamin 松弛因子取值主要和算例本身相关,一般流场变化不剧烈就可以使用比较大的值,剧烈的话就调小,这个值就是设定每个迭代结束后使用新值的权重,本质上减小松弛因子相当于减小时间步长。SIMPLEC改进了通量修正方法,没有为压力设置松弛因子。对于SIMPLE算法,一般都是要设置松弛因子的。
".*"
表示everything。 -
@队长别开枪 谢谢你啦
-
你好,我看rhoSimpleFoam的pEqn.H与pcEqn.H中均有
// Explicitly relax pressure for momentum corrector p.relax();
请问这个是不是压力松弛?
-
@izumi 贴上你的
fvSolution
文件先,理论上松弛因子在SIMPLE算法里不会影响最后的计算结果的,只是松弛因子越小需要的迭代越多。 -
@izumi 关于数值计算和CFD中的松弛技术,写了一点,对你的算例有用没用凑合看看吧
-
@队长别开枪
十分感谢您的回复,我之前主要是对SIMPLEC改进了通量修正方法,没有为压力设置松弛因子。
有疑问,因为在rhoSimpleFoam的pEqn.H与pcEqn.H的代码中都有
p.relax();
,结合您最新的回复,OpenFOAM中SIMPLEC应该也可以在fields中设置压力松弛。另外,请问OpenFOAM中哪个求解器支持SIMPLER,没有找到。
-
目前木有SIMPLER
-
@izumi 你可以贴一下你的
fvSolution
文件,因为不管使用哪种方法,只要收敛,结果大体上是应该差不多的
论坛登录问题反馈可联系 li.dy@dyfluid.com