边坡、隧道和基坑作为岩土三大工程问题,前面讲述了前两个工况的一般思路,这里讲解一下桩支护基坑的数值模拟。
模拟步骤前面依然是成样、预压和加自重,这里和隧道一样。
一、成样
newdef parwidth=1.5height=width*0.5rdmax=0.45e-3*10rdmin=0.3e-3*10poro=0.08emod=90e6 ;Effective moduluskratio=1.5 ;Normal-to-shear stiffness ratioend@pardomain extent [-height*3] [height*3]set random 10001wall generate box [-width*0.5] [width*0.5] [-height*0.5] [height*0.5] expand 1.5ball 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 @kratioball attribute density 2.7e3 damp 0.7cycle 2000 calm 50solvesave 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-ballcmat apply[txx=-1e4][tyy=-1e4][sevro_factor=0.5][do_xSevro=true][do_ySevro=true][sevro_freq=100][timestepNow=global.step-1]def sevro_wallscompute_stressif timestepNow<global.step thenget_g(sevro_factor)timestepNow =sevro_freqendifif do_xSevro=true thenXvel=gx*(wxss-txx)wall.vel.x(wpRight)=-Xvelwall.vel.x(wpLeft)=Xvelendifif do_ySevro=true thenYvel=gy*(wyss-tyy)wall.vel.y(wpUp)=-Yvelwall.vel.y(wpDown)=Yvelendifenddef wp_iniwpDown=wall.find(1)wpRight=wall.find(2)wpUp=wall.find(3)wpLeft=wall.find(4)end@wp_inidef computer_chiCunwlx=wall.pos.x(wpRight)-wall.pos.x(wpLeft)wly=wall.pos.y(wpUp)-wall.pos.y(wpDown)enddef compute_stresscomputer_chiCunwxss=-(wall.force.contact.x(wpRight)-wall.force.contact.x(wpLeft))*0.5/wlywyss=-(wall.force.contact.y(wpUp)-wall.force.contact.y(wpDown))*0.5/wlxenddef get_g(fac)gx=0gy=0zongKNX=100e6*2*10zongKNY=100e6*2*10loop foreach ct wall.contactmap(wpLeft)zongKNX =contact.prop(ct,"kn")endlooploop foreach ct wall.contactmap(wpRight)zongKNX =contact.prop(ct,"kn")endlooploop foreach ct wall.contactmap(wpUp)zongKNY =contact.prop(ct,"kn")endlooploop foreach ct wall.contactmap(wpDown)zongKNY =contact.prop(ct,"kn")endloopgx=fac*wly/(zongKNX*global.timestep)gy=fac*wlx/(zongKNY*global.timestep)endset fish callback -1.0 @sevro_wallshistory id 1 @wxsshistory id 2 @wysshistory id 3 @gxhistory id 4 @gycycle 1solvesave yuya
三、加自重
自重代码为,这里使用离心机原理,放大至现实80*40的模型。
restore yuyawall delete walls range id 3set gravity [9.8*80/wlx]set fish callback -1.0 remove @sevro_wallswall attribute vel 0cycle 1solvesave 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 1solvesave pileWall
平衡后为:
.png?imageView2/0)
五、成桩
之后将桩范围内的颗粒以及wall删除掉,生成规则排列的颗粒,加pb胶结模拟桩,注意这里的桩参数,后面思考一下可能用CB模型更好,这样拉压模量就一致了。还有是强度部分,桩一般是拉破坏,这里就将抗剪强度设置的很大,只设置了抗拉强度,保证桩颗粒只能受拉破坏。
restore pileWallball 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 pileball attribute density 3.8e3 damp 0.7wall delete walls range x [-wlx*0.5*0.9] [wlx*0.5*0.9] y [-wly*0.5*0.9] [wly]contact groupbehavior andcmat 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 pilecmat apply range group pilecleancontact method bond gap [rd*0.2]cycle 1solvesave pilejikeng
结果为:

六、开挖
之后就可以进行基坑开挖了:
restore pilejikengset mech age 0ball 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 notcycle 1solvesave result
计算前为:

这里没有运行到最终状态,最终桩破坏,基坑也发生了破坏:
