【PFC6.0】重力放大法诱导分析岩质边坡破坏面

0 引言

    完整的岩块一般强度比较大,天然的状态不会使得岩质边坡发生破坏。而岩体和岩块的概念是两个,岩体指的是含有天然裂纹的岩块。所以相对于岩块,岩体在天然状态下的强度会比完整的岩块小很多。

    往往岩质边坡发生破坏无非以下几个因素:1、降雨使得岩石的裂纹充填物强度降低,发生破坏。2、工程使得原有的应力发生重分布。3、地震荷载使得岩体中的裂纹发育贯通形成滑裂面。

    本文边坡诱导破坏使用的并不是上述几个因素。重力放大法诱导破坏是有限元理论中经常遇到的一个方法,这种情况在现实中基本不会发生。但是诱导边坡破坏会强制性的产生滑裂面,对边坡的渐变破坏分析可以提供一定的参考。

1 成样

    这里还是比较经典的成样,不去赘述。

model new def chicun_par    sample_width=3    sample_hight=sample_width*0.5        keli_rdmin=0.004    keli_rdmax=0.006end@chicun_par

model domain extent [-sample_width] [sample_width] [-sample_hight] [sample_hight]

model random 10001wall generate box [-sample_width*0.5] [sample_width*0.5] [-sample_hight*0.5] [sample_hight*0.5] expand 1.5



ball distribute group "shiyang" radius [keli_rdmin] [keli_rdmax] porosity 0.12 ...    box [-sample_width*0.5] [sample_width*0.5] [-sample_hight*0.5] [sample_hight*0.5]



cmat default type ball-facet model linear method deform emod 100e6 kratio 1.5 cmat default type ball-ball model linear method deform emod 100e6 kratio 1.5  ball attribute density 2.7e3 damp 0.7model cycle 2000 calm 50

ball delete range pos-x [-sample_width*0.5] [sample_width*0.5] notball delete range pos-y [-sample_hight*0.5] [sample_hight*0.5] notmodel solve



model save "sample"

2、预压

    预压这里采用内置的sevro命令,不停的更新伺服力的大小,使得墙体达到指定的压力。

model restore "sample"[tyy=-1e6][txx=-1e6]fish def WallInit    wpBtm=wall.find(1)    wpTop=wall.find(3)    wpLeft=wall.find(4)    wpRight=wall.find(2)end@WallInit

wall servo activate true range id 1 4

fish def CalChicun    wlx=wall.pos.x(wpRight)-wall.pos.x(wpLeft)    wly=wall.pos.y(wpTop)-wall.pos.y(wpBtm)end

fish def UpdataForce    whilestepping    CalChicun    wall.servo.force.y(wpTop)=tyy*wlx    wall.servo.force.y(wpBtm)=-tyy*wlx    wall.servo.force.x(wpRight)=txx*wly    wall.servo.force.x(wpLeft)=-txx*wlyendmodel cycle 1model solvemodel save "yuya"

3、加胶结

    这里采用比较常规的灰岩参数,进行加胶结。

model restore "yuya"

[pb_coh=12.196e6][ten_coh=2.7][emod=2.114e9]

contact cmat default type ball-facet model linear method deformability ...            emod @emod kratio 1.5 contact cmat default type ball-ball model linearpbond method deformability ...            emod @emod kratio 1.5 pb_deformability emod @emod kratio 1.5 ...    property pb_coh [pb_coh] pb_ten [pb_coh*ten_coh] pb_fa 45.7 fric 0.1 contact cmat applymodel clean

model cycle 1model solve

contact method bond gap [keli_rdmin*0.5]

model cycle 1 model solve

model save "jiajiaojie"

4、自重

    这里利用离心机原理,使得应力分布达到80*40的式样状态。

model restore "jiajiaojie"wall servo activate false range id 1 4wall attribute velocity 0 0 wall delete walls range id 3fish def UpdataForce    end[chicun_n=80/wlx]

model gravity [9.8*chicun_n]



model cycle 1 model solve

model save "zizhong_0"

5、削坡

    这里使用半平面plane和竖向坐标取交集来进行削坡

program call "fracture.p2fis"@track_init[pojiao_x=wlx*0.05][pojiao_y=-wly*0.1][jiaodu=80]ball delete range plane origin @pojiao_x @pojiao_y ...        dip @jiaodu pos-y @pojiao_y [wly]    model cycle 1 model solve

6、重力放大诱导

    我初期是在削坡后,不断的增加重力,使得其发生破坏。但是这样会有一个问题,测试发现位移最大的地方在左侧边界上。这个和实际是不匹配的。

    于是转换思路,将重力放大放在自重环节,每次重力放大后再进行削坡。由于涉及到调用sav文件,所以不能采用fish进行循环调用。当然手动的话,可以一次次修改重力的值。我这里使用python来进行调用。

    下面为使用python循环来进行自重增加和削坡,其中收敛条件为碎块数超过50个。每次重力增加10倍原有重力。

import itasca as itit.command("python-reset-state false")it.command(" program call \"1chengyang\"")it.command(" program call \"2yuya\"")it.command(" program call \"3jiajiaojie\"")it.command(" program call \"4zizhong\"")stopFlag=Falsen_scale=1def test():    stopFlag=False    n_scale=1    while stopFlag==False:        zizhongFileName="\"zizhong_"+str(n_scale-1)+"\""        zizhongRestore="model restore "+zizhongFileName        it.command(zizhongRestore)               chicun_n=it.fish.get("chicun_n")        gravity_mag=9.8*chicun_n*(n_scale*10+1)        gravitySet="  model gravity "+str(gravity_mag)        it.command(gravitySet)        it.command("  model cycle 1 ")        it.command("  model solve")        zizhongFileName1="\"zizhong_"+str(n_scale)+"\""        zizhongSave="model save "+zizhongFileName1        it.command(zizhongSave)        it.command("ball attribute displacement multiply 0")        it.command("  program call \"5xuepo\"")        fileName="\"jieguo_"+str(n_scale)+"\""        saveSet="model save "+fileName        it.command(saveSet)        n_scale+=1        fgNum=it.fish.get("fg_num")        if fgNum>50:            stopFlag=Truetest()

7、岩质边坡破坏

    这里的工况是在第十次计算就发生了破坏,破坏发生在坡脚。不做具体的分析。

【PFC6.0】重力放大法诱导分析岩质边坡破坏面的图1

8、含软弱层岩质边坡破坏

    很多岩质边坡由于沉积和构造的作用,会是互层的。互层必然会是有软弱的层,有坚硬的层。

    这里的技术方法是先对颗粒进行分组。这里也是使用plane关键词,不过不是用半平面的概念,而是用distance来构造某一长条区域。然后对此组颗粒赋予较弱的属性。

model restore "yuya"



[jianju=keli_rdmax*10][kuandu=keli_rdmax*3][jiaodu=30]ball group "ying" ball group "ruan" range plane origin 0 0 dip [jiaodu] distance [kuandu*0.5]def add_ruan_up    pos_x=0    pos_y=0    loop while pos_x<wlx*0.5        pos_x+=(jianju+kuandu)*math.cos(jiaodu*math.pi/180.0)        pos_y+=(jianju+kuandu)*math.sin(jiaodu*math.pi/180.0)        command            ball group "ruan" range plane origin [pos_x] [pos_y] dip [jiaodu] distance [kuandu*0.5]        endcommand    endloopend@add_ruan_up

def add_ruan_down    pos_x=0    pos_y=0    loop while pos_x>-wlx*0.5        pos_x-=(jianju+kuandu)*math.cos(jiaodu*math.pi/180.0)        pos_y-=(jianju+kuandu)*math.sin(jiaodu*math.pi/180.0)        command             ball group "ruan" range plane origin [pos_x] [pos_y] dip [jiaodu] distance [kuandu*0.5]        endcommand    endloopend@add_ruan_down

[pb_coh=12.196e6][ten_coh=2.7][emod=2.114e9]

contact cmat default type ball-facet model linear method deformability ...            emod @emod kratio 1.5

[pb_coh=12.196e6][ten_coh=2.7][emod=2.114e9]contact cmat default type ball-facet model linear method deformability emod @emod kratio 1.5contact cmat default type ball-ball model linearpbond method deformability ...            emod @emod kratio 1.5 pb_deformability emod @emod kratio 1.5 ...    property pb_coh [pb_coh] pb_ten [pb_coh*ten_coh] pb_fa 45.7 fric 0.1    contact cmat add 1 model linearpbond method deformability ...            emod @emod kratio 1.5 pb_deformability emod @emod kratio 1.5 ...    property pb_coh [pb_coh] pb_ten [pb_coh*ten_coh] pb_fa 45.7 fric 0.1 range group "Default=ying" match 2contact cmat add 2 model linearpbond method deformability ...            emod [emod*0.2] kratio 1.5 pb_deformability emod [emod*0.2] kratio 1.5 ...    property pb_coh [pb_coh*0.2] pb_ten [pb_coh*ten_coh*0.2] pb_fa 45.7 fric 0.1 range group "Default=ruan" match 2

   contact cmat applymodel clean

model cycle 1model solve

contact method bond gap [keli_rdmin*0.5]

model cycle 1 model solve

model save "jiajiaojie"

下图为加完软弱层后的岩体。

【PFC6.0】重力放大法诱导分析岩质边坡破坏面的图2

后续的代码和完整岩质边坡一模一样,这里给出最后的破坏图:

【PFC6.0】重力放大法诱导分析岩质边坡破坏面的图3


【PFC6.0】重力放大法诱导分析岩质边坡破坏面的图4


    上图为典型的顺倾岩层,可以看到和完整的岩质边坡相比,其反应的特性更加弱一点。

    下图为反倾岩层的破坏模式。可以发现反倾岩层相对于顺倾岩层,其拥有更高的稳定性。


【PFC6.0】重力放大法诱导分析岩质边坡破坏面的图5


【PFC6.0】重力放大法诱导分析岩质边坡破坏面的图6








PFC2D/3D

【PFC6.0】重力放大法诱导分析岩质边坡破坏面的评论5条

【PFC6.0】重力放大法诱导分析岩质边坡破坏面的相关视频课程

【PFC6.0】重力放大法诱导分析岩质边坡破坏面的相关案例教程

0 引言 首先祝大家劳动节快乐,劳动人民最光荣! 这应该是cluster目前最后一个应用场景了。 离散元的模拟思路是从微观力学行为去反映宏观特性,在这个过程中,能够实现的现实的因素越多,得到的力学行为也就越准确。所以我们很多人去做柔性三轴,并不是为了去研究力学特性,而是为了得到更加准确的宏观特性与现实相比对。 岩石也是一样,一个完整的岩石应当包括矿物晶粒和胶结物,并且除了致密的花岗岩这种岩浆岩,沉
0 引言 对于含集料混凝土,集料强度相对于水泥强度高很多,所以一般不会考虑到集料的可破坏性。所以大部分情况下,使用clump来模拟集料混凝土也就够了。但是在一些特别的受集中力的工况下,集料的破坏也不少见,这种情况就需要去考虑集料的破坏了。 本文基于已有的研究成果,提出一种以cluster为集料颗粒的混凝土成样方式,并用单轴实验来进行测试。 1 成样 对于混凝土,集料一般不是很多,这里在空间中生成松
PFC中基本单元有ball和clump,当然最新的有block。ball模拟圆形刚性颗粒,clump模拟不规则形状刚性颗粒。对于非刚性颗粒来说,柔性簇Cluster方法便可以比较好的去模拟了。但是目前来说cluster方法介绍的并不是很多,这节课主要针对于cluster的模拟框架进行介绍。 本文介绍的cluster框架有两个主要步骤:1、导出cluster中ball的位置信息;2、在双轴或者别的实
0 引言 最近在熟悉PFC6.0的内容,对于6.0来说,其最大的突破就是实现了软件内与FLAC3D的耦合。这其实解决了PFC很大的一个问题,就是颗粒数太多时计算力的限制,我们可以用网格单元作为边界来弱化边界效应,当然也可以和本文一样,使用网格单元模拟金属等连续性材料。 本文试着去模拟一个结构方向同学经常遇到的一个工况,霍普金森压杆(SHPB)实验,对于测量混凝土材料在高应变率下的力学特性有很大的参
0 引言 最近刚好刷到《战狼1》的短视频,里面有一个经典的子*弹穿墙镜头,想着或许可以使用离散元的方法进行模拟。对于弹道分析、穿墙速度损失等方面应该会有一定的指导意义。案例中使用到了很多技术方法,比如子*弹的形状是用圆锥二次化后生成的,墙体的边界处理等。 1 成样 破碎方面一般只在被击中的砖周边,所以我们只建了三行三列的砖墙,其余的边界用有限元的zone模拟。砖头采用240*115*90mm尺寸,
硕士
影响力
粉丝
内容
获赞
收藏
    项目客服
    培训客服
    5 0