最近接触到一种隔震方式叫摩擦摆隔震系统(Friction Pendulum System)。
其最简单的模型如下图所示:
建筑基座端部为一个滑块,可以在一个弧形槽里滑动。当发生地震时,滑块通过滑动来减轻建筑响应,通过摩擦耗散地震能量。同时由于重力作用,滑块具有回复力。弧形槽半径r,滑动面摩擦系数为,滑块质量为,到为建筑各层质量,为各层刚度与阻尼系数。
首先,滑块水平、竖直方向坐标与转角之间的关系:
在滑动状态下,取弧形槽对滑块的水平作用力为,弧形槽对滑块的垂直作用力为,其值分别为:
取弧形槽对滑块的切向作用力为,弧形槽对滑块的径向作用力为,其值分别为:
或者
滑动状态下,根据库伦摩擦公式:
则有:
把方程1和方程6带入方程2,即可得到滑块的运动微分方程:
其中,为符号函数,用于描述摩擦力与运动方向的关系。而
中间层的运动微分方程为:
顶层质量点的运动微分方程为:
由方程7、11、12组成的方程组即为该摩擦摆隔震系统的微分方程组。
上述方程是建立在滑块滑动的情况下的,在运动过程中,当滑块受到的切向力小于滑动摩擦力时,即时,且滑块速度为0时,滑块则不会滑动,相当于固定基础,此时方程7将不存在。
求解该方程组的Matlab代码如下:
1131function [ rt,rd,rv,ra,rrd] = solve_fps(floordata,r,u,dt,ag)2% *SOLVE_FPS 摩擦摆隔振系统求解函数*34% floordata:楼层参数,其格式如下,5% {[m1],[k1],[c1]6% [m1],[k1],[c1]7% [m2],[k2],[c2]8% ...9% [mn],[kn],[cn]}10%11% r:摩擦摆半径;12% u:摩擦系数;13% dt:地震时程采样时间间隔;14% ag:地震时程数据,单位为g;15% 返回值:16% rt:时刻数组;17% rd:响应位移时程;18% rv:响应速度;19% ra:响应加速度;20% rrd:层间位移;2122nfloor=size(floordata,1); %楼层数23ag=ag*9.8; %乘以g24tg=0:dt:dt*length(ag)-dt; %时间向量25m=floordata(:,1); %m=各层质量26m=cell2mat(m);27k=floordata(2:end,2); %k=各层刚度,28k=cell2mat(k);29k=[1;k];30k=k*1000; %原刚度单位为kN,固乘以1000;31c=floordata(2:end,3); %c=各层阻尼系数32c=cell2mat(c);33c=[1;c];3435m1=m(1); %滑块质量36M=sum(m(2:end)); %上层总质量3738init=zeros(nfloor*2,1); %初始值039[rt,ry]=ode45(@wffc_fps,tg,init); %龙格库塔法求解4041rd=ry(:,1:2:2*nfloor); %各层位移42rv=ry(:,2:2:2*nfloor); %各层速度4344%根据计算得到的位移、速度,带入方程,计算相对加速度响应45ra=zeros(length(rt),nfloor);46for tn=1:length(rt)47 dy=wffc_fps(rt(tn),ry(tn,:));48 ra(tn,:)=dy(2:2:2*nfloor);49end5051ra(:,1)=r*cos(rd(:,1)).*ra(:,1)-r*sin(rd(:,1)).*rv(:,1).^2;52rv(:,1)=r*cos(rd(:,1)).*rv(:,1);53rd(:,1)=r*sin(rd(:,1));545556% %相对加速度加上地面加速度,得到绝对加速度57for i=1:nfloor58 ra(:,i)=ra(:,i)+ag;59end6061rrd=rd(:,2:end)-rd(:,1:end-1);62rrd=[rd(:,1),rrd];6364 function dy=wffc_fps(t,y)65 % n 自由度系统微分方程组66 dy=zeros(nfloor*2,1);67 g=9.8;68 uy=interp1(tg,ag,t,'linear'); %根据线性插值,获取对应时间的地震加速度值6970 % 中间参数71 sgn=sign(y(2));72 siny=sin(y(1));73 cosy=cos(y(1));74 A1=1+(M/m1)*(u*sgn*cosy+siny)*siny;75 A2=u*sgn+(M/m1)*(u*sgn*cosy+siny)*cosy;76 A3=(g/r)*((M+m1)/m1)*(u*sgn*cosy+siny);7778 %微分方程组79 dy(1)=y(2);80 dy(2)=uy*(u*sgn*siny-cosy)/r/A1+(k(2)*(r*siny-y(3))+c(2)*(r*y(2)*cosy-y(4)))*(u*sgn*siny-cosy)/m1/r/A1-A3/A1-A2/A1*y(2)^2;8182 %计算切向力与法向力,用于判断滑块是否滑动83 G=(m1+M)*g+r*M*(cosy*y(2)^2+siny*dy(2));84 P=-G*siny-(k(2)*(r*siny-y(3))+c(2)*(r*y(2)*cosy-y(4)))*cosy-m1*uy*cosy;85 N=G*cosy-(m1*uy+k(2)*(r*siny-y(3))+c(2)*(r*y(2)*cosy-y(4)))*siny+m1*r*y(2)^2;86 F=u*N;87 %如果滑块没有滑动,则直接设置其速度与加速度为088 if abs(y(2))<1e-5&&abs(P)<=abs(F)89 dy(1)=0;90 dy(2)=0;91 end9293 %如果仅有两层,则第2层就是顶层。94 if nfloor==295 dy(3)=y(4);96 dy(4)=(-m(2)*uy-c(2)*(y(4)-r*y(2)*cosy)-k(2)*(y(3)-r*siny))/m(2);97 end98 99 if nfloor>2100 dy(3)=y(4);101 dy(4)=(-m(2)*uy-c(3)*(y(4)-y(6))-c(2)*(y(4)-r*y(2)*cosy)-k(3)*(y(3)-y(5))-k(2)*(y(3)-r*siny))/m(2);102103 for fn=3:nfloor104 dy(fn*2-1)=y(fn*2);105 if fn==nfloor106 dy(fn*2)=(-m(fn)*uy-c(fn)*(y(2*fn)-y(2*fn-2))-k(fn)*(y(2*fn-1)-y(2*fn-3)))/m(fn);107 else108 dy(fn*2)=(-m(fn)*uy-c(fn+1)*(y(2*fn)-y(2*fn+2))-c(fn)*(y(2*fn)-y(2*fn-2))-k(fn+1)*(y(2*fn-1)-y(2*fn+1))-k(fn)*(y(2*fn-1)-y(2*fn-3)))/m(fn);109 end110 end111 end112 end113end为了验证上述求解的正确性,用DYNA做了一个小例子,进行时程分析。
如图所示,基座半径为1m,滑块质量186kg,摩擦系数为0.1。基础之上共有5层,每层质量都与基座相同。每层都用质量点表示,各层之间通过离散梁单元连接,梁单元使用材料模型为LINEAR_ELASTIC_DISCRETE_BEAM,设置其沿水平方向的刚度即横向刚度为186000N/m,阻尼系数为450,沿重力方向刚度取大三个数量级,阻尼系数也大两个数量级。
通过下面的对比可以看出,DYNA的计算结果几乎与MATLAB算出来的一致。
有几点可能的原因导致结算结果的轻微偏差:
根据上述内容,可编写如下程序,加入了没有隔振系统的计算结果,输出任意层的位移、加速度、层间位移等,可以对比隔振效果。