return 0;
wmake

potentialFoam解析

如果打不开图像,请右键在新标签页打开图像后刷新几次 如果打不开图像,请右键在新标签页打开图像后刷新几次


引言

大量的流体力学现象,如尾涡和边界层现象,都和有旋流动密不可分。但无旋流同样大量的存在于某些细分的流体力学领域(如航空、地下水)。对于无旋流的模拟,并不需要求解复杂的NS方程。potentialFoam求解不可压缩无粘无旋的速度势方程,其在OpenFOAM主要用途有两个,一个是用于计算一个大概的初始速度场,另一个是通过边界条件计算一个守恒的速度场。在potentialFoam中植入的是速度势的拉普拉斯方程,凡是使用拉普拉斯方程描述的问题,都可以使用potentialFoam进行求解(Choi and Blemker, 2013)。虽然求解的是速度势,但在使用的时候,需要给定速度的边界条件,且求解器求解的结果满足通量(速度)是守恒的,同时速度势满足和速度的对应关系。但速度势的边界默认为$0$。由于在结果中,重要的是potentialFoam求解的速度和压力,因此速度势默认为$0$的边界对此没有影响。

如果打不开图像,请右键在新标签页打开图像后刷新几次 如果打不开图像,请右键在新标签页打开图像后刷新几次

图1. 圆柱无粘流(左图):流场无旋,可通过势流理论进行描述。这种流场对其中的物体施加的净阻力为零(Wikki, 2018)。
卡门涡街(右图):相对于较为温和的圆柱无粘流。有旋的卡门涡街更为暴力(Stackexchange, 2013)。

控制方程

对于无粘无旋流动,有不可压缩流体连续性方程

\begin{equation}\label{cont} \nabla \cdot \bfU =0 \end{equation}

其中$\bfU$表示速度。在给定初始条件的情况下,方程\eqref{cont}不一定能满足,也即速度不满足连续性方程(流场散度不为零)。举个小例子:对于一个管道流动,进口给定速度为$1\mathrm{m}/\mathrm{s}$,内部场均为$0$。在不进行求解的情况下,速度场必然不守恒。potentialFoam要处理的,就是通过求解速度势,来使得速度满足方程\eqref{cont}。

同样的,对于无粘无旋流,则必定存在一个势函数$P$,使得

\begin{equation}\label{phi0} \nabla P=\bfU \end{equation}

\begin{equation}\label{phi} -\nabla P=\bfU \end{equation}

本文选用方程\eqref{phi}作为速度势的定义,这样的话,速度势和压力的作用同向(Ferziger and Peric, 2012)。将方程\eqref{phi}代入到不可压缩连续性方程,有速度势应满足的方程:

\begin{equation}\label{potential} \nabla\cdot\left(\nabla P\right)=0 \end{equation}

其为一个线性的拉普拉斯方程。求解后有速度势,然后通过方程\eqref{phi}反推出速度,将$\bfU$代入到动量方程,即可求出压力$p$。求解方程\eqref{potential}要比求解非线性的不可压缩无粘无旋NS方程简单的多。

要求解方程\eqref{potential},则要给定速度势$P$的边界条件。这通常需要进行一定的计算才能得到。例如对于进口,需要给定速度势的固定梯度边界条件,例如对于一个$x$方向的速度进口($v=0$),$x$和$y$方向的速度势边界条件为

\begin{equation}\label{potentialBC} \frac{\partial P}{\p x}=u, \frac{\partial P}{\p y}=v=0 \end{equation}

另一种方法是将求解的方程演变为

\begin{equation}\label{potential2} \nabla\cdot\left(\nabla P\right)=-\nabla\cdot\bfU \end{equation}

同时定义通量场

\begin{equation} \phi=\bfU_f\cdot\bfS_f \end{equation}

并将其内部场初始化为$0$,同时通过$\bfU$给定$\phi$的边界条件。这种方法可以将边界条件的影响通过源项来植入方程\eqref{potential2}。这和通过给定$P$的边界条件直接求解方程\eqref{potential}是相符的,因为在方程离散的过程中,边界条件控制也是通过进入方程的源项影响待求变量的结果。类似的数值算例处理可以参考导热拉普拉斯方程的求解。

如果打不开图像,请右键在新标签页打开图像后刷新几次

图2. 采用Immersed interface approach计算的多物体无粘势流(Marichal2014 et al., 2014)。

代码分析

下面进入代码分析。potentialFoam采用上文中的第二种方法,即求解方程\eqref{potential2},其在代码中则对应下面的内容:

    fvScalarMatrix PhiEqn
    (
        fvm::laplacian(dimensionedScalar("1", dimless, 1), Phi)
     ==
        fvc::div(phi)
    );
    PhiEqn.setReference(PhiRefCell, PhiRefValue);
    PhiEqn.solve();

其中的phi的边界通过速度$\bfU$计算出来,内部场初始化为$0$。上述代码运行后求解有$P$值。需要注意的是,求解后的$P$的内部场是正确的,但是边界场默认为$0$。

下一步,直觉上可通过方程\eqref{phi}来更新速度。但前提是需要保证$P$的边界是完全正确的。由于potentialFoam中$P$的边界默认均为$0$。因此这种方法不能保证边界网格单元速度的正确性。

另一种方法是,首先修正通量,得到守恒的通量后,从守恒的通量反推速度场。这种方法遵循有限体积法的规则:即通量是严格守恒的。相应的代码如下,其对应方程\eqref{phi}或\eqref{potential2}:

{
    phi -= PhiEqn.flux();
}

随后,可通过phi组建速度场:

U = fvc::reconstruct(phi);

参考文献

Choi, H. F., Blemker, S. S., 2013. Skeletal muscle fascicle arrangements can be reconstructed using a laplacian vector field simulation. PloS one, 8, 775-766.

Ferziger, J. H., Peric, M., 2012. Computational methods for fluid dynamics. Springer Science Business Media.

Potential flow around a circular cylinder, 2018. Wikki.

Flow around a square cylinder, 2013. Stackexchange.

Marichal, Y., Chatelain, P., Winckelmans, G., 2014. An immersed interface solver for the 2-D unbounded Poisson equation and its application to potential flow. Computers & Fluids, 96, 76-86.

更新历史
2018.05.01依据链接对文章改版

东岳流体®版权所有
勘误、讨论、补充内容请前往CFD中文网

');