最近接触到一种隔震方式叫摩擦摆隔震系统(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 摩擦摆隔振系统求解函数*
3
4% 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:层间位移;
21
22nfloor=size(floordata,1); %楼层数
23ag=ag*9.8; %乘以g
24tg=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];
34
35m1=m(1); %滑块质量
36M=sum(m(2:end)); %上层总质量
37
38init=zeros(nfloor*2,1); %初始值0
39[rt,ry]=ode45(@wffc_fps,tg,init); %龙格库塔法求解
40
41rd=ry(:,1:2:2*nfloor); %各层位移
42rv=ry(:,2:2:2*nfloor); %各层速度
43
44%根据计算得到的位移、速度,带入方程,计算相对加速度响应
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);
49end
50
51ra(:,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));
54
55
56% %相对加速度加上地面加速度,得到绝对加速度
57for i=1:nfloor
58 ra(:,i)=ra(:,i)+ag;
59end
60
61rrd=rd(:,2:end)-rd(:,1:end-1);
62rrd=[rd(:,1),rrd];
63
64 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'); %根据线性插值,获取对应时间的地震加速度值
69
70 % 中间参数
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);
77
78 %微分方程组
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;
81
82 %计算切向力与法向力,用于判断滑块是否滑动
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 %如果滑块没有滑动,则直接设置其速度与加速度为0
88 if abs(y(2))<1e-5&&abs(P)<=abs(F)
89 dy(1)=0;
90 dy(2)=0;
91 end
92
93 %如果仅有两层,则第2层就是顶层。
94 if nfloor==2
95 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 end
98
99 if nfloor>2
100 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);
102
103 for fn=3:nfloor
104 dy(fn*2-1)=y(fn*2);
105 if fn==nfloor
106 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 else
108 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 end
110 end
111 end
112 end
113end
为了验证上述求解的正确性,用DYNA做了一个小例子,进行时程分析。
如图所示,基座半径为1m,滑块质量186kg,摩擦系数为0.1。基础之上共有5层,每层质量都与基座相同。每层都用质量点表示,各层之间通过离散梁单元连接,梁单元使用材料模型为LINEAR_ELASTIC_DISCRETE_BEAM,设置其沿水平方向的刚度即横向刚度为186000N/m,阻尼系数为450,沿重力方向刚度取大三个数量级,阻尼系数也大两个数量级。
通过下面的对比可以看出,DYNA的计算结果几乎与MATLAB算出来的一致。
有几点可能的原因导致结算结果的轻微偏差:
根据上述内容,可编写如下程序,加入了没有隔振系统的计算结果,输出任意层的位移、加速度、层间位移等,可以对比隔振效果。