h-细分化(网格加密)
h细化的理论基础
h·p·r——三种细化方式的分工
降低网格离散化误差有三条路线。h细化缩小单元尺寸 \( h \)(增加单元数);p细化提高单元多项式阶数;r细化不改单元数、只优化节点位置。其中h是最通用的路线——任何单元类型、任何求解器都适用,也是网格收敛性验证(GCI等)的地基。
前辈总说"先整体加密一倍再说",可这样做到底换来了什么、换来多少,我心里没数……
这背后有一套漂亮的理论:误差按网格尺寸的几次方减小——收敛阶数——由单元的多项式阶数决定。知道了它,你就能做出"h减半,误差应降为1/4"这样的定量预测;预测不中,就说明哪里出了问题。加密不是碰运气的体力活,而是预测与验证的仪器。
先验误差估计与收敛阶数
解足够光滑时,阶数为 \( k \) 的单元(线性单元 \( k=1 \))的有限元误差满足
$$ \| u - u_h \|_{E} \le C\, h^{k}, \qquad \| u - u_h \|_{L^2} \le C\, h^{k+1} $$
(\( \|\cdot\|_E \) 为能量范数)。即线性单元下应变·应力按 \( O(h) \)、位移按 \( O(h^2) \) 收敛;二次单元则分别为 \( O(h^2) \)、\( O(h^3) \)。位移先收敛、应力后收敛正是这个阶差的必然结果——"位移不动了应力还在动"不是异常。
奇异点对收敛率的限制
漂亮的收敛以解的光滑性为前提。凹角(re-entrant corner)、点荷载、点约束、双材料界面角点处存在应力奇异性,解的正则性降为 \( u \sim r^{\lambda} \)(\( \lambda < 1 \))。此时均匀细化的收敛率无论单元阶数如何都被限制在 \( \min(k, \lambda) \)——再怎么加密、用多高阶的单元,奇异点附近的应力值都不会收敛。正确的选择是:①把角倒圆(按实物建出圆角),②把评估点移开,③围绕奇异点做梯度细化+外推。认清h细化帮不上忙的地方,是用好它的第一步。
细化的数值方法
均匀细化与局部细化
均匀细化把所有单元等分,能构造收敛性验证(GCI·Richardson外推)所需的系统性序列;代价是三维每档约8倍单元数。局部细化只加密误差大的区域,是生产性分析的主力。实现上有两大流派:
- 单元分裂型——分割现有单元(四叉树/八叉树、red-green分割、二分法)。与相邻单元的节点不匹配用悬挂节点约束或过渡单元处理
- 重划分型——更新尺寸场后整体重新剖分。单元质量好保持,但非线性·时程问题需要解的映射,要盯住移送误差
无论哪种方式,细化产生的新边界节点都必须重新投影到CAD几何上。带着粗网格的折线外形去细化,几何误差会让离散化误差的下降封顶(圆孔应力集中系数收敛不到理论值的典型原因)。
自适应h细化的循环
自适应细化是"求解→估计→标记→细化"的迭代:
- SOLVE——在当前网格上求解
- ESTIMATE——计算逐单元误差指示子:应力恢复型(Zienkiewicz-Zhu超收敛面片恢复:平滑应力与单元应力之差)或残差型
- MARK——选出误差大的单元(如Dörfler标记:选取占总误差固定比例的单元集)
- REFINE——分割被标记单元,进入下一轮
终止条件是"估计误差达标"或"目标量的变化小于容差"。指示子只是估计而非真值,最终网格上的收敛性确认(再细化一档看目标量变化)不能省。
CFD边界层网格的细化不是各向同性的
壁面边界层的解析由第一层厚度(\( y^+ \))和增长率管理,各向同性的均匀细化会破坏这套设计。边界层要各向异性地细化:"保持第一层厚度、增加层数"或"降低增长率",并在细化前后核对 \( y^+ \) 分布。使用壁面函数时还有"越细化越糟"的陷阱:把 \( y^+ \) 压到30以下会违反壁面函数的适用条件。
实务指南
在哪里加密——经验值
| 部位 | 经验值 | 理由 |
|---|---|---|
| 应力集中处(圆角·孔边) | 90°圆弧≥3个单元;梯度方向≥3层 | 1~2个单元会系统性低估峰值 |
| 板厚方向(受弯的实体) | 二次单元≥2层 | 解析弯曲应力的线性分布 |
| 接触面 | 向接触压区边缘加密 | 接触压力的边缘奇异性 |
| 荷载·约束施加区 | 不评估就可以粗(拉开距离) | 圣维南原理;奇异处加密也不会收敛 |
| 远场 | 保持粗网格 | 把算力集中到梯度区 |
系统性细化序列的构造方法
用于收敛性验证的序列应是"同一套网格设计思想按同一倍率整体缩放"。实操两条路:①全局尺寸与局部尺寸按相同倍率(推荐1.5~2倍)同时缩小;②用均匀分割功能机械细化。要避免"粗网格自动生成、细网格手工调整"这类序列——细化比会随位置乱变,观测阶数就失去意义。每档还要记录单元质量指标(畸变·雅可比)的分布,确认细化没有恶化质量。
成本估算与子模型这条退路
三维均匀细化一档单元数×8,直接法求解成本增加更多。"再细一档做不动了"是常态,实务解是只围绕评估部位构造序列——包括子模型法:粗全局模型解完,把位移边界切给评估热点的精细子模型,在子模型上确认收敛性。配套动作是确认子模型边界离得足够远(移动边界结果不变)。
主要工具的细化功能
工具支持情况
| 工具 | 细化功能 | 实务备忘 |
|---|---|---|
| Ansys Mechanical | Convergence对象(按结果项自动自适应)、Sphere of Influence局部尺寸 | 把Convergence指向奇异应力会永远发散——要小心 |
| Abaqus | 自适应重划分(指示子驱动尺寸场)、ALE自适应 | 非线性重划分要核对解映射的移送误差 |
| COMSOL Multiphysics | 物理场控制网格+内置自适应细化 | 可按目标量(泛函)驱动自适应 |
| OpenFOAM | refineMesh、snappyHexMesh区域细化、动态AMR(dynamicRefineFvMesh) | 悬挂节点以面分割处理;之后跑checkMesh |
| Nastran系 | 原生自适应有限;靠前处理器的尺寸控制 | 系统性序列在网格器一侧按倍率管理 |
使用自动自适应时的核查点
既然工具能自动细化到收敛,手动网格研究是不是就不需要了?
自动自适应很强,但有两个前提仍要人来把关。第一,收敛的对象——默认盯的是"你选的那个结果项",未必是设计判断真正用的量。第二,奇异点——把它指向奇异应力,它会无休止细化、在迭代上限处停下,然后把停下那一刻的值当"收敛值"交给你。务必把细化历史(每轮迭代的数值推移)画出来,用自己的眼睛判断是渐近还是发散。做到这一点,自动自适应就是一流的省时利器。
前沿研究动态
目标导向(伴随法)自适应
传统指示子按"全局能量范数误差"来细化,工程要的却是目标量的误差——升力系数、某点应力。DWR(dual-weighted residual)法通过求解伴随问题,用对目标量的敏感度给局部误差加权,以最少单元达到目标精度,在CFD(尤其气动系数的网格收敛)中实现最为成熟。它从原理上避免了"细化与目标无关的涡"这类浪费。
hp自适应与指数收敛
在光滑区提p、在奇异点附近按几何级数细化h的hp自适应,即使有奇异性也能对自由度数取得指数级误差收敛,这是理论上已证明的。实现复杂度限制了它在通用商用软件中的普及,但随着谱单元、高阶DG(间断Galerkin)求解器的发展,它正在成为高精度计算的标准手法。
与机器学习的融合
用学习模型替换自适应环中"ESTIMATE→MARK"的研究很活跃:从粗网格解直接预测最优尺寸场的模型、用强化学习学细化策略等,能削减自适应迭代次数(=求解器执行次数)。学习得到的尺寸场没有保证,因此它不能取代最终网格上的经典收敛性确认——与代理模型一样,这是ML×CAE的通则。
故障排查
按症状的原因与对策
| 症状 | 可能原因 | 对策 |
|---|---|---|
| 越细化应力越大、不封顶 | 应力奇异点(凹角·点约束·点荷载) | 不要把它当收敛对象;加圆角、移评估点,或改用名义应力/热点应力法 |
| 细化后单元质量恶化 | 分裂型细化的劣化累积、未做曲面重投影 | 换重划分型,启用CAD重投影,按档记录质量指标 |
| 细化了很多结果却几乎不变 | 误差主导项在网格之外(边界条件·材料·几何理想化) | 重审误差收支;转向边界条件验证 |
| 自适应总在无关区域细化 | 全局指示子与目标量不一致 | 改用目标导向设置,或在评估部位叠加手动尺寸 |
| CFD细化后壁面传热·摩擦反而变差 | y+跌出壁面函数适用域 | 边界层按各向异性管理;与壁面处理方式保持一致 |
| 细化序列的观测阶数对不上理论 | 序列不系统、未达渐近区、迭代收敛不足 | 套用GCI故障排查的诊断流程 |
| 内存·时间到极限 | 三维均匀细化一档×8 | 局部细化+子模型;迭代法求解器+并行 |
先问一句:该不该细化?
那拿不准的时候,先细化总是安全的……对吧?
"安全"没错,"有效"未必。分析的总误差=离散化误差+建模误差(边界条件·材料·几何理想化)+输入不确定度,h细化只能压第一项。当离散化只占总误差一成时,花8倍算力把它砍半,总误差几乎不动。所以顺序是:①先用GCI估离散化误差的大小;②它占主导才细化;③否则把预算投给建模误差和输入不确定度。细化不是目的,只是误差收支里的一个手段。
相关文章:GCI(三网格法)应用指南、用MMS做代码验证、求解器收敛性的确认。
帮助
更多
错误