導讀:大家好,我是SimPC博士,主要從事工程結構抗震及減隔震研究,玻璃成型熱工設備流動及傳熱研究,玻璃材料力學性能研究。精通有限元等數值算法的實現,有限元軟件二次開發,數據處理,偏微分方程求解,優化算法,GUI界面開發等。有多項科研成果,其中SCI論文4篇,EI3篇,專利2篇。
近日我注冊并認證了仿真秀專欄,將在仿真秀官網和App給平臺用戶帶來Matlab有限元編程、復雜函數擬合和matlab繪圖相關內容。此外還會帶來隔震建筑Abaqus建模仿真分析等內容。本次案例主要以受均布荷載和集中荷載的變截面懸臂梁為研究對象,通過matlab編制四節點和八節點四邊形單元有限元程序來對懸臂梁進行受力分析。
一、問題概述
如圖1-1 所示,某變截面懸臂梁長度為2m,截面面積由0.6m至0.2m線性變化,受作用在自由端節點的集中荷載2P=kN和豎直方向均布荷載q=1kN/m作用,按平面應力問題分析,求解自由端節點撓度。變截面懸臂梁采用C30混凝土,彈性模量為E= 4 3 10 MPa,泊松比為。編制四節點和八節點四邊形單元有限元程序,最終得到梁的變形。
圖1-1 變截面懸臂梁
二、求解思路
對于本問題采用基于MATLAB 編制有限元分析程序進行求解,其基本組成部分包括前處理模塊、分析主程序模塊和后處理模塊。在前處理模塊中,實現節點坐標輸入、單元節點編號、網絡劃分以及邊界條件輸入等工作;在分析主程序模塊中,求解整體剛度方程;在后處理模塊中,實現結果顯示、數據輸出等工作。本文主要針對四節點四邊形單元與八節點四邊形單元理論和對應的計算程序進行講解。
有限元法的基本步驟:
-
幾何域離散,獲得標準化的單元;
-
通過能量原理(虛功原理或最小勢能原理,獲得單元剛度方程;
-
單元的集成(裝配);
-
處理位移邊界條件;
-
計算支反力;
- 計算單元的其他物理量(應力應變)。
-
節點描述
-
場描述
- 單元剛度方程。
1、平面問題的平衡方程、幾何方程、物理方程
平面問題的彈性力學基礎理論是推導有限元方程的基礎,所以先羅列出平面問題的平衡方程、幾何方程、物理方程,具體如公式(1)-(3)所示。至于這些方程的推導過程大家可以參考任意彈性力學課本,都會進行詳細的講解。
2、等參單元
在有限元方法中,若要離散邊界為曲線或曲面的求解域,需要建立將形狀規則的單元變換為邊界為曲線或曲面的單元的方法,在有限元法中對應此問題所采用的變換方法是等參變換,即單元幾何形狀的變換和單元內長函數采用相同數目的節點及相同的插值函數進行變換。同樣我們今天要講的四邊形單元也從其對應的等參單元的基礎理論講起。四邊形單元可以由自然坐標系中的矩形單元映射而成,映射關系如圖2-1所示。
圖2-1 平面四節點矩形單元的映射關系
在自然坐標系下,矩形單元是規則化的,當自然坐標系中的單元取為雙線性單元時(也即為四節點四邊形單元),平面四節點矩形單元如圖2-2所示,單元有4個節點,8個自由度。單元的形函數定義如下:? ? ?(4)其中,和為自然坐標系下的節點坐標值。單元從自然坐標系到物理坐標系的映射為
在進行映射變換時候,要求單元兩個坐標系下的節點編號要對應。單元的節點變量用型函數進行插值,有? ? ? ? ? ? ? ? ? ?(7)
function N=ShapeFun(s,t)
N1=1/4*(1-s)*(1-t);
N2=1/4*(1+s)*(1-t);
N3=1/4*(1+s)*(1+t);
N4=1/4*(1-s)*(1+t);
N=[N1 0 N2 0 N3 0 N4 0;
0 N1 0 N2 0 N3 0 N4];
end
同理平面八節點矩形單元如圖2-3所示,單元共有8個節點,16個自由度。單元的形函數定義如下:
? (8)? ? ? ?(9)
? (10)
其中,和為自然坐標系下的節點坐標值。單元從自然坐標系到物理坐標系的映射為
? ? ?(11)
? ? ? ?(12)
在進行映射變換時候,要求單元兩個坐標系下的節點編號要對應。單元的節點變量用型函數進行插值,有
?? (13)
function N=ShapeFun(s,t)
%% 四邊形八結點等參單元形函數矩陣
% 角點
N1=1/4*(1-s)*(1+t)*(-s+t-1);
N2=1/4*(1-s)*(1-t)*(-s-t-1);
N3=1/4*(1+s)*(1-t)*(s-t-1);
N4=1/4*(1+s)*(1+t)*(s+t-1);
% 邊中點
N5=1/2*(1-t^2)*(1-s);
N7=1/2*(1-t^2)*(1+s);
N6=1/2*(1-s^2)*(1-t);
N8=1/2*(1-s^2)*(1+t);
N=[N1 0 N2 0 N3 0 N4 0 N5 0 N6 0 N7 0 N8 0;
0 N1 0 N2 0 N3 0 N4 0 N5 0 N6 0 N7 0 N8];
圖2-2 平面四節點矩形單元
圖2-3 平面四節點矩形單元等參單元中除了完成如公式(5)(6)(10)(11)的坐標映射外,還需要完成坐標偏導數的映射和面積/體積的映射,因為在最終推導出的單元剛度矩陣表達式,即一個積分函數中會包含坐標的偏導項和坐標的面積積分項,如公式(x)所示,所以接下來我們研究坐標偏導項的映射關系。根據鏈式求導法則,形函數對自然坐標系的導數為
(14)
寫成矩陣的形式就是
? ???(15)
其中,J被稱為Jacobi矩陣。反過來,形函數對物理坐標的導數為 ? ? ? ? ?(16)
另外,對于二維平面單元還要完成面積的映射,為 ? ? ? ? ? ? ?(17)
可以看出Jacob矩陣在等參變化中扮演著至關重要的角色,Jacob矩陣具體的表達式如下所示, ? ? ? (18)
公式18對應的八節點單元雅各比矩陣的求解代碼為:
公式18對應的四節點單元雅各比矩陣的求解代碼為:function J=Jacobi(ie,s,t,Elements,Nodes)
ENodes = Elements(ie,:); %獲取單元結點
xe = Nodes(ENodes(:),:); %獲取節點坐標
x1=xe(1,1);y1=xe(1,2);
x2=xe(2,1);y2=xe(2,2);
x3=xe(3,1);y3=xe(3,2);
x4=xe(4,1);y4=xe(4,2);
J=1/4*[-(1+t) -(1-t) 1-t 1+t;1-s -(1-s) -(1+s) 1+s]*[x1 y1;x2 y2;x3 y3;x4 y4];
end
3、剛度矩陣的推導function J=Jacobi(ie,kesi,yita,Elements,Nodes)
ENodes = Elements(ie,:); %獲取單元結點
xe = Nodes(ENodes(:),:); %獲取結點坐標
x1=xe(1,1);y1=xe(1,2);
x2=xe(2,1);y2=xe(2,2);
x3=xe(3,1);y3=xe(3,2);
x4=xe(4,1);y4=xe(4,2);
J=1/4*[-(1-yita),(1-yita),(1+yita),-(1+yita);-(1-kesi),-(1+kesi),(1+kesi),(1-kesi)]*[x1 y1;x2 y2;x3 y3;x4 y4];
end
為了求出上述平面四節點和八節點單元的單元剛度矩陣,需要借助能量原理(虛功原理、最小勢能原理)進行推導,能量原理的推導過程大家可以參考任意一本有限元理論書籍,都會有詳細的推導過程,這里就不做進一步推導講解,直接給出物理坐標和幾何坐標系下的剛度矩陣的公式
? ?(19)
? ?(20)
其中B矩陣為應變矩陣,如下式;D矩陣為材料剛度矩陣,如公式(1)所示,是物理方程中表征應力應變關系的矩陣。從上述剛度矩陣的表達式可以看出,自然坐標和物理坐標間要完成坐標映射、偏導映射、面積隱射三個部分,具體映射公式已在上一節的等參單元講解中詳細給出。
? ? ? ?(21)
4、高斯積分
公式(20)中的單元剛度矩陣通過數值積分求得,本案例中的四節點和八節點四邊形等參單元均采用2*2個積分點的高斯積分即可求得精確結果。高斯積分點的坐標具體如圖所示。
4-1 Gauss積分點示意圖
公式(20)寫成數值積分的形式為
? ? ? ? (22)
對于8節點單元實現上述數值積分的代碼如下所示:
r = [-sqrt(1/3) sqrt(1/3)]; % 2*2 高斯積分點
s = [r(1) r(1) r(2) r(2)];
t = [r(2) r(1) r(1) r(2)]; % 高斯積分點坐標
for i=1:4
J = Jacobi(E_ID,s(i),t(i),Elements,Nodes); % 雅可比矩陣
Nst = DiffShapeFun(s(i),t(i)); % 形函數關于自然坐標s,t求導
Nxy = zeros(8,2);
for j=1:8
) = (JNst(j,:)')'; % 形函數關于 x,y 求導=inv(J)*Nst :
end
Bm = [Nxy(1,1) 0 Nxy(2,1) 0 Nxy(3,1) 0 Nxy(4,1) 0 Nxy(5,1) 0 Nxy(6,1) 0 Nxy(7,1) 0 Nxy(8,1) 0;
0 Nxy(1,2) 0 Nxy(2,2) 0 Nxy(3,2) 0 Nxy(4,2) 0 Nxy(5,2) 0 Nxy(6,2) 0 Nxy(7,2) 0 Nxy(8,2);
Nxy(1,1) Nxy(2,2) Nxy(2,1) Nxy(3,2) Nxy(3,1) Nxy(4,2) Nxy(4,1) Nxy(5,2) Nxy(5,1) Nxy(6,2) Nxy(6,1) Nxy(7,2) Nxy(7,1) Nxy(8,2) Nxy(8,1)];
ke = ke+det(J)*Bm'*D*Bm*Width; %數值積分
end
5、均布荷載的施加
在有限元中分布力要轉為等效節點荷載,而確定等效節點荷載的方法也是通過能量原理推導得到
? ? ? ?(22)
上式中,第一項代表體積力的等效荷載,第二項代表面積力的等效荷載,這個案例我們只考慮面力荷載。實現公式22的代碼為
function Pe=UniLoad(ie,N_ID_p1,q0,Nodes,Elements)
k=-0.625e-3; % 均布荷載值 N/mm
s = [-sqrt(1/3) sqrt(1/3)]; % 2*2 高斯積分點
ENodes = N_ID_p1(ie,:); %獲取單元結點號
Pe=zeros(16,1); %生成臨時單元節點力零列向量
x1=Nodes(ENodes(1),1);
x6=Nodes(ENodes(4),1);
L16=abs(x6-x1); %單元長度
for i=1:2 %用于高斯積分的求和循環
N_q=ShapeFun(s(i),1); % 4級子程序:ShapeFun(s(i),1)
q_x=q0;
Pe=Pe+N_q'*q_x*[0;L16/2];
end
end
三、Matlab有限元編程精品課
網格劃分及變形結果如圖3-1所示。本案例的詳細視頻教程和對應的matlab源碼,請關注我的仿真秀官網和APP精品課程《Matlab有限元編程從入門到精通10講》。
圖3-1 梁變形結果
-
matlab
+關注
關注
185文章
2981瀏覽量
231010 -
編程
+關注
關注
88文章
3637瀏覽量
93983
原文標題:教你Matlab有限元編程對懸臂梁進行受力分析-附源碼及教程
文章出處:【微信號:sim_ol,微信公眾號:模擬在線】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論