
基于STL格式文件的全四边形网格生成方法.doc
8页基于 STL 格式文件的全四边形网格生成方法 陈 涛 +, 高 晖 , 李光耀(汽车车身先进设计制造国家重点实验室 湖南大学 长沙 410082)摘 要: 提出一种以 STL 格式文件所描述的离散几何模型 为基础,使用改 进的铺路法自动生成全四边形网格的方法重建 STL 文件的拓扑结构数据,而后进行模型的内外边界搜索及初始化布点算法依次向模型内部加入新的节点以生成新的四 边形网格单元,直至把模型内部全部覆盖原始几何模型中的特征线被提取出来,并在网格生成阶段将其作为内部孔洞处理,减小了生成网格模型所 导致的离散误 差,在特征所在区域生成 质量较佳的网格使用一种联合 Laplacian 方法与小种群遗传算法(μGA )的网格光顺方法,可以有效地纠正反转单元、退化 单元等形态质量很差的单元多个算例验证了本文提出方法的有效性关键词: STL;网格剖分;特征提取;网格光顺;小种群遗传算法 0.引言随着汽车碰撞有限元仿真分析在国际上各大汽车公司的广泛应用,对有限元网格模型的要求也越来越高一方面,CAD模型中大量的细节需要在网格模型中得以保留,以便更加真实的模拟汽车碰撞过程;另一方面,为了提高碰撞仿真计算精度,保证求解的稳定性,要求网格模型中的单元具有更高的质量。
目前在主流CAD(Computer Aided Design 计算机辅助设计)软件使用NURBS(非均匀有理b样条)作为几何建模内核,商业化网格生成软件需要通过接口软件从软件中获取模型进行网格剖分但通过接口软件进行数据交换时常常会产生数据丢失或数据错误,严重影响了网格剖分的进行近年来,面片格式的几何模型表述方式得到了广泛应用,逐渐成为NURBS表述的一种替代方式,如在快速原型制造领域使用的STL (Stereo lithography)文件格式,它使用三角形来表述几何模型,格式简单且不易出错,因此更多的研究者把倾向于使用面片模型作为网格剖分的输入模型 [1]在汽车碰撞和薄板冲压等强非线性问题的有限元仿真计算中,优先使用四边形单元,因为相比于三角形单元,四边形单元具有更高的求解精度和计算效率非结构化四边形网格的生成方法分为直接法和间接法两大类 [2]直接法包括影射法、铺路法、前*国家 973 计划(2004CB719402)和教育部跨世纪优秀人才计划资助项目 联系作者:陈涛 Email: danielchen2005@ 沿推进法、四叉树法等;间接法则首先将待划分的区域划分为三角形单元,接着用不同的算法将三角形单元转换成四边形单元。
Blacker [2]在1991年提出铺路法(Paving)属于直接法,具有适用性强,生成网格模型的质量高等优点,现已被广泛运用到商业化有限元分析软件的前处理程序中,如Ansys、HyperMesh等提出一种以STL格式几何模型的全四边形网格生成算法克服了使用NURBS几何模型时所遇到的繁琐的模型修补问题针对三角面片的特点,改进了原有的铺路算法,并能够更有效的控制网格单元尺寸的疏密过渡原始几何模型中的重要几何特征在网格模型中均能够较好的保留本文提出联合使用Laplacian方法与小种群遗传算法(μGA)的网格光顺方法,在合理的计算时间内,大幅提高了模型的单元质量 1.STL 文件的拓扑重建和特征提取STL 格式的数据文件中包含的三角面片,并不能满足有限元计算要求从图 1 可以看到,模型包含有大量的狭长的三角形,无法满足碰撞仿真计算的精度要求因此在本文所进行的研究中,三角面片模型仅作为生成四边形网格所需的背景网格Béchet [2]使用 STL 格式的数据文件生成了满足有限元计算要求的三角形网格,而本文的研究关注于全四边形网格的生成图 1 某车型行李箱盖面片模型 1.1 模型的拓扑重建与边界初始化STL 格式的数据文件中提供了每个三角形的三个顶点的坐标和三角形的法向矢量。
从模型的拓扑层次结构上看,STL 格式中只有顶点—面片两个拓扑层次,二者之间也仅仅存在从属关系(顶点从属于某个单元) 进行 STL 模型拓扑重构的目的是要建立顶点—边—面片的拓扑层次结构,并提取拓扑实体之间的从属、相邻关系依次从文件中读取三角面片,记录它的三个顶点的坐标和法向,并搜寻已存储的节点中是否存在重叠顶点,如果有则进行合并由此建立顶点与顶点、面片与面片之间的相邻关系读入完成之后,根据面片之间的相邻关系创建边,建立顶点—边—面片的完整拓扑层次结构关系模型的边界包括内边界(指模型内部的孔洞)和外边界边界由仅从属于一个三角形的边组成的边界搜索分三步进行:1. 首先搜索出模型中所有的仅从属于一个三角形中的边;2. 将它们按照首尾相接的顺序排列,构成一条或多条边链,每一条链代表一个边界;3. 最后要正确区别内外边界假定模型的法向是 Z 轴正向,则外部边界链是逆时针方向的,而内部孔洞是顺时针方向的 铺路算法需要首先对所有的边界布上偶数个点,并且点与点之间的距离直接的控制内部网格单元尺寸大小因此需要根据目标网格的尺寸要求,在所有边界上布点1.2 模型中的特征识别与特征提取车身零部件的结构大都比较复杂,包含很多的特征,这些特征需要在网格模型中保留。
在以 STL 格式表述的几何模型中,由于拓扑层次较低,只能识别特征边(Feature Edge)这里使用二面角(dihedral angle)特征边的判断依据首先对所有的边计算二面角以搜索出所有的特征边,并按照首尾相接的顺序完成排序,构成特征线根据二面角的大小,将特征线分为强特征线(Strong Feature Line)和弱特征线(Weak Feature Line)经多个算例测试,当边的二面角大于 0.7 弧度时应作为强特征,介于 0.5 弧度和 0.7 弧度之间时作为弱特征,小于 0.5 弧度的特征无需作专门的处理图 2 所示的模型中,蓝色线表示强特征线,红色线表示若特征线图 2 模型中的强特征与弱特征在后续的网格生成中,两者使用不同的处理方式对于强特征线,算法将其视作一个面积为 0 的内部孔,并作与其他边界一样的布点处理铺路算法的一个突出优点是可以在模型的边界附近生成质量极高的网格单元采用这种对内部特征的处理方法,可以在特征周围得到高质量的网格对于弱特征线的处理,则通过在网格生成过程中,将位于其邻近的节点移至特征线上,并且在后续的网格光顺中限制这些节点在特征线上移动以保持特征。
2.改进的四边形网格生成铺路算法铺路法由 Blacker[3]在 1991 年最先提出,原始的铺路法只适用于二维,Cass [4]把它从二维推广到三维,White [5]对算法的健壮性作了进一步的改进该方法可用图 3[4]说明,算法的输入是代表边界(包括内部边界和外部边界)的节点链,为了生成全四边形单元,每条边界节点链上必须的节点数必须是偶数算法从边界节点开始,选择最适合生成四边形单元的节点作为一行的开始,加入一个单元,该行其他单元根据各点处的节点内角的大小加入随着铺路面(Paving)的向内部推进,最终会碰到自身或者其他的铺路面(有多个边界的情形下) 在每加入一行后要进行相交检查(Intersection checking) ,根据相交的具体情况做缝合处理在铺路面向内部的逐层推进的过程中,不断使用局部的平滑(smoothing)操作,调整单元中的节点位置以保证单元的质量,控制单元的尺寸使用“收缩(tucking)”和“加楔子(wedging)”操作,调整凹凸区域的铺路面边界,减少不规则单元的产生当整个区域都被加入了四边形单元,对整个网格模型使用光顺操作2.1 使用背景网格计算节点输入模型中的三角形面片可以直接作为背景网格,以生成全四边形网格。
以图 3为例说明如何利用背景网格来生成新的节点图 3. 新节点计算假定 Ni-1、N i 和 Ni+1 位于当前的铺路面上,计算由这三点共同确定的新节点 Nj 的位置首先找出 Ni 邻近的背景三角形网格的集合 S{T1,T2,…,Tn},将 Ni 依次投影到它们所在的平面上,寻找投影点落在三角形内的三角形 Ti设 Ti 所确定平面为 ,将 Ni-1、N i 和 Ni+1 都投影到 上,得到投影点 Pi-1、P i 和 Pi+1计算向量 和 1iP的夹角 ,新节点 Nj 在切平面上的投影点 Pj 位于 的角平分线上而点 Pj1iP距离 Pi 的距离为向量 和 长度之和的平均值,由此确定位于 Pj 的位置 1iP1i计算得到的 Pj 仍位于 Ni 切平面 上,因此需要计算几何模型上距离该点最近的点这里使用三角形单元形函数,计算出 在原始模型上的近似点 步骤如下:'jp'jN1.对三角形 Ti 的每一条边,利用 Hermitian 插值,求出该边的中点,分别为P4,P 5,P 6;2. 使用标准的三角形单元形函数,见(1)式,计算出 的近似点'jp(1)6135241 321)()()(XXxxx上式中,x 1,x 2,…,x 6 分别是三角形顶点 P1,P 2,P 3 和三角形边的中点P4,P 5,P 6 的坐标, ξ1, ξ2, ξ3 是 在该三角形中的面积坐标。
'jp2.2 改进的局部单元尺寸调节方法铺路算法的一个主要缺点对内部单元控制力较弱,单元距离边界越远,单元尺寸与边界处确定的理想尺寸的偏差也就越大在网格生成过程中进行的相交、缝合、光顺操作等都会使单元尺寸偏离设定值利用输入的三角面片建立覆盖整个问题区域的尺寸场,如果某处的网格单元尺寸与该处的理想尺寸不一致,即进行单元尺寸调节铺路算法中对局部单元尺寸调节均在铺路面上完成,主要的手段是“收缩(tucking)”和“加楔子(wedging)”操作图 4 所示为加入楔子的情形,再沿铺路面对单元进行检查时,如果碰到连续三个或三个以上满足加入楔子条件的单元,就在它们的中间位置加入一个楔子单元该方法的缺点是当单元尺寸变化剧烈时,难以满足要求;同时楔子单元的加入会使位置附近的单元质量大幅降低,而且这种影响会随着铺路面向模型内部的推进而继续本文提出一种新的方法,使用 Schneiders[6]提出网格细分过渡模版进行网格尺寸调节,如图 5 所示在单元密度由稀疏向密集变化时,使用类似网格粗化的手段实现过渡;单元由密集向稀疏过渡时,采用与网格加密相似的方法使过渡更加平滑这一方法的优点在于尺寸调节的能力更强,调节也仅对相邻的少数单元的质量产生影响,不会对其他网格的质量产生影响。
图 4. 加入楔子控制单元尺寸 图 5 新的铺路面单元尺寸调节方法3.Laplacian 方法与小种群遗传算法结合的网格光顺方法网格生成完成后,通常都包含有相当数量的形态质量较差的单元,如狭长单元、退化单元甚至反转单元,需要对网格质量进行调整提高单元质量的最重要手段是网格光顺方法最常用的网格光顺方法是 Laplacian 方法,它对网格内部的每个顶点定义一个拉普拉斯算子(Laplacian) 来确定一个调整方向,通过沿调整方向以一定的速度移动顶点来调整网格其优点是计算简单,收敛快,缺点是如果初始网格包含有扭曲的单元,该方法难以处理Canann [7]提出了一种 Laplacian 与基于优化方法相结合的光顺方法,在一定程度上解决 Laplacian 方法难以处理反转单元的问题但是这一类基于梯度的常规优化方法易于陷入局部最优,并且要求描述单元质量的目标函数至少有一阶导数Holdert [8]提出一种基于遗传算法的网格光顺方法,克服了常规优化算法的缺点,但如果针对模型中的所有网格均使用这种优化方法,计算耗费会很大,收敛速度较慢遗传算法由 Holland 根据达尔文的进化思想提出,其突出优点是具有全局优化搜索能力。
Krishnakumar [9]提出了小种群遗传算法(μGA) ,采用二进制编码和一致交。












