1.1 计算域的空间离散(OpenFOAM理论笔记系列)

1.1 计算域的空间离散

导语: 如果有人问你有限体积法的精度是几阶,你也许会不假思索地回答:“二阶!” ,但是为什么是二阶呢?使用更高阶的离散格式能不能使得有限体积法的精度提升呢?

认识有限体积法,我们先从认识有限体积入手。相比有限体积这个说法,更多的人可能更熟悉“网格”这个词。在一张白纸上画几道横线,再画几道竖线,你就能得到一个最简单的网格系统。在你的第一印象里,也许有横线和竖线构成的一个小四方块就是一个网格单元,也就是我们说的一个有限体积(即控制体,之后均采用控制体一词)。然而事实并非如此。

  • 图1.1 一个二维网格系统1
    1.1 计算域的空间离散(OpenFOAM理论笔记系列)_第1张图片

图1.1是一个典型的二维网格系统,与你自己刚刚在白纸上手画的几横几竖的网格系统非常像。在这里,一个控制体并不是横线与竖线围成的一个小方块,而是以一个节点为中心,拥有特定长度和宽度的小方块。图中P点是一个控制体的中心点,其宽度为△x,高度为△y,四面分别为w、e、s、n,其相邻网格的节点为W、E、S、N。在这里W、E、S、N和其小写字母分别对应着东西南北的英文单词首字母。有时候,为了统一描述,我们也会用大写字母N(即邻居,Neighbor)表示一个控制体周围的其他控制体,这样的表示方法在CFD教材中是通用的。一般而言,控制体的形状不一定非要是正方形(对应于三维中的正六面体),只要满足控制体之间彼此不重叠,充满整个计算区域的条件即可。图1.22是一个典型的三维控制体,其具有复杂的几何形状。

  • 图1.2 一个三维控制体2
    1.1 计算域的空间离散(OpenFOAM理论笔记系列)_第2张图片

在有限体积法中,所有物理量存储在控制体中心点P上,所谓中心点,即满足以下关系的点:
∫ V P ( x ⃗ − x P ⃗ ) d V = 0 (1.1) \int_{V_P}(\vec x-\vec {x_P})dV=0 \tag{1.1} VP(x xP )dV=0(1.1)
式(1.1)定义了中心点的位置,该式看似简单,却是有限体积法二阶精度的一个重要体现。对于任何一个物理量 ϕ \phi ϕ,其在控制体内的值可以由中心点P点的值进行泰勒展开得到:
ϕ ( x ⃗ ) = ϕ P + ( x ⃗ − x ⃗ P ) ⋅ ( ∇ ϕ ) P + 1 2 ( x ⃗ − x ⃗ P ) 2 : : ( ∇ ∇ ϕ ) P + 1 3 ! ( x ⃗ − x ⃗ P ) 3 : : : ( ∇ ∇ ∇ ϕ ) P + ⋯ (1.2) \phi(\vec x)=\phi _P+(\vec x-\vec x_P)\cdot(\nabla\phi)_P+{1\over2}(\vec x-\vec x_P)^2::(\nabla\nabla\phi)_P+{1\over3!}(\vec x-\vec x_P)^3:::(\nabla\nabla\nabla\phi)_P+\cdots \tag{1.2} ϕ(x )=ϕP+(x x P)(ϕ)P+21(x x P)2::(ϕ)P+3!1(x x P)3:::(ϕ)P+(1.2)
式(1.2)中 : : : ⏟ n \underbrace{:::}_n n :::表示两个n阶张量的内积,其结果是一个标量。有限体积法是二阶精度是指我们在对 ϕ \phi ϕ计算时仅保留前两项,后面的所有项均忽略。在一个控制体内,对 ϕ \phi ϕ积分有:
∫ V P ϕ ( x ⃗ ) d V = ∫ ϕ P + ( x ⃗ − x ⃗ P ) ⋅ ( ∇ ϕ ) P d V = ∫ ϕ P d V + ∫ ( x ⃗ − x ⃗ P ) ⋅ ( ∇ ϕ ) P d V = ϕ P ∫ V p d V + ( ∇ ϕ P ) ∫ V p ( x ⃗ − x ⃗ P ) d V = ϕ P V p (1.3) \int _{V_P}\phi(\vec x) dV=\int \phi _P+(\vec x-\vec x_P)\cdot(\nabla\phi)_P dV\\=\int \phi _P dV+\int (\vec x-\vec x_P)\cdot(\nabla\phi)_PdV\\=\phi _P\int_{V_p}dV+(\nabla\phi_P)\int_{V_p}(\vec x-\vec x_P)dV=\phi_PV_p \tag{1.3} VPϕ(x )dV=ϕP+(x x P)(ϕ)PdV=ϕPdV+(x x P)(ϕ)PdV=ϕPVpdV+(ϕP)Vp(x x P)dV=ϕPVp(1.3)
式(1.3)是之后经常要用到的一个式子,是有限体积法二阶精度的一个重要结果。

另外,一个方法的精度是由该方法中的最低精度决定的,因此,式(1.2)直接决定了有限体积法的最高精度是二阶,即使你采用更高阶的离散格式,也没法提高算法的整体精度(式(1.2)的物理含义是认为物理量在控制体内线性分布)。特别要注意的是,如果你在计算中使用了低于二阶精度的离散格式(如一阶迎风),那么你将会将整个方法的精度拉低到一阶,这种情况往往是要避免的。

系列说明:
接触有限体积法有一段时间了,也看了一些资料,但是有时候总觉得看过一遍之后什么也记不住。老话说得好,眼过千遍不如手过一遍,久而久之我就有了写一些比较像样子的笔记的想法。初学的时候曾经写过一本叫“OpenFOAM编程笔记:单相不可压缩流动”的册子,但当时基础太差(现在基础也不好),错误太多,倒不如推倒重来。
本系列将持续更新,欢迎各位挑错交流,挑错交流可以直接留言也可以联系邮箱[email protected]。等到预定内容全部写完后我将集结所有内容为一个独立的文件,开放下载。


  1. Versteeg H K , Malalasekera W . An Introduction to Computational Fluid Dynamic: The Finite Volume Method Second edition [M]. Edinburgh Gate:Pearson Education, 2007. Figure 4.12. ↩︎

  2. Jasak, Hrvoje. Error analysis and estimation for the finite volume method with applications to fluid flows.[D]. London:Imperial College London . 1996 . Figure 3.1 ↩︎ ↩︎

你可能感兴趣的:(OpenFOAM理论笔记,OpenFOAM,CFD,仿真,计算流体力学)