采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法转让专利

申请号 : CN202211294617.X

文献号 : CN115618702B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孟庆祥杨为民丁喻宋杭天薛浩宇陈佳敏朱淳胡南翔

申请人 : 河海大学

摘要 :

本发明公布一种采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,包括根据给定的颗粒级配曲线等前提条件随机生成多边形的骨料框架;记录下多边形骨料框架的坐标信息,导入离散元软件,将骨料框架放置到边界区域墙内,并实现骨料颗粒向刚性簇的转化;进行DEM模拟,使得骨料间能够自由碰撞,直至平衡,记录簇碰撞后分布的位置信息在几何文件;然后通过调用Python语言开发的骨料接触判定算法对几何文件中骨料实体的接触性进行判断,对存在接触和重叠量的骨料进行切割,最终得到高体积分数混杂岩数值模拟模型。本发明可以生成极超高体积分数的混杂岩数值模拟模型,同时避免骨料间的重叠,更好模拟骨料颗粒间的接触面。

权利要求 :

1.采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,包括以下步骤:步骤1:根据颗粒级配曲线和骨料体积分数信息生成所有的多边形骨料的二维框架几何模型;

步骤2:利用离散元软件,根据多边形骨料框架生成相同大小、形状的刚性簇,并将模型边界设定为墙边界,保证骨料颗粒能在模型边界内,同时可模拟骨料在边界上的分布;

步骤3:运用离散元模拟刚性簇的碰撞,使骨料位置重新分布;待骨料颗粒碰撞达到平衡后获取重分布后骨料刚性簇轮廓的坐标信息,得到骨料颗粒随机分布的混杂岩几何模型,并保存为几何文件;

步骤4:采用接触重叠判断算法,处理混杂岩模型几何文件,获得整个模型的所有骨料颗粒的多边形实体,循环遍历所有骨料实体,寻找与周围多边形骨料颗粒存在接触重叠量的骨料,并判别接触重叠类型;

步骤5:根据骨料接触重叠类型,采用不同的接触重叠切割算法对接触重叠的骨料进行切割,每次切割后将对应骨料信息更新到多边形骨料实体的列表中;

步骤6:对更新后的骨料实体列表重复步骤5,直至边界内所有产生接触重叠量的多边形骨料均被切割、更新;

步骤7:将进行切割后的多边形骨料重新写成几何文件并导出;并对导出的几何文件中骨料颗粒实体的面积进行累加,获得最终的二维混杂岩模型中骨料颗粒的总面积Sa,并与模型边界区域面积Sb进行比值计算,得出切割后骨料的体积分数。

2.根据权利要求1所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,所述步骤1中,生成所有的多边形骨料框架的过程如下:步骤1.1:在极坐标系中,以原点为基点,通过随机函数获得一系列随机半径和角度值,根据随机半径和角度得到一系列随机点,将这些点顺序连接得到多边形骨料;

步骤1.2:通过累加得到模型边界内所有骨料的总面积;根据颗粒级配曲线的骨料粒径区间进行划分,按照对应粒径区间内骨料的面积与所有骨料的总面积的比值来控制相应的粒径区间内骨料在模型中的占比;

步骤1.3:通过累加得到所有骨料的总面积,通过骨料的总面积与模型边界区域面积比值来控制混杂岩模型的体积分数。

3.根据权利要求2所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,所述步骤2中还包括如下步骤:采用明可夫斯基算法,以多边形骨料模型每个边的法向向外扩展,使所有骨料的轮廓向外延伸扩展;运用离散元模拟簇的碰撞,待骨料颗粒碰撞达到平衡后,再把骨料的外部轮廓恢复到扩展之前的状态。

4.根据权利要求3所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,所述步骤2中,生成刚性簇的方法具体如下:以各个骨料颗粒的多边形框架生成刚性簇的模板,以此模板作为生成与多边形骨料具有相同形状刚性簇的基础,然后采用Bubble Pack算法,用Pebble颗粒自动填充刚性簇模板,得到刚性簇。

5.根据权利要求4所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,所述步骤3中,刚性簇碰撞特性如下:在离散元软件中通过离散单元法模拟刚性簇之间的碰撞,所述模型的边界为矩形,将模型的边界设置成刚性的墙,并赋予刚度,同时给骨料刚性簇也赋予接触模型和刚度,由于墙和骨料都存在刚度,产生重叠时就会碰撞、弹开;通过骨料刚性簇之间的相互碰撞、弹开和骨料刚性簇与墙边界之间的碰撞,实现骨料颗粒的重分布,并允许模型的边界上存在骨料颗粒。

6.根据权利要求5所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,设置模型边界墙的刚度远大于骨料刚性簇的刚度;针对位于一侧边界墙上的骨料颗粒,超出该侧边界的部分通过周期性边界被放置到与之对称的另一侧边界上;位于模型边界角点上的骨料颗粒被分为四部分,通过周期性边界分别放置到模型边界对应的四个角点内部。

7.根据权利要求6所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,所述步骤4中,采用接触重叠判断算法判断骨料触重叠类型,具体如下:读取几何文件,获得每个骨料多边形的坐标点信息;然后调用多边形接触重叠判断算法对骨料多边形的接触重叠量进行判断;

骨料的接触重叠包括以下七种类型:

1)相邻多边形骨料之间存在点与点接触;

2)相邻多边形骨料之间存在点与线接触;

3)相邻多边形骨料之间存在线与线接触;

4)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,重叠部分在模型边界内部,与边界没有接触;

5)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,重叠部分在模型边界内部,与边界没有接触;

6)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,同时重叠部分与模型边界接触,两个多边形骨料只有一个交点;

7)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,同时重叠部分与模型边界接触,两个多边形骨料有多个交点。

8.根据权利要求7所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,所述步骤5中,根据不同的接触重叠类型实行不同的切割方式,具体如下:

1)相邻多边形骨料之间点与点接触,模拟现实情况下混杂岩中骨料颗粒之间存在的尖角与尖角的接触,允许存在,不用切割;

2)相邻多边形骨料之间点与线接触,模拟现实情况下混杂岩中骨料颗粒之间存在的尖角与面的接触,允许存在,不用切割;

3)相邻多边形骨料之间线与线接触,模拟现实情况下混杂岩中骨料颗粒之间存在的面与面的接触,允许存在,不用切割;

4)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,重叠部分位于模型边界内部,与边界没有接触,针对此种情况的重叠骨料按照如下方法进行切割:

4.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除;

4.2)采用几何图形交集判别方法,得到存在重叠量的两个多边形骨料的交集;读取几何文件,获得重叠部分所对应多边形各顶点坐标的集合,记为第一集合;以及产生重叠的两个骨料本身各顶点坐标的集合,记为第二集合;然后计算得到第一集合和第二集合的交集,记为第三集合;最后从第一集合中删除第三集合中的顶点坐标,剩余的两个顶点即为两个骨料的交点;

4.3)过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料;

5)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,在模型边界内部,与边界没有接触,针对此种情况的重叠骨料按照如下方法进行切割:

5.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除;

5.2)采用几何图形交集判别方法,得到存在重叠量的两个骨料的交集,该交集为多个多边形,无法直接获得交集交点坐标,需要进一步遍历交集,获得每个多边形的顶点坐标集合;

5.3)计算该交集中任意两个顶点坐标点之间的距离,找到两个距离最大的坐标点即为骨料的交点,过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料;

6)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,同时重叠部分与模型边界接触,则重叠部分被该侧的边界分割为两部分,一部分位于该侧边界附近,另一部分通过周期性边界被放置到与之对称的另一侧边界附近;每一部分中两个形骨料只有一个交点,针对此种情况的重叠骨料按照如下方法进行切割:

6.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除;

6.2)采用几何图形交集判别方法,得到存在重叠量的两个骨料的交集,由于重叠部分与边界存在接触,所以重叠部分只有一个交点,采用与步骤4.2)相似的方法找到该交点;接着对交集的顶点坐标进行遍历和判断,找到任何一个在边界上的顶点作为另一交点;

6.3)过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料;位于对称边界附近的另一部分重叠量,采用与上述相同的方法进行切割;

7)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,同时重叠部分与模型边界接触,则重叠部分被该侧的边界分割为两部分,一部分位于该侧边界附近,另一部分通过周期性边界被放置到与之对称的另一侧边界附近;每一部分中两个形骨料有多个交点,针对此种情况的重叠骨料按照如下方法进行切割:

7.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除;

7.2)采用几何图形交集判别方法,得到存在重叠量的两个骨料的交集,由于重叠部分与边界存在接触,所以重叠部分有多个交点,无法直接获得交集交点坐标,需要进一步遍历交集,获得每个多边形的顶点坐标集合;

7.3)计算该交集中任意两个顶点坐标点之间的距离,找到两个距离最大的坐标点即为骨料的交点,过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料;位于对称边界附近的另一部分重叠量,采用与上述相同的方法进行切割。

9.根据权利要求8所述的采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,其特征在于,所述步骤7中,计算切割后混杂岩模型骨料的体积分数方法具体为:步骤7.1:读取切割后的多边形骨料的几何模型文件;

步骤7.2:计算每个切割后骨料颗粒多边形的面积,并累加切割后所有骨料的总面积Sa;

步骤7.3:将切割后所有骨料的总面积Sa与模型边界区域面积Sb进行比值计算,得出进行切割后骨料的体积分数。

说明书 :

采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟

模型的生成方法

技术领域

[0001] 本发明属于不均匀岩土材料混杂岩数值模拟参数研究技术领域,具体涉及一种采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法。

背景技术

[0002] 由于实验方法的限制以及数值模拟方法的迅速兴起与发展,通过数值模拟的方法来研究混杂岩材料的力学参数和力学性能,能够较好地克服原位实验以及室内实验过程中试样完整度、试样的扰动、试样尺寸以及实验操作引起的误差等问题。
[0003] 数值模拟研究存在一个重要的问题——实验模型的建立,即生成符合数值模拟要求的骨料级配与高骨料体积分数的数值模型试样。目前,基本没有研究者生成骨料体积分数大于90%的混杂岩模型;然而,在室内试验中,混杂岩试样的骨料体积分数已经达到 90%,如Afifipour等人在Mechanical behavior of bimrocks having high rock block proportion一文中就将混杂岩的骨料体积分数提高到90%。因此需要研究超高体积混杂岩数值模拟模型,来克服原位实验以及室内实验过程中存在误差等问题。
[0004] 在模型建立问题上,现有细观数值模拟模型生成方法主要有两种,一是图像处理法;二是随机块体投放法。图像处理法即对混杂岩试样的截面进行扫描和图象识别,以此来区分骨料和基质,并建立模型;但此方法没有办法研究混杂岩材料内部材质分布的随机性,具有一定局限性。随机块体投放法通过算法生成随机块体,运用投放算法在指定的模型边界区域内投放块体,但投放时要考虑接触,因此生成的混杂岩模型骨料体积分数很难达到需求,更难生成很超高体积分数的混杂岩模型。

发明内容

[0005] 本发明的目的在于提供一种采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,解决现有技术中无法真正生成超高体积分数混杂岩模型和模拟骨料间面与面接触的技术问题。
[0006] 为解决上述技术问题,本发明采用如下技术方案实现:
[0007] 一种采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,包括以下步骤:
[0008] 步骤1:根据颗粒级配曲线和骨料体积分数等信息生成所有的多边形骨料框架几何模型。
[0009] 步骤2:利用离散元软件,根据多边形骨料框架生成相同大小、形状的刚性簇clump,并将模型边界设定为墙边界;保证骨料颗粒能在模型边界内,同时可模拟骨料在边界上的分布;
[0010] 步骤3:生成骨料刚性簇和设置边界后,运用离散元模拟刚性簇的碰撞,使骨料位置重新分布;待骨料颗粒碰撞达到平衡后获取重分布后骨料刚性簇轮廓的坐标信息,得到骨料颗粒随机分布的混杂岩几何模型,并保存为几何文件;该步骤可以模拟自然界中混杂岩中骨料颗粒的随机分布,允许骨料颗粒在任意位置以任意角度分布,贴近真实情况;
[0011] 步骤4:调用接触重叠判断算法,处理混杂岩模型几何文件;获得整个模型的所有骨料颗粒的多边形实体,通过上述算法,循环遍历所有骨料实体,寻找到与周围多边形骨料颗粒存在接触重叠量的骨料,并判别接触重叠类型。
[0012] 步骤5:根据骨料接触重叠类型,采用不同的接触重叠切割算法对接触重叠的骨料进行切割,每次切割后将对应骨料信息更新到多边形骨料实体的列表中。
[0013] 步骤6:对更新后的骨料实体列表重复步骤5,直至边界内所有产生接触重叠量的多边形骨料均被切割、更新。对于接触重叠的骨料颗粒切割后,如果不对骨料实体进行更新,一旦某一骨料与多个骨料接触重叠,在后期重新导出几何文件时,导致先切割重叠部分被重复绘制,导致切割失败;所以,每次进行步骤5后,需对骨料实体列表进行更新,直至任何两个骨料间无接触重叠量。
[0014] 步骤7:运用相应的几何图形导出算法,将进行切割后的多边形骨料重新写成几何文件并导出;并对导出的几何文件中骨料颗粒实体的面积进行累加,获得最终的二维混杂岩模型中骨料颗粒的总面积Sa,并与模型边界区域面积Sb进行比值计算,得出切割后骨料的体积分数。
[0015] 进一步优化,所述步骤1中,生成所有的多边形骨料框架的过程如下:
[0016] 步骤1.1:在极坐标系中,以原点为基点,通过随机函数获得一系列随机半径和角度值,根据随机半径和角度得到一系列随机点,将这些点顺序连接得到多边形骨料;
[0017] 步骤1.2:通过累加得到模型边界内所有骨料的总面积;根据颗粒级配曲线的骨料粒径区间进行划分,按照对应粒径区间内骨料的面积与所有骨料的总面积的比值来控制相应的粒径区间内骨料在模型中的占比;
[0018] 步骤1.3:通过累加得到所有骨料的总面积,通过骨料的总面积与模型边界区域面积比值来控制混杂岩模型的体积分数。
[0019] 进一步优化,所述步骤2中还包括如下步骤:采用明可夫斯基算法,以多边形骨料模型每个边的法向向外扩展,使所有骨料的轮廓向外延伸扩展;运用离散元模拟簇的碰撞,待骨料颗粒碰撞达到平衡后,再把骨料的外部轮廓恢复到扩展之前的状态。通过将骨料框架边界向外延展,相当于给骨料外包裹一个外壳,则部分骨料碰撞过程中产生的重叠量处于外壳部分,当把骨料的外部轮廓恢复到扩展之前的状态后,部分骨料之间的接触重叠会消失,即减少了骨料之间的重叠,通过控制扩展的距离可以初步控制骨料颗粒的接触和重叠。
[0020] 进一步优化,所述步骤2中,生成刚性簇的方法具体如下:以各个骨料颗粒的多边形框架生成刚性簇的模板,以此模板作为生成与多边形骨料具有相同形状刚性簇的基础,然后通过使用Bubble Pack算法,用Pebble颗粒自动填充刚性簇模板,得到刚性簇。刚性簇(clump)内部的Pebble颗粒间没有相对变形,因此不会破坏,这就保证骨料颗粒在碰撞中不发生变形和破环,保证原有骨料形状。
[0021] 进一步优化,所述步骤3中,刚性簇碰撞特性如下:在离散元软件中通过离散单元法模拟刚性簇之间的碰撞,将模型的边界设置成刚性的墙,并赋予刚度,同时给骨料刚性簇也赋予接触模型和刚度,由于墙和骨料都存在刚度,产生重叠时就会碰撞、弹开;通过骨料刚性簇之间的相互碰撞、弹开和骨料刚性簇与墙边界之间的碰撞,从而实现骨料颗粒的重分布,并允许边界上存在骨料颗粒。
[0022] 进一步优化,为保证骨料颗粒在碰撞中不飞出边界,设置墙的刚度远大于骨料刚性簇的刚度;骨料与墙之间的接触会难于骨料刚性簇之间的接触;当体积分数设定较大时,由于离散元方法允许存在重叠量的特性,骨料刚性簇之间会产生一定的重叠量,与现实情况不符。
[0023] 为保证模型要求的体积分数,针对位于一侧边界墙上的骨料颗粒,超出该侧边界的部分通过周期性边界被放置到与之对称的另一侧边界上;位于模型边界角点上的骨料颗粒被分为四部分,通过周期性边界分别放置到模型边界对应的四个角点内部。
[0024] 进一步优化,所述步骤4中,采用接触重叠判断算法判断骨料触重叠类型,具体如下:采用接触重叠判断算法判断骨料触重叠类型,具体如下:读取几何文件,获得每个骨料多边形的坐标点信息;然后调用多边形接触重叠判断算法对骨料多边形的接触重叠量进行判断。
[0025] 骨料的接触重叠包括以下七种类型:
[0026] 1)相邻多边形骨料之间存在点与点接触;
[0027] 2)相邻多边形骨料之间存在点与线接触;
[0028] 3)相邻多边形骨料之间存在线与线接触;
[0029] 4)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,重叠部分在模型边界内部,与边界没有接触;
[0030] 5)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,重叠部分在模型边界内部,与边界没有接触;
[0031] 6)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,同时重叠部分与模型边界接触,两个多边形骨料只有一个交点。
[0032] 7)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,同时重叠部分与模型边界接触,两个多边形骨料有多个交点。
[0033] 进一步优化,所述步骤5中,所述步骤5中,根据不同的接触重叠类型实行不同的切割方式,具体如下:
[0034] 1)相邻多边形骨料之间点与点接触,模拟现实情况下混杂岩中骨料颗粒之间存在的尖角与尖角的接触,允许存在,不用切割。
[0035] 2)相邻多边形骨料之间点与线接触,模拟现实情况下混杂岩中骨料颗粒之间存在的尖角与面的接触,允许存在,不用切割。
[0036] 3)相邻多边形骨料之间线与线接触,模拟现实情况下混杂岩中骨料颗粒之间存在的面与面的接触,允许存在,不用切割。
[0037] 4)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,重叠部分位于模型边界内部,与边界没有接触。
[0038] 针对此种情况的重叠骨料按照如下方法进行切割:
[0039] 4.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除。
[0040] 4.2)采用几何图形交集判别方法,得到存在重叠量的两个多边形骨料的交集;读取几何文件,读取相应几何图形的顶点信息,获得重叠部分所对应多边形各顶点坐标的集合,记为第一集合;以及产生重叠的两个骨料本身各顶点坐标的集合,记为第二集合;然后计算得到第一集合和第二集合的交集,记为第三集合;最后从第一集合中删除第三集合中的顶点坐标,剩余的两个顶点即为两个骨料的交点。由于交点位于多边形骨料的边线上,无法直接找到,因此需要通过上述方法进行查找。
[0041] 4.3)过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料。
[0042] 5)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,在模型边界内部,与边界没有接触,针对此种情况的重叠骨料按照如下方法进行切割:
[0043] 5.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除。
[0044] 5.2)采用几何图形交集判别方法,得到存在重叠量的两个骨料的交集,该交集为多个多边形,无法直接获得交集交点坐标,需要进一步遍历交集,获得每个多边形的顶点坐标集合。
[0045] 5.3)计算该交集中任意两个顶点坐标点之间的距离,找到两个距离最大的坐标点即为骨料的交点,过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料。
[0046] 6)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,同时重叠部分与模型边界接触,则重叠部分被该侧的边界分割为两部分,一部分位于该侧边界附近,另一部分通过周期性边界被放置到与之对称的另一侧边界附近;每一部分中两个形骨料只有一个交点,针对此种情况的重叠骨料按照如下方法进行切割:
[0047] 6.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除。
[0048] 6.2)采用几何图形交集判别方法,得到存在重叠量的两个骨料的交集,由于重叠部分与边界存在接触,所以重叠部分只有一个交点,采用与步骤4.2)相似的方法找到该交点;接着对交集的顶点坐标进行遍历和判断,找到任何一个在边界上的顶点作为另一交点。
[0049] 6.3)过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料;位于对称边界附近的另一部分重叠量,采用与上述相同的方法进行切割。
[0050] 7)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,同时重叠部分与模型边界接触,则重叠部分被该侧的边界分割为两部分,一部分位于该侧边界附近,另一部分通过周期性边界被放置到与之对称的另一侧边界附近;每一部分中两个形骨料只有多个交点,针对此种情况的重叠骨料按照如下方法进行切割:
[0051] 7.1)运用多个多边形重叠的高效联合算法,对存在接触重叠的两个骨料进行联合,重叠部分对应的多边形被合并,相交的线溶解并结于一点,重复的点被合并,形成一个联合多边形骨料,将重叠部分删除。
[0052] 7.2)采用几何图形交集判别方法,得到存在重叠量的两个骨料的交集,由于重叠部分与边界存在接触,所以重叠部分有多个交点,无法直接获得交集交点坐标,需要进一步遍历交集,获得每个多边形的顶点坐标集合。
[0053] 7.3)计算该交集中任意两个顶点坐标点之间的距离,找到两个距离最大的坐标点即为骨料的交点,过这两个交点做切割线,沿着切割线将联合多边形骨料切割成两个没有重叠量的骨料;位于对称边界附近的另一部分重叠量,采用与上述相同的方法进行切割。
[0054] 进一步优化,所述步骤7中,计算切割后混杂岩模型骨料的体积分数方法具体为:
[0055] 步骤7.1:读取切割后的多边形骨料的几何模型文件;
[0056] 步骤7.2:计算每个切割后骨料颗粒多边形的面积,并累加切割后所有骨料的总面积Sa;
[0057] 步骤7.3:将切割后所有骨料的总面积Sa与模型边界区域面积Sb进行比值计算,得出进行切割后骨料的体积分数。由于该模型为二维模型,转换成三维模型后为等厚度的片状结构,因此能够用面积比值表示体积含量。
[0058] 与现有技术相比,本发明具有如下有益效果:
[0059] 本发明很好的解决了现有超高体积分数混杂岩模型难以生成以及骨料存在接触重叠的问题。通过骨料间接触重叠切割算法,实现骨料间面与面接触以及超高体积分数混杂岩模型生成的要求。此方法将超高体积分数混杂岩数值模型难以生成以及骨料间接触重叠的问题,通过切割算法将其转化为骨料间面与面的接触,生成的模型更加符合实际,可提高数值模拟模型的体积分数与真实性。

附图说明

[0060] 图1为本发明所述采用重叠接触切割算法的二维超高体积混杂岩数值模拟模型的生成方法的流程图;
[0061] 图2为实施例1中骨料框架的模拟图;
[0062] 图3为实施例1中骨料包裹明可夫斯基壳的模拟图;
[0063] 图4为实施例1中将骨料转化为刚性簇,并进行离散元碰撞后的模拟图;
[0064] 图5为实施例1中碰撞后,骨料分散平衡后的模拟图;
[0065] 图6为图5中A部,混杂岩模型中骨料之间点与点接触的局部放大图;
[0066] 图7为图5中B部,混杂岩模型中骨料之间点与线接触的局部放大图;
[0067] 图8为图5中C部,混杂岩模型中骨料之间接触重叠部分为单个多边形且在边界内部的局部放大图;
[0068] 图9为混杂岩模型中骨料之间接触重叠部分为一个多边形且在边界内部的切割步骤示意图;
[0069] 图10为图5中D部,混杂岩模型中骨料之间接触重叠部分为多个多边形且在边界内部的局部放大图;
[0070] 图11为实施例1中针对混杂岩模型中骨料之间接触重叠部分为多个多边形且在边界内部的切割步骤示意图;
[0071] 图12为为图5中E部,混杂岩模型中骨料之间接触重叠部分在边界上的局部放大图;
[0072] 图13为实施例1中针对混杂岩模型中骨料之间接触重叠部分在边界上的切割步骤示意图;
[0073] 图14为实施例1中对混杂岩模型进行接触重叠判断和切割处理后的最终模型图;
[0074] 图15为实施例2中设定骨料体积分数为95%的混杂岩模型,骨料分散平衡后的模拟图;
[0075] 图16为实施例2中对混杂岩模型进行接触重叠判断和切割处理后的最终模型图;
[0076] 图17为实施例3中设定骨料体积分数为100%的混杂岩模型,骨料分散平衡后的模拟图;
[0077] 图18为实施例3中对混杂岩模型进行接触重叠判断和切割处理后的最终模型图。

具体实施方式

[0078] 下面将结合附图对本发明的技术方案进行清晰、完整地描述;显然,下列所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0079] 实施例1:
[0080] 如图1所示,一种采用重叠接触切割算法的二维超高体积分数混杂岩数值模拟模型的生成方法,包括以下步骤:
[0081] 步骤1:使用Matlab软件,根据级配曲线、骨料体积分数信息生成多边形骨料的几何模型。
[0082] 在本实施例中,设定二维混杂岩模型的边界尺寸为10cm*20cm,骨料的体积分数 90%。颗粒级配的粒径分布为以下4个区间:[6.0,9.0]、[9.0,10.5]、[10.5,11.2]、[11.2,
12],单位为mm。对应粒径区间内的骨料占总骨料的体积百分数分别为:19.6%、 47.9%、
24.5%、8.0%,如图2所示,多边形为骨料的几何模型。本方法对骨料的颗粒级配没有特殊要求,可以随意设置。
[0083] 步骤2:采用明可夫斯基算法,以多边形骨料模型每个边的法向向外扩展,使所有骨料的轮廓向外延伸扩展相当于给骨料外包裹一个外壳,如图3所示。利用离散元软件,以各个骨料颗粒的多边形框架生成相同大小、形状的刚性簇(clump)生成刚性簇的模板,以此模板作为生成与多边形骨料具有相同形状刚性簇的基础,然后通过Bubble Pack算法,用Pebble颗粒自动填充刚性簇模板,得到刚性簇(clump),如图4所示,并将模型边界设定为周期性刚性墙边界,可模拟骨料在边界上的分布。
[0084] 步骤3:运用离散元模拟刚性簇的碰撞,使骨料位置重新分布,如图5所示。再把骨料的外部轮廓恢复到扩展之前的状态。设置模型边界墙的刚度远大于骨料刚性簇的刚度;保证骨料颗粒在碰撞过程中不会飞出边界;针对位于一侧边界墙上的骨料颗粒,超出该侧边界的部分通过周期性边界被放置到与之对称的另一侧边界上;位于模型边界角点上的骨料颗粒被分为四部分,通过周期性边界分别放置到模型边界对应的四个角点内部。然后获取重分布后骨料刚性簇轮廓的坐标信息,得到骨料颗粒随机分布的混杂岩几何模型,并保存为dxf文件。
[0085] 步骤4:运用Python接触重叠判断算法,处理混杂岩几何模型dxf文件;获得整个模型的所有骨料颗粒的多边形实体,通过上述算法,循环遍历所有骨料实体,寻找到与周围多边形骨料颗粒存在接触重叠量的骨料,并判别接触重叠类型。
[0086] 步骤5:根据骨料接触重叠类型,采用不同的接触重叠切割算法对接触重叠的骨料进行切割,每次切割后将对应骨料信息更新到多边形骨料实体的列表中。
[0087] 根据不同的接触重叠类型实行不同的切割方式,具体如下:
[0088] 1)相邻多边形骨料之间点与点接触,模拟现实情况下混杂岩中骨料颗粒之间存在的尖角与尖角的接触,允许存在,不用切割,如图6所示。
[0089] 2)相邻多边形骨料之间点与线接触,模拟现实情况下混杂岩中骨料颗粒之间存在的尖角与面的接触,允许存在,不用切割,如图7所示。
[0090] 3)相邻多边形骨料之间线与线接触,模拟现实情况下混杂岩中骨料颗粒之间存在的面与面的接触,允许存在,不用切割。
[0091] 4)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,重叠部分位于模型边界内部,与边界没有接触,如图8所示,针对此种情况的重叠骨料按照如下方法进行切割:
[0092] 运用Python中的shapely库的高效联合方法,对接触重叠的骨料进行联合,形成一个联合多边形骨料,中间接触重叠部分被删除;同时,通过shapely库中的intersection 方法,得到存在重叠量的两个多边形骨料的所的交集;通过dxfgrabber库中实体的 ponits方法,获得重叠部分所对应多边形各顶点坐标的集合,记为第一集合;以及产生重叠的两个骨料本身各顶点坐标的集合,记为第二集合;然后计算得到第一集合和第二集合的交集,记为第三集合;最后从第一集合中删除第三集合中的顶点坐标,剩余的两个顶点即为两个骨料的交点;然后以这两个交点做切割线,用shapely库中的split的方法将联合多边形骨料切割成两个没有重叠量的骨料,如图9所示。
[0093] 5)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,在模型边界内部,与边界没有接触,如图10所示,针对此种情况的重叠骨料按照如下方法进行切割:
[0094] 运用Python中的shapely库的高效联合方法,对接触重叠的骨料进行联合,形成一个联合多边形骨料,中间接触重叠部分被删除;同时,通过shapely库中的intersection 的方法,返回此骨料与另一个骨料的交集,但此时的交集为多个多边形,无法直接获得交集顶点坐标,需要进一步遍历交集,获得每个单个多边形的顶点坐标;然后,调用 scipy库和numpy库计算交集中每个坐标点之间的距离,找到两个距离最大的坐标点即为骨料的交点,以这两个交点做切割线,用shapely库中的split的方法将联合多边形骨料切割成两个没有重叠量的骨料,如图11所示。
[0095] 6)相邻多边形骨料之间存在重叠量,且重叠部分为一个多边形,同时重叠部分与模型边界接触,则重叠部分被该侧的边界分割为两部分,一部分位于该侧边界附近,另一部分通过周期性边界被放置到与之对称的另一侧边界附近;每一部分中两个形骨料只有一个交点,如图12所示,针对此种情况的重叠骨料按照如下方法进行切割:
[0096] 运用Python中的shapely库的高效联合方法,对存在接触重叠的骨料进行联合,形成一个联合多边形骨料,将重叠部分删除;通过shapely库中的intersection方法,得到存在重叠量的两个骨料的交集,由于重叠部分与边界存在接触,所以重叠部分只有一个交点,通过dxfgrabber库中实体的ponits方法,采用与步骤4.2)相似的方法找到该交点;接着对交集的顶点坐标进行遍历和判断,找到任何一个在边界上的顶点作为另一交点;过这两个交点做切割线,用shapely库中的split的方法将联合多边形骨料切割成两个没有重叠量的骨料,如图13所示。位于对称边界附近的另一部分重叠量,采用与上述相同的方法进行切割。
[0097] 7)相邻多边形骨料之间存在重叠量,且重叠部分为多个多边形,同时重叠部分与模型边界接触,则重叠部分被该侧的边界分割为两部分,一部分位于该侧边界附近,另一部分通过周期性边界被放置到与之对称的另一侧边界附近;每一部分中两个形骨料只有多个交点,针对此种情况的重叠骨料按照如下方法进行切割:
[0098] 运用Python中的shapely库的高效联合方法,对存在接触重叠的骨料进行联合,形成一个联合多边形骨料,将重叠部分删除;通过shapely库中的intersection方法,得到存在重叠量的两个骨料的交集,由于重叠部分与边界存在接触,所以重叠部分有多个交点,无法直接获得交集交点坐标,需要进一步遍历交集,通过dxfgrabber库中实体的 ponits方法,获得每个多边形的顶点坐标集合;调用scipy库和numpy库,计算该交集中任意两个顶点坐标点之间的距离,找到两个距离最大的坐标点即为骨料的交点,过这两个交点做切割线,用shapely库中的split的方法将联合多边形骨料切割成两个没有重叠量的骨料;位于对称边界附近的另一部分重叠量,采用与上述相同的方法进行切割。
[0099] 步骤6:对更新后的骨料实体列表重复步骤5,直至边界内所有产生接触重叠量的多边形骨料均被切割、更新。经过接触重叠切割算法处理后,两个拥有接触重叠量的多边形骨料被切割成两个只有一条线重合接触的多边形骨料。
[0100] 步骤7:在Python中运用相应的dxfgrabber库,将进行切割后的多边形骨料重新写成dxf文件并导出,最终的几何模型如图14所示(图14与图5的区别在于图5中某些相邻的骨料之间存在接触重叠量,而图14中相邻骨料之间的已经重叠部分已经进行了切割);然后,调用Python相应的shapely库,使用多边形的area方法,对导出的dxf 文件中骨料颗粒实体进行面积的累加,获得最终的二维混杂岩模型中骨料颗粒的总面积 Sa,并与模型边界区域面积Sb进行比值计算,得出进行切割后骨料的体积分数。由于切割后骨料对应的对变形成顶点坐标已知,因此每个骨料的面积也已知。此实例模型切割后的骨料体积分数为89.17%,理论和实际之间的误差为0.83%,小于设定的误差值1%,因此满足模型设定的体积分数。
[0101] 实施例二:
[0102] 采用与实施例一相同的方法,生成骨料体积分数设定为95%的混杂岩模型,骨料分散平衡后的模拟图如图15所示;分通过切割算法处理后,得到骨料体积分数为92.26%的混杂岩几何模型,如图16所示。
[0103] 实施例三:
[0104] 采用与实施例一相同的方法,生成骨料体积分数设定为100%的混杂岩模型,骨料分散平衡后的模拟图如图17所示;分通过切割算法处理后,得到骨料体积分数为95.25%的混杂岩几何模型,如图18所示。只要随着设定体积分数的提高,采用本发明所述方法可以生成骨料体积分数接近100%的几何模型。
[0105] 本发明不仅仅适用于超高体积分数混杂岩数值模拟模型的生成,还适用于混凝土、土石混合体等不均匀岩土材料。
[0106] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。