一、当网格畸变成为数值模拟“致命伤”
在岩土工程、地质建模等领域的复杂几何体(如不均匀地层)仿真中,网格容易发生畸变,计算崩溃终止。传统全域重划分(PFEM)虽能解决,但计算成本巨大。
本文推荐的方法适用于以下两种情景:
情景1 初始表面网格质量不佳
情景2 模拟大变形过程中的网格畸变
二、方案:表面重构 → 全域新生
工具链:MeshLab(表面处理)+ PyGmsh(体网格生成)+ Python(自动化流程)
实现步骤
四个步骤介绍:
① 畸变检测:调用MeshLab质量评估,定位问题网格:
ms.apply_filter('compute_scalar_by_aspect_ratio_per_face', metric='area/max side')
metric表示网格质量的特征,可选包括:
面积/三角形最大边长
内切圆半径与外切圆半径之比
三角形的平均比值 = 面积 / (a*a + b*b + c*c)
纹理角度扭曲。3D空间与纹理空间中的角度差异
纹理区域扭曲。3D空间与纹理空间中区域之间的差异
多边形平面性(到支撑平面的最大距离)
多边形平面性(与支撑平面的相对距离)
② 表面高保真重构:
apply_filter('meshing_isotropic_explicit_remeshing',
iterations=10, # 重构迭代次数
adaptive=True, # 启用自适应加密
selectedonly=False, # 全局或局部
targetlen=PercentageValue(1),# 目标边长
featuredeg=30, # 保留原特征边
checksurfdist=True, # 启用偏离检测
maxsurfdist=PercentageValue(1), # 每步最大偏离 1%
splitflag=True, # 允许细化操作
collapseflag=True, # 允许塌陷操作
swapflag=True, # 允许翻边操作
s moothflag=True, # 允许平滑操作
reprojectflag=True) # 重投影回原曲面
上述过滤器有以下两种优势:
局部自适应:畸变区域自动加密,平坦区域简化;
严格投影约束:确保新网格贴合原始几何
③ 提取优化后的表面网格
④ 全域高效重划分
将优化后的表面输入PyGmsh脚本生成均匀体网格
优化效果
情景1 优化后效果图
情景2 优化后效果图
三、技术内核
网格能量最小化模型(Mesh Optimization, 1993)
Isotropic Explicit Remesh优化
通过三类操作迭代优化:
1. 边折叠(Collapse):合并相邻点 → 简化网格
2. 边分裂(Split):插入新点 → 加密畸变区
3. 边交换(Swap):重构连接 → 提升单元质量
“表面优化+联动重构”策略,为复杂仿真中的网格畸变问题提供了轻量级高保真解法。