理解OpenFOAM案例中的blockMesh文件里的simpleGrading
在OpenFOAM中,blockMesh
是用于生成计算网格的重要工具。blockMesh
文件中定义了计算域的几何形状和网格划分。simpleGrading
是其中一个关键参数,用于控制网格的非均匀分布。本文将详细解释 simpleGrading
的含义及其在网格生成中的作用。
一、blockMesh文件结构
在开始讨论 simpleGrading
之前,了解 blockMesh
文件的基本结构是必要的。blockMesh
文件主要包括以下几个部分:
- vertices:定义计算域的顶点。
- blocks:定义网格块及其划分方式。
- edges:定义曲线边(可选)。
- boundary:定义边界条件。
- mergePatchPairs:定义需要合并的边界对(可选)。
二、blocks部分中的simpleGrading
blocks
部分定义了每个网格块的顶点索引、网格单元划分和网格分布方式。具体格式如下:
blocks
(hex (0 1 2 3 4 5 6 7) (nx ny nz) simpleGrading (gx gy gz)
);
- hex:表示六面体网格块。
- (0 1 2 3 4 5 6 7) :定义了网格块的八个顶点。
- (nx ny nz) :定义了网格块在x、y、z方向的划分单元数。
- simpleGrading (gx gy gz) :定义了网格在x、y、z方向的分布方式。
三、理解simpleGrading参数
simpleGrading
的参数是一个包含三个值的向量,分别对应x、y、z方向。这些值控制着网格的拉伸和压缩情况。具体解释如下:
- gx, gy, gz:分别表示x、y、z方向的拉伸系数。如果值为1,表示该方向上网格均匀分布。如果值大于1,表示网格沿该方向从一端逐渐变密集。如果值小于1,表示网格沿该方向从一端逐渐变稀疏。
示例1:
simpleGrading (1 1 1)
表示x、y、z方向的网格均匀分布。
示例2:
simpleGrading (2 1 0.5)
表示x方向从一端到另一端网格逐渐变密集,z方向从一端到另一端网格逐渐变稀疏,y方向网格均匀分布。
四、simpleGrading的应用示例
以下是一个具体的blockMesh文件示例:
vertices
((0 0 0)(1 0 0)(1 1 0)(0 1 0)(0 0 1)(1 0 1)(1 1 1)(0 1 1)
);blocks
(hex (0 1 2 3 4 5 6 7) (10 10 10) simpleGrading (2 1 0.5)
);edges
(
);boundary
(front{type patch;faces((0 1 2 3)(4 5 6 7));}back{type patch;faces((0 3 7 4)(1 2 6 5));}
);mergePatchPairs
(
);
解释:
- vertices部分定义了一个单位立方体的八个顶点。
- blocks部分定义了一个六面体网格块,划分为10x10x10个单元,并且x方向的网格从一端到另一端逐渐变密集(2),z方向的网格从一端到另一端逐渐变稀疏(0.5),y方向网格均匀分布(1)。