ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ANSYS Workbench网格划分全指南:从报错排查到质量优化

ANSYS Workbench网格划分全指南:从报错排查到质量优化 1. WB环境下网格划分的整体思路与模块连接逻辑1.1 为什么明明画了网格求解器却说“Domain 3没有划分网格”很多人第一次在ANSYS Workbench里跑静力分析时都会遇到一个莫名其妙的报错带有标记“geom1”的几何中的“domain 3”没有划分网格这可能导致结果不正确。乍一看这条报错你可能会懵——明明在Mesh模块里已经生成了网格节点和单元数量都有统计为什么求解器还是说某个体没网格这里先解释一个概念在Workbench里一个几何体Body在求解器内部会被映射为一个或多个Domain。你从外部CAD软件导入的装配体或者用SpaceClaim建的多个实体每个实体在进入求解器后都对应一个Domain。报错里提到的“domain 3”翻译成人话就是“第三个实体”。那为什么第三个实体没网格我踩过的坑主要有三种第一这个实体被抑制了Suppress Body网格划分时直接跳过第二这个实体没有赋予材料属性在Engineering Data里没匹配到材料求解器根本不认它是参与计算的体第三也是最隐蔽的——几何更新后网格没有重新生成模型树里的Mesh图标虽然亮着但实际网格数据是旧的新加进来的体没有覆盖到。所以在Workbench里网格生成不是一劳永逸的。你改了几何、改了材料、改了接触都必须回头重新生成网格。这个“更新”不是点一下右键再点Generate Mesh就完了很多时候需要在项目流程图中把Geometry、Model这些单元格全部刷新一遍。我建议养成一个习惯改完几何后在Project Schematic里右键整个分析系统选择Update Project让Workbench自己判断哪些模块需要重新计算。有些时候报错就是因为你在SpaceClaim里改了几何但忘了回来刷新Model单元格。1.2 网格划分的三种底层策略自动、扫掠、多域Workbench里插入Method时有几个选项——Automatic、Tetrahedrons、Hex Dominant、Sweep、MultiZone。不少新手看到这么多选项直接放弃全部用Automatic。这不能说错但遇到复杂模型Automatic生成的网格质量往往不够理想。先说Automatic。它的逻辑很简单如果能扫掠Sweep就扫掠不能扫掠就自动生成四面体。这个策略对于单一实体、形状规则的零件很友好但面对多体装配体或者带复杂曲面的模型它生成的四面体会在局部区域堆积大量单元计算前看着密密麻麻计算中才发现求解时间被拖得很长。Sweep扫掠的适用场景是一个实体在某个方向上截面形状一致比如轴、杆、管道、拉伸体。扫掠网格最大的优势是单元排列规整六面体占比高可以用很少的单元数量达到不错的精度。但Sweep需要你手动指定Source面和Target面有时候几何稍复杂一点WB的自动识别会失败。我遇到这种情况会在模型树里手动指定两个面或者把实体切成多个可扫掠的块。MultiZone多域是Sweep的升级版。它能自动把复杂几何划分成多个区域每个区域分别扫掠。这个方法的门槛是几何必须能被切割成可扫掠的块。如果几何过于复杂MultiZone会退化成四面体但有总比没有强。做流固耦合分析或者大变形分析时我倾向于用MultiZone尽量多出六面体因为六面体在变形过程中的体积锁定现象比四面体轻得多。Hex Dominant六面体主导则是另一条路。它先生成四面体再把内部单元转成六面体只在表面留下少量金字塔或四面体过渡。这种方法的优点是适用范围比Sweep宽但缺点是转换过程可能导致局部单元严重扭曲网格质量反而下降。我的经验是只有在需要考虑接触穿透或者材料非线性时才优先尝试六面体主导。1.3 模块连接的常见坑Engineering Data与网格的关联热词里有一句话值得注意“首先应用ansys workbench建立任意一个包括engineering data的分析模块如static structural”。说得很有道理但很多人不知道为什么。原因在于——Workbench里的材料库是全局共享的但每个分析系统里有独立的Engineering Data单元格。如果你直接拖一个Mesh模块进项目流程图你会发现它没有Engineering Data这一项。没有材料数据网格划分本身不报错因为网格不依赖材料参数但进入求解阶段就麻烦了——你赋予了几何体材料但材料库里压根没有这个材料求解器会报错或者把材料默认为结构钢。如果是热分析或者电磁分析默认材料算出来的结果完全是错的。这件事关联到网格划分的一个隐蔽问题网格划分之后软件需要根据材料属性决定单元的积分属性。比如在电磁分析里不同材料区域的网格剖分密度要求完全不同在结构分析里超弹性材料和线弹性材料的网格策略也不同。不信你用默认结构钢算一个橡胶密封圈网格加密十倍也收敛不了因为材料本构模型从一开始就是错的。所以我的建议是在项目流程图里先拖一个Static Structural或者别的带Engineering Data的系统再把Mesh模块拖进去连接它的Model单元格。这样你既能用材料库里的所有材料也能让网格参数和物理场匹配。2. 网格质量控制的核心参数与选型逻辑2.1 尺寸、曲率、邻近度三个基础控制项怎么配合全局网格控制面板里有一组参数经常被人忽略但它们的配合决定了网格质量的基线。这组参数是Element Size、Curvature和Proximity。Element Size全局单元尺寸是一个基准值。它不是最终所有单元的实际尺寸而是网格划分器在决定单元大小时的参考。如果你不设置任何局部尺寸那么全局尺寸就是所有位置的单元大小。但实际工作中很少只靠全局尺寸控制因为一个零件里既有大平面又有小圆角全局尺寸设小了浪费计算资源设大了圆角处的应力算不准。Curvature曲率控制的逻辑是在曲率大的区域自动加密单元。你可以设置一个最小曲率半径或者是曲率法向角Curvature Normal Angle。这个参数的意思是在一个圆弧范围内相邻单元的法向夹角不超过多少度。默认值是30度或者12度我通常把它调到18度左右既能保证圆弧处有足够的单元数量又不至于把整个圆周细分成几百个单元。Proximity邻近度则是处理“间隙”问题的。当两个面距离很近时比如接触间隙、薄壁特征邻近度控制会让这个区域自动加密。具体原理是如果间隙尺寸小于全局单元尺寸的一定倍数网格划分器就会在这个间隙里放入更多单元。这个参数在包含螺纹、键槽、薄垫片的模型里特别重要。我曾经算一个带细牙螺纹的连接结构不加邻近度控制时螺纹牙顶处只有两个单元一加载就穿透开启邻近度后牙顶处有五六个单元结果才稳定。三个参数配合使用的基本原则Element Size定基准Curvature定圆角加密Proximity定间隙加密。三者叠加会导致局部单元密度显著上升所以最好先不开启Curvature和Proximity跑一个粗糙网格看看整体形态再加控制项加密逐步对比结果。2.2 单元质量指标怎么看偏斜度、正交质量、宽高比网格画完怎么看质量Mesh模型的右键菜单里有一个Mesh Metric选项可以显示偏斜度Skewness、正交质量Orthogonal Quality、宽高比Aspect Ratio等指标。这个功能很实用但指标的意义得搞清楚。偏斜度是衡量单元“有多不正”的指标。值域0到10表示完美正单元1表示完全退化。对于四面体偏斜度低于0.85通常是可以接受的低于0.7算是质量较好。对于六面体要求更严格一些最好控制在0.8以下。如果你发现某些网格偏斜度超过了0.95那基本意味着单元已经严重扭曲计算时极有可能导致奇异矩阵或者不收敛。正交质量是ANSYS近年主推的一个指标。它的定义是每个单元的面向量与从单元中心到每个面的向量之间的夹角余弦的最小值。值域也是0到1但方向和偏斜度相反——1表示完美正交0表示完全畸变。对于大多数结构分析正交质量平均值大于0.2就算能用但我的经验是低于0.1的区域在接触分析中会出问题。你可以通过Mesh Metric的下拉菜单切换查看这些指标并且设置阈值让不合格单元以不同颜色显示。这对定位局部网格问题非常高效。宽高比Aspect Ratio衡量单元在三个方向上的尺寸比例。比值过大意味着单元细长可能引起刚度矩阵病态。在薄壳结构中宽高比偏大是正常的但在实体结构中如果出现宽高比超过20的单元就要小心了。总结一句经验不要追求所有单元质量都完美这在复杂几何里不现实。关键是关注最小值和平均值——平均值正常、最小值不塌陷这个网格就可以用。2.3 网格无关性验证到底怎么做网格无关性验证听起来很学术其实就是一句话加密网格看计算结果变不变。如果加密两次结果几乎不变化说明网格已经收敛可以放心用当前网格。具体操作步骤是先以较大的全局尺寸比如实体模型用10mm划分网格求解一个你关心的量比如最大等效应力、最大变形、固有频率。然后把全局尺寸减小到5mm重新求解比较结果。如果变化超过5%继续加密到2.5mm再比较。直到相邻两次加密的结果变化小于5%就可以认为网格无关了。这个方法说起来简单但有一个坑叫“局部加密陷阱”。全局加密往往是盲目的有些区域无论怎么加密结果就是不收敛——因为你关注的那个点正处于尖角奇异性区域比如L形拐角、阶梯轴根部。这些位置理论上应力是无穷大的任何有限网格都无法收敛。正确做法是人为忽略这些奇异点关注离奇异点有一段距离的应力峰值。或者在使用局部网格控制时把重点关注区域单独加密而不是盲目全局加密。网格无关性验证还有一个实用技巧不要只看最大值还要看云图分布趋势。有时候最大值变了5%但云图的等值线分布一模一样那说明整体求解已经稳定最大值的变化只是奇异点的数值噪音。3. 实操过程从几何清理到网格生成的完整流程3.1 几何准备SpaceClaim里的清理操作网格划分前几何准备阶段省下的时间会在网格阶段加倍还回来。不少使用者从SolidWorks导入模型后直接拖进Mesh模块结果网格质量差、求解报错回头检查发现是几何本身有大量碎面、微小的倒角、或者重叠的面。SpaceClaim在Workbench里不仅仅是个建模工具更重要的定位是“几何清理器”。我在实际工作中清理几何的优先级是第一删除所有小于网格尺寸的小特征——比如直径小于网格尺寸的小孔、高度小于网格尺寸的台阶、非常薄的板——这些特征要么用Fill填充要么用Simplification工具删掉因为它们对结果影响微乎其微但会给网格划分带来巨大负担第二合并碎面——导入的CAD模型在圆角过渡处长年被切成几十片小面用SpaceClaim的选择过滤器选中这些碎面合并成一个大面这能让网格更规整第三修复自由边和重叠面——用Repair工具自动检测尤其是从STEP格式导入的模型自由边出现的概率太高了。如果你不用SpaceClaim直接在DesignModeler里也能做类似操作但效率低不少。SpaceClaim还有一个优势它支持直接拉动Pull几何改模型就像捏橡皮泥不用去管草图约束关系。网格划分之前把几何清理干净比划分之后再头疼处理残次网格要划算得多。3.2 命名与局部网格控制接触区域、螺栓孔等细节几何准备完之后在进入Mesh前有一件事很多人忘做——命名选择Named Selection。在SpaceClaim里选中一个面或体右键创建命名这个名称在后续设置边界条件时会变成可以下拉选择的项目。命名的核心价值是当你修改几何后重新导入命名选择会自动更新不会因为几何重新生成而丢失。局部网格控制是网格质量的关键。常用的局部控制有三个Body Sizing体尺寸、Face Sizing面尺寸、Contact Sizing接触尺寸。对于螺栓孔周围用Face Sizing把孔径周围的单元尺寸设为全局尺寸的二分之一接触区域用Contact Sizing设定接触面附近的单元层对于应力集中区域用Sphere of Influence影响球在某个球心周围加密。这里有一个常见误区局部加密不是越密越好。接触区域加密过度会导致接触探测的单元过多计算时间成倍上升收敛反而变慢。我的做法是先把全局网格跑通再根据应力云图定位需要加密的区域用局部控制逐步细化。而不是一上来就到处设Face Sizing把简单问题复杂化。3.3 求解前检查清单更新几何、材料、连接关系网格生成后进入求解器前需要过一遍检查清单很多人忽略这一步导致白算几小时。我的前三项检查是几何是否更新、材料是否赋值、连接关系是否正确。检查几何更新的方法是看项目流程图中Model单元格的状态——如果Geometry发生了变化Model单元格会有一个刷新标志。右键刷新后Mesh可能需要重新生成。我通常的做法是在Mesh模块里点击Mesh分支在Details面板里看Statistics——节点和单元数量是否符合当前网格设置。如果显示的是旧数据说明需要重新Generate Mesh。材料赋值检查在Model分支下选中每个Geometry Body看一下Assigned Material是否与预期一致。我见过不少案例明明设计了铝合金材料库结果某个体的材料还是默认结构钢——因为你在SpaceClaim里新建的实体没有自动继承材料赋值。尤其是你在SpaceClaim里复制了一个体再修改新体的材料很可能丢失。连接关系检查这是最容易疏忽的。两个本来应该接触的零件如果模型导入时因为间隙问题没有生成接触求解时两个零件会各自独立运动结果完全错误。在WB里自动检测接触Auto Detection有时会因为公差设置不当而漏检某些接触对。网格划分完成后接触检测已经完成你需要检查Contact区域里是否包含了你期望的所有接触对。如果漏了手动右键Contact生成接触或者修改自动检测公差。4. 常见问题与排查技巧实录4.1 “Domain 3没有划分网格”的排查与解决回到文章开头那个报错。实际的排查步骤可以概括成四步第一步先看模型树。检查是否有Body被Suppress了如果被抑制在SpaceClaim或者DM里取消抑制。第二步检查材料赋值。每个Body都必须有Assign Material。选中Body看Details面板的Material那一行是否显示为“None”或者空白。如果是说明这个体没有材料去Engineering Data里确认材料名称然后在Assignment下拉列表里选中。第三步重新生成网格。有时候网格图标显示的是旧数据右键MeshGenerate Mesh看看Statistics里的节点和单元数有没有变化。特别注意如果有Body没有被网格覆盖Statistics里节点数会明显偏少。第四步如果前三步都没问题那就是几何问题——这个Body可能是一个退化体比如厚度为零的面、极小实体、或者布尔运算残留的碎片。一个快速验证方法是在Mesh的Details面板里把Element Order设为Draft用Preview来看这个体是否被网格划分器识别。如果预览时这个体始终不出现那基本就是几何问题需要回到SpaceClaim重新创建一个替换的体。4.2 ANSYS安装与许可问题速查热搜词里关于ANSYS安装的求助非常多我稍微整理一下常见的问题和排查方向。第一类ANSYS License Manager无法启动。这类问题大概率是许可证服务没有启动或者端口被占用。检查Windows服务管理器中“ANSYS, Inc. License Manager”这个服务的状态。如果启动失败常见原因是杀毒软件拦截了服务或者之前安装的其他软件占用了端口。把服务设置为自动启动并且允许它在防火墙里通信一般能解决。第二类Workbench提示Not connect a valid licensing。这种情况往往是许可文件的hostname和当前计算机名不一致或者时间不同步导致许可校验失败。检查环境变量ANSYSLMD_LICENSE_FILE是否指向正确的许可文件路径。第三类failover feature不可用比如提示failover feature ansys electronics_desktop is not available。这类报错多见于模块授权不完整。需要确认你购买的许可是否包含Electronics Desktop功能模块。HPC或者Maxwell等模块的许可证在默认开启时只分配了很少的核心也需要在许可管理界面配置。第四类ansyswbu.exe encountered a problem导致Workbench崩溃。这个报错的原因很多但最常见的诱因是显卡驱动不兼容。ANSYS在渲染大型装配体的三维模型时非常依赖OpenGL遇到这个报错可以先更新显卡驱动再把Workbench的Graphics设置改为Software模式试一下。如果崩溃发生在启动阶段还可能是配置文件损坏可以删除AppData下ANSYS相关的缓存文件再启动。4.3 网格划分中的实际排查流程再分享一个我自己的排查套路适用于网格划分失败或者网格质量异常。第一步把所有的局部网格控制全删掉只保留全局设置重新生成一次网格。如果这样能成功生成说明问题出在某个局部控制上——逐个加回控制项找到引发问题的那个通常是尺寸设置过小、或者Sweep的Source/Target选择有问题。第二步如果全局网格也失败那么把几何进一步简化。删掉所有倒角、圆角、安装孔哪怕结果相对粗糙但先验证几何本身能不能网格化。如果简化几何也无法划分大概率是几何本身有破面或自由边。回到SpaceClaim用Repair工具修复后再导入。第三步排查单元质量差的区域。在Mesh Metric里看Skewness大于0.95的单元集中在哪些部位通过颜色显示定位。这些区域往往是几何狭窄过渡区用局部的Face Sizing把该区域加密或者用MultiZone强制重新划分通常能改善。第四步排查收敛性问题。网格没有问题但求解不收敛——这种情况往往是网格局部过密或过疏导致接触计算困难。检查接触区域的网格密度是否匹配如果两个接触面网格密度差距太大接触探测会失效。用Contact Sizing把接触区域的网格匹配起来大部分收敛问题能迎刃而解。5. 网格划分的进阶技巧与提速手段5.1 多体零件与共享拓扑的网格策略Workbench里有一个开关叫Share Topology共享拓扑在Mesh模块的Details面板里可以设置。它的作用是让多个相邻的实体在网格划分时共享节点这样接触面处的网格是连续的不需要再额外生成接触对。但共享拓扑有一个缺陷它会强制把多个体的网格在交界面上完全匹配这会导致网格单元沿着交界线产生一定程度的扭曲。如果只是做简单的静力分析我一般不开启共享拓扑让Workbench自动生成接触对因为接触对处理起来更灵活。但如果做多体零件的模态分析或者热分析我建议开启共享拓扑因为模态和热分析对网格的连续性要求比接触算法高得多。关于多域网格还有一个技巧叫“虚拟拓扑合并”。在Mesh里可以选中多个相邻的面用Create Virtual Cell把面合并成一个虚拟面让网格划分器跨过真实几何边界生成网格。这个方法可以大幅减少碎面造成的网格混乱尤其适合从三维CAD导入的复杂曲面模型。缺点是虚拟拓扑不可参数化几何一变可能就得重建。5.2 网格划分的提速与内存管理做大型装配体网格划分时时间成本往往会让你怀疑人生。几个提速经验供参考第一控制单元数量。经验法则结构静力分析每百万自由度大约占用1GB左右内存求解时间随自由度非线性增长。网格不是越多越好而是够用就好。在全局设置里把Element Size调到合理值再配合局部加密用最少的单元达到目标精度。第二尽量使用扫掠网格而非四面体。同样的精度下扫掠六面体网格的单元数通常是四面体的三分之一计算时间能缩短一半甚至更多。第三善用Distributed分布式与Batch批处理。如果机器有多核在Mesh模块的Advanced面板里把Number of CPUs设置成物理核心数。在Workbench里网格划分本身是支持并行计算的不少用户从来没改过这个选项默认用单核生成网格浪费了硬件资源。第四合理选择求解器。并不是所有分析都需要迭代求解器。Workbench默认会根据模型自动选择直接求解器或迭代求解器不要轻易改动。如果你发现内存不足尝试开启求解器的Out of Core功能让部分矩阵写到磁盘上牺牲一点时间换取大规模计算的可行性。还有一个冷门但实用的点在做流固耦合分析热词里有人搜“ansys流固耦合分析与工程实例”以及蠕变分析时流体域的网格和固体域的网格要求差异极大。流体域需要靠近壁面处有非常细密的边界层网格Inflation固体域则更关注应力集中区域。这两种网格在一个模型里共存建议分开划分先用Fluent Meshing划分流体域再用Mechanical划分固体域最后在System Coupling里耦合。强行在一个Mesh模块里同时生成这两类网格基本上是噩梦。6. 最后的经验小结我实际操作中的体会是网格划分就像炒菜——火候全局尺寸是基础调味局部控制是提升什么时候用大火扫掠什么时候用小火四面体加密完全取决于食材几何与菜系物理场。不要迷信某个特定方法或者某一类特定网格能够通吃所有问题也没有哪个网格划分器能做到零人工干预。即便是经验丰富的分析师一个新模型的网格也需要至少迭代三五轮才能达到满意的质量。最后再分享一个小技巧网格划分完了别忘了保存一份带网格的工程文件.wbpj和相关的dsdb文件这样下次修正设置时不用重新划分网格。尤其是在做参数优化时每改一个参数都要重新计算网格会非常痛苦如果能把网格部分单独分离出来做敏感性分析会省下大量时间。这个项目后续还可以扩展的方向是把网格质量检查脚本Python在Workbench里的二次开发集成到流程中自动输出网格质量报告配合你自己的分析标准基本可以达到半自动化的状态。
返回列表