· 靳贺伟 · 网格基础 · 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/U、0/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
以背景六面体网格为基础,执行:
- castellated mesh:切割和局部细化;
- snapping:捕捉几何表面;
- 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. 应用案例一:高大空间车间通风
对于固定车间和固定送排风口,可采用静态共形网格。
建议:
- 车间主体使用六面体或六面体主导网格;
- 送风射流、焊接源和人员呼吸区局部加密;
- 壁面附近是否加边界层取决于研究目标;
- PM 输运若采用欧拉标量模型,应控制源附近和浓度梯度区分辨率;
- 若采用 DPM,应检查颗粒穿越网格尺度与湍流积分时间尺度。
如果旋转格栅仅通过时间变化的速度方向等效,而不建立真实叶片运动,整个计算域仍属于静态网格。
8. 应用案例二:固定锅炉炉膛
固定炉膛通常使用静态网格。关键加密区包括燃烧器出口、回流区、煤粉射流剪切层、OFA 喷口、结渣高热流区以及烟道转弯。
对于煤粉燃烧,网格独立性应同时考察气相和颗粒相,不应只比较炉膛出口温度。
9. 常见错误
错误一:将静态网格等同于稳态计算
静态网格可以进行瞬态计算,例如瞬态污染物释放、脉动边界条件和非定常燃烧。
错误二:只检查最大非正交角
最大值可能位于不重要的角落,也可能正位于射流或火焰核心。必须结合位置判断。
错误三:用单元数代替网格分辨率
相同单元数可以对应完全不同的局部分辨率和误差结构。
错误四:认为某一种单元必然更优
单元类型不是唯一决定因素。尺寸过渡、非正交、偏斜、边界层和物理梯度位置更重要。
10. 适用范围
静态共形网格应作为以下问题的首选:
- 几何不运动;
- 运动可通过边界条件等效;
- 研究对象主要是平均流场;
- 希望获得最直接的守恒和最小计算开销;
- 后续需要与动态方法建立基准对比。