SIMPLE & PISO &PLMPLE
参考链接
不可压缩连续性方程和动量方程为:
∇ ⋅ u = 0 ∂ u ∂ t + ∇ ⋅ ( u u ) − ∇ ⋅ ( ν ∇ u ) = − ∇ p \begin{aligned} &\nabla \cdot \mathbf{u} = 0 \\ &\frac{\partial \mathbf{u}}{\partial t} +\nabla \cdot(\mathbf{u}\mathbf{u})-\nabla\cdot(\nu \nabla \mathbf{u}) = -\nabla p \end{aligned} ∇⋅u=0∂t∂u+∇⋅(uu)−∇⋅(ν∇u)=−∇p
下面利用连续性方程与动量方程推到压力方程。
离散线性化动量方程,同时压力梯度的形式保持不变。得到:
[ a 1 , 1 a 1 , 2 a 1 , 3 ⋯ a 1 , n a 2 , 1 a 2 , 2 a 2 , 3 ⋯ a 2 , n a 3 , 1 a 3 , 2 a 3 , 3 ⋯ a 3 , n ⋮ ⋮ ⋮ ⋱ ⋮ a n , 1 a n , 2 a n , 3 ⋯ a n , n ] [ u 1 u 2 u 3 ⋮ u n ] = [ r 1 r 2 r 3 ⋮ r n ] + [ ( ∂ p / ∂ x ) 1 ( ∂ p / ∂ x ) 2 ( ∂ p / ∂ x ) 3 ⋮ ( ∂ p / ∂ x ) n ] \left[ \begin{matrix} a_{1,1} & a_{1,2} & a_{1,3} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & a_{2,3} & \cdots & a_{2,n} \\ a_{3,1} & a_{3,2} & a_{3,3} & \cdots & a_{3,n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n,1} & a_{n,2} & a_{n,3} & \cdots & a_{n,n} \\ \end{matrix} \right] \left[\begin{matrix} u_1 \\ u_2 \\ u_3 \\ \vdots \\ u_n \end{matrix}\right]= \left[\begin{matrix} r_1 \\ r_2 \\ r_3 \\ \vdots \\ r_n \end{matrix}\right]+ \left[\begin{matrix} (\partial p/\partial x)_{1} \\ (\partial p/\partial x)_{2} \\ (\partial p/\partial x)_{3} \\ \vdots \\ (\partial p/\partial x)_{n} \end{matrix}\right] a1,1a2,1a3,1⋮an,1a1,2a2,2a3,2⋮an,2a1,3a2,3a3,3⋮an,3⋯⋯⋯⋱⋯a1,na2,na3,n⋮an,n u1u2u3⋮un = r1r2r3⋮rn + (∂p/∂x)1(∂p/∂x)2(∂p/∂x)3⋮(∂p/∂x)n
[ a 1 , 1 0 0 ⋯ 0 0 a 2 , 2 0 ⋯ 0 0 0 a 3 , 3 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ a n , n ] ⏟ Diagonal A [ u 1 u 2 u 3 ⋮ u n ] + [ 0 a 1 , 2 a 1 , 3 ⋯ a 1 , n a 2 , 1 0 a 2 , 3 ⋯ a 2 , n a 3 , 1 a 3 , 2 0 ⋯ a 3 , n ⋮ ⋮ ⋮ ⋱ ⋮ a n , 1 a n , 2 a n , 3 ⋯ 0 ] ⏟ Off diagonal [ u 1 u 2 u 3 ⋮ u n ] = [ r 1 r 2 r 3 ⋮ r n ] + [ ( ∂ p / ∂ x ) 1 ( ∂ p / ∂ x ) 2 ( ∂ p / ∂ x ) 3 ⋮ ( ∂ p / ∂ x ) n ] \underbrace{\left[ \begin{matrix} a_{1,1} & 0 & 0 & \cdots & 0 \\ 0 & a_{2,2} & 0 & \cdots & 0 \\ 0 & 0 & a_{3,3} & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & a_{n,n} \\ \end{matrix} \right]}_{\text{Diagonal}~\mathbf{A}} \left[\begin{matrix} u_1 \\ u_2 \\ u_3 \\ \vdots \\ u_n \end{matrix}\right]+ \underbrace{\left[ \begin{matrix} 0 & a_{1,2} & a_{1,3} & \cdots & a_{1,n} \\ a_{2,1} & 0 & a_{2,3} & \cdots & a_{2,n} \\ a_{3,1} & a_{3,2} & 0 & \cdots & a_{3,n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n,1} & a_{n,2} & a_{n,3} & \cdots & 0 \\ \end{matrix} \right]}_{\text{Off diagonal}} \left[\begin{matrix} u_1 \\ u_2 \\ u_3 \\ \vdots \\ u_n \end{matrix}\right]= \left[\begin{matrix} r_1 \\ r_2 \\ r_3 \\ \vdots \\ r_n \end{matrix}\right]+ \left[\begin{matrix} (\partial p/\partial x)_{1} \\ (\partial p/\partial x)_{2} \\ (\partial p/\partial x)_{3} \\ \vdots \\ (\partial p/\partial x)_{n} \end{matrix}\right] Diagonal A a1,100⋮00a2,20⋮000a3,3⋮0⋯⋯⋯⋱⋯000⋮an,n u1u2u3⋮un +Off diagonal 0a2,1a3,1⋮an,1a1,20a3,2⋮an,2a1,3a2,30⋮an,3⋯⋯⋯⋱⋯a1,na2,na3,n⋮0 u1u2u3⋮un = r1r2r3⋮rn + (∂p/∂x)1(∂p/∂x)2(∂p/∂x)3⋮(∂p/∂x)n
a P u u P + ∑ N a N u u N = r − ∇ p a_P^{\mathrm{u}} \mathbf{u}_P+\sum_N a_N^{\mathrm{u}} \mathbf{u}_N=\mathbf{r}-\nabla p aPuuP+N∑aNuuN=r−∇p
其中, r r r是源项。
引入 H ( u ) \mathbf{H}(\mathbf{u}) H(u):
H ( u ) = r − ∑ N a N u u N \mathbf{H}(\mathbf{u})=\mathbf{r}-\sum_{N}a_{N}^{\mathbf{u}}\mathbf{u}_{N} H(u)=r−N∑aNuuN
因此:
a P u u P = H ( u ) − ∇ p u P = ( a P u ) − 1 ( H ( u ) − ∇ p ) \begin{aligned} a_{P}^{\mathbf{u}}\mathbf{u}_{P} & = \mathbf{H}(\mathbf{u})-\nabla p \\ \mathbf{u}_{P} & = (a_{P}^{\mathbf{u}})^{-1} (\mathbf{H}(\mathbf{u})-\nabla p) \end{aligned} aPuuPuP=H(u)−∇p=(aPu)−1(H(u)−∇p)
将连续性方程代入即得到压力方程:
∇
⋅
[
(
a
P
u
)
−
1
∇
p
]
=
∇
⋅
[
(
a
P
u
)
−
1
H
(
u
)
]
\nabla \cdot\left[\left(a_P^{\mathrm{u}}\right)^{-1} \nabla p\right]=\nabla \cdot\left[\left(a_P^{\mathrm{u}}\right)^{-1} \mathbf{H}(\mathbf{u})\right]
∇⋅[(aPu)−1∇p]=∇⋅[(aPu)−1H(u)]
- SIMPLE算法并未考虑算子 H ( u ) \mathbf{H}(\mathbf{u}) H(u)是由不满足连续性方程的速度构造得到的。SIMPLE回到循环的开始,并在时间上进行(迭代)。
- PISO算法返回对 H ( u ) \mathbf{H}(\mathbf{u}) H(u)的修正并且再次执行动量校正步骤,然后进行时间上的迭代。
- PIMPLE算法是SIMPLE(outer corrector)算法与PISO(inner corrector)算法的融合.主要思想是在每个时间步长中寻求一个完全收敛的稳态解,并在时间上进行。如果只进行一个外部修正循环与多个内部循环,PIMPLE循环类似于PISO。在每个时间步长中,可以使用欠松弛来实现平稳收敛。