首页/文章/ 详情

含结构面岩石直剪试验

1年前浏览4856

  岩块和岩体的区别在于,岩块我们一般指的是完整的均匀的岩石,而岩体则包含岩石在现实中的各种结构面。目前对于完整岩石的研究基本上趋于饱和了,而复合岩石以及结构面岩石的研究还处于发展中状态。


    完整岩石的直剪试验可以参考一下单元试验,基本顺序为:成样-预压-加胶结-加剪切盒-加围压-加载。


    数值模拟时刻要以现实为准绳,这也是我一直强调的,所以结构面在什么时候生成也就显而易见了。岩石在形成后才会因为地层运动产生结构面,于是我们需要在加胶结形成完整岩石后,给岩石加结构面。


    岩石加胶结生成后的状态如图所示:


image.png


    可以看到图中显示的为岩石的胶结状态,其胶结已经完整的加进去了,下面我们需要进行的是结构面的生成。


    我们这里采用的是外部导入的结构面形状,我是用adobe illustrate绘制的结构面形状,没有注意尺寸,只绘制了大概的形状,注意这里一定需要使用多段线,如果是用CAD画的圆弧也一定要打断成多段线。


    导入后使用前文(使用fish操作导入的geometry)讲述的方法进行geometry的处理,并将其调整到适合的位置与大小。


    处理完后的geometry如图:


image.png


可以发现已经放在了中间位置。


    之后我们使用导入的geometry生成DFN,这里使用dfn gimport geometry 命令就可以完成。


    后面我们需要给DFN处的接触赋属性。


    我这里用的是SJ模型去模拟结构面,SJ模型我对其初步理解为面模型,也就是说一般模型是以接触法向为力的法向作用方向,但是SJ模型是以DFN位置的法向位置作为力的法向方向。由于这个原因,SJ模型经常出现颗粒有比较大的重叠量,不过这个是没有力的,如图所示:

image.png


    可以看到在geometry位置上的接触都被赋予了SJ模型,而且部分颗粒出现了比较大的重叠量,后面有时间会做一个双球试验去验证一下这个模型的力学效应。


    结构面有的是无胶结的,这种一般是由于剪切产生的构造面,有的是有胶结的,也就是一些胶结物,例如石英、铁锰物质充填形成的。SJ模型可以加胶结也可以不加胶结,这里只模拟了最简单的情况,也就是光滑的构造面,这里SJ模型只赋予了法向刚度,而切向几乎为0,而且也没有胶结。


   

    给试样加围压后,由于颗粒的离散性,会在局部形成一系列力的集中点,这个现象随着颗粒数的增加而慢慢减弱。本文的模型采用了4w6的颗粒数,已经足够多,但还是不太能使这个线性消失。

image.png

下面展示随着应变的加载,其变形破坏特性:


应变0.002


image.png


应变0.004

image.png

应变0.012

image.png

应变0.018


image.png


应变0.026


image.png


可以看一下破坏后的块体图:


image.png


可以发现上部岩体在右边,而下部岩体在左边形成了破坏区。


力链图:


image.png


总的应力应变曲线为:


image.png



    可以比较一下之前的单元试验结果(我的PFC岩土颗粒流离散元分析攻略(附赠学习资料)),相比于完整岩石的9.8MPa的强度,这里不到8MPa的强度已经减小了很多了,说明结构面是起作用的。


    当然结构面的形成方式有很多,SJ模型算是比较好的一个方法了,因为可以考虑面移动,如果采用简单的线性模型其实也可以,但是对颗粒数的要求会比较高。如果是含胶结的话建议还是采用改参数的方式就可以了。



    restore jiajiaojie

    geometry import jiegoumian.dxfdef get_min_max(id)    global x_min=1e100    global x_max=-1e100        global y_min=1e100    global y_max=-1e100    local gs = geom.set.find(id)    loop foreach local gn geom.node.list(gs)        local pos = geom.node.pos(gn)        if x_min > comp.x(pos)            x_min = comp.x(pos)        endif        if y_min > comp.y(pos)            y_min = comp.y(pos)        endif          if x_max < comp.x(pos)            x_max = comp.x(pos)        endif        if y_max < comp.y(pos)            y_max = comp.y(pos)        endif    endloopenddef moveToOrigin(id)    get_min_max(id)    local gs = geom.set.find(id)    loop foreach local gn geom.node.list(gs)        geom.node.pos.x(gn)=geom.node.pos.x(gn)-(x_min x_max)*0.5        geom.node.pos.y(gn)=geom.node.pos.y(gn)-(y_min y_max)*0.5    endloop    get_min_max(id)enddef sacle(id,n)    local gs = geom.set.find(id)    loop foreach local gn geom.node.list(gs)        geom.node.pos.x(gn)=geom.node.pos.x(gn)*n        geom.node.pos.y(gn)=geom.node.pos.y(gn)*n    endloopend@moveToOrigin(1)@sacle(1,[wlx/(x_max-x_min)])

    dfn gimport geometry jiegoumian

    dfn model name smoothjoint  installdfn property sj_kn 5e9 sj_ks 1e-4

    cycle 1solvesave addjiegoumian
    岩土离散元结构基础代码&命令科普PFC
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2022-07-21
    最近编辑:1年前
    lobby
    硕士 |擅长颗粒流PFC
    获赞 834粉丝 4505文章 84课程 21
    点赞
    收藏
    作者推荐
    未登录
    4条评论
    张
    签名征集中
    2月前
    lobby老师。如果结构面起伏很大的话,是不是等于左侧墙直接撞碎了上盘颗粒。是否上盘会上下移动呢?
    回复
    研究牲
    签名征集中
    1年前
    lobby老师,我感觉这篇帖子写的非常好,而且我也在论文中发现越来越多的含结构面剪切模拟,能否将这个帖子的内容做成视屏课加入到您的课程“PFC 入门到精通 81 讲:从 0 掌握离散元颗粒流软件应用与实践”中,方便大家学习
    回复
    HD
    签名征集中
    1年前
    怎么样用table生成裂隙呢
    回复
    L
    签名征集中
    1年前
    结构面会随着岩石的移动而移动吗
    回复
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈