结构格子
结构格子的理论基础
概述
老师,结构格子到底是什么?非结构格子的区别我还是不太理解。
结构格子(structured mesh)是指用规则排列的六面体(3D)或四边形(2D)单元填充计算域的格子。每个单元的索引可以用$(i,j,k)$唯一表示。也就是说,格子点的相邻关系是隐式确定的,不需要存储连接信息。
不需要保存相邻信息是不是说内存效率更高?
完全正确。在结构格子中,相邻单元始终是$(i\pm1, j\pm1, k\pm1)$,所以数据访问是连续的,缓存命中率很高。相同单元数的情况下,与非结构格子相比,内存消耗约为一半,计算速度可快2~3倍。
物体适合坐标系与度量
但现实形状是弯曲的、扭转的。规则格子怎么应对的?
这里使用物体匹配曲线坐标系(body-fitted curvilinear coordinates)。将物理空间$(x,y,z)$映射到计算空间$(\xi,\eta,\zeta)$。在计算空间中格子变为均匀直方体,差分格式可以简洁地编写。
坐标变换的雅可比矩阵至关重要,定义如下。
如果雅可比行列式$|J|$为零或为负,表明格子被压扁或翻转,计算会破裂。
雅可比行列式为负是什么情况?
典型的是在尖角附近,或格子线相交的情况。生成格子时,必须确认所有单元的$|J| > 0$。
结构格子上的Navier-Stokes方程
控制方程在结构格子上形式会改变吗?
将物理空间中的Navier-Stokes方程变换到计算空间。用保守形式表示如下。
其中$\mathbf{Q}$是保守变量向量,$\hat{\mathbf{E}}, \hat{\mathbf{F}}, \hat{\mathbf{G}}$是含度量项的变换后的通量。
度量项具体是什么?
例如$\hat{\mathbf{E}} = \frac{1}{J}(\xi_x \mathbf{E} + \xi_y \mathbf{F} + \xi_z \mathbf{G})$,坐标变换的偏导数$\xi_x, \xi_y$等被乘到通量上。如果没有正确离散化这些度量项,自由流保存(freestream preservation)会破裂,引入虚假的数值误差。
格子间距的等比配置
壁面附近需要格子密集。怎么控制的?
基本上使用等比级数(geometric progression)。
其中$\Delta s_1$是第1层厚度,$r$是增长比(growth ratio)。若$r = 1.2$,每层比前一层厚1.2倍。壁面侧的$\Delta s_1$由$y^+$要求决定,增长比$r$推荐在1.1~1.3之间。
增长比太大会怎样?
相邻单元间的尺寸比会变得太大,截断误差增加,数值扩散恶化。特别是对二阶精度格式,建议将相邻单元的体积比控制在1.2以下。
结构格子的历史——1974年Thompson-Thames-Mastin变换与BFM(边界匹配格子)的诞生
为复杂物体形状建立系统的"边界匹配格子(Body-Fitted Mesh)"方法的是1974年Joe Thompson、Frank Thames和C. Wayne Mastin发表的"椭圆型偏微分方程格子生成法(TTM法)"。这种方法将物理空间的复杂计算域用ξ-η-ζ一致直交格子表示的"计算空间"进行"共形映射",在计算空间中求解方程,然后变换回物理空间。航空机翼型、船体、发动机内流道等任意形状的结构格子生成首次变得实际可行,推动了1980年代CFD的爆炸式发展。基于TTM法的格子生成代码GRID2D至今50年后仍被用于教学和研究。
结构格子的数值计算方法
结构格子的生成方法
结构格子实际上怎么生成的?
介绍3种代表性方法。
代数方法(Transfinite Interpolation: TFI)
给定边界上的格子点分布,用插值法确定内部格子点。计算快,但对复杂形状的格子品质控制困难。
椭圆型格子生成(Elliptic Grid Generation)
求解Poisson方程来放置格子点。
通过调整控制函数$P, Q, R$可以控制壁面附近的格子集中和正交性。格子品质最高,但需要迭代计算,生成耗时长。
双曲型格子生成
从壁面法向"生长"格子的方法。特别适用于边界层网格生成,壁面正交性自然确保。
该选择哪种方法?
实务中,常采用混合方法:先用TFI生成初始格子,再用椭圆型求解器平滑化。ICEM和Pointwise中这是标准工作流程。
多分块结构格子
复杂形状单个分块似乎不够…
这种情况用多分块结构格子。将计算域分成多个分块,每个分块内是结构格子,分块间通过接口面(interface)传递信息。
分块间接口大体分两种。
- 共形(Conformal):接口处格子点一致。无插值误差
- 非共形(Non-conformal):格子点不一致。需要插值
肯定是共形更好吧?
精度上是的,但对复杂形状,维持共形会让拓扑设计极其困难。实务中,ICEMCFD Hexa这样的分块拓扑编辑器被重用。不过,拓扑设计本身是结构格子最大的瓶颈,即使熟练者也需要数日至数周来生成一辆车的网格。
差分格式的适配性
听说结构格子用差分法比较容易,为什么?
结构格子中格子点规则排列,所以能自然地构造高阶精度差分格式。例如5阶精度WENO格式或紧凑差分法(Pade型)在结构格子上发挥最大效能。
在非结构格子上实现同等高精度,需要最小二乘法梯度重构和不等间距处理,计算代价大幅增加。
所以DNS(直接数值模拟)和LES为什么都偏好结构格子。
完全正确。学术高精度计算仍以结构格子为主流。特别是通道流、管道流等较简单形状的DNS,实际上结构格子是唯一选择。
O型、C型、H型格子的选择——翼型周围结构格子设计判据
翼型周围的结构格子中,格子拓扑选择直接影响精度。O型格子(包围翼型的同心椭圆形)可均匀高品质分析整个翼周,从前缘到后缘有连续自然的网格。但翼后缘尖角会导致格子线折叠,薄后缘的形状精度下降。C型格子(从翼前面C形回绕)易于捕捉后缘剥离域,适合失速(Stall)分析。H型格子(矩形直交格子变形)最简洁,但翼周O型格子高品质不及。实务中"O型或C型为拓扑基础,远场用H型结构格子覆盖外层"的OC-H复合格子是翼型高精度RANS/LES的标准选择。
结构格子的实务应用
实践工作流
请讲讲用结构格子做CFD分析的实际流程。
以ICEM CFD Hexa为例,翼型周围结构格子的典型流程。
1. CAD导入与形状简化:删除不必要的圆角、孔
2. 分块拓扑设计:O-grid(翼周)+ H-grid(远场)的组合
3. 边参数设置:从$y^+ \approx 1$计算壁面第1层$\Delta y_1$
4. 格子生成与品质确认:检查雅可比、正交性、纵横比
5. 导出为求解器格式:Fluent .msh、CGNS等
第1层厚度的决定
如何从$y^+$求第1层厚度?
先从典型雷诺数估算壁面摩擦系数。平板近似为
由壁面剪切应力$\tau_w = \frac{1}{2} C_f \rho U_\infty^2$和摩擦速度$u_\tau = \sqrt{\tau_w / \rho}$得到,
例如$Re_L = 10^6$、空气,$y^+ = 1$时,$\Delta y_1 \approx 2 \times 10^{-5}$ m。
分块拓扑的定石
拓扑设计好像需要天赋,感觉很恐怖…
有些定石。
| 拓扑 | 用途 | 特点 |
|---|---|---|
| O-grid | 圆柱、翼型周围 | 壁面正交性易保证 |
| H-grid | 矩形管道 | 简洁,但前缘易产生奇点 |
| C-grid | 翼型(后缘尖角) | 后缘尾流区高品质 |
| L-grid | 台阶、凹陷 | 角部正交性有效 |
翼型用哪个?
一般是C-grid或O-grid。C-grid适合后缘尖翼型,尾流区网格品质好。O-grid适合钝头物体。ICEM CFD Hexa中,常先做大H-grid分块,再在翼面沿着做O-grid分块,这是常见做法。
品质检查准则
结构格子品质检查看什么指标?
要掌握CFD特有的指标。
| 指标 | 推荐值 | 影响 |
|---|---|---|
| 行列式(Determinant 2x2x2) | > 0.3 | 单元变形。负数不可接受 |
| 正交性(Orthogonality) | > 0.2 | 非正交补正的必要性 |
| 纵横比 | < 1000(边界层内) | 边界层内高值可接受 |
| 相邻单元体积比 | < 1.2 | 数值扩散增加 |
| 增长比 | 1.1~1.3 | 过大导致截断误差增加 |
边界层内纵横比高可以吗?
结构格子边界层中,墙平行方向相比法向非常薄,纵横比数百至千量级很常见。流沿壁面流动时无问题,反而壁面法向分析度充分最重要。
汽车风洞CFD的结构格子——外部流的分块结构与棱柱层设计
汽车外部气动CFD(风洞等效分析)中,车体周围生成高品质棱柱层(边界层分析)后,外部用六面体分块覆盖的"混合结构格子"在精度与计算成本平衡上优越。棱柱层设计中,在车体最高速点(前面、门镜、A柱)确保y+<1,最小单元高度常设10~20μm。分块结构部分在车后方尾流(Wake)区预留2~3L长度(L为车长),确认压力系数Cp在出口边界充分恢复。Tesla公开的气动优化案例中,用结构格子与多面体混合网格、总2亿单元的分析,CFD预测实车测量的阻力系数Cd值在±3%以内。
结构格子的软件比较
结构格子生成工具的比较
能生成结构格子的工具有哪些?
列举主要工具对比。
| 工具 | 开发商 | 特点 | 结构格子方法 |
|---|---|---|---|
| ICEM CFD Hexa | Ansys | 多分块结构格子标准 | 分块拓扑基础 |
| Pointwise | Cadence(原Pointwise Inc.) | 高品质结构格子著称 | 分块/T-Rex |
| GridPro | PDC | 自动多分块 | 模板拓扑自动化 |
| blockMesh | OpenFOAM | 文本定义 | blockMeshDict直接指定 |
| Ansys Meshing (Mapped) | Ansys | Workbench集成 | Mapped Face/Sweep |
ICEM CFD Hexa
ICEM经常听到,那么强吗?
ICEM CFD Hexa是结构格子生成的实际行业标准。原ICEM公司开发,2000年被Ansys收购。最大优势是分块拓扑可视化设计编辑,广泛应用于涡轮叶片、汽车发动机进排气管、飞机机翼等所有需要结构格子的领域。
但从2024年前后,Ansys暗示ICEM CFD向维护模式过渡,推动向Ansys Meshing内MultiZone和Fluent Meshing转移。
Pointwise
Pointwise是什么定位?
特别在航空航天领域评价高。NASA、Boeing等广泛使用。2023年被Cadence收购。既支持结构格子又支持非结构格子,T-Rex(边界层自动成长)功能特别突出,可半自动生成结构化边界层网格。
blockMesh(OpenFOAM)
OpenFOAM怎么生成结构格子?
用blockMeshDict文本文件直接记述顶点坐标、分块定义、边曲线、单元数。无GUI,但脚本自动生成容易。简单形状(通道、管道、后向台阶等)的学术计算常用。
```
blocks
(
hex (0 1 2 3 4 5 6 7) (100 50 1)
simpleGrading (1 ((0.5 0.5 10)(0.5 0.5 0.1)) 1)
);
```
这个simpleGrading的数字什么意思?
控制各方向单元尺寸增长比。这里在$y$方向设置两阶段偏置(壁面密集、中央粗糙)。确保壁面分析度不可或缺。
选择指南
最后选哪个工具?
结构格子生成工具——ICEM CFD、Pointwise、Gridgen的历史与分工
高品质结构格子(Structured Mesh)生成的专业工具ICEM CFD(现ANSYS ICEM CFD)与Pointwise(现Cadence)有近40年历史。ICEM CFD因算法灵活性和多通道六面体分块功能在航空航天领域长期标准化。Pointwise以T-Rex(迭代近邻棱柱层生成)算法生成高品质各向异性网格著称,发布计划稳定性和支持品质获好评。2010年代,结构格子生成耗时(数周瓶颈)问题凸显,推动向多面体、多面体转移加速。现代实务中,复杂内部流路用多面体、机翼船体等流线外部流用结构格子的分工已成标准。
结构格子的前沿研究
前沿主题
结构格子领域最新研究是什么?
介绍几项引人注目的方向。
自动多分块拓扑生成
结构格子最大课题——分块拓扑设计自动化正被研究。四边形分割(Quad Meshing)算法,特别是cross-field法全自动分块,近年进步显著。GridPro率先开拓这领域,最近Pointwise的Quilt功能也采用同样方法。
完全自动化还不能实现吗?
3D中特别是,奇点(格子线集中点)的几何约束使任意形状完全自动化近乎未解决难题。但机器学习推荐分块拓扑的方法最近被提出,将来可能从CAD模型自动建议最优拓扑。
高阶单元的适配性
请讲高阶精度法与结构格子的组合。
结构格子与高阶精度法的适配极好。特别受关注的有以下方法。
- 高阶紧凑差分法:用狭窄模板实现高精度。充分利用结构格子规则性
- 谱元法:各分块内Chebyshev/Legendre多项式展开。Nek5000等典范
- DG法(间断Galerkin法)的hex单元版:张量积展开比四面体单元效率高数倍
特别DNS或wall-resolved LES中,壁面法向Chebyshev配点的结构格子已成标准选择。
GPU计算的相容性
GPU算结构格子能加速吗?
结构格子与GPU计算兼容性极好。规则内存访问模式适合GPU的SIMD/SIMT执行模型。实际结构格子Navier-Stokes求解器报告超100倍加速(vs CPU)。
反面,非结构格子因内存访问不规则,GPU化效率不如结构格子。这是高性能计算重新审视结构格子的原因之一。
结构格子故障排除
故障排除
结构格子出问题怎么对付?
归纳常见问题与对策。
1. 负雅可比行列式(单元翻转)
症状:ICEM CFD或Pointwise中Determinant出现负值单元。求解器报"negative cell volume"错误。
原因与对策:
- 尖锐角:用O-grid包围或增加分块将角变钝
- 分块顶点位置不良:顶点重新吸附到边或面
- 过度格子集中:降低壁面增长比(1.2→1.15等)
- 曲面上分块边:增加B-spline拟合控制点数
ICEM现"Negative volumes",先查什么?
Display > Quality > Determinant 2x2x2 色差显示,定位红色单元。多数原因是分块顶点配置或边曲线拟合问题。
2. 高斜度
症状:单元歪斜大,求解器残差振荡、发散。
对策:
- 用B-spline平滑分块边曲线
- Pre-mesh Quality逐边调整节点数
- 应用椭圆型平滑(ICEM:Smooth Mesh Globally)
- 无法改善时重审拓扑
3. 分块拓扑无法确定
这个最困难…复杂形状分块分割想不出来。
实践建议3点。
1. 从已有模板开始:涡轮机械、翼型、喷嘴等标准拓扑文献论坛丰富
2. 从外向里:先做远场H-grid,再加物体周O-grid。外→内思考易整理
3. 决定放弃时间:耗时数周坚持结构格子不如改用hexdominant(snappyHexMesh等),生产率可能更高
4. 求解器互操作性问题
症状:ICEM CFD生成的格子在Fluent或CFX读入时报错。
对策:
- 分块间接口不整合:ICEM执行Check Mesh Topology → Close domain
- 周期边界条件偏差:拓宽数值容差(Fluent的Mesh > Merge Nodes)
- 导出格式选择:CGNS格式互操作性高、推荐。Fluent .msh直接导出需注意版本
5. 网格收敛性无法获得
格子细化但结果不收敛?
结构格子特有问题:分块接合部格子线不连续。特别non-conformal接合补间误差局部变大。对策是接合面两侧单元尺寸对齐,或改为conformal接续。
结构格子"分块冻结"失败——复杂形状六面体分块分割难
结构六面体格子生成中最难的是"拓扑设计(分块分割)"。翼型还好,发动机吸排气管或复杂分叉、合流形状,内部用哪向分块分割成为品质决定因素。常见失败:①分块边界面与流垂直——边界格子线陡变品质降低。②T字、Y字分岐分块接续破裂——"奇点线(Singularity Lines)"要从流远处设置,是关键。③过度拉引格子线——为对齐相邻分块格子线而挤歪一侧。ICEM CFD的Blocking功能经验习熟必需,"结构格子职人"这样专门家企业内必要的理由在这里。
价值
详细
错误