有限元平面矩形單元MATLAB程序設(shè)計_第1頁
有限元平面矩形單元MATLAB程序設(shè)計_第2頁
有限元平面矩形單元MATLAB程序設(shè)計_第3頁
有限元平面矩形單元MATLAB程序設(shè)計_第4頁
有限元平面矩形單元MATLAB程序設(shè)計_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論