压力方程和压力修正方程
-
请问一个压力基的的问题,压力方程和压力修正方程的区别到底是什么,为什么几乎所有的教材在讲述simple和Piso算法的时候都是用的压力修正方程,但是openfoam里面却全是压力方程?
-
压力方程和压力修正方程的区别到底是什么,为什么几乎所有的教材在讲述simple和Piso算法的时候都是用的压力修正方程,但是openfoam里面却全是压力方程?
-
主要原因是教材都非常老了,经典教材第一版写的时候都是90年代。同理,教材都是采用的交错网格。虽然同位网格有介绍。如果2018年有人写一本新的CFD巨著,很有可能用的就是压力方程而不是压力修正方程。
-
但为了遵守SIMPLE算法的基本思想,压力修正方程的介绍还是有必要。但是你看PISO直接用的就是压力泊松。但相对于PISO,SIMPLE更容易理解因此教材中主要介绍原始的SIMPLE压力修正。
-
压力方程可以从压力修正方程推导出来
-
-
@李东岳
感谢东岳老师。- 主要原因是教材都非常老了,经典教材第一版写的时候都是90年代。同理,教材都是采用的交错网格。虽然同位网格有介绍。如果2018年有人写一本新的CFD巨著,很有可能用的就是压力方程而不是压力修正方程。
您的意思是压力方程和压力修正方程都一样,还是说压力方程相对于压力修正方程更有优势?
- 但为了遵守SIMPLE算法的基本思想,压力修正方程的介绍还是有必要。但是你看PISO直接用的就是压力泊松。但相对于PISO,SIMPLE更容易理解因此教材中主要介绍原始的SIMPLE压力修正。
我看computational methods for fluid dynamics等教材, PISO也是用压力修正方程推导的。
是不是对于可压缩的压力基计算,压力修正方程更适合一些呢?
对于压力方程:
只有是rho=a*p这种形式的状态方程才可以直接把对流项里面的rho换成p。
但是对于压力修正方程:
对于任何状态方程都是可以用的。
谢谢您! -
@程迪
您写的博客实在太详细了,关于openfoam的piso算法,1.这个是由piso.correct()控制的,而piso.correct()是由变量label corrPISO_控制的。
2.重复的时候,UEqn所引用的U是有更新的。所以用UEqn构造的UEqn.A(), UEqn.H()也可能会有所更新。之前有帖子曾经讨论过这个问题,http://www.cfd-china.com/topic/589/关于piso循环的二次修正的一个疑问/15 。
@李东岳 在 关于piso循环的二次修正的一个疑问 中说:
piso循环的二次修正是建立在第一次修正的基础上的。第二次修正的连续性方程是涉及到u**。上面的代码里,UEqn并没有做更新。如果忽略函数fvc::ddtCorr(U, phi),pEqn也是没有变动的。
问题1: 这是不是就意味着对同一个pEqn重复一次迭代运算?虽然构建的速度矩阵
Ueqn
没有更新,但是HbyA
有变化,因此求解的pEqn
不是同一个pEqn
问题2:我对问题1的理解是,在icoFoam的算法里,速度u通过连续性方程被隐性的耦合到了pEqn里面。第二次的修正是没有必要的。这与原始的PISO算法有区别。请问这样的理解对吗?
不是很清楚你说的哪个二次修正,如果你说的是楼上指的非正交修正,一般情况下不需要进行,除非在那个
potentialFoam
中。因为这个求解器没有进行速度-压力耦合迭代。为什么Ueqn没有更新,但是HbyA有变化,HbyA不是等于UEqn.H()/UEqn.A()吗? Ueqn没有更新,那么UEqn.H()和UEqn.A()应该没变啊,为什么HbyA反而有变化。
-
@litong189456
UEqn是一个fvMatrix<T> 类,类成员里有个指针psi_,指向了U,所以UEqn.A, H计算都会引用U,U更新,A,H也更新。 -
我还得更深入的阅读代码了,太感谢了。