用离散元做动力特性的比较少,前面使用比较经典的落球试验证实了离散元中模拟振动传递及其衰减的可行性(PFC模拟振动衰减)。本文采用桩作为波的输入装置,在桩底平面处布置测点来研究振动的衰减。基本的模拟顺序为:成样、自重、插桩、给参数、振动。
这里成样采用的分层压缩法,生成1*0.5的试样。
newdef parwidth=1.0height= width*0.5y_vel=10.0cengshu=8.0pengzhangxishu=5.0tbjipei=table.create("jipei")table(tbjipei,0.004)=0.1table(tbjipei,0.005)=0.12table(tbjipei,0.0055)=0.14table(tbjipei,0.006)=0.3table(tbjipei,0.0065)=0.6table(tbjipei,0.007)=0.8table(tbjipei,0.0075)=0.95table(tbjipei,0.008)=1poro=0.12;dengchaxian=0.02end@pardomain extent [-height*10] [height*10]set random 10001wall generate box [-width*0.5] [width*0.5] [-height*0.5] [height*(pengzhangxishu-1)-height*0.5] expand 1.5cmat default model linear method deformability emod 100e6 kratio 1.5def create_sampletb_ceng=table.create("ceng_poro")loop n(1,cengshu)dibuzuobiao=-height*0.5 height*(n-1)/cengshudingbuzuobiao=-height*0.5 height*(n)/cengshupengzhangGaoDu=dingbuzuobiao height*(pengzhangxishu-1)/cengshucommandwall delete walls range id 3wall create id 3 vertices [-width*0.5*1.5] [pengzhangGaoDu] [width*0.5*1.5] [pengzhangGaoDu]endcommandporoceng=poro;-(n-(cengshu 1)*0.5)*dengchaxian/(cengshu-1)table(tb_ceng,n)=porocengkeligeoup=table.size(tbjipei)Vs=height*width*(1-poroceng)/cengshucenggName=string.build("ceng%1",n)loop m(1,keligeoup)keligid=keligeoup 1-mvslocal=0if keligid=1 thenvslocal=Vs*table.y(tbjipei,keligid)elsevslocal=Vs*(table.y(tbjipei,keligid)-table.y(tbjipei,keligid-1))endifkelinum=vslocal/(math.pi*(table.x(tbjipei,keligid)*0.5)^2)commandball generate radius [table.x(tbjipei,keligid)*0.5] number [math.ceiling(kelinum)] box [-width*0.5] [width*0.5] ...[dibuzuobiao] [pengzhangGaoDu] group @cenggName tries 20000ball attribute density 2.7e3 damp 0.7endcommandendloopcommandwall attribute yvel [-y_vel] range id 3solve time [(pengzhangGaoDu-dingbuzuobiao)/y_vel]wall attribute yvel 0 range id 3cycle 2000endcommandendloopend@create_samplesolvesave sample
成样的结果为:

第二步是加自重:
restore sampleset gravity [80*9.8/width]cycle 1solvesave zizhongtemp1wall delete walls range id 3cycle 1solvesave zizhong
自重后的结果为:

第三步为插桩,这里修改了一下之前的插桩程序,将删除颗粒与生成wall放在一起,而且将删除颗粒的区域设置的比桩的区域大一点。这样的物理意义为是挖土插桩而不是将桩挤入土中。
restore zizhong[chicunbi=80/width][pile_pos_x=-width*0.5*0.5][pile_length=28/chicunbi][pile_bizhi=0.9][pile_rad=0.5/chicunbi]def get_max_postu_height=1e-100loop foreach bp ball.listball_shang_pos_y=ball.pos.y(bp) ball.radius(bp)if ball_shang_pos_y>tu_height thentu_height=ball_shang_pos_yendifendloopend@get_max_poswall generate box [pile_pos_x-pile_rad] [pile_pos_x pile_rad] [tu_height-pile_length*0.9] [tu_height pile_length*0.1] onewallball delete range x [pile_pos_x-pile_rad*1.3] [pile_pos_x pile_rad*1.3] y [tu_height-pile_length*0.9] [tu_height pile_length*0.1]cycle 1solvesave addpile
插入桩的状态为:

最后一步为桩的振动激励:
restore canshuball attribute displacement multiply 0set mech age 0[vel_max=-2e-3][wp_pile=wall.find(5)]def addwallvelwhilesteppingpinlv=1 199*mech.agey_vel=vel_max*math.sin(2*math.pi*pinlv*mech.age math.pi)wall.vel.y(wp_pile)=y_velend@addwallvel[bp1=ball.near(pile_pos_x 5/chicunbi,tu_height-pile_length*0.9)][bp2=ball.near(pile_pos_x 13.5/chicunbi,tu_height-pile_length*0.9)][bp3=ball.near(pile_pos_x 25/chicunbi,tu_height-pile_length*0.9)][bp4=ball.near(pile_pos_x 39/chicunbi,tu_height-pile_length*0.9)][ball.group(bp1,2)="jiance"][ball.group(bp2,2)="jiance"][ball.group(bp3,2)="jiance"][ball.group(bp4,2)="jiance"]def jiancewhilesteppingtime=mech.ageweiyi1_y=ball.disp.y(bp1)weiyi2_y=ball.disp.y(bp2)weiyi3_y=ball.disp.y(bp3)weiyi4_y=ball.disp.y(bp4)sudu1_y=ball.vel.y(bp1)sudu2_y=ball.vel.y(bp2)sudu3_y=ball.vel.y(bp3)sudu4_y=ball.vel.y(bp4)endhistory id 1 @timehistory id 2 @y_velhistory id 3 @weiyi1_yhistory id 4 @weiyi2_yhistory id 5 @weiyi3_yhistory id 6 @weiyi4_yhistory id 7 @sudu1_yhistory id 8 @sudu2_yhistory id 9 @sudu3_yhistory id 10 @sudu4_y[baocunpinlv=0.1] ;;这个是多长时间保存一个save文件[time_record=mech.age-100][count=1]def savefileif mech.age-time_record > baocunpinlv thenfilename=string.build("jieguo%1",count)commandsave @filenameendcommandtime_record=mech.agecount =1endifendset fish callback -1.0 @savefilesolve time 2save result
这里给桩施加一个余弦速度,可以设置峰值,这里以扫频的方式输入,即频率在一秒内从1HZ增加到200HZ。
下面为0.3s内速度的变化趋势,可以看出还是满足我们的需求的。

测点布置为:

先看看1s内的时程曲线,可以看出距离越远,其振动是越弱的。而且传递的滞后性也很明显。

但是到0.3s左右的时候,随着桩频率的增加,土体的振动也增加,而且最后的速度幅值超过了输入幅值

后面算到2s左右,振动逐渐变的类似于交通荷载振动的感觉,不知道其内在机理是什么,如果有朋友懂的话可以留言交流一下。

看一下速度场:
0.2s左右还是比较正常的波传递的图。

0.5s的时候,激励的频率逐渐提高,很明显会在模型中出现波谷了。

算到2s的时候基本上就比较乱了,我的专业知识也不足以帮助我分析了。

将时程图做傅里叶变化得到频域图。
下图为桩输入的频域曲线

下图为测点4的频域曲线

可以发现、。。。。。。嗯。。。什么也看不出来,分析不出啥玩意,求动力学专家指导交流。