基于改进邻域搜索算法的矿井水灾模拟研究
发布时间:2020-07-10 00:39
【摘要】:矿井水灾是煤矿地质灾害的重要方面,它严重影响着煤矿的安全生产,并对工作人员的生命安全造成威胁。随着计算机软硬件的发展以及GPU技术的兴起,计算机图形学得到了快速发展。随着3D模拟的广泛应用,自然景物模拟也已经成为图形学领域的研究热点之一,如对烟、河流、云雾等流体的模拟已经成为了具有挑战性的研究课题。本文是基于SPH方法的流体模拟,将模拟区域化为一系列携带某一特定材料属性的粒子,利用每个粒子的运动确定整体的运动形态,所有粒子的运动都可以通过其支持域内的全部粒子的运动属性加权得到,并且在每个时间步(整个模拟时间可划分为若干个时间步)内需要对每个粒子的邻近粒子进行搜索,从而确定粒子在当前时间及下一个时间步的运动属性。因此,在整个模拟过程中,邻近粒子搜索算法对系统的运行效率起着决定性作用。本文从缩小邻域搜索范围的角度对邻近粒子搜索算法进行优化,以达到更快、更准的搜索到邻近粒子的目的。首先介绍了直接邻域搜索算法,链表搜索算法,树形搜索算法的基本原理,然后对邻域搜索算法提出了改进。改进后的搜索算法通过确定粒子周围区域来缩小搜索范围。因为粒子的运动只受邻域粒子的影响,所以我们对上一时间步的信息进行存储,根据上一步的信息确定本时间步的搜索范围,从而获得邻域粒子。然后基于N-S方程,使用SPH方法建立矿井水灾模型,并对模型数据进行解算。最后使用Unity3D虚幻引擎进行仿真实验。在外部TXT文件中设置粒子的初始信息,包括粒子的初始位置、数量、颜色、材质等,利用Unity3D的外部数据读取接口,读取粒子信息,创建水滴粒子并进行初始化。建立Obi Emmiter脚本并提供邻域粒子搜索算法的封装接口 Fluid Phase,对Fluid Phase进行赋值,选择不同的邻域粒子搜索算法进行仿真实验,使用SPH方法进行解算,将解算结果进行存储,并对粒子属性进行赋值,最后使用时间步积分,更新粒子每个时刻的状态,从而实现整体的水灾蔓延效果。最后对使用不同邻域搜索算法的仿真实验数据进行分析,得出改进搜索算法可以提高系统的运行效率。
【学位授予单位】:山东科技大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP301.6;TD745
【图文】:
逦m^逡逑图2.1直接搜索算法思路图逡逑Fig2.1邋Direct邋search邋algorithm逡逑直接搜索算法的数据结构和基本原理很容易理解,在内存中的操作流程如图逡逑2.2所示:逡逑粒子逦粒子逦粒子邋逦邋粒子N逡逑索粒子逦粒子逦粒子邋逦邋粒子N逡逑图2.2直接搜索算法遍历思想逡逑Fig2.2邋Principle邋of邋direct邋search邋algorithm逡逑2.1.2直接搜索算法分析逡逑直接搜索算法的本质是对支持域内的所有粒子进行遍历,在遍历的过程中获逡逑取粒子的属性信息。分析上图可知,当搜索粒子1的邻近粒子时,需要遍历除了逡逑粒子1以外的所有粒子,然后计算这些粒子到粒子1的距离,并与粒子1的支持逡逑域半径的大小比较,将距离小于粒子1支持域半径的粒子筛选出来。使用这种方逡逑法可以求出支持域内每个粒子的邻近粒子。这种方法可以将支持域内的粒子全部逡逑搜索到,但是每一步都需要进行重复搜索,假设支持域内有M个粒子,那么就逡逑需要遍历M(M邋-邋1)次才能将这些粒子的邻域粒子全部获取到,由此可以得到时逡逑间复杂度为0(m2)
逦邋粒子N逡逑图2.2直接搜索算法遍历思想逡逑Fig2.2邋Principle邋of邋direct邋search邋algorithm逡逑2.1.2直接搜索算法分析逡逑直接搜索算法的本质是对支持域内的所有粒子进行遍历,在遍历的过程中获逡逑取粒子的属性信息。分析上图可知,当搜索粒子1的邻近粒子时,需要遍历除了逡逑粒子1以外的所有粒子,然后计算这些粒子到粒子1的距离,并与粒子1的支持逡逑域半径的大小比较,将距离小于粒子1支持域半径的粒子筛选出来。使用这种方逡逑法可以求出支持域内每个粒子的邻近粒子。这种方法可以将支持域内的粒子全部逡逑搜索到,但是每一步都需要进行重复搜索,假设支持域内有M个粒子,那么就逡逑需要遍历M(M邋-邋1)次才能将这些粒子的邻域粒子全部获取到,由此可以得到时逡逑间复杂度为0(m2),如果粒子数量过多,那么时间耗费就更大,效率较低,因逡逑此这种方法只适合粒子数量较少的情况。逡逑2.2链表搜索算法逡逑链表搜索算法的基本原理是在支持域内建立一个静态的网格
只需要对粒子周围的27个网格进行搜索,链表搜索算法与直接搜索算法相逡逑比,明显可以缩短搜索时间,但是它的准确性不如直接搜索算法[42],其基本思想逡逑如图2.3所示:逡逑Q邋?逦|逦0邋!邋0逡逑?邋t邋0邋1邋mrm逡逑逦|__%肌慑危慑危慑五义希垮澹殄
本文编号:2748214
【学位授予单位】:山东科技大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP301.6;TD745
【图文】:
逦m^逡逑图2.1直接搜索算法思路图逡逑Fig2.1邋Direct邋search邋algorithm逡逑直接搜索算法的数据结构和基本原理很容易理解,在内存中的操作流程如图逡逑2.2所示:逡逑粒子逦粒子逦粒子邋逦邋粒子N逡逑索粒子逦粒子逦粒子邋逦邋粒子N逡逑图2.2直接搜索算法遍历思想逡逑Fig2.2邋Principle邋of邋direct邋search邋algorithm逡逑2.1.2直接搜索算法分析逡逑直接搜索算法的本质是对支持域内的所有粒子进行遍历,在遍历的过程中获逡逑取粒子的属性信息。分析上图可知,当搜索粒子1的邻近粒子时,需要遍历除了逡逑粒子1以外的所有粒子,然后计算这些粒子到粒子1的距离,并与粒子1的支持逡逑域半径的大小比较,将距离小于粒子1支持域半径的粒子筛选出来。使用这种方逡逑法可以求出支持域内每个粒子的邻近粒子。这种方法可以将支持域内的粒子全部逡逑搜索到,但是每一步都需要进行重复搜索,假设支持域内有M个粒子,那么就逡逑需要遍历M(M邋-邋1)次才能将这些粒子的邻域粒子全部获取到,由此可以得到时逡逑间复杂度为0(m2)
逦邋粒子N逡逑图2.2直接搜索算法遍历思想逡逑Fig2.2邋Principle邋of邋direct邋search邋algorithm逡逑2.1.2直接搜索算法分析逡逑直接搜索算法的本质是对支持域内的所有粒子进行遍历,在遍历的过程中获逡逑取粒子的属性信息。分析上图可知,当搜索粒子1的邻近粒子时,需要遍历除了逡逑粒子1以外的所有粒子,然后计算这些粒子到粒子1的距离,并与粒子1的支持逡逑域半径的大小比较,将距离小于粒子1支持域半径的粒子筛选出来。使用这种方逡逑法可以求出支持域内每个粒子的邻近粒子。这种方法可以将支持域内的粒子全部逡逑搜索到,但是每一步都需要进行重复搜索,假设支持域内有M个粒子,那么就逡逑需要遍历M(M邋-邋1)次才能将这些粒子的邻域粒子全部获取到,由此可以得到时逡逑间复杂度为0(m2),如果粒子数量过多,那么时间耗费就更大,效率较低,因逡逑此这种方法只适合粒子数量较少的情况。逡逑2.2链表搜索算法逡逑链表搜索算法的基本原理是在支持域内建立一个静态的网格
只需要对粒子周围的27个网格进行搜索,链表搜索算法与直接搜索算法相逡逑比,明显可以缩短搜索时间,但是它的准确性不如直接搜索算法[42],其基本思想逡逑如图2.3所示:逡逑Q邋?逦|逦0邋!邋0逡逑?邋t邋0邋1邋mrm逡逑逦|__%肌慑危慑危慑五义希垮澹殄
本文编号:2748214
本文链接:https://www.wllwen.com/kejilunwen/sousuoyinqinglunwen/2748214.html