CN105787998B - 一种离散元仿真中多球颗粒的两层网格搜索接触检测方法 - Google Patents
一种离散元仿真中多球颗粒的两层网格搜索接触检测方法 Download PDFInfo
- Publication number
- CN105787998B CN105787998B CN201610105766.5A CN201610105766A CN105787998B CN 105787998 B CN105787998 B CN 105787998B CN 201610105766 A CN201610105766 A CN 201610105766A CN 105787998 B CN105787998 B CN 105787998B
- Authority
- CN
- China
- Prior art keywords
- ball
- particle
- grid
- unit
- envelope
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/16—Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
Landscapes
- Physics & Mathematics (AREA)
- Geometry (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Length Measuring Devices With Unspecified Measuring Means (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,包括以下步骤:全局空间被划分为尺寸均为D的方形或立方体网格,然后进行第一层网格搜索,如果目标颗粒的包络球与某个候选颗粒的包络球相交,则第一层网格搜索完成,反之则进行目标颗粒的包络球与其余候选颗粒的包络球之间的相交检测;相交时,一个尺寸为(D+d)的方形或立方体局部空间被划分为尺寸均为d的方形或立方体网格,并供第二层网格搜索所用,检测目标颗粒的单元球与候选颗粒的单元球之间的接触。本发明在实现接触检测的内存消耗大幅降低的同时,维持接触检测的时间消耗不增加,为多球颗粒离散元仿真在工业领域的大规模应用提供了有效的技术手段。
Description
技术领域
本发明涉及基于离散元法的非球形颗粒介质动力学仿真领域,尤其是涉及一种离散元仿真中多球颗粒的两层网格搜索接触检测方法。
背景技术
由于几何形状简单,球形颗粒被广泛地应用于三维离散元仿真之中。然而,真实的颗粒形状难以由简单的球体来有效地表达。因此,非球形颗粒的形状表达已在相关专利和文献资料中进行了广泛的讨论。非球形颗粒的形状表达方法基本上可以分为两类:单颗粒方法和多球颗粒方法。
在单颗粒方法中,一个非球形颗粒是由一个椭圆、椭球或超二次曲面等复杂几何形状的单颗粒来近似表达。二维椭圆颗粒和三维椭球颗粒的几何形状可由数学方程来描述,二维椭圆颗粒间或三维椭球颗粒间的接触检测通常需要通过迭代求解多项式方程的根来实现。超二次曲面颗粒的几何形状也可由数学方程来描述,在三维方面,超二次曲面颗粒是椭球颗粒的一种延伸,而在二维方面,超二次曲线颗粒是椭圆颗粒的一种扩展;超二次曲面颗粒为三维或二维颗粒凸凹面的形状表达提供了丰富的手段;与椭圆和椭球颗粒相类似,超二次曲面颗粒间的接触检测需要通过迭代求解非线性方程组的根来实现。椭圆、椭球或超二次曲面等复杂几何形状的颗粒间的接触检测在大规模的离散元仿真中会消耗大量的内存和计算时间。
在多球颗粒方法中,一个非球形颗粒可以通过若干个形状简单的单元球组合而成的多球颗粒来近似表达,这些单元球可以相互重叠,并且它们的尺寸可以被改变。一般而言,一个多球颗粒由若干个具有较小尺寸的单元球组成。在一些多球颗粒的离散元仿真中,一个复杂的颗粒形状甚至需要由成百上千个单元球来表达。在这种情况下,多球颗粒尺寸是单元球尺寸的若干倍。近年来,多球颗粒已经被用于描述各类颗粒形状,包括椭圆形颗粒、胶囊形颗粒、玉米状颗粒、谷物状颗粒、药片状颗粒等。由于发生在多球颗粒间的接触实际上是单元球间的接触,因此多球颗粒间的接触检测可以使用球形颗粒间的接触检测方法来处理。
接触检测的内存消耗和时间消耗是衡量一种接触检测方法有效性的两个重要指标。在接触检测中,网格搜索方法是一种用于球形颗粒邻居搜索的有效方法,它被用于搜索一个目标颗粒周围一定区域内的候选颗粒。在网格搜索方法中,全局空间被划分为尺寸均为d的方形或立方体网格,其中d是最大球形颗粒的直径。相比于搜索整个全局空间,在这种方法中,每个目标颗粒只需要搜索位于它周围的9个(二维)或27个(三维)邻居网格中的邻居颗粒,因此球形颗粒间的接触检测的时间消耗为O[M2/(L/d)2](二维)或O[M2/(L/d)3](三维),其中M是球形颗粒的总数量,L是全局空间的尺寸。
在涉及多球颗粒的离散元仿真中,上述网格搜索方法经常被直接用于多球颗粒的接触检测之中。全局空间可以被划分为尺寸均为d的网格,其中d是最大单元球的直径;多球颗粒中的单元球是该方法在全局空间中的搜索对象;如果候选单元球位于一个目标单元球周围的9个(二维)或27个(三维)邻居网格中,这个目标单元球就需要与那些候选单元球进行接触检测。在该方法中,接触检测的内存消耗为O[(L/d)2+M·ns](二维)或O[(L/d)3+M·ns](三维);接触检测的时间消耗为(二维)或(三维),其中M是多球颗粒的总数量,ns是单个多球颗粒中单元球的数量。
接触检测是多球颗粒离散元仿真的一个关键步骤。当网格搜索被直接实施在每个多球颗粒的每个单元球上时,多球颗粒间的接触检测的内存消耗和时间消耗都远大于同等数量理想球形颗粒间的接触检测的内存消耗和时间消耗。然而,目前已发表的专利或者文献资料中很少详细地讨论关于提高多球颗粒的接触检测效率的方法。
发明内容
本发明主要是解决现有技术所存在的问题,提供了一种通过对全局空间进行网格尺寸为D的网格划分,并对多球颗粒的包络球进行第一层网格搜索,然后对局部空间进行网格尺寸为d的网格划分,并对包络球相交的每对多球颗粒的单元球进行第二层网格搜索,避免了在全局空间中对每个多球颗粒的每个单元球进行接触检测,从而在实现接触检测的内存消耗大幅降低的同时,维持接触检测的时间消耗不增加,为多球颗粒离散元仿真在工业领域中的大规模应用提供了有效的技术手段。
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,其特征在于该方法包括以下步骤:
步骤1,每个多球颗粒各自由一个包络球来表示;全局空间被划分为尺寸均为D的方形或立方体网格,并供第一层网格搜索所用,其中D是最大包络球的直径;每个包络球被投影至全局空间的网格中;
步骤2,在第一层网格搜索中,通过网格搜索来查找目标颗粒的包络球i周围的所有邻居包络球MM(i),这些邻居包络球中的候选颗粒被挑选出来;如果目标颗粒的包络球i与某个候选颗粒的包络球j相交,则该候选颗粒的第一层网格搜索完成,进入步骤3;反之则进行目标颗粒的包络球i与其余候选颗粒的包络球之间的相交检测;
步骤3,当目标颗粒的包络球i与候选颗粒的包络球j相交时,一个尺寸为(D+d)的方形或立方体局部空间被划分为尺寸均为d的方形或立方体网格,并供第二层网格搜索所用,其中d是最大单元球的直径;目标颗粒i与候选颗粒j的单元球被投影至局部空间的网格中;
步骤4,在第二层网格搜索中,通过网格搜索来查找目标单元球u周围的所有邻居单元球nn(u),这些邻居单元球为目标单元球u的候选单元球;如果目标单元球u与某个邻居单元球v接触,则计算多球颗粒的接触力;反之则进行目标单元球u与其余候选单元球之间的接触检测;
步骤5,重复步骤4直至遍历目标单元球u周围的所有候选单元球nn(u)和所有目标单元球ns;
步骤6,重复步骤2到步骤5直至遍历目标颗粒包络球i周围的所有候选包络球MM(i)和所有目标包络球M。
在上述的一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,所述多球颗粒由单元球组成,用于表达和模拟各种非球形颗粒的几何形状,其中单元球基于以下定义:
所述单元球是组成多球颗粒的最小单元,单元球可以相互重叠,并且它们的尺寸可以被改变;组成多球颗粒的单元球的数量、尺寸及其组合形式,决定了所表达的多球颗粒的几何形状精度。
在上述的一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,所述的步骤1中,所述每个多球颗粒各自由一个包络球来表示,多球颗粒i的包络球的几何中心Pi的全局坐标和采用如下公式计算:
其中和是多球颗粒i的单元球
u的球心的全局坐标,是单元球u的体积,ns是多球颗粒i中单元球的数量;多球颗粒i
的包络球的半径Ri采用如下公式计算:
其中是多球颗粒i的包络球与单元球u之间的中心距,是单元球u的半径;
所述全局空间代表了多球颗粒的运动或静止区域,所有的多球颗粒在仿真中都位于这个空间之中,全局空间的边界由和来定义;
所述全局空间被划分为尺寸均为D的方形或立方体网格,其中网格在x、y和z方向上的数量分别为和它们采用如下公式计算:
其中
ψ=[1 1 1]T;
所述包络球被投影至全局空间的网格中,多球颗粒i的包络球可以获得x、y和z方向上的网格号码它们采用如下公式计算:
其中多球颗粒的包络球的网格号码被存储在两个数组QG和PG
中,其中QG是一个用于存储三维网格的、大小为的三维数组,或者是一个用于存
储二维网格的、大小为的二维数组;PG是一个用于存储三维或二维包络球编号的、大
小为M的一维数组,其中M是多球颗粒的数量;数组QG和PG的总大小为(L/D)2+M(二维)或(L/
D)3+M(三维),因此第一层网格搜索的内存消耗SP为:
在上述的一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,所述的步骤2中,所述候选颗粒可以通过网格搜索来查找目标颗粒i的包络球周围的所有邻居包络球,并将这些邻居包络球挑选出来,其中邻居包络球位于目标颗粒i的包络球所在的网格以及此网格周围的8个(二维)或26个(三维)相邻网格之中;
所述判断目标颗粒i的包络球与候选颗粒j的包络球相交的公式如下:
|PiPj|≤(Ri+Rj)
其中|PiPj|是多球颗粒i的包络球和多球颗粒j的包络球之间的中心距,Rj是多球颗粒j的包络球的半径;在全局空间中,每个网格中包络球的平均个数为nCB=M/(L/D)2(二维)或nCB=M/(L/D)3(三维);由于每个包络球需要与O(M/(L/D)2)(二维)或O(M/(L/D)3)(三维)个邻居包络球进行接触检测,因此包络球间的接触检测的时间消耗为:
在上述的一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,所述的步骤3中,所述局部空间被用于目标多球颗粒的单元球与候选多球颗粒的相应单元球之间的网格搜索,局部空间的尺寸为(D+d),多球颗粒i的局部空间的边界坐标和采用如下公式计算:
其中
所述多球颗粒i的局部空间被划分为尺寸均为d的网格,其中网格在x、y和z方向上的数量分别为和它们采用如下公式计算:
其中
所述目标多球颗粒与候选多球颗粒的单元球被投影至局部空间的网格中,判断目标多球颗粒i的单元球u位于目标多球颗粒i与候选多球颗粒j两者的局部空间的重叠区域公式如下:
其中和为多球颗粒j的局部空间的边界坐标;如果多球颗粒i的单元球u位于上述重叠区域内,单元球u被投影至多球颗粒i的局部空间的网格中,单元球u在多球颗粒i的局部空间中x、y和z方向上的网格号码分别为它们采用如下公式计算:
其中
判断候选多球颗粒j的单元球v位于上述重叠区域的公式如下:
其中和是多球颗粒j的单元球v球心的全局坐标;如果多球颗粒j的单元球v位于上述重叠区域内,单元球v被投影至多球颗粒i的局部空间的网格中,单元球v在多球颗粒i的局部空间中x、y和z方向上的网格号码分别为它们采用如下公式计算:
其中
单元球的网格号码被存储在两个数组QL和PL中,其中QL是一个用于存储三维网格的、大小为的三维数组,或者是一个用于存储二维网格的、大小为的二维数组,PL是一个用于存储三维或二维单元球编号的、大小为ns的一维数组,这两个数组可以在两个多球颗粒的单元球间的网格搜索中被重复使用;数组QL和PL的总大小为((D+d)/d)2+ns(二维)或((D+d)/d)3+ns(三维),因此第二层网格搜索的内存消耗SL为:
在上述的一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,所述的步骤4中,所述候选单元球v可以通过网格搜索来查找目标单元球u周围的邻居单元球,并将这些邻居单元球挑选出来,其中邻居单元球位于目标单元球u所在的网格以及此网格周围的8个(二维)或26个(三维)相邻网格之中,然后进行目标单元球u与候选单元球v之间的接触检测,判断单元球u与单元球v接触的公式如下:
其中为单元球u与单元球v的球心距,和分别为单元球u和单元球v的半径;
在二维情况下,多球颗粒i的单元球在每个网格中的平均数量在多球颗粒i与多球颗粒j两者的局部空间的重叠区域中,多球颗粒i的单元球的数量为其中和Lη分别是两个局部空间的重叠区域在和η方向上的尺寸,它们可以表达为:
其中|PiPj|在d到D之间变化;多球颗粒i中的每个单元球需要与多球颗粒j中的个邻居单元球进行接触检测,其中因此在二维情况下,多球颗粒i的单元球与多球颗粒j的单元球之间的接触检测的时间消耗为:
以此类推,在三维情况下,多球颗粒i的单元球与多球颗粒j的单元球之间的接触检测的时间消耗为:
总体来看,在离散元仿真的每一次计算循环中,都要运用如上所述的接触检测步骤进行多球颗粒与多球颗粒之间的接触检测,最终识别出所有的有效接触信息,供离散元程序计算多球颗粒当前的接触力。
因此,本发明的有益效果是通过对全局空间进行网格尺寸为D的网格划分,并对多球颗粒的包络球进行第一层网格搜索,然后对局部空间进行网格尺寸为d的网格划分,并对包络球相交的每对多球颗粒的单元球进行第二层网格搜索,避免了在全局空间中对每个多球颗粒的每个单元球进行接触检测,从而在实现接触检测的内存消耗大幅降低的同时,维持接触检测的时间消耗不增加,为多球颗粒离散元仿真在工业领域的大规模应用提供了有效的技术手段。
附图说明
图1是本发明的方法流程示意图。
图2是多球颗粒的包络球示意图。
图3是全局空间的二维示意图。
图4是全局空间的二维网格划分示意图。
图5是多球颗粒的包络球的邻居网格搜索示意图。
图6是目标包络球与候选包络球之间的相交检测示意图。
图7是多球颗粒i的局部空间的二维图。
图8是多球颗粒i的局部空间的二维网格划分示意图。
图9是多球颗粒i的局部空间与多球颗粒j的局部空间两者的重叠区域示意图。
图10是多球颗粒的单元球的邻居网格搜索示意图。
图11是目标单元球与候选单元球之间的接触检测示意图。
图12是目标多球颗粒的包络球与候选多球颗粒的包络球的相交情况示意图。
图13a是矩形漏斗与胶囊形多球颗粒的尺寸图。
图13b是矩形漏斗中胶囊形多球颗粒卸落过程的模拟图。
图13c是不同多球颗粒数量下接触检测的内存消耗示意图。
图13d是不同多球颗粒数量下接触检测的时间消耗示意图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体说明,所举实例只用于解释本发明,并非用于限定本发明的范围。为了表达的清晰,附图以二维形式来显示,方程以三维形式来表达。
一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,方案实现流程如图1所示,具体实施例为:
步骤1:首先为每个多球颗粒配置一个相应的包络球,如图2所示,多球颗粒i的包络球的几何中心Pi的全局坐标和采用如下公式计算:
其中和是多球颗粒i的单元
球u的球心的全局坐标,是单元球u的体积,ns是多球颗粒i中单元球的数量;多球颗粒
i的包络球的半径Ri采用如下公式计算:
其中是多球颗粒i的包络球与单元球u之间的中心距,是单元球u的半径。
全局空间代表了多球颗粒的运动或静止区域,所有的多球颗粒在仿真中都位于这个空间之中,如图3所示,全局空间的边界由 和来定义。
全局空间被划分为尺寸均为D的方形或立方体网格,其中D是最大包络球的直径,如图4所示,网格在x、y和z方向上的数量分别为和它们采用如下公式计算:
其中
ψ=[1 1 1]T。
包络球被投影至全局空间的网格中,如图5所示,多球颗粒i的包络球可以获得x、y和z方向上的网格号码它们采用如下公式计算:
其中多球颗粒的包络球的网格号码被存储在两个数组QG和PG
中,其中QG是一个用于存储三维网格的、大小为的三维数组,或者是一个用于存
储二维网格的、大小为的二维数组;PG是一个用于存储三维或二维包络球编号的、
大小为M的一维数组,其中M是多球颗粒的数量;数组QG和PG的总大小为(L/D)2+M(二维)或
(L/D)3+M(三维),因此第一层网格搜索的内存消耗SP为:
步骤2:在第一层网格搜索中,候选颗粒可以通过网格搜索来查找目标颗粒i的包络球周围的所有邻居包络球,并将这些邻居包络球挑选出来,其中邻居包络球位于目标颗粒i的包络球所在的网格以及此网格周围的8个(二维)或26个(三维)相邻网格之中。如图5所示,多球颗粒4、8、9、10、11和14的包络球的几何中心位于目标多球颗粒1的包络球周围的8个邻居网格之中,这些邻居多球颗粒有一定的概率与目标多球颗粒1发生接触,因此这些多球颗粒是目标多球颗粒1的候选多球颗粒。
如图6所示,判断目标颗粒i的包络球与候选颗粒j的包络球相交的公式如下:
|PiPj|≤(Ri+Rj)
其中|PiPj|是多球颗粒i的包络球和多球颗粒j的包络球之间的中心距,Rj是多球颗粒j的包络球的半径;在全局空间中,每个网格中包络球的平均个数为nCB=M/(L/D)2(二维)或nCB=M/(L/D)3(三维);由于每个包络球需要与O(M/(L/D)2)(二维)或O(M/(L/D)3)(三维)个邻居包络球进行接触检测,因此包络球间的接触检测的时间消耗为:
如果目标颗粒的包络球i与某个候选颗粒的包络球j相交,则该候选颗粒的第一层网格搜索完成,进入步骤3;反之则进行目标颗粒的包络球i与其余候选颗粒的包络球之间的相交检测。
步骤3:目标多球颗粒的局部空间被用于目标多球颗粒的单元球与候选多球颗粒的相应单元球间的网格搜索,如图7所示,目标多球颗粒i的局部空间的尺寸为(D+d),多球颗粒i的局部空间的边界坐标 和采用如下公式计算:
其中
多球颗粒i的局部空间被划分为尺寸均为d的网格,如图8所示,其中网格在x、y和z方向上的数量分别为和它们采用如下公式计算:
其中
判断目标多球颗粒i和候选多球颗粒j的单元球是否位于多球颗粒i与多球颗粒j两者的局部空间的重叠区域之中。如图9所示,判断目标多球颗粒i的单元球u位于上述重叠区域的公式如下:
其中和为多球颗粒j的局部空间的边界坐标;如果多球颗粒i的单元球u位于上述重叠区域内,单元球u被投影至多球颗粒i的局部空间的网格中,单元球u在多球颗粒i的局部空间中x、y和z方向上的网格号码分别为它们采用如下公式计算:
其中
如图9所示,判断候选多球颗粒j的单元球v位于上述重叠区域的公式如下:
其中和是多球颗粒j的单元球v球心的全局坐标;如果多球颗粒j的单元球v位于上述重叠区域内,单元球v被投影至多球颗粒i的局部空间的网格中,单元球v在多球颗粒i的局部空间中x、y和z方向上的网格号码分别为它们采用如下公式计算:
其中
单元球的网格号码被存储在两个数组QL和PL中,其中QL是一个用于存储三维网格的、大小为的三维数组,或者是一个用于存储二维网格的、大小为的二维数组,PL是一个用于存储三维或二维单元球编号的、大小为ns的一维数组,这两个数组可以在两个多球颗粒的单元球间的网格搜索中被重复使用;数组QL和PL的总大小为((D+d)/d)2+ns(二维)或((D+d)/d)3+ns(三维),因此第二层网格搜索的内存消耗SL为:
步骤4:候选单元球v可以通过网格搜索来查找目标单元球u周围的邻居单元球,并将这些邻居单元球挑选出来,其中邻居单元球位于目标单元球u所在的网格以及此网格周围的8个(二维)或26个(三维)相邻网格之中,如图10所示,单元球和的球心位于目标单元球周围的8个邻居网格中,这两个单元球有一定的概率与目标单元球发生接触。
目标单元球u与候选单元球v之间的接触需要被检测,如图11所示,判断单元球u与单元球v接触的公式如下:
其中为单元球u与单元球v的球心距,和分别为单元球u和单元球v的半径。
在二维情况下,多球颗粒i的单元球在每个网格中的平均数量如图12所示,在多球颗粒i与多球颗粒j两者的局部空间的重叠区域中,多球颗粒i的单元球的数量为其中和Lη分别是两个局部空间的重叠区域在和η方向上的尺寸,它们可以表达为:
其中|PiPj|在d到D之间变化;多球颗粒i中的每个单元球需要与多球颗粒j中的个邻居单元球进行接触检测,其中因此在二维情况下,多球颗粒i的单元球与多球颗粒j的单元球之间的接触检测的时间消耗为:
以此类推,在三维情况下,多球颗粒i的单元球与多球颗粒j的单元球之间的接触检测的时间消耗为:
如果目标单元球u与某个邻居单元球v接触,则计算多球颗粒的接触力;反之则进行目标单元球u与其余候选单元球之间的接触检测。
步骤5,重复步骤4直至遍历目标单元球u周围的所有候选单元球nn(u)和所有目标单元球ns。
步骤6,重复步骤2到步骤5直至遍历目标颗粒包络球i周围的所有候选包络球MM(i)和所有目标包络球M。
在离散元仿真的每一次计算循环中,都要运用如上所述的接触检测步骤进行多球颗粒与多球颗粒之间的接触检测,最终识别出所有的有效接触信息,供离散元程序计算多球颗粒的接触力。
为了验证本发明提出的两层网格搜索接触检测方法,上述的接触检测方法被嵌入到离散元仿真程序中,并以矩形漏斗中胶囊形多球颗粒卸落过程的算例来具体说明。使用的计算机处理器为Intel Core i5-3470 CPU,主频为3.20GHz,RAM为4GB,编程工具为Visual Studio 2010。矩形漏斗和胶囊形多球颗粒的尺寸如图13a所示。仿真条件为多球颗粒的数量M;胶囊形多球颗粒的长宽比为3:1,单个多球颗粒中单元球的数量为12,M分别为500、1000、1500、2000、2500和3000。
下面为采用本发明的两层网格搜索接触检测方法以及采用网格搜索被直接实施于全局空间中每个多球颗粒的每个单元球上的全局单层网格搜索接触检测方法,分别对多球颗粒间的单元球接触进行检测;并比较上述两种方法在接触检测中的内存消耗与时间消耗。图13b给出了四张矩形漏斗中胶囊形多球颗粒卸落过程的截图。
结果分析:
当多球颗粒的数量M在500到3000之间变化时,两层网格搜索方法与全局单层网格搜索方法的内存消耗由图13c给出。从图13c中可以看出,对于不同的M,全局单层网格搜索方法比两层网格搜索方法消耗了更多的内存;两层网格搜索方法与全局单层网格搜索方法的内存消耗分别随颗粒数量的增加而增加;M对全局单层网格搜索方法的内存消耗变化的影响要比M对两层网格搜索方法的内存消耗变化的影响更加明显。
图13d给出了两层网格搜索方法与全局单层网格搜索方法的时间消耗。从图13d中可以看出,对于不同的M,两层网格搜索方法的时间消耗要小于全局单层网格搜索方法的时间消耗;两层网格搜索方法与全局单层网格搜索方法的时间消耗分别随M的增加而增加。因此,与全局单层网格搜索方法相比,两层网格搜索接触检测方法在实现接触检测的内存消耗大幅降低的同时,维持了接触检测的时间消耗不增加且有所降低,从而有效地提高了多球颗粒间的接触检测的计算效率。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (3)
1.一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,其特征在于,基于以下定义:
多球颗粒由单元球组成,用于表达和模拟各种非球形颗粒的几何形状,其中,单元球是组成多球颗粒的最小单元,单元球相互重叠,并且它们的尺寸被改变;组成多球颗粒的单元球的数量、尺寸及其组合形式,决定了所表达的多球颗粒的几何形状精度;
具体包括以下步骤:
步骤1,每个多球颗粒各自由一个包络球来表示;多球颗粒i的包络球的几何中心Pi的全局坐标xi G、yi G和zi G采用如下公式计算:
其中和是多球颗粒i的单元球u的球心的全局坐标,是单元球u的体积,ns是多球颗粒i中单元球的数量;多球颗粒i的包络球的半径Ri采用如下公式计算:
其中是多球颗粒i的包络球与单元球u之间的中心距,是单元球u的半径;
全局空间被划分为尺寸均为D的方形或立方体网格,并供第一层网格搜索所用,其中D是最大包络球的直径;每个包络球被投影至全局空间的网格中;
步骤2,在第一层网格搜索中,通过网格搜索来查找目标颗粒的包络球i周围的所有邻居包络球MM(i),这些邻居包络球中的候选颗粒被挑选出来;如果目标颗粒的包络球i与某个候选颗粒的包络球j相交,则该候选颗粒的第一层网格搜索完成,进入步骤3;反之,则进行目标颗粒的包络球i与其余候选颗粒的包络球之间的相交检测;
步骤3,当目标颗粒的包络球i与候选颗粒的包络球j相交时,一个尺寸为D+d的方形或立方体局部空间被划分为尺寸均为d的方形或立方体网格,并供第二层网格搜索所用,其中d是最大单元球的直径;目标颗粒i与候选颗粒j的单元球被投影至局部空间的网格中;
步骤4,在第二层网格搜索中,通过网格搜索来查找目标单元球u周围的所有邻居单元球nn(u),这些邻居单元球为目标单元球u的候选单元球;如果目标单元球u与某个邻居单元球v接触,则计算多球颗粒的接触力;反之则进行目标单元球u与其余候选单元球之间的接触检测;
步骤5,重复步骤4直至遍历目标单元球u周围的所有候选单元球nn(u)和所有ns个目标单元球;
步骤6,重复步骤2到步骤5直至遍历目标颗粒包络球i周围的所有候选包络球MM(i)和所有M个目标包络球。
2.根据权利要求1所述的一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,其特征在于,所述的步骤1中,所述全局空间代表了多球颗粒的运动或静止区域,所有的多球颗粒在仿真中都位于这个空间之中,全局空间的边界由和来定义;
所述全局空间被划分为尺寸均为D的方形或立方体网格,其中网格在x、y和z方向上的数量分别为nx G、ny G和nz G,它们采用如下公式计算:
其中ψ=[11 1]T;
所述包络球被投影至全局空间的网格中,多球颗粒i的包络球获得x、y和z方向上的网格号码它们采用如下公式计算:
其中多球颗粒的包络球的网格号码被存储在两个数组QG和PG中,其中QG是一个用于存储三维网格的、大小为nx G×ny G×nz G的三维数组,或者是一个用于存储二维网格的、大小为nx G×ny G的二维数组;PG是一个用于存储三维或二维包络球编号的、大小为M的一维数组,其中M是多球颗粒的数量;数组QG和PG的总大小为(L/D)2+M或(L/D)3+M,因此第一层网格搜索的内存消耗SP为:
所述的步骤2中,所述候选颗粒通过网格搜索来查找目标颗粒i的包络球周围的所有邻居包络球,并将这些邻居包络球挑选出来,其中邻居包络球位于目标颗粒i的包络球所在的网格以及此网格周围的8个二维或26个三维相邻网格之中;
判断目标颗粒i的包络球与候选颗粒j的包络球相交的公式如下:
|PiPj|≤(Ri+Rj)
其中|PiPj|是多球颗粒i的包络球和多球颗粒j的包络球之间的中心距,Rj是多球颗粒j的包络球的半径;在全局空间中,每个网格中包络球的平均个数为nCB=M/(L/D)2或nCB=M/(L/D)3;由于每个包络球需要与O(M/(L/D)2)或O(M/(L/D)3)个邻居包络球进行接触检测,因此包络球间的接触检测的时间消耗为:
3.根据权利要求1所述的一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,其特征在于,所述的步骤3中,所述局部空间被用于目标多球颗粒的单元球与候选多球颗粒的相应单元球之间的网格搜索,局部空间的尺寸为D+d,多球颗粒i的局部空间的边界坐标 和采用如下公式计算:
其中
所述多球颗粒i的局部空间被划分为尺寸均为d的网格,其中网格在x、y和z方向上的数量分别为nx L、ny L和nz L,它们采用如下公式计算:
其中
所述目标多球颗粒与候选多球颗粒的单元球被投影至局部空间的网格中,判断目标多球颗粒i的单元球u位于目标多球颗粒i与候选多球颗粒j两者的局部空间的重叠区域公式如下:
其中和为多球颗粒j的局部空间的边界坐标;如果多球颗粒i的单元球u位于上述重叠区域内,单元球u被投影至多球颗粒i的局部空间的网格中,单元球u在多球颗粒i的局部空间中x、y和z方向上的网格号码分别为它们采用如下公式计算:
其中
判断候选多球颗粒j的单元球v位于上述重叠区域的公式如下:
其中和是多球颗粒j的单元球v球心的全局坐标;如果多球颗粒j的单元球v位于上述重叠区域内,单元球v被投影至多球颗粒i的局部空间的网格中,单元球v在多球颗粒i的局部空间中x、y和z方向上的网格号码分别为它们采用如下公式计算:
其中
单元球的网格号码被存储在两个数组QL和PL中,其中QL是一个用于存储三维网格的、大小为nx L×ny L×nz L的三维数组,或者是一个用于存储二维网格的、大小为nx L×ny L的二维数组,PL是一个用于存储三维或二维单元球编号的、大小为ns的一维数组,这两个数组在两个多球颗粒的单元球间的网格搜索中被重复使用;数组QL和PL的总大小为((D+d)/d)2+ns或((D+d)/d)3+ns,因此第二层网格搜索的内存消耗SL为:
所述的步骤4中,所述候选单元球v通过网格搜索来查找目标单元球u周围的邻居单元球,并将这些邻居单元球挑选出来,其中邻居单元球位于目标单元球u所在的网格以及此网格周围的8个二维或26个三维相邻网格之中,然后进行目标单元球u与候选单元球v之间的接触检测,判断单元球u与单元球v接触的公式如下:
其中为单元球u与单元球v的球心距,和分别为单元球u和单元球v的半径;
在二维情况下,多球颗粒i的单元球在每个网格中的平均数量在多球颗粒i与多球颗粒j两者的局部空间的重叠区域中,多球颗粒i的单元球的数量为其中和Lη分别是两个局部空间的重叠区域在和η方向上的尺寸,它们表达为:
其中|PiPj|在d到D之间变化;多球颗粒i中的每个单元球需要与多球颗粒j中的个邻居单元球进行接触检测,其中因此在二维情况下,多球颗粒i的单元球与多球颗粒j的单元球之间的接触检测的时间消耗为:
以此类推,在三维情况下,多球颗粒i的单元球与多球颗粒j的单元球之间的接触检测的时间消耗为:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610105766.5A CN105787998B (zh) | 2016-02-25 | 2016-02-25 | 一种离散元仿真中多球颗粒的两层网格搜索接触检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610105766.5A CN105787998B (zh) | 2016-02-25 | 2016-02-25 | 一种离散元仿真中多球颗粒的两层网格搜索接触检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105787998A CN105787998A (zh) | 2016-07-20 |
CN105787998B true CN105787998B (zh) | 2018-11-13 |
Family
ID=56403727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610105766.5A Active CN105787998B (zh) | 2016-02-25 | 2016-02-25 | 一种离散元仿真中多球颗粒的两层网格搜索接触检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105787998B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106290082B (zh) * | 2016-08-17 | 2019-01-15 | 广西科技大学 | 一种离散元组合颗粒及其离散元堆积试验模拟方法 |
CN109977482B (zh) * | 2019-03-04 | 2023-04-18 | 东南大学 | 一种用于物料破碎仿真的快速接触检测方法 |
CN110381442B (zh) * | 2019-08-17 | 2020-09-22 | 西北工业大学 | 一种基于隐式信息交互方式的群机器人目标搜索方法 |
CN110737972B (zh) * | 2019-09-27 | 2022-07-19 | 深圳大学 | 二维不规则颗粒间接触力计算方法 |
CN112052587B (zh) * | 2020-09-02 | 2023-12-01 | 中国人民解放军陆军工程大学 | 砂土垫层的三维细观离散体模型密实方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235854A (zh) * | 2013-04-24 | 2013-08-07 | 武汉大学 | 一种离散元仿真中球形颗粒与三角网格间的接触判断方法 |
CN104317772A (zh) * | 2014-10-22 | 2015-01-28 | 中国科学院合肥物质科学研究院 | 一种基于空间网格分割的蒙特卡罗粒子输运快速几何处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140358505A1 (en) * | 2013-05-31 | 2014-12-04 | The Board Of Trustees Of The University Of Illinois | Collision impulse derived discrete element contact force determination engine, method, software and system |
-
2016
- 2016-02-25 CN CN201610105766.5A patent/CN105787998B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235854A (zh) * | 2013-04-24 | 2013-08-07 | 武汉大学 | 一种离散元仿真中球形颗粒与三角网格间的接触判断方法 |
CN104317772A (zh) * | 2014-10-22 | 2015-01-28 | 中国科学院合肥物质科学研究院 | 一种基于空间网格分割的蒙特卡罗粒子输运快速几何处理方法 |
Non-Patent Citations (4)
Title |
---|
An analytical model of multi-particle electric double-layer interaction;Anton V. Alfimov等;《Proceedings of SPIE》;20150601;第9519卷;第951911-1-951911-10页 * |
Demmat code for numerical simulation of multi-particle system synamics;Robertas Balevicius;《Information technology and control》;20051231;第34卷(第1期);第71-78页 * |
Investigation of adequacy of multi-sphere approximation of elliptical particles for DEM simulations;D.Markauskas;《Granular Matter》;20121231;第12卷;第107-123页 * |
非球颗粒的离散元法基本理论和算法研究;党丽娜;《中国优秀硕士学位论文全文数据库 信息科技辑》;20121015 * |
Also Published As
Publication number | Publication date |
---|---|
CN105787998A (zh) | 2016-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105787998B (zh) | 一种离散元仿真中多球颗粒的两层网格搜索接触检测方法 | |
US11475101B2 (en) | Convolution engine for neural networks | |
CN102306396B (zh) | 一种三维实体模型表面有限元网格自动生成方法 | |
CN105718996B (zh) | 细胞阵列计算系统以及其中的通信方法 | |
CN109255828A (zh) | 用于光线跟踪的混合层级 | |
CN102279386B (zh) | 基于fpga的sar成像信号处理数据转置方法 | |
CN104572295B (zh) | 匹配于高性能计算机体系结构的结构网格数据管理方法 | |
US20150278408A1 (en) | Information processing apparatus and information processing method | |
JP2007179548A5 (zh) | ||
CN101727653A (zh) | 一种基于图形处理器的多组分系统离散模拟计算方法 | |
CN104933291B (zh) | 基于网函数插值的卫星测高数据平均海面高产品制作方法 | |
Chakraborty et al. | A new framework for solution of multidimensional population balance equations | |
CN102393826A (zh) | 一种基于多核并行处理的柔性场景连续碰撞检测方法 | |
CN103914879A (zh) | 一种在抛物线方程中由三角面元数据生成立方网格数据的方法 | |
CN103679271B (zh) | 基于Bloch球面坐标及量子计算的碰撞检测方法 | |
CN108875936A (zh) | 求解三维空间内任意两个多面体间的最近距离的方法 | |
US20130066603A1 (en) | Golf ball and mechanical analysis of the same | |
CN109271441A (zh) | 一种高维数据可视化聚类分析方法及系统 | |
CN108804973A (zh) | 基于深度学习的目标检测算法的硬件架构及其执行方法 | |
CN109447257A (zh) | 一种通道自组织的深度神经网络加速芯片的运算装置 | |
Elshakhs et al. | A comprehensive survey on Delaunay triangulation: applications, algorithms, and implementations over CPUs, GPUs, and FPGAs | |
CN105930568A (zh) | 任意形状凸多面体骨料的颗粒簇离散元模型构建方法 | |
CN110457818A (zh) | 一种大豆籽粒几何建模方法 | |
CN109816748A (zh) | 一种确定三角形格网的离散线的方法和装置 | |
JP2000003352A (ja) | 分子動力学法計算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |