icoFoam解析中哪里调用了SIMPLE算法?
-
icoFoam
用的是PISO算法,simpleFoam
用的是SIMPLE算法,这个大家都很认同。 @Him 的这句话:OF只有PISO,simpleFoam也是PISO.
或许可以这样说:
OpenFOAM里面的PISO算法和SIMPLE算法确实都采用了略去临点的策略
。但需要注意的是,如果对比simpleFoam
和pisoFoam
的代码(非常简单的改动就可以),重要区别在于松弛和PISO的多次压力修正而不是略去临点的影响。如果你去看1985年Issa PISO算法的文章,并没有发现Issa调用了SIMPLE的思想,所以我刚说的这句话:
OpenFOAM里面的PISO算法和SIMPLE算法确实都采用了略去临点的策略
是非常大胆的。不过如果你看Versteeg and Malalasekera的书关于PISO算法的一章,你会发现确实PISO算法也调用了略去临点影响的思想。
但是为什么在Issa原始的PISO算法里面没有提及?原因在于对于求解压力方程的SIMPLE和PISO算法,都需要调用略去临点的假定。所以这就揭示了1985年PISO算法为什么没有显性的提及略去临点的思想,因为1985年的文章求解的是压力方程。
回到 @cfd-china 的问题,对于都略去临点假定的
simpleFoam
和icoFoam
,你不需要从simpleFoam
去找,icoFoam
中也有。icoFoam
中的方程24就调用了这个思想。不得不承认,对于求解压力方程而非压力修正方程的算法,这种略去临点的思想很难被发现(被隐性的包含了)。
如果你去研究SIMPLEC算法,会发现SIMPLEC算法需要在方程两侧都减去临点的影响,这导致压力方程会包含
上个时间步
的压力项,这也是SIMPLEC压力方程不需要松弛的一个原因。目前教科书中都是描述的压力修正方程,2015年我从SIMPLE算法和SIMPLEC算法导出过压力方程,但是太复杂了并没有在icoFoam解析中包含,暂时也没有打算包含。可能会让大家非常困惑...
-
@东岳 李老师,您好。首先是对“PISO算法略去临点”的理解,是否指的是《icoFoam解析》公式(24)中临近网格点的速度U_sub(N)采用的是已知的速度值?其次是关于“PISO和SIMPLE算法的区别”,看了您撰写的《浅谈Piso,Simple算法》(http://dyfluid.com/pisosimple.html ) 以及您的这段回复后,我目前仅能理解到PISO算法里的关键方程为动量预测方程(由已知U, p预测速度场),压力(泊松)方程(构造HbyA后,求p)和速度方程(形式和动量预测方程一致,但采用HbyA和p来求解新的速度场),SIMPLE算法里的关键方程是动量预测方程,压力修正方程和速度修正方程,抛开松弛这一点,他们的区别在哪儿?是否如同这篇博客(http://openfoam.blog.sohu.com/94234375.html )所言,PISO中采用了相邻校正,而SIMPLE里没有?