版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
有限元平面矩形單元MATLAB程序設(shè)計
摘要
本論文主要研究內(nèi)容是有限元平面矩形單元的基本原理和MATLAB軟件的圖形
用戶界面及函數(shù)編程的基本知識,并根據(jù)有限元平面矩形單元的計算單元剛度矩陣,
結(jié)點位移等原理和方法,運用MATLAB語言編寫彈性力學(xué)平面矩形單元的計算程序,
使得程序能夠完成對不同荷載類型,不同結(jié)構(gòu)單元的計算,同時設(shè)計了圖形用戶界面
(GUI),使得程序能夠在圖形用戶界面(GUI)上對應(yīng)的輸入框內(nèi)輸入相應(yīng)數(shù)據(jù),并
能夠計算出單元剛度矩陣,等效結(jié)點荷載,有限元上結(jié)點位移和單元應(yīng)力;最后將集
中荷載和均布荷載情況下的實例進行對MATLAB計算得出的位移和單元結(jié)點應(yīng)力與
ANSYS計算值比較分析,驗證其正確性和通用性,并總結(jié)了MATLAB軟件在有限
元的運用。
關(guān)鍵詞MATLAB程序設(shè)計;有限元;矩形單元;剛度矩陣;單元應(yīng)力
TheRectangleUnitPlaneofFiniteElementofthe
MATLABProgramming
Abstract
Thisdissertationmainlystudiestheradicalprincipleoftherectangleunitplaneofthe
finiteelementandthebasicknowledgeoftheGraphicalUserInterfaceandthefunction
programmingoftheMATLABsoftware.AndmakeuseofMATLABlanguagetomakeup
theGUIandthecomputationprogramofMATLABaccordingtothetheoryandmethodof
therectangleunitplaneofthefiniteelementtocomputetheelementstiffnessmatrix,
nodes'displacementandsoonaboutdifferenttypesofloadsanddifferentelements.
ImputingthedatasintotheGUItofigureoutelementstiffnessmatrix,equivalentnodal
load,displacementofnodesandelementstress.Atlast,comparingandanalyzingthe
nodes'displacementandnodes9stressofelementofMATLABandANSYStomakesure
whethertheprogrammingisrightanduseduniversally,andmakingasummarythe
applicationofMATLABsoftwareinfiniteelementanalysis.
KeywordsMATLABprogramming;finiteelementanalysis;rectangleunitof
plane;stiffnessmatrix;elementstress
目錄
第1章緒論..........................................................................1
1.1研究背景.......................................................................1
1.1.1有限元單元法概述..........................................................1
1.1.2MATLAB程序概述.........................................................2
1.1.3MATLAB應(yīng)用于有限元程序設(shè)計的優(yōu)點......................................2
1.2研究內(nèi)容......................................................................3
1.3研究重點......................................................................3
第2章矩形單元有限元原理............................................................4
2.1位移函數(shù)......................................................................4
2.2幾何矩陣......................................................................5
2.3應(yīng)力矩陣......................................................................6
2.4單元剛度矩陣..................................................................7
2.5等效結(jié)點荷載..................................................................8
2.6整體等效結(jié)點荷載..............................................................8
2.7整體剛度矩陣..................................................................8
2.8結(jié)點位移的計算................................................................8
第3章MATLAB圖形用戶界面(GUI)..................................................9
3.1GUI界面的概述................................................................9
3.1.1控件對象的描述...........................................................10
3.1.2部分常用控件通用屬性.....................................................11
3.2GUI常用函數(shù)語句.............................................................12
3.2.1get和set語句.............................................................12
3.2.2if判斷語句和for循環(huán)語句.................................................13
3.3M文件的一般結(jié)構(gòu)............................................................13
第4章有限元平面矩形單元MATLAB程序設(shè)計...........................................15
4.1圖形用戶界面設(shè)計.............................................................15
4.2設(shè)置控件的相關(guān)屬性...........................................................16
4.3編寫代碼.....................................................................18
第5章應(yīng)用實例.....................................................................31
5.19個單元16個結(jié)點計算.........................................................33
5.26個單元13個結(jié)點計算.........................................................39
5.4均布荷載下9個相等單元.......................................................44
結(jié)論..............................................................................51
致謝..............................................................................52
參考文獻.........................................................................53
附錄A譯文.........................................................................54
工程結(jié)構(gòu)構(gòu)件的有限元模型和剪應(yīng)力分析............................................54
附錄B外文原文....................................................................70
第1章緒論
1.1研究背景
1.1.1有限元單元法概述
有限元法是伴隨著電子計算機技術(shù)的進步而發(fā)展起來的一種工程數(shù)值計算方法,
其適應(yīng)性很強,可以解決各種各樣的復(fù)雜工程問題。有限元法的基本思想就是將任意
一個連續(xù)體離散化為一組有限個、按一定方式互相連接且?guī)缀涡螤詈唵蔚膯卧慕M合,
單元本身又可以有不同形狀,使復(fù)雜問題簡化從而得到問題的解。有限元法作為數(shù)值
分析方法的另一個重要特點是利用在每一個單元內(nèi)假設(shè)的近似函數(shù)來分片地表示全
求解區(qū)域上待求的未知場函數(shù)。單元內(nèi)的近似函數(shù)通常由未知場函數(shù),或這些函數(shù)與
其導(dǎo)數(shù)在單元各個節(jié)點上的數(shù)值和其插值函數(shù)來表達。這樣一來,未知場函數(shù)或未知
場函數(shù)及其導(dǎo)數(shù)在各個節(jié)點上的數(shù)值就成為新的未知量(即自由度),從而使一個連
續(xù)的無限自由度問題變成離散的有限自由度問題,一經(jīng)求解出這些未知量,就可以通
過插值函數(shù)計算出各個單元內(nèi)場函數(shù)的近似值,從而得到整個求解域上的近似解。顯
然隨著單元數(shù)目的增加,解得近似程度將不斷改進。如果單元是滿足收斂要求的,近
似解最后將收斂于精確解。有限元法的數(shù)學(xué)邏輯嚴(yán)謹(jǐn),物理概念清晰,易于理解和掌
握,應(yīng)用范圍廣泛,能夠靈活的處理和求解各種復(fù)雜問題,特別是它采用矩陣形式表
達基本公式,便于運用計算機編程運算,這些優(yōu)點賦予了有限單元法強大的生命力。
一、結(jié)構(gòu)物的離散化
離散化是將待分析的結(jié)構(gòu)物從集合上用線或面劃分為有限個單元,即將結(jié)構(gòu)物看
出有限個單元構(gòu)成的組合體。按結(jié)構(gòu)物形狀的不同和分析的要求,選取不同形式的單
元,通常在單元的邊界上設(shè)置結(jié)點,結(jié)點聯(lián)接相鄰的單元。
二、單元分析
所謂單元分析就是設(shè)法導(dǎo)出單元的結(jié)點位移和結(jié)點力之間的關(guān)系,即建立單元剛
度矩陣。在分析彈性力學(xué)平面問題時,每個平面單元內(nèi)的任意點的位移需要按一定的
函數(shù)關(guān)系用結(jié)點位移來表示,這種函數(shù)稱為位移函數(shù)。選擇的位移函數(shù)應(yīng)保證解的收
斂性,因此,建立合理的位移函數(shù)是單元分析點的關(guān)鍵。位移函數(shù)確定以后就可以利
用彈性力學(xué)的基本方程推導(dǎo)出單元剛度矩陣。
此外,還需要按靜力等效原則將作用于每個單元上的外力簡化到節(jié)點上,構(gòu)成等
效結(jié)點力。對于每一個單元進行上述分析以后,可建立起單元剛度方程。
三、整體分析
整體分析就是將各個單元組成結(jié)構(gòu)整體進行分析。整體分析的目的在于導(dǎo)出整個
結(jié)構(gòu)結(jié)點位移與結(jié)點力之間的關(guān)系,即建立整個結(jié)構(gòu)的剛度方程。
整體分析的步驟為:首先按著一定的集成規(guī)則,將各個單元剛度矩陣集合成結(jié)構(gòu)
整體剛度矩陣,并將單元等效結(jié)點荷載集合成整體等效節(jié)點荷載列陣;然后引入結(jié)構(gòu)
的位移邊界條件,求解整體平衡方程,得出基本未知量——結(jié)點位移列陣;最后計算
各個單元的內(nèi)力和變形
1.1.2MATLAB程序概述
MATLAB是一種以矩陣為基本單位的高效數(shù)值計算語言,是一個集科學(xué)計算、圖
像處理、聲音處理于一體的高度集成系統(tǒng)。在編程效率、程序可讀性、可移植性和可
擴充性上MATLAB遠遠優(yōu)于其它的高級編程語言,而且其編程易學(xué)、直觀,代碼非
常符合人們的思維習(xí)慣。另外MATLAB為用戶提供了豐富的圖形界面設(shè)計方法,使
用戶能夠在利用其強大的數(shù)值計算功能的同時可設(shè)計出友好的圖形界面,它受到了越
來越多的用戶的歡迎,成為了當(dāng)今國際上最流行的計算機輔助設(shè)計軟件
1.1.3MATLAB應(yīng)用于有限元程序設(shè)計的優(yōu)點
一、語言簡潔緊湊、使用方便靈活、庫函數(shù)極其豐富,幾乎包括有限元編程中的
所有基礎(chǔ)程序,使開發(fā)者可以直接進行高、精、尖的研究。MATLAB是一個強大的
數(shù)值計算軟件,在數(shù)值計算方面,除了包括基本的數(shù)學(xué)函數(shù)、基本矩陣和數(shù)組運算函
數(shù)以及多種插值函數(shù)之外,而且具有矩陣的求逆、LU分解、OR分解、矩陣指數(shù)等
幾乎所有的矩陣函數(shù)及矩陣分析函數(shù)。另外它還包括強大的稀疏矩陣的存儲、初等變
換、分解、特征值和奇異值的求法等功能,以及提供了系數(shù)陣為稀疏矩陣的線性方程
組的各種解法。MATLAB提供的所有這些數(shù)值計算方面的功能,對有限元編程中的
數(shù)據(jù)存儲、單元剛度矩陣生成、剛度矩陣集成、線性方程組的求解等方面大有益處,
根本無需編程人員去編制有限元中基礎(chǔ)程序,大大減少了工作量及提高了編程效率。
二、可視化建模及圖形功能強大。MATLAB可以給出數(shù)據(jù)的二維、三維、乃至
四維等數(shù)據(jù)表現(xiàn)以及繪制一般科技繪圖軟件所能繪制的幾乎所有圖形,如曲線圖、網(wǎng)
格圖、等直線圖、表面圖等,MATLAB這些功能為有限元后置處理數(shù)據(jù)可視化提供
了充分的表現(xiàn)力度,這往往是有限元數(shù)據(jù)處理中最為困難的事。除此之外,MATLAB
除了具有較強的應(yīng)用程序應(yīng)用界面編制功能,而且提供了專門的界面編制工具(GUI),
可以利用它編制理想的用戶界面。
三、含有多種學(xué)科的工具箱(ToolBox)以及程序代碼的公開性,是MATLAB的一
大特色。MATLAB提供的學(xué)科性工具箱可以使用戶無需編寫自己學(xué)科范圍內(nèi)的基礎(chǔ)
程序,太大節(jié)約編程時間。例如,MATLAB工具箱中的偏微分方程工具箱(PDE)就是
利用MATLAB編制好的有限元基礎(chǔ)程序庫。
四、程序可移植性好,MATLAB幾乎可以在各種機型和操作系統(tǒng)上運行,所以
它的可移植性和可擴充性MATLAB遠遠優(yōu)于其它的高級編程語言⑹期。
1.2研究內(nèi)容
本論文是根據(jù)有限元平面矩形單元的計算原理和方法,運用MATLAb語言的語
法規(guī)則、程序結(jié)構(gòu)和編程技巧,編寫彈性力學(xué)平面矩形單元有限元計算程序和平面矩
形單元有限元計算的圖形用戶界面;并通過在界面上輸入不同單元類型和荷載類型的
數(shù)據(jù),使得能夠計算出單元的剛度矩陣、結(jié)點位移和單元應(yīng)力。最后通過與其他程序
軟件(如ANSYS)的計算結(jié)果相比較分析,來驗證本論文研究計算程序的相對精確
性和通用性。
1.3研究重點
1,深入了解有限元矩形單元計算剛度矩陣,結(jié)點位移等的基本原理;
2,熟練掌握MATLAB語言程序的語法規(guī)則和編程技巧;
3,編寫圖形用戶界面和彈性力學(xué)平面矩形單元MATLAB的計算程序,正確計算出結(jié)
點位移,剛度矩陣和單元應(yīng)力。
第2章矩形單元有限元原理
矩形單元是以4個頂點為結(jié)點,每個結(jié)點有2個位移分量,共有8個結(jié)點位移分
量。設(shè)圖2.1所示位移一矩形單元,變長分別為2a和2b,四個結(jié)點以i、j、m、p表
示。為了簡便,取單元形心為坐標(biāo)原點,x軸、y軸與單元邊界平行。
2b
圖2.1矩形單元
2.1位移函數(shù)
矩形單元的位移函數(shù)為
u=%+0C2X+a3y+axyj
4(2-1)
v=a5+a6x+a7y4-a8xyj
對于i、j、m、p4結(jié)點,將相應(yīng)結(jié)點坐標(biāo)帶入上式,有
Uj=?1—aa2—ba3+aba4、
Uj=%+aa2—ba3—aba4
(a)
u=aaa
mi+2+b?3+aba4
u=a—aa
pi2+b?3—aba4>
Vj=a5—aa6—ba7+aba8、
Vj=a5+aa6—ba7—aba8
(b)
vm=a5+aa6+ba7+aba8
vp=a5—aa6+ba7—aba8>
由式(a)解出由、a2、。3、a4;由式(b)解出(X5、。6、。7、ag。將這8個常數(shù)帶
入式(2-1),可得
u=NjUj+NjUj+Nu+Nu)
mmpp(2-2)
v=NjVj+NjVj+Nmvm+NpVpJ
其中
1
--
43
1
+(2
4-
1
+
4-7
式(1-2)改寫為矩陣形式
fe=N8e(2—4)
式中
fe=[uv]T
TN;0Nj00N01
Nmp(2-5)5e=
[0Nj0Nj0Nm0Np.
[UiVjUjVjumvmupvp]T(2-6)
上述位移函數(shù)可以充分保證解答的收斂性。這是由于:①式(2-1)中包含的、a2、
以及。5、。6、。7,反映了剛體位移和常量應(yīng)變;②單元4條邊界分別平行于X、y
軸。在平行于x軸的邊界上(y=±b),位移分量為坐標(biāo)x的線性函數(shù);在平行于y軸
的邊界上(x=±a),位移分量是y的線性函數(shù),因此,可以保證兩相鄰單元在公共邊
界上的位移是連續(xù)的山。
2.2幾何矩陣
利用彈性力學(xué)平面問題點的幾何方程和式(2-4),求得單元應(yīng)變
eB8e
83X3X88X(2
式中:£仍然由%、為、Yxy組成的列陣;幾何矩陣B為由結(jié)點位移求單元應(yīng)變的轉(zhuǎn)換
。
最01
-。
0藥N
矩陣,即B=±-。
加
列
或改寫成B=[BjBjBmBp](2-8)
而
i-aNj
0
dx
Bi=0西(i,j,m,p)(2-9)
3Nj
-dydx.
上式中利用腳標(biāo)i、j、m、p進行輪換,用以表示耳、Bj、Bm、Bp。
ON"..
分別計算那菽(L卜m,p)并帶入式(2-8),可得
B=
一(b-y)0b-y0b+y0一(b+y)0
1
0-(a-x)0一(a+x)0a+x0a—x
4ab
一(a-x)-(b-y)一(a+x)b-ya+xb+ya—x一(b+y)
(2-10)
2.3應(yīng)力矩陣
利用彈性力學(xué)平面問題的物理方程。=DE,并將式(2-7)帶入可得
CT3xl=D3X3B3X8怎xi=
S3X8砥xl(2-11)
式中:。仍然是由。X、叼、Txy組成的列陣;D為彈性矩陣,應(yīng)力矩陣S為結(jié)點位移
求應(yīng)力的轉(zhuǎn)換矩陣。S可寫成S=[Sj'SmSp](2-12)
而Si=
DBj(i,j,m,p)(1-13)
ri黑0'
D=號10
1-2口
00
2-
一(b-y)-Ma-x)b-y一U(a+x)
s—_____-_____-H(b-y)-(a-x)Mb-y)一(a+x)
4ab(l-p2)
—1(a-x)—1(b-y)-(a4-x)1(b-y)
b+yU(a+x)一(b+y)Ma-x)
Mb+y)a+x一Mb+y)(a-x)
(2—14)
?(b+y)-1y—^L(Ib+y)
(a+x)~Y~3-x)
整理應(yīng)力結(jié)果時,通常需要計算單元4個結(jié)點處的應(yīng)力,將結(jié)點坐標(biāo)值帶入式(2-14)
即可求出4個結(jié)點上的應(yīng)力矩陣,分別以S。)、S(D、S(m)、S(P)表示。
E—2b—2|ia2b0000211aA
c(i)=工211b0000
4ab(l—|i2)
--(1-P)a-(1--H)b0(1-p)b00(1--p)a0.
■
F-2b02b—2pa0211a00
S(i)=------------2|ib02卜ib-2a02a00
4ab(l—M)
0—(1—|i)b-(1--H)a(1-p)b(1-n)a00C
00o—2|ia21D2|ia-2b0
S(,m)、—______E______
00o—2a2Mb2a-2|il0
4ab(l—|i2)
00-(1-H)a0(1-p)a(1-p)b0-(:l-k
0—211a002b0-2b211a
0E
c(p)=0-2a00211bn
4ab(l—p2)
-(1-|i)a0000(1-N)b(1-n)a-dL-n)b.7
(2-15)
2.4單元剛度矩陣
矩形單元的單元剛度矩陣ke為8義8方陣,利用下式
ke=JJBTDBtdxdy或ke=BTStdxdy
并帶入彈性矩陣D、幾何矩陣B、或幾何矩陣B和應(yīng)力矩陣S,可求出
「lb1-
-----1---------對稱
3a6b
1+n1a?1—|ib
83b'6a
1b1—|ia1-3n1b]1—|ia
3a12b83a6b
1—3|i1a1—|ib1+Hla1一岫
Et
ke二-----86b6a83b6a
1-H21b1—|ia1+N1b1—^ia1一3|i
6a12b86a6b8
I+H1a1—pb1-3|i1a?1一|ib
1
86b12a83b12a
1b1—1-3H1b1—|iai+u
6a6b86a12b8
1-3^1a?1—|ibl+|i1a1-pb
1
I83b12a86b12a
1b1—|ia
二+丁后
I+R1a?1—岫
83b6a(2-16)
1b1—ua1—3|i1b1—|ia
_____I______-----1----------
3a12b83a6b
1-3g1a1—|ib1+N1a?1—pb
8-6b6a83b'6a」
2.5等效結(jié)點荷載
1,單元自重
對于單元自重W,移置到每一個結(jié)點上都是因此
4
11111T
Re=-WO-O-O-O-(2-17)
L4444J
2,分布面力
如果單元的任一邊界上受有分布面力的作用,應(yīng)將該分布面力的合力按靜力等效
原則向這條邊界的兩個結(jié)點上移置山。
2.6整體等效結(jié)點荷載
將單元的等效結(jié)點力以“對號入座”的方式疊加,同時考慮結(jié)點上作用的集中反力,
求得整體等效結(jié)點荷載列陣Ro
2.7整體剛度矩陣
建立了單元剛度矩陣ke之后,就可以利用剛度集成法將其集合成整體剛度矩陣Ko
具體做法是按照局部編號與與整體編號的對應(yīng)關(guān)系,“對號入座
2.8結(jié)點位移的計算
求解整體平衡方程KA=R,考慮邊界條件,引入支承條件后,可解方程得出未知
結(jié)點位移,最后可得整體結(jié)點位移列陣山。
第3章Matlab圖形用戶界面(GUI)
3.1GUI界面的概述
圖形用戶界面(GUI)是由窗口、光標(biāo)、按鍵、菜單、文字說明等對象(Objects)
構(gòu)成的一個用戶界面,用戶通過一定的方法選擇、激活這些對象,使計算機產(chǎn)生某種
動作或變化,如實現(xiàn)計算、繪圖等。創(chuàng)建MATLAB用戶圖形界面必須具有以下三類
基本元素:組件、圖形窗口、回應(yīng)。
實現(xiàn)一個GUI的過程包括兩個基本任務(wù):一是GUI的組件布局,另一個是GUI
組件編程。這些任務(wù)都可以通過圖形用戶界面開發(fā)環(huán)境來完成。在Matlab中,GUIDE
是一個組件布局工具集,能夠生產(chǎn)所需的組件資源并保存在一個FIG文件中,如圖
3.1(a)所示;其次還可以生成一個包含GUI初始化和發(fā)布控制代碼的M文件,如圖
3.1(b)所示,該文件作為回調(diào)函數(shù)提供了一個框架口工
(a)(b)
圖3.1GUI編輯界面
(a)FIG文件
(b)M文件
3.1.1控件對象的描述
MATLAB中的控件大致可分為兩種,一種為動作控件,鼠標(biāo)點擊這些控件時會
產(chǎn)生相應(yīng)的響應(yīng)。一種為靜態(tài)控件,是一種不產(chǎn)生響應(yīng)的控件,如文本框等。
(1)按鈕(PushButtons)國:執(zhí)行某種預(yù)定的功能或操作;
82%----Executesonbuttonpressmpushbutton1.
83functionpushbuttonl_Callback(hObjecteventdata,handles)
84E%hObjecthandletopushbutton1(seeGCBO)
85%eventdatareserved-tobedefinedinafutureversionofMATLAB
86-%handlesstructurewithhandlesanduserdata(seeGUIDAIA)
87
88
89
圖3.2pushbutton回調(diào)函數(shù)
在上圖3.2語句中,pushbuttonl_Callback(hObject,eventdata,handles)是用來執(zhí)行
pushbutton1按鈕下的程序的調(diào)用語句。
(2)文本編輯器(EditableTexts)而:用來使用鍵盤輸入字符串的值,可以對編輯
框中的內(nèi)容進行編輯、刪除和替換等操作;
(3)靜態(tài)文本框(StaticTexts)僅僅用于顯示單行的說明文字;
(4)表格(uitable)國?:用于數(shù)據(jù)的可視化;通過表格的屬性設(shè)置窗口可以改變表
格的行數(shù),列數(shù)等各種參數(shù)值,如圖33也可以通過下面的編程來控制表格:
column=str2num(get(handles.column_edit/String,));%獲取行數(shù)
row=str2num(get(handles.row_edit,String*));%獲取列數(shù)
num_elem=cell(column,row);%設(shè)置num_elem的單元數(shù)為elementx9
num_elem(:,:)={H};%設(shè)置num_e]em數(shù)組為空
set(handles.uitable,'DaE,num_elem);%設(shè)置表格的句柄
set(handles.uitable,,ColumnEditable',true(1,column));%設(shè)置表格可編輯
圖3.3表格屬性編輯框
(5)面板(panel),用:用于把某些相關(guān)的交互控件組織在同一區(qū)域內(nèi),這樣可以提
高GUI界面的組織層次和易用性。
3.1.2部分常用控件通用屬性
每種控件都有一些可以設(shè)置的參數(shù),用于表現(xiàn)控件的外形、功能及效果,即屬
性。屬性由兩部分組成:屬性名和屬性值,它們必須是成對出現(xiàn)的。當(dāng)用戶創(chuàng)建好
GUI界面需要的各個交互控件如圖3.4,并調(diào)整好位置后,就需要設(shè)置這些控件的屬
性,雙擊控件會彈出該控件的屬性設(shè)置窗口,如圖3.5所示,用戶可以通過控件設(shè)置
窗口更加詳細的了解和設(shè)置不同控件的屬性。在一般的GUI界面設(shè)計中,各種控件
的常用屬性包括顏色設(shè)置、文字標(biāo)簽設(shè)置、回調(diào)函數(shù)設(shè)置等。
圖3.4GUIDE交互控件
圖3.5組件屬性設(shè)置窗
表3.1部分常用控件的通用屬性
屬性說明屬性說明
BackgroundColor背景色(空間顏色)Tag用戶自定義的標(biāo)記文字
ForegroundColor前景色(標(biāo)簽文字顏色)Value控件當(dāng)前取值
FontName字體名稱(標(biāo)簽文字)Selected選中狀態(tài)
FontSize字號Visible可見狀態(tài)
FonfUnits字號單位Enable可用狀態(tài)
Sring標(biāo)簽文字Callback激活控件的回調(diào)函數(shù)
Style交互控件種類Createfvn創(chuàng)建控件的回調(diào)函數(shù)
3.2GUI常用函數(shù)語句
3.2.1get和set語句
get(handlesj屬性名稱):獲得特定屬性名稱對應(yīng)的屬性值;
set(handles,屬性名稱「屬性值,):設(shè)置句柄值為handles的對象屬性。
例如:
setChandles.uitableS/ColumnEditable\trueC1,2))
設(shè)置句柄uitable3的第一列到第二列是可編輯的
num=get(handles.num_edit,'String*)
獲得句柄num_edit內(nèi)的字符串文字,并賦值給變量num。
3.2.2if判斷語句和for循環(huán)語句
1,If結(jié)構(gòu)的語法形式⑵如下:
Iflogical_expression
statements
elseiflogical_expression
statements
end
其中ifelseif構(gòu)成的各項分支里面,哪個的條件滿足(邏輯表達式logical_expression
的結(jié)果為真),就執(zhí)行哪個分支后面緊跟的程序語句。
2,for循環(huán)⑵用于知道循環(huán)次數(shù)的情況,其語法格式為:
fbrindex=start:increment:end
statements
end
index為循環(huán)變量,increment為增量,end用于判斷循環(huán)是否應(yīng)該終止。
3.3M文件的一般結(jié)構(gòu)
如圖3.6所示,MATLAB提供的一個函數(shù)M文件的全部內(nèi)容,圖中清晰顯示了
一般的M文件包括的各部分結(jié)構(gòu)。
10已□,
unt;ti^dl2
⑼哂函虬Callback—-in
73-varargout{1}=handles,output;
pushbutton2_Callback
untitled12_OpeningFcn
76%----Executesonbuttonpressinpushbu!untitled12_OutputFcn
eventdata,hand!es1
Callback程序編輯區(qū)nofMATLAB
UIDATA)
:2
83%----Executesonbuttonpressinpushbutton2.
84functionpushbuttoix2..Callback(hObject^eventdata,handles)
85'_J%hObjecthandletopushbutton2(seeGCBO)
86%eve:nofMATLAB
87-%hanCallback程序編輯區(qū)UIDATA)
untitled.mx[untitledl2.mx]
untitledl2Ln88Col1|OVR
圖3.6M文件編輯器界面
Pushbutton為GUI最常使用也是最簡單的對象,當(dāng)用戶單擊壓下pushbutton時,
MATLAB即會立即依據(jù)其對應(yīng)的Callback程序來執(zhí)行操作。
第4章有限元平面矩形單元Matlab程序設(shè)計
根據(jù)任務(wù)書上要求該程序具有如下功能及要求:
1、給定矩形單元,編寫程序計算平面矩形單元的單元剛度矩陣;
2、給定荷載作用下,計算結(jié)點位移;
3、計算有限單元上的單元應(yīng)力,單元結(jié)點應(yīng)力;
4、編寫matlab語言的圖形用戶界面,使得程序的執(zhí)行能夠在圖形用戶界面下運行。
4.1圖形用戶界面設(shè)計
在布局編輯器中布置控件,并使用幾何位置排列工具對控件的位置進行調(diào)整如圖4.1。
1建立10個靜態(tài)文本,用于顯示程序標(biāo)題,標(biāo)注相應(yīng)控件的提示和標(biāo)注等內(nèi)容;
2建立7個可編輯文本框,用于輸入各參數(shù)值;
3建立5個表格框,用于輸入單元的信息和顯示計算位移,單元應(yīng)力結(jié)果;
4建立4個按鈕,用來定義表格大小,計算,清除數(shù)據(jù)和結(jié)束程序。
5界面設(shè)計如下圖4.1所示,保存為untitled.fig文件。
圖4.1圖形用戶界面草圖
4.2設(shè)置控件的相關(guān)屬性
控件的標(biāo)識Tag是對于各控件的識別,每個控件創(chuàng)建時都會由開發(fā)環(huán)境自動產(chǎn)生
一個一個標(biāo)識,但在程序設(shè)計中,為了編輯、記憶和維護的方便,一般會為控件設(shè)置
新的標(biāo)識。
1,設(shè)置第1個按鈕的“Tag”為“shuru_pushbutton,“String”為“輸入單元、結(jié)點信息”,
用來定義uitable的大小,如圖4.2所示;
圖4.2按鈕shuru_pushbutton屬性設(shè)置
2,設(shè)置第2個按鈕的“Tag”為"jisuanxianshi_pushbutton”,"String”為"計算并顯示結(jié)果”,
用來計算剛度矩陣,結(jié)點位移,節(jié)點荷載,單元應(yīng)力等并顯示計算結(jié)果;
3,設(shè)置第3個按鈕的“Tag”為“clear_pushbutton",“String”為“清除數(shù)據(jù)”,用來清除
編輯文本框內(nèi)的數(shù)據(jù);
4,設(shè)置第4個按鈕的“Tag”為“quit_pushbutton",“String”為“退出”,用來結(jié)束程序;
5,設(shè)置10個靜態(tài)文本的“String",分別為圖顯示的內(nèi)容,并分別定義其字體大??;
6,設(shè)置7個可編輯文本框的“Tag”分別為“e_edit"、“u_edit"、“t_edit”、“element_edit”、
“node_edit"、"restriction_edit"、"num_edit”,用來輸入計算相關(guān)參數(shù);
7,設(shè)置3個表格框(uitable)的屬性,如圖4.3所示,用來輸入單元結(jié)點的信息。
圖4.3表格行數(shù)、列數(shù)的設(shè)置屬性
4.3編寫代碼
圖4.4程序流程圖
程序標(biāo)識符說明
element-——單元數(shù)目e■彈---性---模量
node-——結(jié)點數(shù)目u-泊---松---比
res------約束結(jié)點數(shù)t-單---元---厚度
k-單元剛度矩陣num——-結(jié)點荷載數(shù)
K整體剛度矩陣sigma——單元應(yīng)力
f——■結(jié)點位移PM--等效結(jié)點荷載
完成程序中變量的賦值等工作后,打開untitled.m文件,系統(tǒng)自動生成M文件程,
按流程圖4.4編寫序代碼如下:
functionvarargout=untitled(varargin)
gui_Singleton=1;
gui_State=struct('gui_Name;mfilename,...
'gui_Singleton',gui_Singleton,...
'guLOpeningFcn1,@untitled_OpeningFcn,...
'guLOutputFcn1,@untitled_OutputFcn,...
'guLLayoutFcn*,[],...
,guLCallback1,[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});
else
gui_mainfcn(gui_State,varargin{:});
end
%定義可編輯文本框為空及更新句柄結(jié)構(gòu):
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
set(handles.t_edit,String*,H);
set(handles.e_edit,String1,u);
set(handles.u_edit,'String',
set(handles.element_edit,String1,u);
set(handles.node_edit,,String,,H);
set(handles.num_edit,'String*/);
set(handles.restriction_edit,String1,H);
handles.output=hObject;
guidata(hObject,handles);
%按鈕shuru_pushbutton定義uitable的行數(shù)和列數(shù):
functionshuru_pushbutton_Callback(hObject,eventdata,handles)
element=str2num(get(handles.element_edit,'String'));
res=str2num(get(handles.restriction_edit,String*));
num=str2num(get(handles.num_edit,String*));
num_elem2=cell(element,9);
num_elem2(:,:)={"};
num_elem3=cell(res,2);
num_elem3(:,:)={n};
num_elem4=cell(num,3);
num_elem4(:,:)={"};
set(handles.uitable2,'Data',num_el6m2);
setChandles.uitableZ/ColumnEditable\trueC1,9));
set(handl6s.uitable3;Data',num_elem3);
setChandles.uitableS/ColumnEditable\trueC1,2));
set(handles.uitable4,,Data,,num_elem4);
set(handles.uitable4,,ColumnEditable,,true(1,3));
按鈕jisuanxianshi_pushbutton的代碼編寫:
functionjisuanxianshi_pushbutton_Callback(hObject,eventdata,handles)
%計算單元剛度矩陣及整體剛度矩陣,并使計算結(jié)果分別顯示到Excel:
e=str2num(get(handles.e_edit,'String1));
u=str2num(get(handles.u_edit,'String1));
t=str2num(get(handles.t_edit,String*));
element=str2num(get(handles.element_edit,'String*));
node=str2num(get(handles.node_edit,'String'));
K=zeros(2*node,2*node);
dataZ=getChandles.uitableZ/data1);
forn=l:element;
i=str2num(data2{n,2});
j=str2num(data2{n,3});
m=str2num(data2{n,4});
p=str2num(data2{n,5});
a=str2num(data2{n,6});
b=str2num(data2{n,7});
cl=l/3*b/a+(l-u)/6*a/b;
c2=l/3*a/b+(l-u)/6*b/a;
dl=(l+u)/8;
d2=(l-3*u)/8;
el=-l/3*b/a+(l-u)/12*a/b;
e2=-l/3*a/b+(l?u)/12*a/b;
fl=-l/6*b/a-(l-u)/12*a/b;
f2=l/6*a/b-(l-u)/12*a/b;
g1=l/6*b/a-(1-u)/6*a/b;
g2=l/6*a/b-(1-u)/6*a/b;
kl=[cl,dl,el,-d2,fl,-dl,gl,d2;
dI,c2,d2,g2,-dI,f2,-d2,e2;
el,d2,cl,-dl,gl,-d2,fl,dl;
-d2,g2,-dI,c2,d2,e2,dl,f2;
fl,-dl,gl,d2,cl,dl,el,-d2;
-dI,f2,-d2,e2,d1,c2,d2,g2;
gl,-d2,fl,dl,el,d2,cl,-dl;
d2,e2,d1,f2,-d2,g2,-dl,c2];
k=e*t/(l-uA2)*kl
xlswrite('剛度矩陣.xlsx',k,n)
K(2*i-1,2*i-1)=K(2*i-1,2*i-1)+k(1,1);
K(2*i-l,2*i)=K(2*i-l,2*i)+k(1,2);
K(2*i-1,2*j-1)=K(2*i-1,2*j-1)+k(1,3);
K(2*i-l,2*j)=K(2*i-l,2*j)+k(l,4);
K(2*i-l,2*m-l)=K(2*i-l,2*m-l)+k(l,5);
K(2*i-1,2*m)=K(2*i-1,2*m)+k(1,6);
K(2*i-1,2*p-1)=K(2*i-1,2*p-1)+k(1,7);
K(2*i-1,2*p)=K(2*i-l,2*p)+k(l,8);
K(2*i,2*i-1)=K(2*i,2*i-1)+k(2,1);
K(2*i,2*i)=K(2*i,2*i)+k(2,2);
K(2*i,2*j-l)=K(2*i,2*j-l)+k(2,3);
K(2*i,2*j尸K(2*i,2*j)+k(2,4);
K(2*i,2*m-l)=K(2*i,2*m-l)+k(2,5);
K(2*i,2*m)=K(2*i,2*m)+k(2,6);
K(2*i,2*p-1)=K(2*i,2*p-1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同簽訂管理不規(guī)范整改報告
- 美食街?jǐn)偽晦D(zhuǎn)讓合同范本
- 企業(yè)定制勞動合同范本
- 連鎖店裝飾工程合同范本
- 會計工作總結(jié)與建議
- 生活中的智慧
- 部編版六年級上冊語文單元思維導(dǎo)圖
- 《阿房宮賦》文言知識點總結(jié)
- 化學(xué)奇趣之旅
- 法學(xué)碩士答辯經(jīng)驗分享
- 兒童康復(fù)家庭指導(dǎo)課件
- 《儒道思想所以能夠互補》閱讀習(xí)題和
- 浙美版六年級上冊美術(shù)全冊教案和反思
- 人教版五年級美術(shù)上冊全冊教案【完整版】
- 急診科3月三基三嚴(yán)理論考試題
- 科技教育示范學(xué)校匯報材料
- GB∕T 39117-2020 智能制造能力成熟度評估方法
- 山西省晉城市自然條件分析分析報告
- 管理學(xué)組織設(shè)計 (2)
- 陶氏反滲透和納濾膜技術(shù)手冊解析
- 校本課程完整版__動植物標(biāo)本采集及制作
評論
0/150
提交評論