本文摘要(由AI生成):
文章介绍了三种在模拟中生成预制裂隙的方法。第一种通过指定条件和删除颗粒生成裂隙,但受粒径影响;第二种使用dfn施加sj模型,但裂隙中间可能存在颗粒;第三种在预压时生成wall并删除其内颗粒,然后加胶结删除wall,裂隙平整不受粒径影响。文章比较了三种方法的效果,推荐方法三。
预制裂隙的裂纹扩展也是近年比较热的研究课题,因为岩石往往不会是一个完整的,所以研究含裂隙的岩石非常有必要。但是随机裂隙又不是特别的规律性,所以预制裂隙的研究就显得尤为重要。
这里介绍三种预制裂隙的方法。
这个是最简单也是最直接的方法,直接根据裂隙的角度、长度、厚度,在我们需要加裂隙的地方删除原本存在的颗粒。注意这个裂隙的平整度对颗粒数要求比较高,如果裂隙厚度大于颗粒粒径很多的话,效果会比较好点。
下面为在已经加胶结的试样中删除颗粒的方法:
restore jiajiaojie
[houdu=10e-3]
ball delete range plane origin 0 0 dip 30 distance [houdu*0.5] x [-wlx*0.1*math.cos(30*math.degrad)] [wlx*0.1*math.cos(30*math.degrad)]
cycle 1
solve
save addliexi
这里的裂隙都为角度为30,厚度为10mm,长度为0.1*wlx的裂隙。
这里的逻辑也比较简单,range后面加多个条件是取交集的意思,这里其实有两个range。
第一个range是一个plane,plane可以指定某个半平面,还有个用法,是指定这个plane线附近的区域。这里就是第二个用法,origin和dip确定直线,distance确定的是离这个直线的距离,我们试一下不加后面x条件下是什么效果:这里因为厚度没有比粒径大很多,导致某些颗粒没删除,可以看出不加x条件的话,删除了有厚度的线区域。
加了x条件取了交集后,就是我们想要的区域了:
在PFC手册里面也有一个使用dfn加滑裂面的例子,这里道理一样,先生成我们所需要的dfn,然后在dfn某距离内生成sj模型就可以了。这个逻辑也不难,sj模型我了解的不深,所以这里我也不敢多讲。
restore jiajiaojie
[houdu=10e-3]
dfn addfracture dip 30 position 0 0 size [wlx*0.2]
dfn property sj_kn 2e9 sj_ks 2e9 sj_fric 0.70 sj_coh 0.0 sj_ten 0.0 sj_large 1
dfn model name smoothjoint install dist [houdu*0.5]
cycle 1
solve
save addliexi
效果如下:
这个方法是我比较推荐使用的,应该也没多少人会去用,这个方法的优点在于:
1)裂隙平整,且不会受粒径影响
2)不会像第二个方法一样在裂隙中间还存在颗粒
这个方法的逻辑是在预压的时候,在裂隙位置生成wall,然后删除wall内的颗粒,并且继续伺服,之后生成胶结,删除这个wall。
这部分代码可能比较复杂,这里的长度和角度忘了和前面统一了,用户可以自己修改一下。
逻辑是根据裂隙的长度厚度和角度找到wall的四个节点,生成wall后平衡。
运行完后,试样中间的蓝色就是我们的墙,这个是个矩形,因为比较薄,所以看上去像一条线。
之后加胶结并删除墙:
restore liexi
[pb_coh=10e6]
[ten_coh=2.7]
cmat default type ball-facet model linear method deformability emod 10e8 kratio 1.5
cmat default type ball-ball model linearpbond method deformability ...
emod 12e8 kratio 1.5 pb_deformability emod 54e8 kratio 1.5 ...
property pb_coh [pb_coh] pb_ten [pb_coh*ten_coh] pb_fa 50 fric 0
cmat apply
clean
cycle 1
solve
contact method bond gap [rdmin*0.2]
wall delete walls range id 5
cycle 1
solve
save jiajiaojie
方法一:
方法二:
方法三:
对上述三个方法进行评价:
如果生成宽裂隙,方法1和方法3都很好,方法2不太行。
如果生成窄裂隙,方法2和方法3都可以,方法1不太行。
综上:方法3大家可以好好学一下。