· 靳贺伟 · 网格基础  · 10 min read

OpenFOAM v2512 静态共形网格:数据结构、生成流程与质量控制

详细介绍静态共形网格的有限体积基础、polyMesh 数据结构、网格生成与导入流程、checkMesh 指标以及工程应用。

静态共形网格是 OpenFOAM 中最基础、最常用的网格形式,也是评价其他动态网格方法时的基准。

“静态”表示计算过程中网格点坐标和拓扑关系不变;“共形”表示同一网格区域内部,相邻控制体共享同一个面,不需要通过额外插值连接。

1. 共形网格的有限体积含义

有限体积法对每个控制体积分:

[ \frac{\partial}{\partial t}\int_V \rho\phi,dV +\oint_{\partial V}\rho\phi\boldsymbol{u}\cdot d\boldsymbol{S}

\oint_{\partial V}\Gamma_\phi\nabla\phi\cdot d\boldsymbol{S} +\int_V S_\phi,dV ]

对于共形内部面,某个面同时属于两个相邻单元:

  • 对主单元而言,面通量为流出;
  • 对邻单元而言,同一面通量为流入;
  • 两者面积矢量方向相反。

因此,在离散层面内部面通量能够成对抵消。只要数值实现一致,局部守恒可自然转化为全局守恒。

非共形接口、AMI 和重叠网格则需要先建立映射关系,再传递通量或变量,其数值链条更长。

2. polyMesh 的核心文件

2.1 points

记录所有网格点的三维坐标。

2.2 faces

每个面由有序点编号组成。点序决定面的法向方向。

2.3 owner

每个面至少属于一个单元,该单元称为 owner。

2.4 neighbour

仅内部面具有 neighbour。边界面没有邻单元,因此不会出现在 neighbour 文件中。

2.5 boundary

将边界面组织为不同 patch:

inlet
{
    type        patch;
    nFaces      100;
    startFace   24000;
}

walls
{
    type        wall;
    nFaces      1200;
    startFace   24100;
}

boundary 中的类型是几何 patch 类型,不等同于 0/U0/p 中的场边界条件类型。

3. OpenFOAM 中的单元形状

OpenFOAM 使用任意多面体数据结构,因此可处理:

  • 六面体;
  • 四面体;
  • 三棱柱;
  • 棱锥;
  • 一般多面体;
  • 多种单元混合形成的 hybrid mesh。

但“能够读取”不代表“数值效果相同”。

3.1 六面体网格

优点:

  • 对主流方向可进行定向布置;
  • 在相同单元数下数值耗散通常较小;
  • 适合边界层和长距离输运;
  • 梯度与通量离散较容易保持稳定。

缺点是复杂几何下生成困难,块结构设计需要经验。

3.2 四面体网格

优点是复杂几何自动化程度高、局部加密方便。其主要问题包括:

  • 相同空间分辨率下单元数通常较多;
  • 易产生高偏斜和非正交;
  • 对旋流、边界层及长距离对流问题可能产生较强耗散。

3.3 棱柱边界层

棱柱层用于解析壁面法向梯度。关键参数包括:

  • 首层高度;
  • 增长率;
  • 总厚度;
  • 层间平滑性;
  • 与核心网格的过渡质量。

对于壁面函数,首层高度应与目标 (y^+) 匹配;对于低雷诺数模型或壁面解析 LES,需要更严格的近壁分辨率。

3.4 多面体网格

多面体单元具有较多邻面,通常能改善复杂几何适应性,但仍需检查面非平面性、小面和短边、单元中心偏移以及过多面数带来的存储开销。

4. 静态网格的生成路径

4.1 blockMesh

适合规则或可分块几何。

blockMesh
checkMesh

其优点是几何和拓扑完全可控,适合教学算例、管道、通道和规则旋转域。

4.2 snappyHexMesh

以背景六面体网格为基础,执行:

  1. castellated mesh:切割和局部细化;
  2. snapping:捕捉几何表面;
  3. layer addition:添加边界层。

典型流程:

surfaceFeatureExtract
blockMesh
snappyHexMesh -overwrite
checkMesh -allGeometry -allTopology

应重点检查 STL 是否封闭、表面法向、特征线、locationInMesh 以及局部加密与边界层之间的冲突。

4.3 外部网格导入

常见工具包括:

fluentMeshToFoam
ideasUnvToFoam
gmshToFoam
cgnsToFoam

导入后必须检查单位、patch、周期面、cellZone、faceZone、面法向以及重复面。

5. 标准使用过程

步骤一:明确物理尺度

包括几何尺度、最小间隙、边界层厚度、射流宽度、火焰或浓度梯度尺度以及颗粒源分布。

步骤二:确定网格策略

回答以下问题:

  • 是否需要边界层?
  • 主流方向是否适合六面体排列?
  • 哪些区域需要局部加密?
  • 是否存在窄间隙或尖角?
  • 是否需要建立 cellZone、faceZone?

步骤三:生成并检查

checkMesh
checkMesh -allGeometry -allTopology

步骤四:初始化并试算

用较保守的离散格式和时间步进行短时计算,观察连续性误差、残差、边界通量以及高非正交区域的局部振荡。

步骤五:网格独立性验证

至少建立粗、中、细三套网格。比较压降、总流量、平均温度、污染物去除率、壁面热流、颗粒捕集率和关键截面分布。

6. checkMesh 关键指标

6.1 非正交性

面法向与单元中心连线的偏离程度。非正交性过大时,梯度和 Laplace 项需要更强修正。不能只看最大值,还应看高非正交单元的数量和位置。

6.2 偏斜度

面中心相对于理想插值位置的偏移。高偏斜会降低面值插值精度,并可能引起局部振荡。

6.3 体积和行列式

最小体积必须为正。负体积意味着网格拓扑或几何无效。

6.4 面权重

过小的插值权重通常意味着相邻单元尺寸或位置差异过大。

6.5 长宽比

高长宽比并非必然错误。边界层网格可以具有很高长宽比,但应满足长轴方向与低梯度方向一致、尺寸变化平滑且面法向合理。

7. 应用案例一:高大空间车间通风

对于固定车间和固定送排风口,可采用静态共形网格。

建议:

  1. 车间主体使用六面体或六面体主导网格;
  2. 送风射流、焊接源和人员呼吸区局部加密;
  3. 壁面附近是否加边界层取决于研究目标;
  4. PM 输运若采用欧拉标量模型,应控制源附近和浓度梯度区分辨率;
  5. 若采用 DPM,应检查颗粒穿越网格尺度与湍流积分时间尺度。

如果旋转格栅仅通过时间变化的速度方向等效,而不建立真实叶片运动,整个计算域仍属于静态网格。

8. 应用案例二:固定锅炉炉膛

固定炉膛通常使用静态网格。关键加密区包括燃烧器出口、回流区、煤粉射流剪切层、OFA 喷口、结渣高热流区以及烟道转弯。

对于煤粉燃烧,网格独立性应同时考察气相和颗粒相,不应只比较炉膛出口温度。

9. 常见错误

错误一:将静态网格等同于稳态计算

静态网格可以进行瞬态计算,例如瞬态污染物释放、脉动边界条件和非定常燃烧。

错误二:只检查最大非正交角

最大值可能位于不重要的角落,也可能正位于射流或火焰核心。必须结合位置判断。

错误三:用单元数代替网格分辨率

相同单元数可以对应完全不同的局部分辨率和误差结构。

错误四:认为某一种单元必然更优

单元类型不是唯一决定因素。尺寸过渡、非正交、偏斜、边界层和物理梯度位置更重要。

10. 适用范围

静态共形网格应作为以下问题的首选:

  • 几何不运动;
  • 运动可通过边界条件等效;
  • 研究对象主要是平均流场;
  • 希望获得最直接的守恒和最小计算开销;
  • 后续需要与动态方法建立基准对比。

参考资料

返回“理论基础 · 网格基础”子栏目

Back to Blog

Related Posts

View All Posts »