FEM-Course-Matlab/12+13框架结构动力分析(模态分析+时程分析)/NewmarkBeta1.m

44 lines
1.6 KiB
Matlab

function [uu,vv,aa,ttt]=NewmarkBeta1(t,dt,delta,beta,M,C,K,acc_x,Constr)
n=length(t);
beta=0.25;
gamma=0.5;
a0=1/(beta*dt^2);
a1=gamma/(beta*dt);
a2=1/(beta*dt);
a3=1/(2*beta)-1;
a4=gamma/beta-1;
a5=(dt/2)*(gamma/beta-2);
a6=dt*(1-gamma);
a7=dt*gamma;
uu(:,1)=zeros(size(M,1),1);;%位移初始值
vv(:,1)=zeros(size(M,1),1);%速度初始值
aa(:,1)=zeros(size(M,1),1);%加速度初始值
P(:,1)=zeros(size(M,1),1); %荷载初始值
P1(:,1)=zeros(size(M,1),1);%等效荷载初始值
% I=ones(size(M,1),1);; %6*1单位阵
I=zeros(size(M,1),1);; %6*1单位列向量
for i=1:size(K,1)/3
I(3*(i-1)+1)=1;%确定惯性力施加的自由度
end
K1=K+a0*M+a1*C; %形成等效刚度矩阵
for i=1:n-1
P(:,i+1)=-M*I*acc_x(i+1);%t(i+1)时刻结构的荷载
P1(:,i+1)=P(:,i+1)+M*(a0*uu(:,i)+a2*vv(:,i)+a3*aa(:,i))+C*(a1*uu(:,i)+a4*vv(:,i)+a5*aa(:,i));%t(i+1)时刻结构的等效荷载
% % %施加约束--乘大数法;当代入结构整体的刚度矩阵、质量矩阵、阻尼矩阵需要施加边界约束
% for iConstr=1:size(Constr,1)
% for j=2:4
% if ~isnan(Constr(iConstr,j))
% K1(3*Constr(iConstr,1 )+j-4,3*Constr(iConstr,1 )+j-4)=...
% 1e12*K1(3*Constr(iConstr,1 )+j-4,3*Constr(iConstr,1 )+j-4);
% P1(3*Constr(iConstr,1)+j-4)=Constr(iConstr,j)*...
% K1(3*Constr(iConstr,1 )+j-4,3*Constr(iConstr,1)+j-4);
% end
% end
% end
uu(:,i+1)=(K1)\P1(:,i+1);%t(i+1)时刻结构的位移
aa(:,i+1)=a0*(uu(:,i+1)-uu(:,i))-a2*vv(:,i)-a3*aa(:,i);%t(i+1)时刻结构的加速度
vv(:,i+1)=vv(:,i)+a6*aa(:,i)+a7*aa(:,i+1);%t(i+1)时刻结构的速度
ttt(i+1)=dt*(i-1);
end