首页/文章/ 详情

工程仿真软件中的网格5:STL模型的网格划分

1小时前浏览0

STL是一种外表面模型的数据格式。其原理是把三维物体表面拆成大量三角形面片,每个三角面片存储3个顶点坐标和面法向量(指向模型外侧)。模型曲面不使用解析方程,仅用大量小三角形近似拟合曲面。和参数化的实体 CAD数据格式不同,STL只存表面,不存内部实体;没有单位、颜色、材质、纹理、CAD 特征历史、装配树等信息。

STL文件中的数据必须是闭合流形网格,否则无法用于后续的3D打印或有限元计算。同时,STL数据中的顶点重复存储,没有 “边”、没有 “面归属”,没有棱角特征与内部 / 外部的概念,这对后续有限元分析的边界条件设置带来一些限制,需要通过参数化构建曲线表面或棱角边。

STL有着大量的使用场景,如3D 打印 / 增材制造,STL是3D打印事实上的标准交换格式。三维扫描仪(激光 / 结构光)输出点云到重建三角网格,可用于零件复刻、文物数字化、外形检测。此外,在几何检查、模型修复、可视化预览也有广泛应用。

网格划分算法

STL 表面网格数据无法直接用于有限元计算,需要重新划分高质量的体网格。常见经典方法有两种:直接法和面片类聚法。这两种方法的主要区别就是是否对STL数据进行面片类聚,直接法工作流更简单,不做锐边识别,不修复几何缺陷,但对 STL数据水密性要求更严苛;类聚法可以支持更灵活的人机图形交互操作,同时拆分多个几何面后支持更复杂模型。

直接法

直接法即是直接在STL表面网格基础上构建单一封闭壳体。步骤如下:

1. 读取STL数据,构建外壳拓扑结构

  1. 顶点合并(去重复顶点):STL 文件中每个三角独立存储顶点,因此含有大量重复坐标点;按浮点容差合并重合顶点,建立全局顶点列表。

  2. 构建边-三角邻接关系。遍历所有三角,提取每条边,记录每条边被几个三角面片共享。

  3. 拓扑检查。识别边界边(只属于 1 个三角);内部边(属于两个三角形);检出非流形边(≥3 个三角共用一条边);检查壳体是否闭合:如果存在孤立边界边,判定壳体不封闭。

  4. 面片法向一致性校验。遍历面片,尝试统一外法向;如果STL文件的法向混乱,可能会导致后续网格划分错误。

  5. 构建外壳拓扑结构。组装完整的边界三角面片数据结构,供后续的网格算法(如前沿推进法)读取边界。



2. 分别进行一维边网格、二维面网格、和三维体网格划分。其中三维网格划分,可以使用经典前沿推进法(Advancing Front),或者并行的四面体Delaunay法。

3. 网格优化。通过检查单元质量,来对整体网格进行优化。单元质量优化,移除扁平 “薄单元”,提升有限元计算收敛性。

面片类聚法

很多实际工作中,我们希望能够生成像CAD模型那样的拓扑结构,以便后续能更加容易设置有限元边界等条件。此时可以使用面片类聚法,将所有面片组合成多个几何面,即生成离散的B-Rep数据,这样一个过程,也能够更好的处理复杂或者有缺陷的STL数据。面片类聚法步骤如下:

1. 读取STL数据,直接构建外壳拓扑结构

  1. 按照法向夹角聚类三角面片。相邻三角法向夹角,即二面角(dihedral angle),小于阈值,归为同一个光滑曲面;超过阈值则判定为特征锐边,用于捕捉棱角。

  2. 确定、存储边-三角面的对应关系。

  3. 基于表面三角网格的邻接关系、二面角、曲率、非流形标记,对大量离散 STL 三角面片做聚类分组;把属于同一个光滑几何面的三角片归为一类,并标记分割边界(锐边、非流形边),输出一组面片连通区域。

2. 建立离散实体图形。

基于分类后的面片,重建几何实体(面、线、点),把离散三角网格变成近似B-Rep的几何模型。方法是为每一个聚类创建一个B-rep 几何实体,如果要创建高阶单元,还可以通过拟合的方法,离散曲面成为UV参数化的曲面;把纯面网格升级成CAD模块可以识别、操作的几何面或线。

3. 将所有外表面组合成闭合表面环,定义一个封闭的壳。通常以第一个面环作为外封闭壳;后续所有传入的面环都是内部空腔(孔洞),从外域中挖去这些空腔。并在这个壳的基础上建立三维实体域。供后续生成 3D 体网格。

4. 分别进行一维边网格、二维面网格、和三维体网格划分。(同直接法)

5. 网格优化。(同直接法)

总结

本文介绍了两种划分STL模型有限元网格的经典方法。由于STL数据相比B-Rep等CAD模型少了拓扑信息,给网格划分带来了不少挑战。实际工程中,还会遇到含有缺陷的STL文件,如不够密闭,孔洞、非流形边、自相交、面片法向,更加大了网格划分的难度。对网格划分器的鲁棒性提出较高要求。

文本所介绍算法还可以用于修复STL文件,以减少后续网格划分出现的各种问题。此外,算法也可以用于OBJ,3MF,OFF,  PLY等其他表面模型的有限元网格划分。

来源:WELSIM
增材WELSIM曲面装配
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-09-24
最近编辑:1小时前
WELSIM
一枚搞仿真的老员工
获赞 27粉丝 88文章 273课程 0
点赞
收藏
作者推荐

生成CalculiX求解器的接触与边界条件

CalculiX 是一款著名的开源有限元分析(FEA)软件,主打结构力学(静力、动力、非线性)与热分析,适用于科研、教学和中小型工程场景。CalculiX的核心优势有:开源免费。个人、企业、科研机构均可自由使用、修改和分发代码,遵循 GNU GPL 许可证。兼容支持 Abaqus 的 INP 输入文件格式,多数 Abaqus 模型也可直接导入 CalculiX 求解,减少学习曲线。求解器代码精简,对硬件资源要求低于商业软件,适合中小型模型的快速计算。对第三方前后端软件支持也非常好,易于前后处理器与求解器的整合。笔者曾在《使用WELSIM生成CalculiX求解器文件》一文中,介绍了如何快速地生成CalculiX输入文件。目前,WELSIM已经可以很好的作为CalculiX的前处理器生成输入文本,极大的方便用户使用CalculiX进行有限元分析。本文以更详细的方式介绍生成接触与边界条件的命令。接触在多体有限元结构分析中,接触是必要的设置之一。本章节描述生成两种常见的接触类型:绑定接触和可分离接触。绑定接触绑定接触是一种用于模拟多体之间完全刚性连接的接触条件,适用于部件间无相对滑移、无分离、无间隙的工况(如焊接、胶粘、过盈配合后固化、螺栓紧固的刚性连接)。绑定接触会强制接触界面的节点位移完全一致,等同于将多个独立部件 “融合” 为一个整体结构。 绑定接触设置如下图所示,转换成CalculiX命令时,使用*TIE 命令。生成的输入命令如下*Tie, Name=ID_15, Position tolerance=0.01, Adjust=NoTarget_Surface_15, Master_Surface_15在网格文件中,定义的表面单元如下:** Box_to_Box_1*SURFACE, TYPE=ELEMENT, NAME=Master_Surface_15 70, S2 63, S2 74, S2 61, S2 66, S1 69, S2** Box_to_Box_1*SURFACE, TYPE=ELEMENT, NAME=Target_Surface_15 166, S3 185, S2 160, S3 173, S2 171, S4 169, S3可分离接触可分离接触是一种用于模拟多体接触界面允许接触、滑移、分离三种状态的非线性接触条件,核心特点是接触界面仅传递法向压力,无拉力作用,且切向可自由滑移或黏着,适用于部件间存在动态接触与分离的工况(如齿轮啮合、冲压成型、轴承滚动、机械碰撞)。根据摩擦力假设,又分为无摩擦接触和有摩擦接触。WELSIM设置接触如下图所示,转换成CalculiX命令时,使用CONTACT命令。这里值得注意的是,CalculiX规定,主接触面又称作独立接触面,必须是以单元定义的表面。被动接触面又称作是依赖接触面,可以是单元定义的表面,也可以是节点定义的表面。生成对应的CalculiX命令为** Box_to_Box 1*Surface interaction, Name=SurfaceInteraction_15*Surface behavior, Pressure-overclosure=Hard*Friction0.15*Contact Pair, Interaction=SurfaceInteraction_15, Type=Surface to surfaceTarget_Surface_15, Master_Surface_15结构分析中的边界条件设置边界条件是有限元分析中重要的步骤,也是前处理软件生成求解器命令的重要部分。WELSIM支持大量CalculiX的边界条件。本章节演示前处理器生成结构分析中的边界条件,并显示对应的求解器命令。1. 固定边界或位移位移边界条件是用于约束模型节点位移自由度的本质边界条件,其作用是限制结构的刚体运动、模拟实际支撑约束(如固定支座、铰支座),是结构静力、动力分析的基础条件。 3维模型中,对于实体单元,可以施加X/Y/Z方向的平移(Ux/Uy/Uz),对于壳单元,可以施加额外的绕 X/Y/Z 轴转动的转动(Rx/Ry/Rz)。对应生成的CalculiX求解器命令是,** BC Name: Displacement *Boundary ID_22, 1, 1, 1 *Boundary ID_22, 2, 2, 2 *Boundary ID_22, 3, 3, 3 *Boundary ID_22, 6, 6, 0.5235992. 压力压力边界条件是一种作用于结构表面的面载荷,属于分布载荷,其本质是通过指定单位面积上的法向力来模拟流体压力、接触压力、气体载荷等工程场景(如压力容器内壁压力、风载荷、土壤侧压力)。压力是结构有限元分析中常见的边界条件之一。压力的符号规则决定载荷方向:正压力:载荷方向指向表面内侧,对结构产生压缩效应(如压力容器内壁压力);负压力:载荷方向背离表面外侧,对结构产生拉伸效应(如真空容器外壁的大气压力)。压力边界条件如图所示,对应生成的求解器命令是,** BC Name: Pressure *DLOAD ID_20, P, 1233. 力力边界条件是作用于几何关键点、线、或者面的载荷,用于模拟工程中局部位置的受力工况(如螺栓预紧力、吊环拉力、销钉作用力)。 力是结构力学中最常见的边界条件,然而, 对于有限元数值方法中,几何面上的力边界条件的施加并不简单,通常是将多个节点的自由度耦合到一个参考节点,常用于将集中载荷分散到节点组(如把力加在参考节点,自动分配到耦合组)。如图所示,在前处理器的力设置中,用户可以选定几何体的面,线,或点,并给定三个方向上的力大小。得到力的求解器命令如下,*COUPLING, REF NODE=46, SURFACE=ID_17, CONSTRAINT NAME=c17 *KINEMATIC 1 3** BC Name: Force *CLOAD, OP=NEW 46, 1, 100 *CLOAD, OP=NEW 46, 2, 200 *CLOAD, OP=NEW 46, 3, 3004. 节点力节点力边界条件是直接作用于单个或多个节点的集中力载荷,是有限元离散化后最基础的载荷施加形式,与之前提到的集中力边界条件高度关联,但更偏向于网格离散后的直接操作,常用于精细化载荷控制或特殊工况模拟。 节点力是直接施加在网格节点上的力,根据节点数量大小,综合施加的力会叠加。生成的求解器命令也非常简单明了,根据所选的节点,施加CLOAD载荷。 ** BC Name: Nodal Force *CLOAD ID_18, 1, 10 *CLOAD ID_18, 2, 20 *CLOAD ID_18, 3, 30** Nodal_Force*NSET, NSET=ID_18 82, 84, 86, 88, 95, 96, 103, 104, 107, 108, 111, 112, 145, 146, 147, 148, 149, 1505. 重力重力边界条件属于体积力(Body Force) 范畴,用于模拟地球引力场对结构的作用,是通过给模型的每个单元分配与质量成正比的惯性力,适用于几乎所有包含自重影响的结构分析(如建筑梁板、机械部件、航天器地面工况)。 重力的本质是加速度场作用下的体积力,其大小与单元的质量直接相关。前处理器设置如下,生成的求解器命令如下图所示。** DC Name: Earth Gravity *Dload Eall, Grav, 9.807, 0, 0, -16. 旋转角速度旋转角速度边界条件用于模拟结构绕某一轴做匀速转动的工况,会在结构内部产生离心力和科里奥利力(高速转动时需考虑),属于惯性载荷范畴,广泛应用于旋转机械分析(如飞轮、叶轮、离心机、涡轮转子)。输入的参数有旋转轴,旋转原点,和角速度的大小。输入界面如下图所示。生成的求解器命令如下所示。** DC Name: Rotational Velocity *Dload ID_21, CENTRIF, 100, 5, 5, 0, 0, 0, 1热分析中的常见边界与初始条件1. 温度在有限元热分析中,温度边界条件是直接定义模型特定区域温度值的约束条件,属于本质边界条件(Dirichlet 边界条件),适用于已知表面或节点温度的场景(如恒温水箱壁面、与大热源接触的部件、温控设备的设定温度面)。 在热传导控制方程中,温度边界条件是强制约束,会直接固定边界节点的温度自由度,求解时优先满足该约束,再计算内部温度场分布。 前处理器设置如下,生成的CalculiX求解器命令如下,** BC Name: Temperature *Boundary, op=New ID_23, 11, 11, 02. 热流密度热流密度(Heat Flux)边界条件是直接定义单位面积上通过固体表面的热流量的边界设置,属于热载荷的一种,适用于已知表面热流输入 / 输出的场景(如电加热器表面、太阳能集热板、高温燃气冲刷壁面)。热流密度是核心参数,正方向为热量流入固体,负方向为热量流出。输入界面如下:生成的CalculiX求解器命令如下:** BC Name: Heat Flux *Dflux ID_24, S, 0.53. 体热流密度体积热流是一种体载荷,用于模拟物体内部热源产生或消耗热量的过程,区别于作用在表面的热流密度边界条件,它直接作用于模型的体单元,适用于内热源驱动的温度场分析。体积热流密度,SI单位为 W/m3(正号表示生成热量,负号表示消耗热量),用户输入界面如下:生成的CalculiX求解器命令如下, *DFLUXID_31,BF,10.4. 对流对流(Convection)边界条件又称膜(Film)边界条件。是用于模拟固体表面与相邻流体(气体或液体)之间对流换热的边界设置,是工程热分析中最常用的边界条件之一,广泛应用于电子设备散热、管道换热、汽车发动机冷却等场景。 对流换热系数是表征对流换热强度的核心参数,环境温度参数是远离固体表面的主流流体温度。前处理器中的输入界面如下,生成的CalculiX求解器命令如下:** BC Name: Convection *Film, op=New ID_29_S1, F1, 80, 123 ID_29_S2, F2, 80, 123 ID_29_S3, F3, 80, 123 ID_29_S4, F4, 80, 1235. 热辐射边界条件辐射边界条件是用于模拟物体表面与周围环境(或其他物体表面)之间通过热辐射方式传递热量的边界设置,其核心遵循斯蒂芬–玻尔兹曼定律,适用于真空、气体等介质的热交换场景(如航天器热控、高温设备散热)。辐射边界条件,是一种非线性边界条件,热流与温度的四次方成正比,求解时需要迭代计算。用户需要输入的参数为发射率(Emissivity),介于0-1之间的数值,和环境温度。输入界面如下,生成的热辐射边界条件命令如下,** BC Name: Radiation *Radiate, op=New ID_30_S1, R1, 30, 0.9 ID_30_S2, R2, 30, 0.9 ID_30_S3, R3, 30, 0.9 ID_30_S4, R4, 30, 0.9总结有限元分析中,边界条件的类型较多,涉及了条件的参数本身,也涉及到所选择的单元,或节点。对于前处理器来说,生成各种边界条件的命令,是一项复杂的工程。WELSIM已经可以很好的设置各种边界条件,能够快速生成CalculiX求解器所需要的输入文件,并可以直接用于计算。用户可以使用WELSIM作为CalculiX的前处理器。CalculiX还有少量边界条件,如Constraint和Equation等, 由于常规分析中较少使用,本文未作讨论。CalculiX与Abaqus的输入文件格式有着很大的相似性,因此,本文所描述的内容,也可以用于Abaqus求解器。WelSim与作者不隶属于CalculiX, Abaqus。和CalculiX与Abaqus开发团队与机构没有直接关系。这里引用开源软件的名称和图片仅用作技术博客文章与软件使用的参考。 来源:WELSIM

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈