拓冰建站拓冰建站
首页 / 资讯中心 / 正文

ICEM CFD六面体网格划分全流程:拓扑修复、Blocking与棱柱层

简介本资源为《ICEM网格划分原理》PDF文档面向计算流体力学、有限元法与数值仿真方向的学习者及工程师帮助其系统理解网格划分的基本方法与实现思路。内容围绕非结构网格与结构网格两大技术路线展开讲解自动划分、基于附加块的划分两类方法的操作特点、适用模型与质量差异并梳理网格单元类型、网格拓扑、构造块及节点分布规则等关键概念还涉及ICEM与Solidworks、AutoCAD、ProE、UG等CAD软件的配合使用以及网格导出与导入分析软件的基本流程。压缩包共1个文件为单个PDF文档整体约2.96MB篇幅紧凑适合作为快速查阅的概念梳理材料。目前已有740人学习可作为入门了解原理、建立知识框架的参考读物。1. ICEM CFD 网格划分原理为什么六面体网格值得多花三天一套直径 200 mm 的泵壳流道Abaqus 里四面体网格五分钟划完算出扬程比试验低 8%换成六面体节点数从 320 万压到 90 万两天后误差落进 2%。差的不是求解器是网格把流道弯段的数值扩散放大了。ICEM CFD 网格划分原理讲的就是这条链路几何拓扑先变成可划分的干净体再用 Blocking 把规则六面体块映射到几何上边界层交给棱柱层最后靠 Determinant、正交性这些指标验收。它适合做旋转机械、外流场、需要结构化网格的 CFD 与结构工程师用 Abaqus 做分析的人更应该补这一课——流道和叶片这类几何四面体自动划分很难拿到一致的结果。2. ICEM CFD 几何导入与拓扑修复让 CAD 模型变得可划分几何脏不脏直接决定后面是两小时还是两天。ICEM CFD 的拓扑不是 CAD 的实体拓扑它自己重建点、线、面CAD 里看不见的微小裂缝在这里会变成自由边。2.1 导入前先定三件事单位、容差、简化程度单位错 1000 倍是最常见的低级事故而且症状很隐蔽——容差全部失效拓扑一团糟。导入后第一件事不是看模型是在信息栏确认 bounding box 尺寸。设置项常见取值取值依据模型单位与 CAD 一致导入后立即核对包围盒单位错位会让所有容差失去意义拓扑容差最小特征尺寸的 1/1000 ~ 1/10000取太大吃掉小圆角取太小缝补不上缝补/合并容差0.001 ~ 0.02 mm同单位与 CAD 导出精度同量级小特征保留阈值小于目标网格尺寸 1/5 的圆角、倒角CFD 一般抹掉结构分析看应力集中位置「最小特征尺寸」不是拍脑袋一般取你要保留的最小圆角直径或者最薄壁厚。要是模型里有 0.2 mm 的倒角和 0.05 mm 的装配缝容差就必须小于 0.05 mm否则缝会被糊上而圆角又在容差里被吃掉——这时候正确的做法是先删倒角再单独处理缝。2.2 Build Topology 之后先读曲线颜色构建拓扑后曲线是有颜色的颜色就是诊断信息多数版本里的约定是这样的蓝色/绿色只和一个曲面相连属于自由边或者孤边外流场里可能是正常的进出口轮廓内流道里几乎一定是裂缝。红色两个曲面共享正常情况。黄色三个及以上曲面连在同一条边上T 型连接往往出现在装配体结合面或者薄壁抽壳处。处理顺序建议是先合并重合点再补洞最后重建拓扑。反过来做补完的洞会被下一次合并点又撕开。2.3 用回放脚本把几何修复固化下来手动点一遍能修好换一个模型又要重来。ICEM CFD 的回放功能会把你的每一步操作记成 Tcl 脚本我一般会录一遍再把里面的容差改成变量。# ICEM CFD 回放脚本片段几何准备与拓扑修复 # 命令名会随版本略有差异最稳的做法是开启 Replay 录制手动走一遍再改参数 # 1. 单位与容差集中在开头后面所有步骤引用同一个变量 set geo_tol 0.01 ;# 拓扑容差取最小特征尺寸的 1/1000 set merge_tol 0.005 ;# 合并点容差比拓扑容差再小一档 # 2. 导入几何按包围盒核对单位 ic_geo_set_units -units mm ic_uns_load -filename pump.stp -format STEP # 3. 合并重合点缝补小洞 ic_geo_merge_points -tolerance $merge_tol ic_geo_repair_holes -max_perimeter 2.0 ;# 只补周长小于 2 mm 的洞 # 4. 重建拓扑并输出自由边数量 ic_build_topo -tolerance $geo_tol -mode all ic_geo_count_free_edges容差变量化之后换一个模型只需要改开头两个数。merge_points的容差建议是拓扑容差的一半左右合并点容差比拓扑容差还大会把本该独立的两个面拉到一起生成退化面太小则缝补不干净自由边数量降不下来。脚本跑完看自由边计数正常封闭流道应该是 0外流场是进出口轮廓那几条。注意不要为了让自由边归零而无限放大容差。放大到 0.1 mm 级别时薄壁结构的两个面会被判定为同一个面后面做棱柱层会直接报负体积。3. Blocking 分块原理ICEM CFD 六面体网格怎么从块映射到几何六面体网格不是「生成」出来的是先把几何用一个或多个规则六面体块包住再把这些块变形贴合上去。理解了这件事很多操作就顺了分块是骨架关联是肌肉节点分布是皮肤纹理。3.1 块、顶点、边的关联映射的数学含义块的每个顶点、边、面都可以和几何的点、曲线、曲面建立关联。关联之后块的边被重新参数化到几何曲线上节点按这个参数化分布所以边上节点数的多少、疏密都只影响结果不影响关联本身。顺序上我一般这么走Initialize Block用 Bounding Box 或者选定顶点起一个块。先做顶点到点的关联把八个角钉死在几何特征点上这一步定错了后面整体跑偏。再做边到曲线的关联边关联后节点会贴着曲线走。最后做面到曲面的关联通常只需要对曲面附近那一层块做。顶点关联优先级最高。如果一个顶点关联到一个错误的位置即使边、面都关联对了最后那层网格也是扭曲的——质量直方图会告诉你哪个区域坏了但不会告诉你哪个顶点错了。3.2 O 型块、C 型块、Y 型块分别用在哪分块策略其实就是把几何的拓扑特征翻译成块的组合。经验规律如下结构特征分块策略说明圆形/环形截面管、叶轮通道O 型块块外圈贴合圆壁中心留一个方形核壁面网格正交性最好带尖角或大曲率的弯道C 型块沿弯曲方向包一圈避免尖角处网格塌陷三通、筋板交汇的 T 型区Y 型块把三条边汇成三角剖分消除退化块长直段拉伸块不用再切块直接沿轴向 extrude 节点分布一个常见误区是把整个模型先切成几百个小块再统统一遍 O 型块。块太多关联工作量指数上升而且块交界面上节点不匹配最后还是要靠 merge 节点硬接。我的做法是先切到「块能一对一投影」为止能靠边参数解决的绝不切块。3.3 边节点分布Mesh Law、Spacing、Ratio 怎么给边参数是六面体网格质量的最大变量。ICEM CFD 里常见几种 Mesh LawMesh Law适用场合关键参数Uniform均匀流场、结构分析主承力区Number of nodesBiGeometric两侧都要加密如缝隙流Spacing 1、Spacing 2、RatioGeometric 2单侧加密增长率恒定Spacing 1、RatioHyperbolic边界层过渡到主流Spacing 1、Max SpaceCurvature曲率大的前缘、后缘Number of nodes、Spacing# 边参数与网格生成的典型回放片段 # 目标壁面附近加密主流区快速过渡取 0.02 mm 首层、1.2 增长率 # 选中要设置的边先选边再给参数顺序不能反 ic_hex_select_edges -name edge.wall.* ic_hex_mesh_law -law bigeometric -spacing1 0.02 -spacing2 0.5 -ratio 1.2 ic_hex_edge_params -nodes 60 ;# 节点数与 spacing/ratio 冲突时以节点数优先 # 关联完成后生成 Pre-Mesh ic_hex_compute_mesh ic_hex_check_quality -type determinant -histogramspacing1是第一条网格的高度ratio是相邻两层高度的比值。大多数场合这两个参数一起定节点数最后用nodes覆盖。要特别小心的是同一个块的两条相对边节点数不同ICEM 会自动插值但插值结果会让那块网格歪掉。相对边必须给相同节点数这个约束最好在切块阶段就设计好。3.4 Pre-Mesh 生成后的第一轮自检生成 Pre-Mesh 之后不要急着转非结构化。先看三样Determinant 直方图左端有没有低于 0.2 的单元Warpage 是不是集中在某个块边界面还有把网格打开逐块翻一遍看有没有块边界明显错位的。这个阶段改块的成本是十分钟转成非结构网格再改就是一天。4. 棱柱层与四面体网格边界层参数怎么落到 ICEM CFD 里六面体拿不下的地方——复杂外壳、带大量倒角的支架、多体装配——就得靠四面体加棱柱层。棱柱层不是「顺便加一层」它直接影响壁面剪切应力进而决定阻力、换热系数和分离位置。4.1 混合网格的取舍什么时候放弃全六面体分两种典型情况。外流场、管流、叶轮这类几何有明确的流向结构值得花时间做六面体或者六面体加棱柱。而带大量非规则特征的机箱、换热器整体、复杂装配体强行分块的结果是块数上百、质量还一般这时候四面体加棱柱层反而更划算。判断标准很直接如果几何沿某个方向有明显的可拉伸性做六面体如果没有别硬撑。4.2 第一层高度与层数从 y 反推第一层高度由目标 y 决定。湍流模型要求 y 在 30 到 300 之间壁面函数或者小于 1解析到壁面这两个目标对网格密度的影响差两个数量级。import math # 由目标 y 反推第一层网格高度平板边界层经验式 # 输入全部用 SI 单位量纲不一致时结果会差好几个数量级 def first_layer_height(u, rho, mu, L, y_plus30.0): Re rho * u * L / mu # 参考雷诺数 Cf 0.026 / Re ** (1.0 / 7.0) # 平板湍流摩擦系数经验式 tau_w 0.5 * Cf * rho * u ** 2 # 壁面剪应力估计 u_tau math.sqrt(tau_w / rho) # 摩擦速度 return y_plus * mu / (rho * u_tau) # 第一层高度单位 m # 空气u20 m/srho1.225mu1.79e-5参考长度 1 m h1 first_layer_height(20.0, 1.225, 1.79e-5, 1.0, 30.0) print(%.3e m %.3f mm % (h1, h1 * 1000))这里Re用参考长度算Cf用的是 1/7 次方律的摩擦系数拟合式只对平板湍流边界层有效钝体绕流要打折扣看。算出来的h1通常落在 0.1 到 0.5 mm 量级再乘层数和增长率得到总厚度。层数增长率总厚度 / 首层高度适用51.2约 7.4快速试算101.2约 25.9常规外流场151.15约 30.5换热、分离敏感201.1约 57.2解析到壁面y 1总厚度的估算式是h1 * (r^n - 1) / (r - 1)r是增长率n是层数。棱柱层总厚度不要超过当地特征尺寸的三分之一否则棱柱会插到对面壁面里生成负体积。4.3 金字塔单元与负体积最常见的两类报错四面体和棱柱之间需要金字塔单元衔接ICEM 会自动生成。问题在于金字塔单元在 Abaqus 里没有对应的原生单元类型导出时要么被拆成四面体要么直接报错。做结构分析的话棱柱层和四面体交界处建议保留一层薄六面体或者干脆全四面体。负体积报错一般三个来源棱柱总厚度超过当地间隙四面体尺寸函数在棱柱层附近设得太粗四面体把棱柱挤穿几何有内尖角棱柱沿两个方向生长时自交。排查顺序是从报错位置反查先看那里的几何最小间隙再看四面体的 Min Size 是不是比首层高度还大。4.4 输出到 Abaqus 和 Fluent单元类型要提前定输出前在 Output 里选求解器。给 Abaqus 用选 Abaqus输出.inp给 Fluent 用选 Fluent输出.msh。这里有几个容易被忽略的点六面体和棱柱混用时Abaqus 侧对应 C3D8 和 C3D6四面体是 C3D4 或 C3D10混用是允许的但二阶单元节点数多、文件体积涨得快。四面体加棱柱导入 Abaqus 后变成 orphan mesh几何信息丢失后续要改网格只能回 ICEM 重来所以在 ICEM 里就把质量做够别指望在 Abaqus 里修。做 CFD 的话棱柱层区域最好单独设一个 cell zone方便后处理里提取壁面量。5. 网格质量诊断与常见返工点几个指标要一起看质量直方图只有一个指标好看是没用的。Determinant 高但正交性差的网格在 Fluent 里照样发散Abaqus 里单元形状没问题但 Warpage 大的壳单元应力会虚高。5.1 五个指标和它们的阈值指标工程常见阈值主要影响Determinant 2x2x2一般要求 0.2结构计算建议 0.3单元是否接近翻转Min Angle 18°对流项离散精度Warpage 45°结构分析常要求 40°面翘曲引入的应力误差Aspect Ratio边界层内 100 ~ 1000 可接受体网格 50数值扩散、收敛速度Min Orthogonal Quality 0.15扩散项精度注意边界层内的高长宽比是设计意图不是缺陷。拿着一份边界层长宽比 500 的网格去强行光顺把棱柱压扁反而破坏壁面分辨率。5.2 定位坏单元并局部重划ICEM 的直方图可以点击某一区间把对应的单元高亮出来。更可控的办法是自己算六面体单元的 Determinant 本质上就是 2x2x2 采样点上雅可比行列式的最小值与最大值之比。import numpy as np # 六面体节点顺序底面 1-2-3-4顶面 5-6-7-8同向排列 # 参考单元节点坐标用于推导形函数导数 def dN_dxi(xi, et, ze): s np.array([-1, 1, 1, -1, -1, 1, 1, -1], float) t np.array([-1, -1, 1, 1, -1, -1, 1, 1], float) u np.array([-1, -1, -1, -1, 1, 1, 1, 1], float) return np.array([s * (1 t * et) * (1 u * ze), t * (1 s * xi) * (1 u * ze), u * (1 s * xi) * (1 t * et)], float) / 8.0 def det_2x2x2(cell): cell: 8x3 节点坐标。返回 min(det J)/max(det J)尺度无关 数值上近似对应 ICEM 的 Determinant 2x2x2 g 1.0 / np.sqrt(3.0) # 2x2x2 采样点位置 dets [] for xi in (-g, g): for et in (-g, g): for ze in (-g, g): J dN_dxi(xi, et, ze) cell # 3x3 雅可比矩阵 dets.append(np.linalg.det(J)) d np.array(dets) return d.min() / d.max() if d.max() 0 else -1.0 # -1 表示单元已翻转节点坐标换成你导出网格里的实际值就能批量筛出低质量单元按编号回 ICEM 里定位到具体的块和边。det出现负值意味着单元已经翻转这类单元必须处理光顺救不回来。改的时候优先调边参数收紧 Spacing 或减小 Ratio其次才是移动顶点位置——移动顶点会同时影响周围所有单元。5.3 和 Abaqus 自带网格划分的分工Abaqus 的网格划分胜在和几何、材料、边界条件一体改起来快四面体加边界层也能一键生成。但它在流道、叶片、螺纹这类需要方向性的几何上很难拿到一致的六面体而这正是 ICEM CFD 的强项。常见的分工是结构件在 Abaqus 里直接划复杂流道、旋转机械、需要全六面体的接触对在 ICEM 里做完导出.inp再导入 Abaqus。导入后先用 Abaqus 的 Verify 查一遍分析检查项重点看是否有负雅可比和过小的面角确认没问题再进求解。实际用下来返工最多的不是分块切错而是几何阶段没清干净——一条没发现的自由边会在棱柱层生成时变成负体积。把 Determinant 直方图的左端点当作返工触发线比等到求解器报负体积再回头查省的时间不是一点半点。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门