matlab 矩阵位移法编程 结构力学,matlab 矩阵位移法编程 结构力学
矩陣位移法編程大作業
(091210211)
一、編制原理
本程序的原理是基于結構力學矩陣位移法原理,以結構結點位移作基本未知量,將要分析的結構拆成已知節點力—結點力位移關系的單跨梁集合,通過強令結構發生待定的基本未知位移,在各個單跨梁受力分析結果的基礎上通過保證結構平衡建立位移法的線性方程組,從而求得基本未知量。
二、程序說明
本程序是計算3層11跨框架右側結點的位移和彎矩的程序,編譯過程是按照矩陣位移法的先處理法進行的。首先將結構桿件的交匯點作為結點,共有36個結點和108個位移編號,然后根據梁、柱、斜桿的不同分別建立單元剛度矩陣,然后轉換為整體坐標系下的剛度矩陣,然后將所有桿件的單元剛度矩陣整合成為總體剛度矩陣,在進行整合時連續運用for函數,最終形成108階的總體剛度矩陣。然后通過對荷載的分析自己確定出荷載矩陣,直接寫進程序。這樣就可以把36個結點的108個位移求得,然后再利用各個單元的單元剛度矩陣和所得的位移求得單元桿件的內力。 離散化編號如下圖:
三、算法流程
離散結構化編號 確定梁、柱、斜桿在整體 坐標系下的剛度矩陣 先處理法把各個桿件的單元剛度矩陣整合成總體剛度矩陣 利用桿件單元剛度矩陣和所求位移求內力 單元分析 建立梁、柱、斜桿的局部坐標系下的單元剛度矩陣 確定綜合結點荷載矩陣 建立方程,求解位移
輸出結果 四、源代碼
結束 %結構力學大作業 3層11跨框架矩陣位移法編程 王貝 091210211 h=input('輸入單層高h:'); L=input('輸入單跨度L:');
EIc=input('輸入柱子的抗彎剛度EIc:'); EAc=input('輸入柱子的抗壓剛度EAc:'); EIb=input('輸入梁的抗彎剛度EIb:'); EAb=input('輸入梁的抗壓剛度EAb:'); EIo=input('輸入斜桿的抗彎剛度EIo:'); EAo=input('輸入斜桿的抗壓剛度EAo:'); q=input('輸入側向均布荷載集度q:'); T1=[1,0,0,0,0,0; 0,1,0,0,0,0; 0,0,1,0,0,0; 0,0,0,1,0,0; 0,0,0,0,1,0;
0,0,0,0,0,1];%角度為0°的轉換矩陣 T2=[0,1,0,0,0,0; -1,0,0,0,0,0; 0,0,1,0,0,0; 0,0,0,0,1,0; 0,0,0,-1,0,0;
0,0,0,0,0,1];%角度為90°的轉換矩陣 x=atan(h/L);
T=[cos(x),sin(x),0,0,0,0; -sin(x),cos(x),0,0,0,0; 0,0,1,0,0,0;
0,0,0,cos(x),sin(x),0; 0,0,0,-sin(x),cos(x),0;
0,0,0,0,0,1];%斜桿的轉換矩陣 T3=T;
%梁的單元剛度矩陣
kb0=[EAb/L 0 0 -EAb/L 0 0;
0 12*EIb/(L*L*L) 6*EIb/(L*L) 0 -12*EIb/(L*L*L) 6*EIb/(L*L); 0 6*EIb/(L*L) 4*EIb/L 0 -6*EIb/(L*L) 2*EIb/L; -EAb/L 0 0 EAb/L 0 0;
0 -12*EIb/(L*L*L) -6*EIb/(L*L) 0 12*EIb/(L*L*L) -6*EIb/(L*L);
0 6*EIb/(L*L) 2*EIb/L 0 -6*EIb/(L*L) 4*EIb/L]; %柱子的單元剛度矩陣
kc0=[EAc/h 0 0 -EAc/h 0 0;
0 12*EIc/(h*h*h) 6*EIc/(h*h) 0 -12*EIc/(h*h*h) 6*EIc/(h*h); 0 6*EIc/(h*h) 4*EIc/h 0 -6*EIc/(h*h) 2*EIc/h; -EAc/h 0 0 EAc/h 0 0;
0 -12*EIc/(h*h*h) -6*EIc/(h*h) 0 12*EIc/(h*h*h) -6*EIc/(h*h); 0 6*EIc/(h*h) 2*EIc/h 0 -6*EIc/(h*h) 4*EIc/h;]; %斜桿的單元剛度矩陣 H=sqrt(h*h+L*L);
ko0=[EAo/H 0 0 -EAo/H 0 0;
0 12*EIo/(H*H*H) 6*EIo/(H*H) 0 -12*EIo/(H*H*H) 6*EIo/(H*H); 0 6*EIo/(H*H) 4*EIo/H 0 -6*EIo/(H*H) 2*EIo/H; -EAo/H 0 0 EAo/H 0 0;
0 -12*EIo/(H*H*H) -6*EIo/(H*H) 0 12*EIo/(H*H*H) -6*EIo/(H*H); 0 6*EIo/(H*H) 2*EIo/H 0 -6*EIo/(H*H) 4*EIo/H]; kb=T1'*kb0*T1;%總體坐標下梁的單元剛度矩陣 kc=T2'*kc0*T2;%總體坐標下柱子的單元剛度矩陣 ko=T3'*ko0*T3;%總體坐標斜桿的單元剛度矩陣
X=zeros(108,108);Y=zeros(108,108);Z=zeros(108,108);%定義108階0矩陣 K1=zeros(108,108);K2=zeros(108,108);K3=zeros(108,108); K4=zeros(108,108);K5=zeros(108,108);K6=zeros(108,108); K7=zeros(108,108);K8=zeros(108,108);K9=zeros(108,108); %把梁桿單元矩陣整合到總體剛度矩陣的循環語句 for ii=1:11
X(3*ii-2:3*ii+3,3*ii-2:3*ii+3)=kb; K1=K1+X;X=zeros(108,108); end
for ii=13:23
Y(3*ii-2:3*ii+3,3*ii-2:3*ii+3)=kb; K1=K1+Y;Y=zeros(108,108); end
for ii=25:35
Z(3*ii-2:3*ii+3,3*ii-2:3*ii+3)=kb; K1=K1+Z;Z=zeros(108,108); end
%把柱桿單元矩陣整合到總體剛度矩陣的循環語句 for jj=1:36
K2(3*jj-2:3*jj,3*jj-2:3*jj)=kc(4:6,4:6); end
for jj=1:24
K3(3*jj-2:3*jj,3*jj-2:3*jj)=kc(1:3,1:3); end
for jj=1:24
K4(3*jj-2:3*jj,3*jj+34:3*jj+36)=kc(1:3,4:6); end
for jj=1:24
K5(3*jj+34:3*jj+36,3*jj-2:3*jj)=kc(4:6,1:3); end
%把斜桿桿單元矩陣整合到總體剛度矩陣的循環語句 for gg=3:12:27
K6(3*gg-2:3*gg,3*gg-2:3*gg)=ko(4:6,4:6); end
for gg=2:12:14
K7(3*gg-2:3*gg,3*gg-2:3*gg)=ko(1:3,1:3); end
for gg=2:12:14
K8(3*gg-2:3*gg,3*gg+37:3*gg+39)=ko(1:3,4:6); end
for gg=2:12:14
K9(3*gg+37:3*gg+39,3*gg-2:3*gg)=ko(4:6,1:3); end
K=K1+K2+K3+K4+K5+K6+K7+K8+K9;%總體剛度矩陣
P=zeros(108,1);P(1,1)=h*q;P(37,1)=h*q;P(73,1)=h*q/2;P(75,1)=q*h*h/12; A=K\\P;%結構位移 B1=kb*A(103:108,1); B2=kb*A(67:72,1); B3=kb*A(31:36,1);
D1=zeros(6,1);D1(1:3,1)=A(70:72,1);D1(4:6,1)=A(106:108,1); D2=zeros(6,1);D2(1:3,1)=A(34:36,1);D2(4:6,1)=A(70:72,1); C1=kc*D1;C2=kc*D2;C3=kc(4:6,4:6)*A(34:36,1);
M1(1,1)=B1(6,1);M2(1,1)=C1(6,1);M3(1,1)=B2(6,1);M4(1,1)=C2(6,1); M5(1,1)=C1(3,1);M6(1,1)=B3(6,1);M7(1,1)=C3(3,1);M8(1,1)=C2(3,1);
for i=1:3
m=36*i-2;
fprintf('第%d層最右側節點的位移是%d\\n',i,A(m,1)) end
fprintf('第1層最右側節點左側桿的彎矩是%f\\n',M6) fprintf('第1層最右側節點下側桿的彎矩是%f\\n',M7) fprintf('第1層最右側節點上側桿的彎矩是%f\\n',M8) fprintf('第2層最右側節點左側桿的彎矩是%f\\n',M3) fprintf('第2層最右側節點下側桿的彎矩是%f\\n',M4) fprintf('第2層最右側節點上側桿的彎矩是%f\\n',M5) fprintf('第3層最右側節點左側桿的彎矩是%f\\n',M1) fprintf('第3層最右側節點下側桿的彎矩是%f\\n',M2)
五、試算算例
總結
以上是生活随笔為你收集整理的matlab 矩阵位移法编程 结构力学,matlab 矩阵位移法编程 结构力学的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【测试工具】在linux测试环境访问禅道
- 下一篇: bootstrap里col-xs , c