首页/文章/ 详情

基于声发射和能量分析的PFC岩石分析

5月前浏览8222

本文摘要(由AI生成):

这篇文章通过离散元模拟对岩石的微裂纹发展进行了深入研究。文中首先指出声发射事件数与应力应变曲线之间存在关联,微裂纹的发展导致岩石破坏,并在破坏后继续产生更多微裂纹,直至试样完全失去强度,声发射停止。随后,通过绘制微裂纹总数的热点图,明确了裂纹发展的主要区域,并解释了算法原理。此外,文章还强调了在离散元模拟中进行能量分析的重要性,包括边界能、胶结应变能、颗粒应变能、阻尼能以及胶结破坏能等,这些能量的转化和演化对理解岩石破坏过程具有重要意义。总之,本文提供了对岩石微裂纹发展的深入洞察,为相关领域的研究提供了有价值的参考。


1、声发射以及微裂纹


研究岩石内部的细观行为,常用的是CT断面扫描,可以非常清楚的看到岩石某一个断面上的裂纹分布以及破坏模式。而比较传统的方式,则是通过声发射技术监测岩石中的事件数。事件数是一个比较陌生的名词,我的理解是,岩石在破坏的时候,并不是一次性破坏完成的,往往是渐变破坏的过程。岩石在承受荷载的时候,内部会出现破坏,而一破坏则会发出”咔嚓咔嚓”的声音,这一个声音就是一个事件数,对应到岩石内部也就是一次微裂纹的形成。

离散元中PFC中有专门的fracture文件可以生成微裂纹,具体的解析就不说了,原理是在胶结破坏的地方用横线代表微裂纹,注意这个微裂纹是一个标记,是不参与力学计算的,并且之后会根据胶结两端的位置去更新微裂纹的位置。这个文件中记录的是微裂纹的总数目,而声发射的定义是单位时间内的事件数,所以需要对其中的变量进行一点点的加工。加工的方式也很简单,每隔一段时间的裂纹总数的数量就是声发射的事件数。



[calpinlv=-3e-5]

[pinlv_record=weyy 1]

[liewen_record=0]

def cal_zhenling

    jiance

     if weyy-pinlv_record<=calpinlv then

        zhenling=crack_num-liewen_record

        pinlv_record=weyy

        liewen_record=crack_num

     endif

end



这里用一个单轴压缩算例来显示处理后的结果,首先看一下应力应变曲线和微裂纹的发展图。

image.png


通过origin绘制双y图,将声发射的数据显示改成柱状图就可以形成我们经常在文献里面看到的声发射与应力应变曲线的关系图了,可以从图中分析出声发射的事件数和应力应变曲线是有关系的,当出现声发射时,曲线进入渐变破坏阶段,但是事件数的峰值发生在曲线的峰后,也是说明微裂纹的发展促使岩石发生破坏,岩石发生破坏之后,而又产生更多的微裂纹,直到试样完全失去强度,声发射停止。

image.png


下面这张图摸索了一个多小时才画出来,为微裂纹总数(声发射事件总数)的热点图,算法为某一个点附近搜索半径内的裂纹数目,输出x,y坐标和裂纹数目,在origin中绘制云图,然后在PPT中将两幅图叠加得到的。从这幅图可以看出裂纹发展的主要区域,基本上为一条斜直线。

计算代码如下,原理比较简单,看懂后可以进行修改。




def outqipao

   tabpos_x=table.create("pos_x")

   tabpos_y=table.create("pos_y")

   tabmidu=table.create("midu")

   n_split_x=20.0

   n_split_y=40.0

   x_inri=wlx/n_split_x

   y_inri=wly/n_split_y

     

   sousuo_rad=x_inri*2.0

  

   weizhi_count=1

   loop n(1,n_split_x-1)

    loop m(1,n_split_y-1)

        x_pos=-wlx*0.5 x_inri*n

        y_pos=-wly*0.5 y_inri*m

        table(tabpos_x,weizhi_count)=x_pos

        table(tabpos_y,weizhi_count)=y_pos

        n_count=0

          loop foreach frac dfn.fracture.list

                   

               dist=math.sqrt((dfn.fracture.pos.x(frac)-x_pos)^2 (dfn.fracture.pos.y(frac)-y_pos)^2)

                if dist<sousuo_rad then

                    n_count =1

                endif

        endloop

       

        table(tabmidu,weizhi_count)=n_count

        weizhi_count =1

    endloop

   endloop

end

@outqipao




 image.png

2、能量分析


离散元中能量分析一定要围绕转化来看,系统是能量守恒的,我们就需要研究哪些能量减少了,哪些能量增加了。就单元实验来讲,我们一般将墙体的边界能作为系统总能量的来源,对岩石来说,应变能会分为两部分,胶结应变能和颗粒应变能,这两个能量随着岩石的变形都会变大。动能我建议是不要记录的,我们单元实验一般需要满足准静态条件,也就是加载速度需要足够小,这时候动能几乎是没有的,动能会发生在破坏的时候,墙体的边界能会转化为动能,因为岩石破坏无法受力了。但是我们系统的阻尼会将动能转化为阻尼能和摩擦能,所以我建议是岩石的单元实验分析,只需要记录边界能、胶结应变能、颗粒应变能、阻尼能、摩擦能就可以了,如果有需要的话还可以加上胶结破坏能,胶结破坏能在bond_break里面entry(4)就是。下面为记录能量的代码,摩擦能忘了记录了,朋友们可以自己再完善一下。图4为能量演化图,算是比较经典的文献中可见的能量分析了。


 

def jiance

   zongneng=wall.energy("eboundary")  

   dongneng=ball.energy("ekinetic")

    yingbianneng=contact.energy.sum("estrain")    

   jiaojieneng=contact.energy.sum("epbstrain")

   zunineng=ball.energy("edamp")

   time=mech.age

end


image.png


结构基础代码&命令离散元PFC科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-07-21
最近编辑:5月前
lobby
硕士 |擅长颗粒流PFC
获赞 880粉丝 4971文章 83课程 22
点赞
收藏
未登录
4条评论
furfur
干就完了
1月前
有完整的代码吗
回复 1条回复
W
签名征集中
1年前
搞不出来啊😭😭😭
回复 1条回复
牧云人
签名征集中
1年前
老师,有完整的代码嘛
回复
PFC爱好者
签名征集中
2年前
老师,声发射的我把代码合到 jiazai 文件中,但是没有数,重新建立一个data文件调用结果也不行。请教一下老师,我哪用错了
回复 1条回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈