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.006
end
@chicun_par
model domain extent [-sample_width] [sample_width] [-sample_hight] [sample_hight]
model random 10001
wall 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.7
model cycle 2000 calm 50
ball delete range pos-x [-sample_width*0.5] [sample_width*0.5] not
ball delete range pos-y [-sample_hight*0.5] [sample_hight*0.5] not
model 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*wly
end
model cycle 1
model solve
model 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 apply
model clean
model cycle 1
model 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 4
wall attribute velocity 0 0
wall delete walls range id 3
fish def UpdataForce
end
[chicun_n=80/wlx]
model gravity [9.8*chicun_n]
model cycle 1
model solve
model save "zizhong_0"
5、削坡
这里使用半平面plane和竖向坐标取交集来进行削坡
6、重力放大诱导
我初期是在削坡后,不断的增加重力,使得其发生破坏。但是这样会有一个问题,测试发现位移最大的地方在左侧边界上。这个和实际是不匹配的。
于是转换思路,将重力放大放在自重环节,每次重力放大后再进行削坡。由于涉及到调用sav文件,所以不能采用fish进行循环调用。当然手动的话,可以一次次修改重力的值。我这里使用python来进行调用。
下面为使用python循环来进行自重增加和削坡,其中收敛条件为碎块数超过50个。每次重力增加10倍原有重力。
7、岩质边坡破坏
这里的工况是在第十次计算就发生了破坏,破坏发生在坡脚。不做具体的分析。
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
endloop
end
@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
endloop
end
@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.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 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 2
contact 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 apply
model clean
model cycle 1
model solve
contact method bond gap [keli_rdmin*0.5]
model cycle 1
model solve
model save "jiajiaojie"
下图为加完软弱层后的岩体。
后续的代码和完整岩质边坡一模一样,这里给出最后的破坏图:
上图为典型的顺倾岩层,可以看到和完整的岩质边坡相比,其反应的特性更加弱一点。
下图为反倾岩层的破坏模式。可以发现反倾岩层相对于顺倾岩层,其拥有更高的稳定性。