一种离散元仿真中多球颗粒的两层网格搜索接触检测方法与流程

文档序号:15907605发布日期:2018-11-13 19:56阅读:来源:国知局

技术特征:

1.一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,其特征在于,基于以下定义:

多球颗粒由单元球组成,用于表达和模拟各种非球形颗粒的几何形状,其中,单元球是组成多球颗粒的最小单元,单元球相互重叠,并且它们的尺寸被改变;组成多球颗粒的单元球的数量、尺寸及其组合形式,决定了所表达的多球颗粒的几何形状精度;

具体包括以下步骤:

步骤1,每个多球颗粒各自由一个包络球来表示;多球颗粒i的包络球的几何中心Pi的全局坐标xiG、yiG和ziG采用如下公式计算:

其中是多球颗粒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方向上的数量分别为nxG、nyG和nzG,它们采用如下公式计算:

其中ψ=[1 1 1]T

所述包络球被投影至全局空间的网格中,多球颗粒i的包络球获得x、y和z方向上的网格号码它们采用如下公式计算:

其中多球颗粒的包络球的网格号码被存储在两个数组QG和PG中,其中QG是一个用于存储三维网格的、大小为nxG×nyG×nzG的三维数组,或者是一个用于存储二维网格的、大小为nxG×nyG的二维数组;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方向上的数量分别为nxL、nyL和nzL,它们采用如下公式计算:

其中

所述目标多球颗粒与候选多球颗粒的单元球被投影至局部空间的网格中,判断目标多球颗粒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是一个用于存储三维网格的、大小为nxL×nyL×nzL的三维数组,或者是一个用于存储二维网格的、大小为nxL×nyL的二维数组,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的单元球之间的接触检测的时间消耗为:

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1