資源描述:
《有限元第9章有限元法程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、第9帝冇限元法程序設(shè)計(jì)9.1引言在用有限元法進(jìn)行結(jié)構(gòu)分析時(shí),將會(huì)遇到大量的數(shù)值計(jì)算,因而在實(shí)用上是一定耍借助于計(jì)算機(jī)和冇限元程序,才能完成這些復(fù)雜而繁重的數(shù)值計(jì)算工作。事實(shí)上,冇限元程序的設(shè)計(jì)是有限元研究的一個(gè)很重要的部分。它是理論和方法的載體,是理論用于實(shí)際必不可少的橋梁,是有限元學(xué)術(shù)研究與實(shí)際應(yīng)用水平的代表。有好的、高深的理論和算法并不等于有好的程序,還必須有實(shí)際的程序開(kāi)發(fā)經(jīng)驗(yàn)的多年積累、豐富的計(jì)算機(jī)知識(shí)、人量的資金和人力的投入,多年的開(kāi)發(fā)修正與改進(jìn)才能編制出好的程序來(lái)。一些著名的冇限元程序開(kāi)發(fā)的發(fā)展歷史也體現(xiàn)出
2、了這一規(guī)律。設(shè)計(jì)一個(gè)用于結(jié)構(gòu)分析的冇限元法程序,要求設(shè)計(jì)者至少應(yīng)該掌握下列知識(shí):(1)掌握一種程序開(kāi)發(fā)工具,如VC(VisualC++),CB(C++Buildel),Delphi,VB(VisualBasic)或VF(VisualFortran)等。在本書(shū)中所有程序均用VC寫(xiě)出。(2)數(shù)值方法,如線性和-1F?線性代數(shù)方程的求解,矩陣特征值的求解以及數(shù)值積分等。(3)結(jié)構(gòu)分析的基本理論,特別是用侑限元法對(duì)結(jié)構(gòu)進(jìn)行分析的原理、方法和步驟。山于一般的軟件工程師不懂結(jié)構(gòu)分析原理,因此,結(jié)構(gòu)分析程序的開(kāi)發(fā)任務(wù)主要應(yīng)由結(jié)構(gòu)工
3、程師來(lái)承擔(dān)。學(xué)握結(jié)構(gòu)分析程序設(shè)計(jì)方法,是以計(jì)算機(jī)輔助設(shè)計(jì)為主要標(biāo)志的現(xiàn)代工程設(shè)計(jì)方法對(duì)結(jié)構(gòu)工程師的要求。作為結(jié)構(gòu)工程師,應(yīng)該具冇對(duì)結(jié)構(gòu)分析程序的使用、閱讀、修改和編制的基礎(chǔ)知識(shí)和技術(shù)素質(zhì)。有限元程序的總體組成可分為三個(gè)部分:前處理部分,有限元分析本體部分以及后處理部分。有限元分析木體部分是有限元分析程序的核心。它根據(jù)離散模型的數(shù)據(jù)文件進(jìn)行有限元分析,有限元分析的原理和采用的數(shù)值方法集中于此。因此,這一部分程序是冇限元分析是否準(zhǔn)確町靠的關(guān)鍵部分。存限元分析所使用的離散模型的數(shù)據(jù)文件主要包括:模型的節(jié)點(diǎn)數(shù)、節(jié)點(diǎn)坐標(biāo)與節(jié)點(diǎn)
4、編碼,單元數(shù)據(jù)與單兀編碼;材料和載荷信息等。實(shí)際工程問(wèn)題的離散模型數(shù)據(jù)文件「分龐大。一般情況下,用人工方法來(lái)生成工作量太大,并一冃容易出錯(cuò),有時(shí)甚至是不可能的。為解決這一問(wèn)題,啟限元程序必須有前處理程序。前處理程序根據(jù)使用者提供的對(duì)計(jì)算模型外形及網(wǎng)格要求的簡(jiǎn)單數(shù)據(jù)描述,能H動(dòng)地或半占動(dòng)地住成離散模型的數(shù)據(jù)文件,并能繪制結(jié)構(gòu)計(jì)算簡(jiǎn)圖和網(wǎng)格圖,供用八檢查修改。詢(xún)處理程序的功能在很大程度上決定了有限元程序使用的方便性。冇限元分析程序的計(jì)算結(jié)果是由離散模型而得到的,輸出的數(shù)據(jù)量往往很大,不易整理,也不易獲得分析對(duì)象的全貌。所
5、以,一個(gè)使用方便的有限元分析程序還應(yīng)具有較強(qiáng)的后處理功能。能夠按照用戶(hù)的需要提供應(yīng)力分級(jí)圖、等值線圖,結(jié)構(gòu)變形圖或振型圖等圖形顯示功能,以及按照一淀的要求對(duì)計(jì)算成果進(jìn)行列表顯示或打印。因此,這部分程序設(shè)計(jì)的好壞,對(duì)整個(gè)有限元程序使用起來(lái)是否方便,具有舉足輕重的作用。程序設(shè)計(jì)工作經(jīng)歷了純技巧階段,已經(jīng)形成了一門(mén)被稱(chēng)為軟件工程的學(xué)科。對(duì)于程序的質(zhì)量評(píng)價(jià)也逐漸形成了一套客觀標(biāo)準(zhǔn)。一個(gè)質(zhì)量較高的程序應(yīng)該具有較好的可管理性和較高的運(yùn)行可靠性??晒芾硇砸蟪绦虻目勺x性好,易于調(diào)試、修改和發(fā)展,使用方便且效率高等??煽啃砸蟪绦蚰?/p>
6、正確無(wú)誤地完成規(guī)定的功能,當(dāng)岀現(xiàn)不正常情況時(shí),能中止無(wú)價(jià)值的運(yùn)行并輸出有關(guān)的信息。程序開(kāi)發(fā)的過(guò)程大致可分為下述三個(gè)階段:(1)程序功能的規(guī)定;(2)程序結(jié)構(gòu)的設(shè)計(jì),源程序及其說(shuō)明的編寫(xiě);(3)調(diào)試和糾錯(cuò)。目前在實(shí)際的程序開(kāi)發(fā)屮,流行著兩種截然不同的方法,即面向過(guò)程的方法和面向?qū)ο蟮姆椒?。大量的資料說(shuō)明,在開(kāi)發(fā)大型應(yīng)用軟件吋,而向?qū)ο蟮姆椒ㄅc傳統(tǒng)的過(guò)程化程序設(shè)計(jì)方法相比,顯示出很大的優(yōu)越性。然而在開(kāi)發(fā)一些規(guī)模不大的中小型程序時(shí),面向過(guò)程的方法仍然冇一定的優(yōu)勢(shì)。木章將以平面桿系結(jié)構(gòu)的靜力分析為例,介紹用面向過(guò)程的方法進(jìn)行
7、冇限元主體程序設(shè)計(jì)的方法。9.1.1結(jié)構(gòu)化程序設(shè)計(jì)概述結(jié)構(gòu)化程序設(shè)計(jì)方法是一種傳統(tǒng)的軟件設(shè)計(jì)方法。其基本耍點(diǎn)是,口頂向下,逐步求精,以及模塊化設(shè)計(jì)。其基本思想是,把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程劃分成若干階段來(lái)進(jìn)行。每一個(gè)階段所要解決的問(wèn)題都控制在人們?nèi)菀桌斫夂吞幚淼姆队脙?nèi),肓到把原來(lái)的問(wèn)題變換成若干個(gè)易于編寫(xiě)成程序的子問(wèn)題(即模塊)為止。這種程序的逐步分解和楮化是從抽象的做什么到具體的怎么做的發(fā)展過(guò)程。程序展開(kāi)的基木結(jié)構(gòu)有下列三種:(1)順序結(jié)構(gòu)。把一個(gè)功能塊展開(kāi)成若干個(gè)順序連接的語(yǔ)句塊。用元語(yǔ)言(即程序設(shè)計(jì)語(yǔ)言和自然語(yǔ)言
8、的一種混合文體,也稱(chēng)偽語(yǔ)言)表示如下:語(yǔ)句塊1;//入口語(yǔ)句塊2;語(yǔ)句塊n;//出口(2)選擇結(jié)構(gòu)。把一個(gè)功能塊展開(kāi)成兩個(gè)可供選擇的語(yǔ)句塊。用元語(yǔ)言表示如下:if(exp)//入口語(yǔ)句塊1;else語(yǔ)旬塊2;//出口在C/C++屮,Switch語(yǔ)句組成的結(jié)構(gòu)也屬于這種結(jié)構(gòu)。(3)循環(huán)結(jié)構(gòu)。把一?個(gè)功能塊展開(kāi)成需要重復(fù)執(zhí)行的語(yǔ)句塊。用元語(yǔ)言表示如