发明名称 一种离散元仿真中多球颗粒的两层网格搜索接触检测方法
摘要 本发明涉及一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,包括以下步骤:全局空间被划分为尺寸均为<i>D</i>的方形或立方体网格,然后进行第一层网格搜索,如果目标颗粒的包络球与某个候选颗粒的包络球相交,则第一层网格搜索完成,反之则进行目标颗粒的包络球与其余候选颗粒的包络球之间的相交检测;相交时,一个尺寸为(<i>D</i>+<i>d</i>)的方形或立方体局部空间被划分为尺寸均为<i>d</i>的方形或立方体网格,并供第二层网格搜索所用,检测目标颗粒的单元球与候选颗粒的单元球之间的接触。本发明在实现接触检测的内存消耗大幅降低的同时,维持接触检测的时间消耗不增加,为多球颗粒离散元仿真在工业领域的大规模应用提供了有效的技术手段。
申请公布号 CN105787998A 申请公布日期 2016.07.20
申请号 CN201610105766.5 申请日期 2016.02.25
申请人 武汉大学 发明人 胡国明;方自强;李婉婉;桂文杰;刘勇
分类号 G06T17/10(2006.01)I 主分类号 G06T17/10(2006.01)I
代理机构 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 代理人 鲁力
主权项 一种离散元仿真中多球颗粒的两层网格搜索接触检测方法,其特征在于,基于以下定义:多球颗粒由单元球组成,用于表达和模拟各种非球形颗粒的几何形状,其中,单元球是组成多球颗粒的最小单元,单元球可以相互重叠,并且它们的尺寸可以被改变;组成多球颗粒的单元球的数量、尺寸及其组合形式,决定了所表达的多球颗粒的几何形状精度;具体包括以下步骤:步骤1,每个多球颗粒各自由一个包络球来表示;多球颗粒i的包络球的几何中心P<sub>i</sub>的全局坐标x<sub>i</sub><sup>G</sup>、y<sub>i</sub><sup>G</sup>和z<sub>i</sub><sup>G</sup>采用如下公式计算:<maths num="0001"><math><![CDATA[<mrow><msubsup><mi>q</mi><mi>i</mi><mi>G</mi></msubsup><mo>=</mo><mrow><mo>(</mo><munderover><mo>&Sigma;</mo><mrow><mi>u</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>s</mi></msub></munderover><mo>(</mo><mrow><msubsup><mi>q</mi><mi>u</mi><mi>i</mi></msubsup><mo>&CenterDot;</mo><msubsup><mi>V</mi><mi>u</mi><mi>i</mi></msubsup></mrow><mo>)</mo><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><munderover><mo>&Sigma;</mo><mrow><mi>u</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>s</mi></msub></munderover><msubsup><mi>V</mi><mi>u</mi><mi>i</mi></msubsup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000929787070000011.GIF" wi="517" he="127" /></maths>其中<maths num="0002"><math><![CDATA[<mrow><msubsup><mi>q</mi><mi>i</mi><mi>G</mi></msubsup><mo>=</mo><msup><mfenced open='[' close=']'><mtable><mtr><mtd><msubsup><mi>x</mi><mi>i</mi><mi>G</mi></msubsup></mtd><mtd><msubsup><mi>y</mi><mi>i</mi><mi>G</mi></msubsup></mtd><mtd><msubsup><mi>z</mi><mi>i</mi><mi>G</mi></msubsup></mtd></mtr></mtable></mfenced><mi>T</mi></msup><mo>,</mo><msubsup><mi>q</mi><mi>u</mi><mi>i</mi></msubsup><mo>=</mo><msup><mfenced open='[' close=']'><mtable><mtr><mtd><msubsup><mi>x</mi><mi>u</mi><mi>i</mi></msubsup></mtd><mtd><msubsup><mi>y</mi><mi>u</mi><mi>i</mi></msubsup></mtd><mtd><msubsup><mi>z</mi><mi>u</mi><mi>i</mi></msubsup></mtd></mtr></mtable></mfenced><mi>T</mi></msup><mo>,</mo></mrow>]]></math><img file="FDA0000929787070000012.GIF" wi="891" he="64" /></maths><img file="FDA0000929787070000019.GIF" wi="163" he="63" />和<img file="FDA0000929787070000013.GIF" wi="43" he="61" />是多球颗粒i的单元球u的球心<img file="FDA0000929787070000014.GIF" wi="59" he="69" />的全局坐标,<img file="FDA0000929787070000015.GIF" wi="53" he="70" />是单元球u的体积,n<sub>s</sub>是多球颗粒i中单元球的数量;多球颗粒i的包络球的半径R<sub>i</sub>采用如下公式计算:<maths num="0003"><math><![CDATA[<mrow><msub><mi>R</mi><mi>i</mi></msub><mo>=</mo><munderover><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><mrow><mi>u</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>s</mi></msub></munderover><mrow><mo>(</mo><mo>|</mo><mrow><msub><mi>P</mi><mi>i</mi></msub><msubsup><mi>C</mi><mi>u</mi><mi>i</mi></msubsup></mrow><mo>|</mo><mo>+</mo><msubsup><mi>r</mi><mi>u</mi><mi>i</mi></msubsup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000929787070000016.GIF" wi="421" he="111" /></maths>其中<img file="FDA0000929787070000017.GIF" wi="118" he="87" />是多球颗粒i的包络球与单元球u之间的中心距,<img file="FDA0000929787070000018.GIF" wi="37" he="63" />是单元球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)和所有目标单元球n<sub>s</sub>;步骤6,重复步骤2到步骤5直至遍历目标颗粒包络球i周围的所有候选包络球MM(i)和所有目标包络球M。
地址 430072 湖北省武汉市武昌区珞珈山武汉大学