一种基于STL文件的LBM前处理高效算法的制作方法

文档序号:24129932发布日期:2021-03-02 17:13阅读:120来源:国知局
一种基于STL文件的LBM前处理高效算法的制作方法
一种基于stl文件的lbm前处理高效算法
技术领域
[0001]
本发明涉及一种lbm前处理算法,尤其是涉及一种基于stl文件的lbm前处理高效算法。


背景技术:

[0002]
格子boltzmann方法(lattice boltzmann method,lbm)是流体力学中一种重要的数值方法。不同于传统的宏观方法和微观模型方法,lbm结合了介观动理学以及微观模型的特点。lbm计算过程中需要确定流场格点属于流体点还是固体点,通过前处理获得格点类型信息。stl是一种通用的数据文件格式,是为了将模型在不同的软件、不同的用途之间进行数据交换。其中一种方法是通过stl文件格式描述的物体模型判断格点在物体内外信息来确定格点类型,从而实现stl几何信息到lbm计算模型信息的重构。
[0003]
传统的前处理模型的重建是利用数学表达式法和直接法。但是这些存在着诸多问题:
[0004]
(1)其中数学表达式法主要针对规则的几何形状,如球、立方体、椭球等能用数学表达式直接表示的几何。这种方法可以根据表达式直接得到格点的类型,效率虽高,但是它适用范围很窄,无法很好的解决现实中复杂的问题。
[0005]
(2)直接法可以直接得到流场内所有网格点的类型,但由于其遍历次数的影响,在几何体面网格复杂和计算区域较大的情况下,该方法的时间消耗很大,会占用流体计算过程的很大部分,影响了整个程序的效率。


技术实现要素:

[0006]
本发明的目的在于为lbm计算模型信息的重构减少计算量、节约计算时间、提高效率,为此,提供了一种基于stl文件的lbm前处理高效算法。在利用lbm方法进行流体力学计算的过程中,模型的stl文件中只有三角形的顶点信息,并没有三角形之间的位置拓扑信息,因此需要将stl文件转换为可以用于计算的格式。lbm方法中需要用到流体计算区域内的格点相对模型的位置关系,得到计算流体点是在物体内部、表面或者外部。其中,所有在物体表面的网格点构成了物体在流体区域内的计算模型,然后进行下一步的流动计算。
[0007]
为了能够根据物体的stl文件得到物体的流体计算模型,本发明提出了一种快速、高效、准确的方法。该算法主要目标是精简计算量,提高计算效率。提高算法的准确度,使得计算流体模型能够很好的拟合原始物体。同时,该算法可以解决更加复杂的情况,如模型不封闭的问题。
[0008]
根据上述算法要求,本发明一种基于stl文件的lbm前处理高效算法包括以下步骤:
[0009]
步骤一,该算法在stl面网格的基础上,通过找出所有三角形的边界点来完成整个模型的重建。首先,根据面网格中的三角形生成对应的包围盒。包围盒包含了三角形对应的所有边界格点,这能够极大的降低三角形找到其边界格点的计算量。
[0010]
步骤二,遍历位于包围盒内部的格点。因为三角形的边界格点位于物体的外部,而且三角形的边界格点投影在三角形的内部。通过计算找出满足以上两个条件的格点。
[0011]
步骤三,计算上一步筛选出的格点距离三角形最近的格点,满足这个条件的格点在后续的过程中带来最小的误差。通过这几步便可得到模型的所有格点,完成对模型的重构。这对于格子boltzmann方法后续的数值模拟计算提供了很好的基础。
[0012]
优选地,所述步骤一中,为了缩小计算量,只计算由三角形生成包围盒(三角形包围盒是指边平行于坐标轴的体积最小的长方体,长方体的顶点是是计算格点,且三角形的三个顶点都在长方体的内部)内部的点。
[0013]
优选地,所述步骤二包括
[0014]
步骤十一,为了进一步减少计算量,继续排除不满足条件的格点,这里采取了下面的处理方法:
[0015]

去除三角形对应在物体内部的格点
[0016]
这里判断的方法是以靠近物体内部的格点为终点、以三角形顶点为起点构成的向量与三角形的法向量方向相反。
[0017]

去除不是该三角形对应的点
[0018]
同时将格点和三角形沿着某一坐标轴投影,如果格点的投影不在三角形的投影内部,那么这个格点不是三角形对应的格点;
[0019]
步骤十二,在上一步筛选剩下的格点中,对于某个坐标轴选取一批距离三角形最近的格点,
[0020]
例如选取x轴,则对于一个(y,z)坐标选取x轴方向距离最近的格点,该距离可以直接用格点到三角形的投影距离。然后就可以得到该三角形对应的所有物体边界点;
[0021]
步骤十四,对于每个三角形重复前面两步得到物体所有的边界点。
[0022]
步骤十五,进一步生成边界点对,边界点对是两个边界点构成的点对,且这两个点所确定的直线平行于坐标轴。边界点对中间的格点是物体内部点。
[0023]
步骤十六,根据边界点对可以确定所有的内部点,即可以完成物体模型的重建。
[0024]
本发明的算法,与现有技术相比,具有以下突出的实质性特点和显著优点:
[0025]
一、不严格要求物体几何封闭。
[0026]
对于模型stl文件中存在的平行于某一坐标轴的三角形,本文算法不需要这些三角形便可以完成模型的重建,即对stl文件的要求不是十分严格。
[0027]
二、能够处理部分不规范网格文件。
[0028]
正常情况下,网格文件只包含物体表面的三角形,但是部分模型网格文件存在物体内部三角形,此时,内部三角形的属于多余的,并会导致直接法无法正常判断网格类型,因为直接法有一个重要的假定就是网格三角形是模型内部和外部的分界点。而本文算法能够较好的解决这类问题。
[0029]
三、能够快速处理标准模型的重建。
[0030]
该算法是根据物体的面网格来确定物体的边界格点,然后根据边界格点重建物体的模型。所以算法的运行时间只与物体stl文件中三角形个数有关,在相同数量的面网格三角形下,运行时间基本不受物体几何复杂度影响。
附图说明
[0031]
图1为本发明一种基于stl文件的lbm前处理高效算法的流程图。
具体实施方式
[0032]
以下结合附图对本发明的优选实施例进一步详细说明。
[0033]
本实验使用“神威
·
太湖之光”计算机集群系统进行实验,以“申威26010”异构众核处理器为核心,访存带宽136.51gb/s,主存容量32gb,网络接口双向带宽16gb/s,采用sw5cc进行编译程序。
[0034]
本实验选用chn-t1标模属于复杂的模型,它结构复杂、不同的部位的三角形有不同大小、网格量巨大,算法流程如图1所示。
[0035]
步骤一,该算法在chn-t1标模的stl面网格的基础上,通过找出所有三角形的边界点来完成整个模型的重建。首先,根据面网格中的三角形生成对应的包围盒。包围盒包含了三角形对应的所有边界格点,这能够极大的降低三角形找到其边界格点的计算量。
[0036]
步骤二,遍历位于包围盒内部的格点。因为三角形的边界格点位于物体的外部,而且三角形的边界格点投影在三角形的内部。通过计算找出满足以上两个条件的格点。
[0037]
步骤三,计算上一步筛选出的格点距离三角形最近的格点,满足这个条件的格点在后续的过程中带来最小的误差。通过这几步便可得到模型的所有格点,完成对模型的重构。这对于格子boltzmann方法后续的数值模拟计算提供了很好的基础。
[0038]
所述步骤一中,为了缩小计算量,只计算由三角形生成包围盒内部的点。
[0039]
所述步骤二包括:
[0040]
步骤十一,为了进一步减少计算量,继续排除不满足条件的格点,这里采取了下面的处理方法:
[0041]

去除三角形对应在该标模内部的格点
[0042]
这里判断的方法是以靠近该标模内部的格点为终点、以三角形顶点为起点构成的向量与三角形的法向量方向相反。
[0043]

去除不是该三角形对应的点
[0044]
同时将格点和三角形沿着某一坐标轴投影,如果格点的投影不在三角形的投影内部,那么这个格点不是三角形对应的格点;
[0045]
步骤十二,在上一步筛选剩下的格点中,对于某个坐标轴选取一批距离三角形最近的格点。
[0046]
步骤十四,对于每个三角形重复前面两步得到该标模所有的边界点。
[0047]
步骤十五,进一步生成边界点对,边界点对是两个边界点构成的点对,且这两个点所确定的直线平行于坐标轴。边界点对中间的格点是该标模内部点。
[0048]
步骤十六,根据边界点对可以确定所有的内部点,即可以完成对该标模的重建。
[0049]
采用本算法面网格读入时间为12.2s,文件输出为3s,文件判断时间为4.5s/核,相比于传统的直接法在采用120核计算所需判断时间为40056s,本算法在对chn-t1模型的重建过程仍然取得2033.3倍的加速比。实验结果表明了本文算法计算速度上的高效性。本发明提出的快速生成流体计算模型算法能够高效率、高准确性的完成模型的复原,很好的推动了后续流体计算。
[0050]
本文结合说明书附图和具体实施例进行阐述只是用于帮助理解本发明的方法和核心思想。本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员依据本发明的方法和思想得出的其它实施方式,同样属于本发明的技术创新范围。本说明书内容不应理解为对本发明的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1