附结构动力学计算程序,结构力学结构动力计算_第1页
附结构动力学计算程序,结构力学结构动力计算_第2页
附结构动力学计算程序,结构力学结构动力计算_第3页
附结构动力学计算程序,结构力学结构动力计算_第4页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

%********************************************************************%子空间迭代%********************************************************************FP1=fopen('input.txt','rt');%打开数据输入文本niter=fscanf(FP1,'%f',1);%读入最多迭代次数nitern=fscanf(FP1,'%f',1);%读入自由度数目ncolumn=fscanf(FP1,'%f',1);%读入假设振型阶数columnerr=fscanf(FP1,'%f',1);%读入误差限errA0=xlsread('假设振型');%从excle读入假设振型M=xlsread('质量矩阵');%从excle读入质量矩阵K=xlsread('刚度矩阵');%从excle读入刚度矩阵forj=1:columnA0(:,j)=A0(:,j)/max(abs(A0(:,j)));%将假设振型A0基准化end%----开始迭代foriter=1:niter%----第iter次迭代F0=A0;F1=K\M*F0;forj=1:columnF1(:,j)=F1(:,j)/max(abs(F1(:,j)));endM1=F1'*M*F1;K1=F1'*K*F1;[V1,W1]=eig(M1\K1);forj=1:columna1(:,j)=V1(:,j)/V1(j,j);endA1=F1*a1;forj=1:columnA1(:,j)=A1(:,j)/max(abs(A1(:,j)));end%----精度判断fori=1:nforj=1:columnifabs(A1(i,j)-A0(i,j))>=errA0=A1;elseifabs(A1(i,j)-A0(i,j))<errbreakendendendendendW=sqrt(diag(W1));A=A1;%----输出自振特性xlswrite('自振特性.xlsx',A,1,'A2');%将数据写入xlsx文件中,数据的开始位置为sheet1,A2xlswrite('自振特性.xlsx',W,2,'A2');%将数据写入xlsx文件中,数据的开始位置为sheet2,A2%**************************************************************************%振型叠加法%**************************************************************************FP1=fopen('input.txt','rt');%打开数据输入文本dt=fscanf(FP1,'%f',1);%读入时间步长dtnt=fscanf(FP1,'%f',1);%读入计算次数ntn=fscanf(FP1,'%f',1);%读入自由度数目nnmode=fscanf(FP1,'%f',1);%读入选取振型数目nmodep=fscanf(FP1,'%f',1);%读入外力荷载参数wbar=fscanf(FP1,'%f',1);%读入外力荷载频率rdamp=xlsread('阻尼比');%从excle读入阻尼比M=xlsread('质量矩阵');%从excle读入质量矩阵K=xlsread(刚度矩阵');%从excle读入刚度矩阵A=xlsread('振型');%从excle读入前nmode阶振型W=xlsread('频率');%从excle读入前nmode阶频率%----确定与正则坐标对应的广义荷载向量fori=1:nt;forj=1:n;ifi>=0&i<=nt;Q(j,i)=p*sin(i*dt*wbar);end;end;end;%----将振型进行正则化处理Mgnrl=diag(A'*M*A);fori=1:nmodeforj=1:nAbar(j,i)=A(j,i)/sqrt(Mgnrl(i));endend%----本程序以例4-5为实例,基于其正则坐标响应的解析式,写出其稳态响应的程序,对于无解析式的荷载工况,此处需改为杜哈美数值积分程序fori=1:nmodeD(i)=1/sqrt((1-wbar^2/W(i)^2)^2+(2*rdamp(i)*wbar/W(i))^2);cta(i)=atan((2*rdamp(i)*wbar/W(i))/(1-wbar^2/W(i)^2));endfori=1:nmodeforj=1:ntTbar(i,j)=p*Abar(:,i)'*ones(n,1)*D(i)*sin(j*wbar*dt-cta(i))/W(i)^2;endend%----体系的稳态响应fori=1:nforj=1:ntd(i,j)=Abar(i,:)*Tbar(:,j);endend%----输出稳态响应i=1:nt;xlswrite('稳态响应.xlsx',d(:,i),1,'A1');%将数据写入xlsx文件中,数据的开始位置为sheet1,A1%**************************************************************************%newmark-β法%**************************************************************************FP1=fopen('input.txt','rt');%打开数据输入文件dt=fscanf(FP1,'%f',1);%读入时间步长dtnt=fscanf(FP1,'%f',1);%读入计算次数ntn=fscanf(FP1,'%f',1);%读入自由度数目nalfa=fscanf(FP1,'%f',1);%读入积分控制参数alfadta=fscanf(FP1,'%f',1);%读入积分控制参数dtaRayleigha0=fscanf(FP1,'%f',1);%读入瑞利阻尼待定常数Rayleigha0Rayleigha1=fscanf(FP1,'%f',1);%读入瑞利阻尼待定常数Rayleigha1p=fscanf(FP1,'%f',1);%读入外力荷载参数wbar=fscanf(FP1,'%f',1);%读入外力荷载频率M=xlsread('质量矩阵');%从excle上读入质量矩阵K=xlsread('刚度矩阵');%从excle上读入刚度矩阵C=Rayleigha0*M+Rayleigha1*K;%定义阻尼矩阵C%----外力荷载fori=1:ntforj=1:nifi>0&&i<=ntQ(j,i)=p*sin(i*dt*wbar);endendend%----计算动力响应b0=1/(alfa*dt^2);b1=dta/(alfa*dt);b2=1/(alfa*dt);b3=1/(2*alfa)-1;b4=dta/alfa-1;b5=dt/2*(dta/alfa-2);d(:,1)=zeros(n,1);v(:,1)=zeros(n,1);a(:,1)=M\(Q(:,1)-C*v(:,1)+K*d(:,1));Keff=b0*M+b1*C+K;fori=2:ntQeff=Q(:,i)+M*(b0*d(:,i-1)+b2*v(:,i-1)+b3*a(:,i-1))+C*(b1*d(:,i-1)+b4*v(:,i-1)+b5*a(:,i-1));d(:,i)=Keff\Qeff;a(:,i)=b0*(d(:,i)-d(:,i-1))-b2*v(:,i-1)-b3*a(:,i-1);v(:,i)=b1*(d(:,i)-d(:,i-1))-b4*v(:,i-1)-b5*a(:,i-1);end%----输出动力响应i=1:nt;xlswrite('动力响应.xlsx',d(:,i),1,'A1');%将数据写入xlsx文件中,数据的开始位置为sheet1,A1xlswrite('动力响应.xlsx',v(:,i),2,'A1');%将数据写入xlsx文件中,数据的开始位置为sheet2,A1xlswrite('动力响应.xlsx',a(:,i),3,'A1');%将数据写入xlsx文件中,数据的开始位置为sheet3,A1%**************************************************************************%wilson-θ法%**************************************************************************FP1=fopen('input.txt','rt');%打开数据输入文件dt=fscanf(FP1,'%f',1);%读入时间步长dtnt=fscanf(FP1,'%f',1);%读入计算次数ntn=fscanf(FP1,'%f',1);%读入自由度数目ncta=fscanf(FP1,'%f',1);%读入参数ctaRayleigha0=fscanf(FP1,'%f',1);%读入瑞利阻尼待定常数Rayleigha0Rayleigha1=fscanf(FP1,'%f',1);%读入瑞利阻尼待定常数Rayleigha1p=fscanf(FP1,'%f',1);%读入外力荷载参数wbar=fscanf(FP1,'%f',1);%读入外力荷载频率M=xlsread('质量矩阵');%从excle上读入质量矩阵K=xlsread('刚度矩阵');%从excle上读入刚度矩阵C=Rayleigha0*M+Rayleigha1*K;%定义阻尼矩阵C%----外力荷载fori=1:ntforj=1:nifi>0&&i<=ntQ(j,i)=p*sin(i*dt*wbar);endendend%----计算动力响应b0=6/(cta^2*dt^2);b1=3/(cta*dt);b2=6/(cta*dt);b3=cta*dt/2;b4=6/(cta^3*dt^2);b5=-6/(cta^2*dt);b6=1-3/cta;b7=dt/2;b8=dt^2/6;d(:,1)=zeros(n,1);v(:,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论