基于PFC5.0生成随机不规则粗粒料模型的数值方法 1. 定义粗粒料形状特征对于不规则颗粒的形状,目前存在多种不同的表达方法。其中,基于电镜扫描获取粗粒料的形状特征,已逐渐得到了广泛的应用。然而,上述方法一般只能对有限数量的粗粒料颗粒进行扫描,并将其作为所谓的典型形状。因此,该方法受人为因素影响较大,不同的试验人员选取的典型形状,实际上是不统一的。 除电镜扫描法以外,基于数学方法在统计意义上描述粗粒料的形状特征,也是一种重要的手段。在二维条件下,粗粒料的几何形状可简化为多边形,而通过数学方法生成多边形的方法较多,其中圆内接多边形法是一种较为常见的方式,这里主要以圆内接多边形法确定粗粒料的形状特征。 假定通过圆内接多边形法确定的某粗粒料各顶点坐标为x1、x2、….、xn(逆时针方向排布),则通过下列代码可将各顶点通过墙体wall依次连接,构建封闭区域,勾勒出粗粒料的边界轮廓。 ;;;;make walls wallmake=array.create(n) loop i(1,n-1) wallmake(i)=string.build("wall createvertices %1 %2 %3 %4",x(i),y(i),x(i+1),y(i+1)) endloop wallmake(n)=string.build("wallcreate vertices %1 %2 %3 %4",x(n),y(n),x(1),y(1)) array.command(wallmake) 2. 模型区域随机投放粗粒料模型当在模型区域生成若干粗粒料模型时,需对粗粒料模型间的相对位置关系进行判别,严格避免相邻的粗粒料模型存在相互重叠。由于将粗粒料的形状简化为多边形,因此对于粗粒料相对位置关系的判别,实际上是判断平面上两个多边形间的相对位置。相关的判别方法很多,这里仅列举其中一种。具体说来,若多边形A和B不相交,则其充要条件如下: (1) A的任意顶点不在B中; (2) B的任意顶点不在A中; (3) A、B的任意两条线段不相交 其中,判断A的任意顶点是否在B中的代码实现如下: s_check=polyarea(B) loop q(1,n) xx =x(q) yy =y(q) s_test=0.0 loop p(1,polysize(B)) s_test=s_test+triarea(xx,yy,polyx(B,p),polyy(B,p),polyx(B,p+1),polyy(B,p+1)) endloop ifs_test<1.1*s_check then command [string.build('the current node of polygon A is in polygon B')] endcommand check = 0 exit section endif endloop 上述代码中,polyarea(B)表示多边形B的面积,polysize(B)为B的顶点数量,x(q)、y(q)分别表示A的各顶点坐标,q=1、2、…、n,n为A的顶点数量。triarea为自定义的计算三角形面积的函数。通过上述代码判断A的顶点是否在B中的关键是查看自定义变量check的返回值,其初值设置为1,执行上述代码后,一旦其返回值为0,则表示A的某一个顶点落入了B中。 3. 粗粒料模型内部圆形颗粒的填充方法基于步骤1和2可确定各粗粒料模型的边界轮廓,由于PFC的基本颗粒形状为圆形,因此还需在定义好的粗粒料边界内部按照一定的原则填充圆形颗粒,才能生成可参与计算的粗粒料模型。 填充圆形颗粒时,首先需定义填充颗粒的尺寸。Lim(2007)等指出,为避免填充颗粒尺寸效应的影响,粗粒料模型内部包含的圆形颗粒数量不宜少于500(三维),由此可知二维条件下粗粒料模型内部包含的圆形颗粒数量不宜少于63。基于上述原则可确定粗粒料模型内部填充圆形颗粒的尺寸,假设其范围为[ball_rmin,ball_rmax]。 在粗粒料模型内部填充圆形颗粒时,只需保证填充的圆形颗粒落入粗粒料边界轮廓内部即可,填充颗粒间允许重叠。当填充颗粒的面积之和达到粗粒料模型的面积时,填充过程结束。此时将模型计算至平衡状态,则彼此重叠的填充颗粒会相互分离,并最终填满整个粗粒料模型内部。 4. 设置平行粘结模型颗粒填充结束后,首先清除颗粒间的初始接触力,并将法向力-位移关系由总量格式(默认)改写为增量格式,其代码实现如下: contact propertylin_force 0.0 0.0 lin_mode 1 ball attributecontactforce multiply 0.0 contactmoment multiply 0.0 随后对同一粗粒料模型内部的各填充颗粒间设置平行粘结(其余粘结模型也可),粘结完毕后,删除各粗粒料模型边界处的墙体。 5. 重力沉降并压实设置重力加速度,使得生成的粗粒料模型在重力作用下沉降至密实状态,同时也可施加一定的初始压力将模型压实。 这里需要特别注意的是,压实过程中对粗粒料模型设置不同的细观摩擦系数,可得到不同密实度的数值模型。因此,在压实过程中,究竟该如何设置细观摩擦系数,需要专门分析。通常条件下,细观摩擦系数设置为0,以达到最密实的状态。 6. 结果分析基于步骤1~5的数值方法,各阶段的建模结果见附件。
7. 总结基于上述方法可建立考虑粗粒料随机不规则形状和破碎特性的数值模型,是目前开展粗粒料数值试验的方法之一。上述方法中,最耗时的阶段为阶段1和2,其耗时量直接决定于模型的初始密实度等,当设计的初始密实度较小,则可快速完成投放粗粒料模型的过程,若初始密实度较大,则需耗费一定的时间。 |