非结构化网格

分类:流体分析(CFD)| 综合版 2026-04-06
CAE visualization for unstructured mesh theory - technical simulation diagram
非结构化网格

非结构化网格的理论基础

概述

🧑‍🎓

老师,非结构化网格有什么这么方便的地方吗?


🎓

非结构化网格(unstructured mesh)是将单元之间的连接关系明确地保持为表格形式的网格。四面体(tet)、六面体(hex)、三角柱(prism/wedge)、金字塔等不同单元形状可以自由混合。最大的优点是可以自动为复杂的三维形状生成网格。


🧑‍🎓

把CAD模型放进去就能自动生成网格吗?


🎓

几乎是这样。Fluent Meshing、STAR-CCM+、snappyHexMesh等现代CFD网格生成器只需要输入STL表面就能自动生成体积网格。这是非结构化网格在工业界广泛普及的原因。


Delaunay三角形分割

🧑‍🎓

自动网格生成算法是怎样工作的?


🎓

最基本的是Delaunay三角分割。对于给定的点群,使得每个三角形的外接圆内不包含其他点来构成三角形。


🎓

Delaunay条件用数学形式表示为,三角形$T$的外接圆$C(T)$满足:


$$ \forall p \notin T: \quad p \notin \text{interior}(C(T)) $$

满足这个条件时,三角形中最小角被最大化。换句话说,可以得到尽可能"接近等边三角形"的网格。


🧑‍🎓

在三维中情况如何?


🎓

在三维中是Delaunay四面体分割。外接圆被替换为外接球。但是在三维中品质保证不如二维有效,容易产生扁平四面体(sliver tetrahedra)。除去扁平四面体是三维自动网格生成的重要课题。


Advancing Front法

🎓

另一个主要算法是Advancing Front法。从边界表面向内部"推挤"单元。


1. 将边界面的表面网格初始化为"前线"

2. 从前线上选择一个面,生成新点并创建单元

3. 更新前线(删除旧面,添加新面)

4. 重复直到前线消失


🧑‍🎓

与Delaunay法的区别是什么?


🎓

Advancing Front法的边界适应性更高,边界附近的网格质量更好。而Delaunay法的鲁棒性更高,实现更容易。实际工具中经常使用结合两者的混合算法。


有限体积法与的关系

🧑‍🎓

在非结构化网格上如何离散Navier-Stokes方程?


🎓

使用有限体积法(FVM)。对每个单元应用积分形式的守恒律。


$$ \frac{\partial}{\partial t}\int_V \mathbf{Q}\,dV + \oint_S \mathbf{F} \cdot d\mathbf{S} = 0 $$

计算通过单元面的通量$\mathbf{F} \cdot d\mathbf{S}$。与结构化网格不同,由于网格不规则,需要使用Gauss-Green法或最小二乘法来重构单元中心间的梯度。


🧑‍🎓

精度方面怎样?


🎓

非结构化网格上的有限体积法基本上是二阶精度。这是因为从单元中心的值和梯度对面处的值进行线性插值。当网格的非正交性较大时,需要非正交校正项,这会影响收敛性和精度。


闲谈 闲谈话题

非结构化网格CFD的历史——1987年Jameson-Baker论文开创的时代

非结构化网格(Unstructured Mesh)在CFD中的实用化因Antony Jameson及其合作研究人员在1987年发表的"Euler方程非结构三角形网格有限体积法"而加速。在此之前,航空CFD主要使用结构化网格(Structured Mesh),专家需要数月时间才能为复杂形状生成网格。Jameson等人的方法使网格生成不依赖于形状的复杂性,是CFD"民主化"的技术转折点。1990年代计算机计算速度的提高结合非结构化网格的发展,非结构化网格CFD迅速普及,当今主要CFD求解器(Fluent、OpenFOAM、SU2等)都采用非结构化网格作为基本架构。

非结构化网格的数值计算方法

单元形状的比较

🧑‍🎓

四面体、六面体、棱柱…有很多种类,它们各有什么区别?


🎓

让我们比较CFD中使用的主要单元形状。


单元形状面数相邻单元数精度自动生成容易度
四面体(Tet)44低~中(数值耗散大)非常容易
六面体(Hex)66高(数值耗散小)困难(需结构化网格)
三角柱(Prism)55中~高可在边界层自动生成
金字塔(Pyramid)55用于hex/tet接连
多面体多个多个中~高从tet转换
🧑‍🎓

四面体的数值耗散较大是什么意思?


🎓

四面体面数少,从单元中心指向各面的方向向量多样性低。这导致梯度近似精度下降,斜向通量计算时数值耗散增大。在相同单元数的情况下,六面体通常比四面体精度高2~3倍。


梯度重构方法

🧑‍🎓

非结构化网格中梯度计算有什么特别的地方吗?


🎓

有的。有三种主要方法。


Green-Gauss法

$$ (\nabla \phi)_C \approx \frac{1}{V_C} \sum_f \phi_f \mathbf{S}_f $$

从单元面处的值$\phi_f$计算梯度。根据面值的评估方法分为cell-based法和node-based法。

最小二乘法(Least-Squares)

$$ \min \sum_{nb} w_{nb} \left[ (\nabla \phi)_C \cdot \Delta \mathbf{r}_{nb} - (\phi_{nb} - \phi_C) \right]^2 $$

从相邻单元的差分,在最小二乘意义下求最优梯度。对于扭曲网格也很稳健。

🧑‍🎓

在Fluent中应该用哪个?


🎓

对于Fluent Meshing生成的网格,推荐使用Green-Gauss Node-Based或Least-Squares。对于四面体网格,Least-Squares通常更稳定。


非正交校正

🧑‍🎓

非正交性如何影响CFD?


🎓

在有限体积法中计算扩散项通量时,如果单元中心间的向量$\mathbf{d}$与面法向向量$\mathbf{S}$平行(正交网格)则很简单,但非正交时需要校正项。


$$ \nabla \phi \cdot \mathbf{S} = \nabla \phi \cdot \mathbf{S}_\perp + \nabla \phi \cdot \mathbf{S}_\parallel $$

第二项是非正交校正项。显式处理会导致收敛性变差,当网格非正交度超过70度时,发散风险增加。OpenFOAM用nonOrthogonalCorrectors参数来设置这种校正的迭代次数。


🧑‍🎓

70度是标准吗?


🎓

是的。一般指导原则是非正交度应控制在70度以下,理想是40度以下。特别是OpenFOAM这样的分离型求解器对非正交性很敏感。


闲谈 闲谈话题

Delaunay三角分割——非结构化网格生成的数学基础和质量控制

非结构化三角形和四面体网格自动生成的基础是"Delaunay三角分割",它满足"外接圆内不包含其他点"的最优性条件。这个性质使得生成的三角形的最小角最大化,CFD中有问题的细长单元(高倾斜度)自动被抑制。1934年Boris Delaunay提出的这个数学概念,50年后在计算机时代被重新发现为网格生成算法,成为现代网格生成软件的核心。结合边界上单元大小控制的"受约束Delaunay法"和改善网格质量的Point Insertion,这种方法构成了TetGen、netgen、TetMeshGC等现代基础算法。

非结构化网格的实际应用

实践工作流程

🧑‍🎓

用非结构化网格进行CFD的步骤是什么?


🎓

一般工作流程如下。


1. 生成表面网格:CAD导出STL/STEP → 表面重新网格化

2. 设置尺寸函数:定义壁面第一层厚度、最大单元尺寸、增长率

3. 插入边界层网格:在墙面添加棱柱层(inflation layer)

4. 生成体积网格:用tet/hex-dominant/poly填充

5. 质量检查和修改:检查倾斜度、非正交性等


表面网格的重要性

🧑‍🎓

表面网格常被相对忽视,但是……


🎓

其实表面网格的质量决定了整个体积网格的质量。从CAD直接获得的STL中三角形的宽高比往往很差,还可能有间隙或重复面。


🎓

表面质量的目标为:

  • 倾斜度:0.8以下(0.95以上致命)
  • 最小角度:15度以上
  • 面积比(相邻三角形):5:1以下

Fluent Meshing

🧑‍🎓

Fluent Meshing的使用要点是?


🎓

Fluent Meshing中工作流程是自动化的。要掌握的要点。


  • Import Geometry:经过SpaceClaim/DM更稳定
  • Add Local Sizing:在关注区域使用Body of Influence(BOI)
  • Generate Surface Mesh:通过Min Size/Max Size/Growth Rate控制
  • Add Boundary Layers:First Height + Growth Rate + Number of Layers
  • Generate Volume Mesh:Poly-Hexcore是目前最佳实践

snappyHexMeshOpenFOAM

🧑‍🎓

snappyHexMesh的配置技巧是什么?


🎓

snappyHexMesh从STL表面自动生成hex-dominant网格。重要参数列举如下。


参数推荐值说明
castellatedMeshControls.maxLocalCells1000000本地最大单元数
castellatedMeshControls.resolveFeatureAngle30特征边检测角度
snapControls.nSmoothPatch3卡入时平滑迭代数
addLayersControls.nSurfaceLayers5-20边界层层数
addLayersControls.expansionRatio1.2边界层增长比
addLayersControls.firstLayerThickness从y+计算第一层相对/绝对厚度
🧑‍🎓

snappyHexMesh经常在什么地方失败?


🎓

边界层插入(addLayers)最容易失败。在凹角部和边附近棱柱层可能会自交。需要通过调整featureAnglenRelaxIterminMedialAxisAngle进行反复试验。


闲谈 闲谈话题

复杂水路CFD网格生成——污水处理厂流路非结构化网格化和质量管理

污水处理厂的沉淀池、消毒槽等是混有复杂曲面和构筑物的水处理设施。通过CFD进行流速分布、停留时间分布(RTD: Residence Time Distribution)分析对处理效率改善很重要,非结构四面体+棱柱层混合网格是标准方法。实务上的课题是"水中挡板(Baffle)薄壁体的网格化"——薄厚度为数厘米的薄板两侧都生成棱柱层时,薄板部分单元干涉"Pinch Point"问题频发。对策是将薄板作为"零厚度壁面(面单元)"处理,或者重新设计网格使薄板宽度至少有4个单元。日本环保部的水处理CFD指南中明确规定了网格质量检查流程(倾斜度<0.85),是设计人员的必读内容。

非结构化网格的软件比较

非结构化网格生成工具的比较

🧑‍🎓

能生成非结构化网格的工具有什么区别?


🎓

让我们比较主要工具。


工具主要单元类型边界层自动化程度特点
Fluent MeshingPoly-HexcorePrism非常高与Fluent无缝集成
STAR-CCM+Polyhedral/TrimmerPrism非常高CAD导入~解析一体化
snappyHexMeshHex-dominantPrism高(CLI)免费,最适合脚本自动化
cfMeshHex-dominantPrism高(CLI)OpenFOAM用,snappy的替代
PointwiseTet/Hex/PrismT-Rex中(GUI)重视高质量
ANSA(BETA CAE)任意任意汽车行业广泛使用

Fluent Meshing

🧑‍🎓

Fluent Meshing的"Poly-Hexcore"有什么优点?


🎓

Poly-Hexcore是内部用直交六面体(octree hex)填充,壁面附近用多面体单元连接的方法。既可以获得六面体的精度和效率,又可以兼顾多面体的灵活性。Ansys从2020年左右开始强力推进,与纯tet相比,单元数减少一半以上,精度相当或更好。


STAR-CCM+

🧑‍🎓

STAR-CCM+有什么优势?


🎓

STAR-CCM+由CD-adapco开发,2016年被Siemens收购。最大的特点是多面体网格的先驱。从CAD导入到解析、后处理完全集成的工作流程,特别在汽车和航空航天领域实力强。Trimmer(基于直交格子)网格也很受欢迎。


snappyHexMesh对比cfMesh

🧑‍🎓

对于OpenFOAM用户,snappyHexMesh和cfMesh有什么区别?


🎓

snappyHexMesh是OpenFOAM标准,信息丰富,但边界层插入有时不稳定。cfMesh由Creative Fields公司开发,是替代工具,边界层生成更稳健。不过cfMesh对OpenFOAM版本的追踪略显滞后。


选择指南

🧑‍🎓

最后该选哪个呢?


🎓
  • 有商业许可 + Ansys环境:Fluent Meshing(Poly-Hexcore)
  • 有商业许可 + Siemens环境:STAR-CCM+的Volume Mesh
  • 开源 + 自动化:snappyHexMesh或cfMesh
  • 手工高质量Pointwise
  • 汽车OEMANSA(包括NVH、碰撞等多物理场)

  • 闲谈 闲谈话题

    非结构化网格生成工具深入对比——Gmsh对比TetGen对比ANSYS Meshing

    按功能比较非结构化网格生成工具:Gmsh(开源)通过Python/API实现完全自动化,适合脚本化工作流,通过Geo/Meshing选项可细致控制质量指标,在学术界广泛使用。TetGen(柏氏算法)以约束Delaunay四面体化的最高质量著称,与有限元分析(FEA)联动优秀。ANSYS Meshing的强项是从复杂CAD导入到自动网格生成的一贯工作流,Fault耐性(自动修复形状间隙和孔洞)优秀。在工业现场,普遍采用"ANSYS Meshing快速生成→质量检查→问题部位用Gmsh手动补完"的现实方案。

    非结构化网格的先进研究

    先进话题

    🧑‍🎓

    非结构化网格领域最近的关注技术是什么?


    🎓

    有几个重要动向。


    Octree基础网格的崛起

    🎓

    近年来,octree(八分树)基础的网格生成快速普及。snappyHexMesh、Fluent Meshing的Poly-Hexcore、STAR-CCM+的Trimmer都是基于octree。


    🎓

    octree的优势是:

    • 背景网格生成速度为$O(n \log n)$
    • 自然获得等向单元,数值耗散小
    • 并行分布式计算容易

    🧑‍🎓

    octree有弱点吗?


    🎓

    相邻单元间大小比会跳跃到2:1(hanging node),这会成为问题。如何处理这个问题是各工具的区别。通过多面体化平滑过渡的方法成为主流。


    机器学习网格生成

    🧑‍🎓

    AI能进行网格生成吗?


    🎓

    目前研究主要集中在两个方向。


    1. 尺寸函数的自动最优化:从以往解析结果学习,自动判断哪些地方需要细化

    2. 从CAD形状推断网格参数:用ML模型从形状特征推荐网格设置


    🎓

    还不是"AI进行网格切割"阶段,但"AI提出网格设置建议"已逐步实用化。Ansys Discovery Live和Simcenter HEEDS等在探索这个方向。


    无网格方法的进展

    🧑‍🎓

    不用网格的方法将来会成为主流吗?


    🎓

    SPH(光滑粒子流体动力学)和LBM(格子Boltzmann方法)等,不需要传统网格概念的方法在进步。特别是LBM,ProLB和PowerFLOW等商业软件也在推进。


    🎓

    不过对于需要精密解析壁面边界层的问题(翼型气动、热交换器等),基于网格的FVM在精度和效率上仍占优势。无网格方法应被看作在自由表面流和大变形问题中的补充角色。


    非结构化网格的故障排除

    故障排除

    🧑‍🎓

    非结构化网格常见问题有哪些?


    🎓

    总结常见问题。


    1. 倾斜度过高

    🎓

    症状:网格质量报告显示倾斜度> 0.95的单元存在。Fluent出现"Negative cell volume"或发散。


    🎓

    对策

    • 先改进表面网格质量(多数情况根本原因在此)
    • CAD微小特征(细长面、短边)进行去特征化处理
    • 局部尺寸设置在问题区域减小单元尺寸
    • 对于tet网格使用improve函数进行平滑化

    2. 边界层网格插入失败

    🧑‍🎓

    棱柱层经常插不进去,很困扰。


    🎓

    常见原因和对策


    原因对策
    锐角转角处棱柱相互碰撞角部表面尺寸调小
    间隙太窄棱柱放不进减少层数或减薄第一层
    表面网格质量不良重新网格化改善三角形质量
    接触面处理不足改为Non-conformal interface
    🎓

    Fluent Meshing中Last Ratio选项可控制棱柱层放不进部分的处理。STAR-CCM+中Stop Distance设置棱柱生长的截断。


    3. 网格生成内存不足失败

    🎓

    症状:网格生成过程中内存不足(Out of Memory)异常终止。


    🎓

    对策

    • 检查表面网格大小。是否产生了大量不必要的微小单元
    • 确认最大单元尺寸和最小单元尺寸比不过大(实用上限约100:1)
    • 利用并行网格生成(Fluent Meshing、snappyHexMesh支持并行)
    • 在64bit环境中确保足够内存(1亿单元目标约16-32GB)

    4. 求解器发散

    🧑‍🎓

    网格生成成功但求解器发散。


    🎓

    网格质量引起的发散诊断步骤如下。


    1. 确认最坏单元:Fluent用Report Quality,OpenFOAM用checkMesh把握最坏值

    2. 定位问题单元:发散开始的位置与最坏单元位置对照

    3. 若倾斜度 > 0.9:该处可能是发散原因

    4. 若非正交度 > 70度:OpenFOAM中增加nonOrthogonalCorrectors至2~3

    5. 若体积变化率急剧:调整smoothing/refinement


    🧑‍🎓

    被说"网格不好",但具体该怎么改常常不明白……


    🎓

    首先得好好读checkMesh(OpenFOAM)或Mesh Quality Report(Fluent)的输出。找出最坏质量单元在哪里,局部改进其附近的表面网格或尺寸设置。全体重新网格是最后手段。


    闲谈 闲谈话题

    非结构化网格壁面近处陡梯度解震荡——第一棱柱层质量不良

    非结构化网格壁面近处"局部速度、温度不自然震荡(Oscillation)"时,常因棱柱层(Prismatic Layer)质量不良。典型问题:①棱柱层伸缩率(Growth Ratio)过大(>1.5)导致层间单元尺寸急变,数值耗散增加。②棱柱层到体积四面体过渡部分单元方向急变(高倾斜度),局部数值稳定性恶化。③棱柱层厚度超过凸面曲率半径的10%,外侧层比内侧大,棱柱"膨胀"与相邻单元干涉。解析前检查壁面附近棱柱层质量(非正交性<60°、倾斜度<0.7)是诊断第一步。

    相关模拟器

    用该领域的交互式模拟器体验理论

    模拟器列表

    相关领域

    热分析V&V·质量保证结构分析
    本文评价
    谢谢回答!
    有帮助
    想了解
    更多
    报告
    错误
    有帮助
    0
    想了解更多
    0
    报告错误
    0
    由NovaSolver贡献者撰写
    匿名工程师和AI — 网站地图
    查看档案