边坡、隧道和基坑作为岩土三大工程问题,前面讲述了前两个工况的一般思路,这里讲解一下桩支护基坑的数值模拟。
模拟步骤前面依然是成样、预压和加自重,这里和隧道一样。
一、成样
new
def par
width=1.5
height=width*0.5
rdmax=0.45e-3*10
rdmin=0.3e-3*10
poro=0.08
emod=90e6 ;Effective modulus
kratio=1.5 ;Normal-to-shear stiffness ratio
end
@par
domain extent [-height*3] [height*3]
set random 10001
wall generate box [-width*0.5] [width*0.5] [-height*0.5] [height*0.5] expand 1.5
ball distribute porosity @poro radius @rdmin @rdmax box [-width*0.5] [width*0.5] ...
[-height*0.5] [height*0.5]
cmat default model linear method deformability emod @emod kratio @kratio
ball attribute density 2.7e3 damp 0.7
cycle 2000 calm 50
solve
save sample
结果为:
二、预压
restore sample
[fric=0.6]
cmat add 1 model rrlinear method deformability emod @emod kratio @kratio property fric @fric ...
rr_fric @fric range contact type ball-ball
cmat apply
[txx=-1e4]
[tyy=-1e4]
[sevro_factor=0.5]
[do_xSevro=true]
[do_ySevro=true]
[sevro_freq=100]
[timestepNow=global.step-1]
def sevro_walls
compute_stress
if timestepNow<global.step then
get_g(sevro_factor)
timestepNow =sevro_freq
endif
if do_xSevro=true then
Xvel=gx*(wxss-txx)
wall.vel.x(wpRight)=-Xvel
wall.vel.x(wpLeft)=Xvel
endif
if do_ySevro=true then
Yvel=gy*(wyss-tyy)
wall.vel.y(wpUp)=-Yvel
wall.vel.y(wpDown)=Yvel
endif
end
def wp_ini
wpDown=wall.find(1)
wpRight=wall.find(2)
wpUp=wall.find(3)
wpLeft=wall.find(4)
end
@wp_ini
def computer_chiCun
wlx=wall.pos.x(wpRight)-wall.pos.x(wpLeft)
wly=wall.pos.y(wpUp)-wall.pos.y(wpDown)
end
def compute_stress
computer_chiCun
wxss=-(wall.force.contact.x(wpRight)-wall.force.contact.x(wpLeft))*0.5/wly
wyss=-(wall.force.contact.y(wpUp)-wall.force.contact.y(wpDown))*0.5/wlx
end
def get_g(fac)
gx=0
gy=0
zongKNX=100e6*2*10
zongKNY=100e6*2*10
loop foreach ct wall.contactmap(wpLeft)
zongKNX =contact.prop(ct,"kn")
endloop
loop foreach ct wall.contactmap(wpRight)
zongKNX =contact.prop(ct,"kn")
endloop
loop foreach ct wall.contactmap(wpUp)
zongKNY =contact.prop(ct,"kn")
endloop
loop foreach ct wall.contactmap(wpDown)
zongKNY =contact.prop(ct,"kn")
endloop
gx=fac*wly/(zongKNX*global.timestep)
gy=fac*wlx/(zongKNY*global.timestep)
end
set fish callback -1.0 @sevro_walls
history id 1 @wxss
history id 2 @wyss
history id 3 @gx
history id 4 @gy
cycle 1
solve
save yuya
三、加自重
自重代码为,这里使用离心机原理,放大至现实80*40的模型。
restore yuya
wall delete walls range id 3
set gravity [9.8*80/wlx]
set fish callback -1.0 remove @sevro_walls
wall attribute vel 0
cycle 1
solve
save zizhong
结果为:
四、预留桩的位置
后面就是加基坑了,首先我们要用wall预留出生成桩的地方:
restore zizhong
[pile_pos_x=wlx*0.5*0.2]
[pile_length=25/(80/wlx)]
[pile_D=1/(80/wlx)]
wall generate box [pile_pos_x] [pile_pos_x pile_D] [wly*0.5-pile_length] [wly*0.5]
cycle 1
solve
save pileWall
平衡后为:
五、成桩
之后将桩范围内的颗粒以及wall删除掉,生成规则排列的颗粒,加pb胶结模拟桩,注意这里的桩参数,后面思考一下可能用CB模型更好,这样拉压模量就一致了。还有是强度部分,桩一般是拉破坏,这里就将抗剪强度设置的很大,只设置了抗拉强度,保证桩颗粒只能受拉破坏。
restore pileWall
ball delete range x [pile_pos_x] [pile_pos_x pile_D] y [wly*0.5-pile_length] [wly*0.5]
[rnum=4]
[rd=pile_D*0.5/float(rnum)]
ball generate box [pile_pos_x rd] [pile_pos_x pile_D-rd] [wly*0.5-pile_length rd] [wly*0.5-rd] ...
radius [rd] cubic group pile
ball attribute density 3.8e3 damp 0.7
wall delete walls range x [-wlx*0.5*0.9] [wlx*0.5*0.9] y [-wly*0.5*0.9] [wly]
contact groupbehavior and
cmat add 1 model linearpbond method deformability emod 15e9 kratio 1.5 pb_deformability emod 30e9 kratio 1.5 ...
property pb_coh 1e100 pb_ten 20e6 pb_fa 50 fric 0.5 range group pile
cmat apply range group pile
clean
contact method bond gap [rd*0.2]
cycle 1
solve
save pilejikeng
结果为:
六、开挖
之后就可以进行基坑开挖了:
restore pilejikeng
set mech age 0
ball attribute displacement multiply 0
[shendu=15/(80/wlx)]
ball delete range x [pile_pos_x pile_D] [wlx*0.5] y [wly*0.5-shendu] [wly*0.5] group pile not
cycle 1
solve
save result
计算前为:
这里没有运行到最终状态,最终桩破坏,基坑也发生了破坏: