掌桥专利:专业的专利平台
掌桥专利
首页

一种针对“脏”几何模型的包面网格生成方法

文献发布时间:2023-06-19 19:30:30


一种针对“脏”几何模型的包面网格生成方法

技术领域

本发明涉及网格生成技术领域,尤其涉及一种针对“脏”几何模型的包面网格生成方法。

背景技术

在CAE仿真模拟分析领域,常用的数值模拟方法,如有限元、有限体积法等,都需要先执行网格划分,将模型区域划分成简单子区域的集合,才能在模型区域内构建数值模拟平衡方程执行数值模拟分析。这些简单子区域的集合,为网格单元集合,如四面体、六面体等网格单元的集合,也称之为网格。为了提高网格查询效率、减少网格存储量,通常采用八叉树空间划分方法,将空间递归划分为不同层次的树结构。

通常将存在交叉、缝隙、几何洞等几何与拓扑错误的CAD模型称为“脏”几何模型。对于存在交叉、缝隙,几何洞等拓扑错误的“脏”几何模型,一般都需要先进行几何修复,消除这些拓扑错误,才能采用一般的网格划分方法实现生成网格。如果“脏”几何模型存在大量难以修复的几何与拓扑问题,其清理与修复工作需要耗费大量的人工时间,不利于方便快捷的基于网格进行CAE仿真模拟分析。

发明内容

鉴于上述的分析,本发明实施例旨在提供一种针对“脏”几何模型的包面网格生成方法,用以解决现有“脏”几何模型的难以直接生成网格的问题。

一方面,本发明实施例提供了一种针对“脏”几何模型的包面网格生成方法,包括以下步骤:

计算几何模型的初始划分包围盒,对所述初始划分包围盒进行八叉树空间划分,得到几何模型的背景网格单元集合;

根据背景网格单元集合中网格体单元与几何模型的相交关系对背景网格单元集合中的网格体单元进行分割,得到第三网格单元集合;

查找第三网格单元集合中的边界面单元和间隙面单元;

基于第三网格单元集合中的边界面单元和间隙面单元,在第三网格单元集合搜索得到预设种子点所在封闭体的包面网格。

基于上述技术方案的进一步改进,根据背景网格单元集合中网格体单元与几何模型的相交关系对背景网格单元集合中的网格体单元进行分割,得到第三网格单元集合,包括:

若背景网格单元集合中的顶点与最近的几何模型表面的距离小于第一阈值,则将该顶点移动至最近的几何模型表面;

对于背景网格单元集合中的每个网格体单元,若该网格体单元的边与几何模型的表面相交,则根据交点对该网格体单元进行分割;得到第一网格单元集合;

对于几何模型的每条曲线的每个端点,若该端点位于第一网格单元集合中的一个网格体单元内,则根据该端点对该网格体单元进行分割;得到第二网格单元集合;

对于几何模型的每条曲线,在第二网格单元集合中查找与该曲线相交且交点位于网格体表面的网格体单元,则根据交点对该网格体单元进行分割;得到第三网格单元集合。

进一步地,若该网格体单元的边与几何模型的表面相交,根据交点采用以下方式对该网格体单元进行分割:

S221、从交点中任选一个交点作为当前交点;

S222、以当前交点所在的网格体单元为当前网格体单元,将当前网格体单元中每个非交点所在面的顶点和当前交点连接构成当前网格体单元的一个子网格体单元,将当前网格体单元划分为多个子网格体单元;

S223、若存在未遍历的交点,则以下一个交点为当前交点,返回步骤S222;否则,分割结束。

进一步地,采用以下方式查找第三网格单元集合中的边界面单元:

对于第三网格单元集合中的每个网格体单元,依次判断该网格体单元的每个网格面的顶点是否均位于几何模型的表面,若是,则该网格面为边界面单元。

进一步地,采用以下方式查找第三网格单元集合中的间隙面单元:

对于第三网格单元集合中的每个网格体单元,依次判断该网格体单元的每个网格面是否在几何间隙内部,若某个网格面在几何间隙内部,则该网格面为间隙面单元。

进一步地,采用以下方式判断网格面是否在几何间隙内部:

计算网格面的中心点到几何模型每个表面的距离,以距离最小的表面为最接近表面,中心点到最接近表面的距离为第一距离,若第一距离小于第二阈值,则:

从最接近表面上与所述中心点最近的点到所述中心点方向的射线若与几何模型表面相交,则计算所述中心点到最近交点的距离作为第二距离,若第一距离与第二距离的和小于第二阈值,则所述网格面在几何间隙内部。

进一步地,基于第三网格单元集合中的边界面单元和间隙面单元,在第三网格单元集合搜索得到预设种子点所在封闭体的包面网格,包括以下步骤:

S41、以预设种子点所在的网格体单元为当前体单元;

S42、对于当前体单元,若不存在未经搜索的网格面,则停止对当前体单元的搜索;否则,遍历当前体单元未经搜索的每个网格面,标记当前网格面为已搜索网格面,若当前网格面为边界面单元或间隙面单元,则将当前网格面加入包面网格单元集合;否则,将与当前体单元通过当前网格面邻接的体单元加入当前体单元的待搜索网格单元集合;将当前体单元的待搜索网格单元集合中的每个体单元作为当前体单元,返回步骤S42;

S43、包面网格单元集合中的网格面构成预设的种子点所在封闭体的包面网格。

进一步地,采用以下方式计算几何模型的初始划分包围盒,包括:

获取几何模型的原始包围盒,根据公式

根据公式

进一步地,对所述初始划分包围盒进行八叉树空间划分,得到几何模型的背景网格单元集合,包括:

S11、以初始划分包围盒为根结点,将初始划分包围盒划分为八个大小相同的区域,作为根结点的下一级结点;以根结点的下一级为当前级;

S12、若当前级的结点的边长小于第三阈值,则划分结束,所有叶子结点构成背景网格单元集合,否则:

S13、对于当前级的每个结点,判断当前结点与几何模型的表面是否相交,若相交,则将当前结点划分为八个大小相同的区域,作为当前结点的下一级结点;以当前级的下一级作为当前级,返回步骤S12。

进一步地,采用以下方式判断当前结点与几何模型表面是否相交:

若当前八叉树结点表示的立方体存在与几何模型的表面相交的边,则当前结点与几何模型的表面相交,否则,当前结点与几何模型的表面不相交。

与现有技术相比,本发明通过生成几何模型的初始划分包围盒,对初始划分包围盒进行八叉树划分,根据划分后的网格体单元与几何模型的相交关系进一步对网格体单元进行分割,使几何模型边界处的网格进一步细分得到第三网格单元集合,从而便于后续找到更贴近几何模型的包面网格,通过查找第三网格单元集合中的间隙面单元把“脏”几何模型的漏洞进行填补,从而实现准确查找封闭体的包面网格,生成合法水密网格。相比于常规的网格生成算法,不需要执行对“脏”几何模型执行繁琐的几何修复,即可直接生成包面网格,用于后续体网格剖分以及数值模拟计算。避免了繁琐的几何修复工作,提高了CAE仿真模拟分析的可实施性。

本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。

附图说明

附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件;

图1为本发明实施例针对“脏”几何模型的包面网格生成方法的流程图;

图2为本发明实施例八叉树空间划分示意图;

图3为本发明实施例根据交点对网格体单元进行分割的示意图;

图4为本发明实施例根据端点对网格体单元进行分割的示意图;

图5为本发明实施例的几何间隙示意图;

图6为本发明实施例的包面网格示意图。

具体实施方式

下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。

本发明的一个具体实施例,公开了一种针对“脏”几何模型的包面网格生成方法,如图1所示,包括以下步骤:

S1、计算几何模型的初始划分包围盒,对所述初始划分包围盒进行八叉树空间划分,得到几何模型的背景网格单元集合;

S2、根据背景网格单元集合中网格体单元与几何模型的相交关系对背景网格单元集合中的网格体单元进行分割,得到第三网格单元集合;

S3、查找第三网格单元集合中的边界面单元和间隙面单元;

S4、基于第三网格单元集合中的边界面单元和间隙面单元,在第三网格单元集合搜索得到预设种子点所在封闭体的包面网格。

本发明通过生成几何模型的初始划分包围盒,对初始划分包围盒进行八叉树划分,根据划分后的网格体单元与几何模型的相交关系进一步对网格体单元进行分割,使几何模型边界处的网格进一步细分得到第三网格单元集合,从而便于后续找到更贴近几何模型的包面网格,通过查找第三网格单元集合中的间隙面单元把“脏”几何模型的漏洞进行填补,从而实现准确查找封闭体的包面网格,生成合法水密网格。相比于常规的网格生成算法,不需要执行对“脏”几何模型执行繁琐的几何修复,即可直接生成包面网格,用于后续体网格剖分以及数值模拟计算。避免了繁琐的几何修复工作,提高了CAE仿真模拟分析的可实施性。

实施时,首先生成几何模型的初始划分包围盒,用于网格分割。

需要说明的是,几何模型通常是由多个曲面构成的,每个曲面由多条曲线构成。几何模型的曲面即其表面。在获取一个几何模型时,会获取几何模型的曲面信息,包括曲面的数量、曲面的表达方式(比如Nurbs曲面等)、特征边信息(特征边数量,每个曲面的特征边都是哪些,特征边即构成曲面边界的曲线)、特征边的端点等,以及几何模型的原始包围盒信息。

也可以通过几何引擎计算几何模型的原始包围盒信息。

具体的,步骤S1中,采用以下方式计算几何模型的初始划分包围盒,包括:

获取几何模型的原始包围盒,根据公式

原始包围盒为一个长方体,一般由长方体中顶点中的最小坐标点和最大坐标点表示,即,原始包围盒可以表示为

为了更方便的进行后续八叉树划分,初始划分包围盒可以比原始包围盒稍大。

具体的,根据公式

实施时,为了使划分网格单元形状更好,也可根据如下公式计算新的最小坐标点p

其中,L

得到初始划分包围盒后,对所述初始划分包围盒进行八叉树空间划分,得到几何模型的背景网格单元集合,具体包括:

S11、以初始划分包围盒为根结点,将初始划分包围盒划分为八个大小相同的区域,作为根结点的下一级结点;以根结点的下一级为当前级;

S12、若当前级的结点的边长小于第三阈值,则划分结束,所有叶子结点构成背景网格单元集合,否则:

S13、对于当前级的每个结点,判断当前结点与几何模型的表面是否相交,若相交,则将当前结点划分为八个大小相同的区域,作为当前结点的下一级结点;以当前级的下一级作为当前级,返回步骤S12。

实施时,第三阈值可根据网格划分精度要求设置。

实施时,八叉树划分过程如图2所示。

具体的,采用以下方式判断当前结点与几何模型表面是否相交:

若当前八叉树结点表示的立方体存在与几何模型的表面相交的边,则当前结点与几何模型的表面相交,否则,当前结点与几何模型的表面不相交。

具体的判断线段与曲面是否相交可参考现有技术,本专利在此不再赘述。

通过八叉树空间划分方法,将初始划分包围盒逐层划分成多分辨率的六面体集合。得到的背景网格单元集合是由叶子结点表达的六面体网格(网格体单元)组成的,每个网格体由组成该网格的顶点表示。

得到背景网格单元集合后,根据背景网格单元集合中网格体单元与几何模型的相交关系对背景网格单元集合中的网格体单元进行分割,得到第三网格单元集合,具体包括:

S21、若背景网格单元集合中的顶点与最近的几何模型表面的距离小于第一阈值,则将该顶点移动至最近的几何模型表面;

首先,遍历背景网格单元集合中的所有顶点,计算顶点到几何模型每个表面的距离,取距离最小的表面为最近的几何模型表面,若顶点与最近的几何模型表面的距离小于第一阈值,则将该顶点移动到最近的几何模型表面上。

实施时,第一阈值可根据分割精度要求设置。

实施时,顶点移动到最近的几何模型表面上,即将该顶点的坐标修改为最近的几何模型表面上与该顶点最近的点的坐标。

S22、对于背景网格单元集合中的每个网格体单元,若该网格体单元的边与几何模型的表面相交,则根据交点对该网格体单元进行分割;得到第一网格单元集合;

对于背景网格单元集合中的每个网格体单元(六面体单元),判断当前网格体单元的边与几何模型的表面是否相交,若是,则计算交点。具体的判断线段与曲面是否相交、计算线段与相交曲面的交点均为现有技术,此处不再赘述。

根据交点对该网格体单元进行分割。具体的,根据交点采用以下方式对该网格体单元进行分割:

S221、从交点中任选一个交点作为当前交点;

S222、以当前交点所在的网格体单元为当前网格体单元,将当前网格体单元中每个非交点所在面的顶点和当前交点连接组成当前网格体单元的一个子网格体单元,将当前网格体单元划分为多个子网格体单元;

S223、若存在未遍历的交点,以下一个交点为当前交点,返回步骤S222;否则,分割结束。

实施时,若网格体单元与的所有边与几何模型的表面只有一个交点,如图3(a)所示,六面体网格边与几何模型表面只有一个交点a,则连接六面体中不与a点直接相连的顶点(即非a点所在边的顶点)与a点构成6条分割线,任意两个分割线所在的平面构成分割面对该六面面体网格进行分割,将六面体分割为4个金字塔(五面体)。

实施时,如图3(a)所示,首先从交点中任选一个交点作为当前交点a,根据交点a对网格体单元(六面体)进行分割,由非交点a所在表面的顶点与交点a构成当前网格体单元的子网格体单元,对当前网格体单元(六面体)进行分割,将该网格体单元(六面体)分割为4个金字塔(五面体),即4个金字塔网格体单元。

若还有一个交点b,则再根据交点b对网格体单元进行分割,由于a已将六面体网格分割成了4个金字塔网格,则交点b在分割后得到的金字塔的边上,如图3(b)所示,将b所在的金字塔网格体单元作为当前网格体单元,由非交点b所在表面的顶点与交点b构成当前网格体单元的子网格体单元对该金字塔进行分割,将金字塔分为两个四面体和一个金字塔。

以此类推。

若当前网格体单元为四面体,如图3(c)所示,则可将该四面体分割为两个四面体。

对一个边与几何模型的表面有交点的六面体网格体单元按照上述方式分割后,再对下一个边与几何模型的表面有交点的六面体网格体单元进行分割。以此类推,直至对所有边与几何模型的表面有交点的六面体网格都分割完毕,得到第一网格单元集合。第一网格单元集合中包括六面体和金字塔,也可能存在四面体。

S23、对于几何模型的每条曲线的每个端点,若该端点位于第一网格单元集合中的一个网格体单元内,则根据该端点对该网格体单元进行分割;得到第二网格单元集合;

具体的,将该网格体单元的每个面的顶点与该端点连接构成该网格体单元的一个子网格体单元,从而将该网格体单元划分为多个子网格体单元。

如图4(a)所示,几何模型的曲线的端点落在一个六面体网格体单元内,则由网格体单元每个表面的顶点与端点连接构成当前六面体网格体单元的一个子网格体单元,将六面体分割为6个金字塔。

若端点落在金字塔网格体单元中或四面体网格体单元中,同样的,由网格体单元每个表面的顶点与端点构成当前网格体单元的一个子网格体单元,对金字塔网格体单元或四面体网格体单元进行分割。

对几何模型的每条曲线的所有端点一一进行判断,根据每一个落在网格体单元中的端点对网格体单元进行分割后,得到第二网格单元集合。

第二网格单元集合中包括六面体和金字塔,也可能存在四面体。

S24、对于几何模型的每条曲线,在第二网格单元集合中查找与该曲线相交且交点位于网格体表面的网格体单元,则根据交点对该网格体单元进行分割;得到第三网格单元集合。

需要说明的是,第二网格单元集合中的网格体单元,其表面为三角形或者四边形。计算曲线与三角形或四边形是否相交,计算曲线与三角形或四边形的交点可参考现有技术,本发明不在此处赘述。

如图4(b)所示,几何模型的曲线与金字塔网格体单元相交且交点位于金字塔的面上,由非交点所在表面的顶点与交点构成当前网格体单元的子网格体单元,对金字塔进行分割,分割为1个金字塔和两个四面体。

对几何模型的每条曲线一一进行判断,若曲线与网格体单元相交且交点位于网格体表面上则进行分割,最后得到第三网格单元集合。

得到第三网格单元集合后,网格分割结束。第三网格单元集合中包括六面体和金字塔,也可能存在四面体。

得到第三网格单元集合后,在第三网格单元集合中查找边界面单元和间隙面单元。

若网格体单元的某个面位于几何模型表面,则该网格面为边界面单元,具体的,步骤S3中可采用以下方式查找第三网格单元集合中的边界面单元:

对于第三网格单元集合中的每个网格体单元,依次判断该网格体单元的每个网格面的顶点是否均位于几何模型的表面,若是,则该网格面为边界面单元。

网格体单元的每个面即为网格面。

由于“脏”几何模型经常存在缝隙、几何洞等拓扑错误,在包面网格生成时需要标记这些几何间隙特征内的网格单元。如图5所示,几何间隙是通过一定路径从一个几何包围空间能进入另一个空间的通道、缝隙或者空洞。

位于“脏”几何模型的几何间隙内部的网格面为间隙面单元,具体的,步骤S3中可采用以下方式查找第三网格单元集合中的间隙面单元:

对于第三网格单元集合中的每个网格体单元,依次判断该网格体单元的每个网格面是否在几何间隙内部,若某个网格面在几何间隙内部,则该网格面为间隙面单元。

实施时,采用以下方式判断网格面是否在几何间隙内部:

计算网格面的中心点到几何模型每个表面的距离,以距离最小的表面为最接近表面,中心点到最接近表面的距离为第一距离,若第一距离小于第二阈值,则:

从最接近表面上与所述中心点最近的点到所述中心点方向的射线若与几何模型表面相交,则计算所述中心点到最近交点的距离作为第二距离,若第一距离与第二距离的和小于第二阈值,则所述网格面在几何间隙内部。

即,判断网格面中心点到其两侧的几何模型表面的距离的和是否小于第二阈值,若是,则认为该网格面位于几何间隙内部,将其标记为间隙面网格。

实施时,第二阈值可根据几何间隙的判断精度确定。

标记完所有边界面单元和间隙面单元后,即可确定边界面单元和间隙单元包围的封闭体。

所有边界面单元和间隙单元包围可能会包围出多个封闭体,实施时,可根据用户设置的种子点,查找用户感兴趣的封闭体,即种子点所在的封闭体。

具体的,步骤S4,基于第三网格单元集合中的边界面单元和间隙面单元,在第三网格单元集合搜索得到预设种子点所在封闭体的包面网格,包括以下步骤:

S41、以预设种子点所在的网格体单元为当前体单元;

实施时,预设的种子点应位于几何模型的初始划分包围盒空间内。根据种子点的坐标,第三网格几何中每个网格体单元的顶点坐标判断种子点是都位于该网格体单元内,从而找到预设种子点所在的网格体单元,将其作为当前体单元。

S42、对于当前体单元,若不存在未经搜索的网格面,则停止对当前体单元的搜索;否则,遍历当前体单元未经搜索的每个网格面,标记当前网格面为已搜索网格面,若当前网格面为边界面单元或间隙面单元,则将当前网格面加入包面网格单元集合;否则,将与当前体单元通过当前网格面邻接的体单元加入当前体单元的待搜索网格单元集合;将当前体单元的待搜索网格单元集合中的每个体单元作为当前体单元,返回步骤S42;

初始时,包面网格单元集合为空。

以种子点所在的网格体单元为最初的当前体单元,对体单元的每个网格面进行遍历,每搜索一个网格面将其标记为已搜索面,若当前网格面为边界面单元或者间隙面单元,则将当前网格面加入包面网格单元集合,并且不再向当前网格面的相邻体单元那个方向搜索,否则,将与当前体单元通过当前网格面邻接的体单元加入当前体单元的待搜索网格单元集合;向当前体单元的待搜索网格单元集合中的每个体单元方向进行搜索,即,当前体单元的待搜索网格单元集合中的每个体单元为当前体单元,继续搜索。

例如当前体单元为六面体,其中1个面为边界面单元,其余5个面不是边界面单元也不是间隙面单元,将通过这5个面与当前体单元邻接的每个体单元加入当前体单元的带搜索网格单元集合,将前体单元的带搜索网格单元集合中的每个体单元作为当前体单元,继续搜索,即通过当前体单元向5个方向扩散。如果当前体单元的所有面都已搜索过,则不再对当前体单元进行搜索。

S43、包面网格单元集合中的网格面构成预设的种子点所在封闭体的包面网格。

搜索结束后,包面网格单元集合中的网格面连接形成的表面网格即为预设的种子点所在封闭体的包面网格。如图6所示。

如果想要查找其他封闭体的包面网格,可以在感兴趣的区域继续设置种子点,采用上述S41~S43步骤,搜索感兴趣的区域的包面网格。

相比于常规的网格生成算法,本发明实施例公开的针对“脏”几何模型的包面网格生成方法,不需要执行对“脏”几何模型执行繁琐的几何修复,即可直接生成包面网格,用于后续体网格剖分以及数值模拟计算。避免了繁琐的几何修复工作,提高了CAE仿真模拟分析的可实施性。

本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

技术分类

06120115938642