版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)論文(設(shè)計(jì))</p><p><b> 目 錄</b></p><p><b> 摘 要II</b></p><p> AbstractIII</p><p><b> 前 言IV</b></p><p>&
2、lt;b> 1 緒論2</b></p><p> 1.1有限元法基本簡介2</p><p> 1.1.1 基本原理2</p><p> 1.1.2 有限元法基本思路2</p><p> 1.1.4 有限元模型建模準(zhǔn)則4</p><p> 1.1.5 有限元模型性能指標(biāo)5<
3、/p><p> 1.2MSC.Patran軟件概述6</p><p> 1.3PCL語言概述7</p><p> 1.4 PCL功能概述7</p><p> 1.5 PCL的語言結(jié)構(gòu)及編譯使用8</p><p> 1.6 課題研究的背景和內(nèi)容10</p><p> 2 PCL函
4、數(shù)及語法規(guī)則12</p><p><b> 2.1概 述12</b></p><p> 2.2 主要函數(shù)12</p><p> 2.3與C語言的交互性18</p><p> 2.5 數(shù)化建模與分析的實(shí)現(xiàn)20</p><p> 3 船體結(jié)構(gòu)參數(shù)化建模程序的開發(fā)21</p&
5、gt;<p> 3.1預(yù)備知識(shí)21</p><p> 3.1.1 PCL類(CLASS)的結(jié)構(gòu)21</p><p> 3.1.2 用戶函數(shù)庫21</p><p> 3.1.3 修改init.pcl文件22</p><p> 3.1.4參數(shù)化表格22</p><p> 3.1.5 事件
6、與響應(yīng)23</p><p> 3.1.6 生成用戶界面23</p><p> 3.2設(shè)置參數(shù)界面23</p><p><b> 總結(jié)38</b></p><p><b> [參考文獻(xiàn)]39</b></p><p><b> 致 謝40&l
7、t;/b></p><p> 基于patran船體結(jié)構(gòu)參數(shù)化建模初步研究</p><p><b> 摘 要</b></p><p> 依據(jù)對(duì)PCL語言的語法學(xué)習(xí),進(jìn)行基于patran軟件的對(duì)船舶結(jié)構(gòu)進(jìn)行參數(shù)化建模的初步研究。首先開發(fā)出簡單板的參數(shù)化建模界面,了解和熟悉參數(shù)化建模的流程,了解船體雙層底結(jié)構(gòu)形式,建立船體幾何模型參數(shù)化。
8、其次有限元模型參數(shù)化的實(shí)現(xiàn),建立雙層底有限元模型,為船體結(jié)構(gòu)整船參數(shù)化建模提供思路。最后,對(duì)現(xiàn)有的patran軟件進(jìn)行二次開發(fā),開發(fā)船體結(jié)構(gòu)建模模塊,并最終實(shí)現(xiàn)參數(shù)化建模并且總結(jié)和分析設(shè)計(jì)中存在的不足,并提出改進(jìn)方案。</p><p> 結(jié)論:船體結(jié)構(gòu)比較復(fù)雜,船體結(jié)構(gòu)艙段建模是一項(xiàng)很繁瑣的工作,對(duì)現(xiàn)有的 patran 軟件進(jìn)行二次開發(fā),開發(fā)船體結(jié)構(gòu)建模模塊,可以加速建模速度,縮減建模工作量,同時(shí)也為結(jié)構(gòu)優(yōu)化的
9、改進(jìn)作基礎(chǔ)。</p><p> [關(guān)鍵詞] 船體結(jié)構(gòu);二次開發(fā);PCL語言;參數(shù)化建模</p><p> The ship structure of parameterized modeling preliminary research based on msc.patran </p><p><b> Abstract</b></
10、p><p> On the basis of the PCL language grammar study, based on the software for patran of ship structure of parameterized modeling preliminary research. First developed a simple board of parameterized modelin
11、g interface, understanding and knowledge of parameterized modeling process, understand the hull double bottom structure form, build hull geometry model parameter. Next to the realization of the finite element model param
12、eter, a double bottom finite element model, and the ship hull structure of par</p><p> Conclusion: hull structure is more complex, hull structure DuanJianMo cabin is a very complicated work, of existing pat
13、ran software second development, development hull structure modeling module, can accelerate modeling speed, reduction modeling work load, but also for optimizing the structure of the improved as the foundation.</p>
14、<p> [Key Words] hull structure; second-time development;PCL language; parameterized modelin</p><p><b> 前 言</b></p><p> 參數(shù)化(Parametric)技術(shù)是最早是CAD在實(shí)際應(yīng)用工作中提出的課題,它是該應(yīng)用領(lǐng)域內(nèi)的一個(gè)重要
15、的、且正在蓬勃發(fā)展的研究課題。參數(shù)化是指設(shè)計(jì)對(duì)象的結(jié)構(gòu)形狀比較定型,可以用一組參數(shù)來確定設(shè)計(jì)對(duì)象,參數(shù)與設(shè)計(jì)對(duì)象的控制尺寸有明顯的對(duì)應(yīng)關(guān)系,從而可使設(shè)計(jì)的結(jié)果受尺寸的驅(qū)動(dòng)。參數(shù)化設(shè)計(jì)是指參數(shù)化模型的尺寸對(duì)應(yīng)關(guān)系的表示,而不是確定具體的數(shù)值,通過調(diào)準(zhǔn)參數(shù)來修改和控制幾何形狀,自動(dòng)實(shí)現(xiàn)產(chǎn)品的精確造型。變化一個(gè)參數(shù)值,自動(dòng)改變所有與它相關(guān)的模型尺寸,并遵守約束條件,這就是采用參數(shù)化的模型。參數(shù)化設(shè)計(jì)與傳統(tǒng)方法相比,最大的不同在于它存儲(chǔ)了設(shè)計(jì)的
16、整個(gè)過程,能設(shè)計(jì)出一簇而不是單一的產(chǎn)品模型。傳統(tǒng)的人機(jī)交互式繪圖一般要用精確的尺寸值定義幾何元素,輸入的每一條線都必須有確定的位置,圖形一旦確定,即使結(jié)構(gòu)相似,但想改變圖形大小尺寸,只能對(duì)圖形進(jìn)行編輯。而工程設(shè)計(jì)中,一方面,進(jìn)行新產(chǎn)品的設(shè)計(jì)不可避免地需要多次反復(fù)修改,需要進(jìn)行零件結(jié)構(gòu)和尺寸的綜合協(xié)調(diào)、優(yōu)化;另一方面,從大量機(jī)械、電子等系列產(chǎn)品的圖紙中可以發(fā)現(xiàn),同一基本結(jié)構(gòu)形式的零部件,其圖形結(jié)構(gòu)具有一定的相似性,往往只是尺寸的大小不同,
17、其圖形尺寸隨尺寸參</p><p> 隨著造船技術(shù)與航運(yùn)市場(chǎng)的發(fā)展,船舶建造向大型化和經(jīng)濟(jì)化方向發(fā)展,越來越多的船舶超越了現(xiàn)行有關(guān)規(guī)范的規(guī)定,需要利用有限元直接計(jì)算的手段來評(píng)估船舶的安全性。這類計(jì)算有的選用國內(nèi)自主開發(fā)的軟件,有的采用各大船級(jí)社的結(jié)構(gòu)計(jì)算軟件。MSC公司的系列軟件在我國船舶結(jié)構(gòu)計(jì)算中占據(jù)著非常廣泛的市場(chǎng)。然而,直接應(yīng)用通用有限元軟件分析船舶結(jié)構(gòu)需要較高的有限元技巧和較長建模時(shí)間,這種方式不能滿足
18、現(xiàn)實(shí)船舶設(shè)計(jì)建造的要求,也不具備處理突發(fā)事件的能力。有些結(jié)構(gòu)建模和分析在通用軟件中實(shí)現(xiàn)也不是很方便。作者在研究船舶強(qiáng)梁腹板開孔問題時(shí),由于需要考慮不同的開孔參數(shù)和載荷邊界條件,建模與分析過程中有許多重復(fù)性的工作,耗費(fèi)大量許多寶貴的時(shí)間。為解決這個(gè)問題,本文采用對(duì)通用有限元軟件MSC. Patran進(jìn)行二次開發(fā)的方法,針對(duì)船舶行業(yè)的應(yīng)用特點(diǎn)和特定的問題,開發(fā)適當(dāng)?shù)墓δ苣K。MSC.Patran具有齊全的前、后處理功能,以MSC.Patra
19、n為平臺(tái),應(yīng)用PCL語言并結(jié)合會(huì)話文件對(duì)MSC.Patran進(jìn)行二次開發(fā)實(shí)現(xiàn)結(jié)構(gòu)建模與分析的參數(shù)化方法可行而且非常方便。</p><p><b> 1 緒論</b></p><p> 1.1有限元法基本簡介</p><p> 1.1.1 基本原理</p><p> 在工程技術(shù)領(lǐng)域內(nèi),對(duì)于力學(xué)問題或其他場(chǎng)問題,己經(jīng)
20、得到了基本微分方程和相應(yīng)的邊界條件。但能用解析方法求出精確解的只是方程性質(zhì)比較簡單且?guī)缀芜吔缦喈?dāng)規(guī)則的少數(shù)問題。因此,人們多年來一直在尋求另一種方法,即數(shù)值解法。</p><p> 有限元法是一種新的現(xiàn)代數(shù)值方法。它將連續(xù)的求解域離散為由有限個(gè)單元組成的組合體。這樣的組合體能用來模擬和逼近求解域。因?yàn)閱卧旧砜梢杂胁煌膸缀涡螤?,且單元間能夠按各種不同的聯(lián)結(jié)方式組合在一起,所以這個(gè)組合體可以模型化幾何形狀非常復(fù)
21、雜的求解域。有限元法另一重要步驟是利用在每一單元內(nèi)假設(shè)的近似函數(shù)來表示全求解域上未知場(chǎng)函數(shù)。單元的近似函數(shù)通常由未知場(chǎng)函數(shù)在各個(gè)單元節(jié)點(diǎn)上的函數(shù)值以及單元插值函數(shù)表達(dá),因此,在一個(gè)問題的有限元分析中,未知場(chǎng)函數(shù)的節(jié)點(diǎn)值就成為新的未知量,從而使一個(gè)連續(xù)的無限自由度問題化為離散的有限自由度問題。一經(jīng)求出這些節(jié)點(diǎn)未知量,就可以利用插值函數(shù)確定單元組合體上的場(chǎng)函數(shù)。顯然,隨著單元數(shù)目的增加,即單元尺寸的縮小,解答的近似程度將不斷改進(jìn)。如果單元滿
22、足收斂條件,得到的近似解最后將收斂于精確解。</p><p> 有限元法的應(yīng)用已由求解彈性力學(xué)平面問題擴(kuò)展到空間問題、板殼問題;由求解靜力平衡問題擴(kuò)展到求解動(dòng)力問題、穩(wěn)定問題;從線性分析擴(kuò)展到物理、幾何和邊界的非線性分析;分析的對(duì)象也從固體力學(xué)擴(kuò)展到流體力學(xué)、傳熱學(xué)、電磁學(xué)等其他領(lǐng)域。</p><p> 1.1.2 有限元法基本思路</p><p> 有限元法
23、的基本思路是通過連續(xù)體離散化的方法[14],尋求適應(yīng)控制方程并滿足邊界條件和連續(xù)條件的數(shù)值方法。</p><p> 它的具體做法是:先將物體假想地分割(離散化)成許多小單元,各個(gè)單元由節(jié)點(diǎn)聯(lián)結(jié)起來。對(duì)于每個(gè)單元,用節(jié)點(diǎn)未知量通過插值函數(shù)近似地表征單元內(nèi)部的各種物理量,并使它們?cè)趩卧獌?nèi)部以積分的形式滿足問題的控制方程,從而將每個(gè)單元對(duì)整體的影響和貢獻(xiàn),轉(zhuǎn)化到各自單元的節(jié)點(diǎn)上。然后將這些單元總裝成一個(gè)整體,并使它們
24、滿足整個(gè)求解域的邊界條件和連續(xù)條件,得到一組有關(guān)節(jié)點(diǎn)未知量的聯(lián)立方程,方程解出后,再用插值函數(shù)和有關(guān)公式,求得物體內(nèi)部各點(diǎn)所要求的各種物理量。</p><p> 有限元分析是設(shè)計(jì)人員在計(jì)算機(jī)上調(diào)用有限元程序完成的。為此,必須了解所用程序的功能、限制以及支持軟件運(yùn)行的計(jì)算機(jī)硬件環(huán)境。分析者的任務(wù)是建立有限元模型、進(jìn)行有限元分析并解決分析出現(xiàn)的問題、以及計(jì)算后的數(shù)據(jù)處理。</p><p>
25、 有限元模型數(shù)據(jù)主要包括:</p><p> 1)主控?cái)?shù)據(jù),包括分析任務(wù)描述(結(jié)構(gòu)靜力分析、模態(tài)分析、時(shí)程響應(yīng)分析、非線性分析、接觸分析、彈塑性分析等等)以及輸出控制數(shù)據(jù);</p><p> 2)材料性質(zhì)數(shù)據(jù),包括材料的彈性常數(shù)、熱膨脹系數(shù)、熱傳導(dǎo)系數(shù)、密度、極限強(qiáng)度等參數(shù);</p><p> 3)荷載數(shù)據(jù),包括基本荷載模式、工況組合等;</p>
26、<p> 4)有限元網(wǎng)格節(jié)點(diǎn)坐標(biāo)數(shù)據(jù);</p><p> 5)單元類型及單元拓?fù)浣Y(jié)構(gòu)描述數(shù)據(jù);</p><p> 6)邊界條件和連接條件數(shù)據(jù)等。</p><p> 1.1.3 有限元法分析流程</p><p> 在有限元分析實(shí)際應(yīng)用中,大量的工作是數(shù)據(jù)準(zhǔn)備和整理計(jì)算結(jié)果。目前,許多軟件都提供前后處理程序,自動(dòng)生成有限元模
27、型數(shù)據(jù)(尤其是幾何數(shù)據(jù)),自動(dòng)處理分析結(jié)果數(shù)據(jù)并賦予圖形顯示。因此,有限元設(shè)計(jì)過程就是正確使用有限元分析軟件的過程,典型的流程如圖</p><p> 圖1—1—1 有限元分析流程示意圖</p><p> 1.1.4 有限元模型建模準(zhǔn)則</p><p> 所謂建模就是根據(jù)工程分析精度要求,建立合適的能模擬實(shí)際結(jié)構(gòu)的有限元模型。在連續(xù)體離散化及用有限個(gè)參數(shù)表征無限
28、個(gè)形態(tài)自由度過程中不可避免地引入了近似。為使分析結(jié)果有足夠的精度,所建立的有限元模型必須在能量上與原連續(xù)系統(tǒng)等價(jià)。具體地應(yīng)滿足下述準(zhǔn)則:</p><p> 1)有限元模型應(yīng)滿足平衡條件,即結(jié)構(gòu)的整體和任一單元在節(jié)點(diǎn)上都必須保持靜力平衡;</p><p> 2)變形協(xié)調(diào)條件。交匯于一點(diǎn)上的各元素在外力作用下,引起元素變形后必須仍保持交匯于一個(gè)節(jié)點(diǎn)。整個(gè)結(jié)構(gòu)上的各個(gè)節(jié)點(diǎn),也都應(yīng)同時(shí)滿足變形
29、協(xié)調(diào)條件。若用協(xié)調(diào)元,元素邊界上應(yīng)滿足相應(yīng)的位移協(xié)調(diào)條件;</p><p> 3)必須滿足邊界條件(包括整個(gè)結(jié)構(gòu)邊界條件及單元間的邊界條件)和材料的本構(gòu)關(guān)系;</p><p> 4)剛度等價(jià)原則。有限元模型的抗彎、抗扭、抗拉及抗剪剛度應(yīng)盡可能等價(jià);</p><p> 5)認(rèn)真選取單元,使之能較好地反映結(jié)構(gòu)構(gòu)件的傳力特點(diǎn),尤其是對(duì)主要受力構(gòu)件,應(yīng)做到盡可能地不失
30、真。在單元內(nèi)部所采用的應(yīng)力和位移函數(shù)必須是當(dāng)單元大小遞減時(shí)有限元解趨于連續(xù)系統(tǒng)的精確解。對(duì)于非收斂元,應(yīng)避免使用,對(duì)于波動(dòng)收斂元應(yīng)慎用;</p><p> 6)應(yīng)根據(jù)結(jié)構(gòu)特點(diǎn)、應(yīng)力分布情況、單元性質(zhì)、精度要求及計(jì)算量大小等仔細(xì)劃分計(jì)算網(wǎng)格;</p><p> 7)在幾何上要盡可能地逼近真實(shí)的結(jié)構(gòu)體,其中特別要注意曲線與曲面的逼近問題;</p><p> 8)仔
31、細(xì)地處理載荷模型,正確地生成節(jié)點(diǎn)力,同時(shí)載荷的簡化不應(yīng)跨越主要受力構(gòu)件;</p><p> 9)質(zhì)量的堆聚應(yīng)滿足質(zhì)量質(zhì)心、質(zhì)心矩及慣性矩等效要求;</p><p> 10)當(dāng)量阻尼折算應(yīng)符合能量等價(jià)要求;</p><p> 11)超單元的劃分盡可能單級(jí)化并使剩余結(jié)構(gòu)最小。</p><p> 1.1.5 有限元模型性能指標(biāo)</p&
32、gt;<p> 有限元模型是借助計(jì)算機(jī)進(jìn)行分析的離散近似的模型。對(duì)于線性靜力問題,它包括有限元網(wǎng)格的離散點(diǎn)組成的近似幾何模型,由材料力學(xué)特性數(shù)據(jù)和單元?jiǎng)偠染仃嚤磉_(dá)的變形應(yīng)力平衡近似,以及外載荷近似和邊界條件近似的總體。因此,即便理論模型是準(zhǔn)確的,模型誤差總是難免的。要控制和減小誤差,有限元模型應(yīng)滿足下述性能指標(biāo)。</p><p> 1)可靠性:簡化模型的變形和受力及力的傳遞等應(yīng)與實(shí)際結(jié)構(gòu)一致。例
33、如,有限元模型中的桿、梁、板(殼)、平面應(yīng)力、平面應(yīng)變以及連接條件和邊界條件等,均應(yīng)與實(shí)際結(jié)構(gòu)相符合。確定模型的可靠性可用下列準(zhǔn)則判斷:物理力學(xué)特性保持;相應(yīng)的數(shù)學(xué)特性保持。</p><p> 2)精確性:有限元解的近似誤差與分片差值函數(shù)的逼近誤差成正比。因此,在建立有限元模型時(shí),應(yīng)根據(jù)問題的性質(zhì)和精度要求,選用一階精度元,二階精度元和高階精度元等不同類型的單元。</p><p> 3
34、)魯棒性:其確切含義是指有限元方法對(duì)有限元模型的幾何形狀變化,對(duì)于材料參數(shù)的變化(例如泊松比從接近不可壓縮變成不可壓縮)以及對(duì)于從中厚度板模型變成薄板的板厚變化的依賴性:也是有限元法的可靠性對(duì)上述變化的敏感程度。</p><p> 4)計(jì)算成本的經(jīng)濟(jì)性:計(jì)算經(jīng)濟(jì)性問題不僅與算法的復(fù)雜性、算法結(jié)構(gòu)、程序的優(yōu)化程序以及總的算術(shù)運(yùn)算次數(shù)相關(guān),而且在精度確定下,與有限元建模的質(zhì)量有很大的關(guān)系。選用單元時(shí),應(yīng)盡量選取在頂
35、點(diǎn)設(shè)置節(jié)點(diǎn)的單元。</p><p> 除了節(jié)點(diǎn)自由度相對(duì)布置對(duì)計(jì)算效率的影響之外,單元剖分全局性的疏密配置更為重要。例如,在應(yīng)力集中部位,為達(dá)到好的計(jì)算效果,應(yīng)該布置較密的網(wǎng)格,以刻畫位移變化梯度較大的實(shí)際情況。自適應(yīng)網(wǎng)格技術(shù)的應(yīng)用可以很好地解決全局疏密合理配置問題。</p><p> 1.2MSC.Patran軟件概述</p><p> MSC.Patran
36、軟件是有限元分析前后處理軟件,它可是用戶通過圖形交互界面方便完成網(wǎng)格劃分、模型描述等工作,以保工程分析人員從繁重的數(shù)據(jù)準(zhǔn)備工作中解脫出來;并且能將計(jì)算結(jié)果以多種方式提供給用戶,以便用戶在方便時(shí)獲取信息并完成后處理。目前,該軟件已廣泛應(yīng)用于航空航天、汽車、造船及國防等各大領(lǐng)域。MSC.Nasrtna以MSC.Patran為前后處理軟件。通過MSC.Patran可以和多種CAD和CAE軟件相連接。幾何模型(一維、二維和三維模型)可以通過調(diào)入
37、(CAD)的模型,也可以在MSC.Patran里直接建立。MSC.Partna有強(qiáng)大的網(wǎng)格劃分功能,包括曲線、曲面和實(shí)體的各種網(wǎng)格劃分;對(duì)幾何或單元的載荷/邊界條件的各種定義;材料模型定義;單元屬性定義;在和工況定義;場(chǎng)定義;分析類型定義;分析結(jié)果顯示;x,y圖示等。</p><p> MSC.Patran是世界公認(rèn)最佳的集合訪問,有限元建模,分析求解及數(shù)據(jù)可視化于一體的新一代框架式軟件系統(tǒng),通過其全新的“并行
38、工程概念”和無與倫比的工程應(yīng)用模塊,將世界所有著名的CAD/ CAE/ CAM/ CAT(測(cè)試) 軟件系統(tǒng)及用戶自編程序自然地融為一體。MSC. Patran獨(dú)有的SGM(單一幾何模型) 技術(shù)可直接在幾何模型一級(jí)訪問各類CAD 軟件數(shù)據(jù)庫系統(tǒng),包括UG、Pro/ ENGI2NEER、CATIA、CADDSS、Euclid、SoildEdge 、Solid2works 、AutoDesk MDT 及I2DEAS 等各類CAD/ CAM軟件
39、數(shù)據(jù)庫。除了框架系統(tǒng)外,MSC. Patran還擁有功能強(qiáng)大的各種專用分析應(yīng)用模塊,主要包括:</p><p> MSC. Patran FEA(提供了靜力、動(dòng)力、熱傳導(dǎo)、非線型及優(yōu)化靈敏度分析等功能);</p><p> MSC. Patran THERMAL (專用工程自動(dòng)熱分析軟件系統(tǒng),可處理各種復(fù)雜的傳遞問題,并提供了豐富的與溫度相關(guān)的材料庫、對(duì)流關(guān)系庫及與時(shí)間和溫度相關(guān)的專業(yè)
40、函數(shù)庫);</p><p> MSC. Patran LAMINATEMODELER(集復(fù)合材料設(shè)計(jì)、分析、制造于一體的軟件系統(tǒng))。</p><p> PCL (MSC. Patran Command Language)語言是MSC. Patran的一個(gè)高級(jí)的模塊化結(jié)構(gòu)的編程語言和用戶自定義工具,類似于C語言和FORTRAN語言。PCL語言提供了豐富的表格和菜單庫,供開發(fā)用戶自編分析程
41、序或者特定的圖形界面。同時(shí),PCL語言提供的表格生成功能使得用戶自編的PCL函數(shù)能夠通過菜單選項(xiàng)來執(zhí)行。</p><p> 為了利用MSC.Patran的前后處理功能,編寫了一系列的PCL函數(shù),用來從MSC.Patran的數(shù)據(jù)庫中讀取數(shù)據(jù)并生成計(jì)算時(shí)所需的數(shù)據(jù)輸入文件,以及將結(jié)果文件的數(shù)據(jù)寫入MSC.Patran的數(shù)據(jù)庫中,供MSC.Patran進(jìn)行前后處理。開發(fā)用戶界面的目的是為了將這些自編譯的函數(shù)集中起來,
42、通過直觀的圖形界面進(jìn)行交互,方便使用。PCL語言隨同MSC.Patran一起發(fā)布,使用它可以創(chuàng)建新的或者改進(jìn)MSC.Patran功能,能為特定應(yīng)用程序創(chuàng)建用戶界面和數(shù)據(jù)庫,能夠調(diào)用MSC.Patran內(nèi)的所有函數(shù)和MSC.Patran的二次開發(fā)技術(shù)。本文利用PCL語言對(duì)MSC.Patran進(jìn)行二次開發(fā),編制了船體結(jié)構(gòu)自動(dòng)建模程序,實(shí)現(xiàn)船體結(jié)構(gòu)自動(dòng)建模,并通過將自編處理程序與具有外部工具調(diào)用功能編輯器集成,開發(fā)出了MSC.Patran的集
43、成環(huán)境,并對(duì)軟件后處理系統(tǒng)集成化,有效地提高了工作效率。</p><p> 1.3PCL語言概述</p><p> PCL語言類似于C語言和FORTRAN語言,它包含與之相同的數(shù)據(jù)類型,也具有大量的函數(shù)庫。除了基本的數(shù)學(xué)函數(shù)庫和系統(tǒng)訪問的函數(shù)庫以外,它還提供了大量與有限元建模有關(guān)的函數(shù),如幾何建模函數(shù),網(wǎng)格自動(dòng)劃分函數(shù),載荷施加,屬性添加及結(jié)果后處理有關(guān)的函數(shù)。利用這些函數(shù),用戶可以編
44、寫自己的函數(shù),并用系統(tǒng)命令?。ibrary將其加載到Patran中,建立與NASTRAN的連接,可以在以后的建模中隨時(shí)調(diào)用。由于MSC.Patran 沒有自帶的程序編輯器,需要利用那些具有外部工具調(diào)用功能的編輯器,比如MicrosoftVisual C++、Editplus等。這些編輯器都支持用戶自己開發(fā)的工具,首先要進(jìn)行相關(guān)的參數(shù)設(shè)置,添加PCL 工具菜單,將PCL開發(fā)環(huán)境與批處理程序集成。設(shè)置完成后就可以在編寫函數(shù)文件的同時(shí),直接
45、通過編輯器進(jìn)行PCL 函數(shù)文件的編譯、轉(zhuǎn)換等工作,極大地方便了程序開發(fā)。</p><p> 在使用PCL語言進(jìn)行船體結(jié)構(gòu)建模程序的編譯中,需要不斷對(duì)函數(shù)文件進(jìn)行編譯,調(diào)試。這就必須調(diào)用MSC.Patran自帶的編譯程序p3pclcomp.exe,通過Patran命令行或DOS窗口中輸入!!input*.pcl的方式來完成(*代表文件名)。在進(jìn)行圖形用戶界面開發(fā)時(shí),那些表示控件大小和間距的標(biāo)準(zhǔn)參數(shù)是在appfor
46、ms.p文件中定義的,在界面函數(shù)文件的開始部分使用#include“appforms.p”語句就可以鏈接這些定義。不過,此類界面函數(shù)文件還必須通過C預(yù)處理程序cpp.exe進(jìn)行轉(zhuǎn)換,也就是將*.pcl文件轉(zhuǎn)換為*.cpp文件后才能使用。在程序編寫初期,需要反復(fù)使用這些程序和指令進(jìn)行錯(cuò)誤調(diào)試,格式轉(zhuǎn)換等工作,較為麻煩。所以本文編寫了一系列批處理程序,使這些程序編譯,調(diào)試工作可以快速,準(zhǔn)確的完成,大大提高了工作效率。這些程序以bat文件格式
47、保存,在DOS狀態(tài)下運(yùn)行,DOS主要是一種面向磁盤的系統(tǒng)軟件,說的簡單些,DOS就是人與機(jī)器的一座橋梁,是罩在機(jī)器硬件外面的一層“外殼”,有了DOS,我們就不必去深入了解極其復(fù)雜的硬件結(jié)構(gòu),也不必去死記硬背那些枯燥的機(jī)器命令。我們只需通過</p><p> 1.4 PCL功能概述</p><p> PCL的主要功能包括:命令行表達(dá)式輸入、可編程的命令庫函數(shù)、豐富的表格及菜單庫共開發(fā)用戶
48、圖形界面、遞歸的子程序和函數(shù)調(diào)用、同類函數(shù)歸于一個(gè)類、條件分支語句、條件循環(huán)語句、用戶可定義的表格生成功能是用戶的PCL函數(shù)可通過菜單選項(xiàng)來執(zhí)行、數(shù)據(jù)庫的訪問存取工具、整型、實(shí)型、邏輯型、字符串標(biāo)量及常數(shù)、局部、全局、靜態(tài)變量及類變量、任意變量類型的數(shù)組、虛擬內(nèi)存數(shù)組技術(shù)組內(nèi)存管理功能、跟蹤調(diào)試工具、數(shù)組排序和搜索、字符串函數(shù)包括大小寫轉(zhuǎn)換和縮寫檢查、二進(jìn)制及文本文件讀寫功能、多種數(shù)學(xué)函數(shù)程序、豐富的圖形函數(shù)、模型管理程序、系統(tǒng)實(shí)用工具
49、等。PCL語言為用戶解決千變?nèi)f化的問題提供了一個(gè)發(fā)揮主動(dòng)性的空間,根據(jù)實(shí)際問題可以用PCL語言編寫一個(gè)用戶程序接口,使計(jì)算更加快速有效。它允許用戶方便地編制Patran的應(yīng)用小程序,擴(kuò)展Patran的功能,輕松地完成本來是很繁瑣的重復(fù)性很高的操作。通過使用PCL自定義功能,用戶能夠在Patran的界面中增強(qiáng)自定義菜單或表格、場(chǎng)分析及應(yīng)用程序所需特定的載荷、特性和邊界條件等,也可以把自己的分析程序集成到Patran統(tǒng)一的環(huán)境中。針對(duì)特殊的
50、工程問題,還可以對(duì)Patran的</p><p> 1.5 PCL的語言結(jié)構(gòu)及編譯使用</p><p> PCL的語言結(jié)構(gòu):一個(gè)PCL程序類似于C或者FORTRAN的函數(shù),在第一行必須以FUNCTION開頭一行以END FUNCTION結(jié)尾,中間為函數(shù)段,PCL函數(shù)的定義格式如下:</p><p> FUNCTION function(arg)</p&g
51、t;<p><b> 程序段</b></p><p> END FUNCTION</p><p> 使用時(shí),直接function(arg)執(zhí)行就行了。</p><p> PCL的編譯和使用:Patran提供了一個(gè)PCL的編譯程序p3pclcomp,在DOS窗口下可以執(zhí)行p3pclcomp,會(huì)出現(xiàn)“->”提示符,可以在
52、提示符后輸入PCL編譯連接的指令,也可以直接在PATRAN圖形窗口的命令條中直接輸入PCL編譯連接的指令,常用的PCL編譯命令包括:1. input:讀入PCL文件并編譯解釋,用此方法可以直接使用PCL文件。其具體使用說明格式為:!!input file.pcl2. compile:將PCL程序編譯成PATRAN的庫文件,用此方法可以把文本文件編譯成二進(jìn)制文件,方便程序調(diào)用,而且可以進(jìn)行程序的封裝。其具體使用格式為:!!comp
53、ile file.pcl library.plb3. library:加載和組織PATRAN庫文件??梢约虞d任意個(gè)庫文件,也可以組織管理,包括合并,刪除程序類庫。 常用的使用說明格式為: !!library [add] library.plb(library.plb...) !!library [remove]
54、library.plb(library.plb...) !!li</p><p> 另外,PCL還提供了跟蹤調(diào)試命令和其他命令,實(shí)用比較少。我們一般把PCL程序的后綴作“.pcl”。PCL程序在PATRAN中可通過三種方法來進(jìn)行編譯和連接,即:(1)PATRAN(2)p3pclcomp;(3)make。</p><p> 5. 條件分支和循環(huán)語句&
55、lt;/p><p> 同別的高級(jí)語言一樣,PCL也具有對(duì)程序流程的控制,即分支和循環(huán),用于條件分支的語句有berkaocntinue,swiethcase,fihetneles等:在循環(huán)語句中,當(dāng)需要非正常跳出循環(huán)體時(shí),可以用以下語句中斷和跳出循環(huán):</p><p> BREAK[lbael]</p><p> CONTn悶UE[lbael]</p>
56、<p> 對(duì)于單個(gè)條件分支可以用采用fi,htne,eles語句進(jìn)行條件分支判斷,如</p><p> IF(logie--alePxression)THEN</p><p> StalemeniS…</p><p> ELSEIF(logieal一xPression)THEN</p><p> Statemenst…&
57、lt;/p><p><b> ELSE</b></p><p> Statemenst…</p><p><b> ENDIF</b></p><p> 對(duì)于多個(gè)分支,可以用swctih,case來實(shí)現(xiàn),如</p><p> SWITCH(exPression)[lba
58、el]</p><p> CASE(exPerssionl,ePxerssioZn,…)</p><p> Statemellst…</p><p> CASE(exPressionl,ePxerssionZ,…)</p><p> Statemellst…</p><p><b> DEFAUI丁
59、l,</b></p><p> Statemenst…</p><p><b> ENDSWITCH</b></p><p> 循環(huán)語句主要用ofr語句來實(shí)現(xiàn),</p><p> FOR(variallle=nmueric一弓xP.rTOnumeric一ePxL[BYnmueric一exP.r])[l
60、allel]</p><p> Statemenst…</p><p><b> ENDFOR</b></p><p> 或者是whlel語句</p><p> WHILE(logieal一xPression)[lbael]</p><p> Staetmellst…</p>
61、<p><b> ENDWHILE</b></p><p> 也可以用erpeat語句來完成</p><p> REPEAT[label]</p><p> StatementS…</p><p> U呵TIL(logicalesePxerssion)</p><p>
62、還有一個(gè)條件循環(huán)語句就是hst:</p><p> LIST(varibale=ePxressionl’[,exPressioZn,…])[lbael]</p><p> StatCmeniS…</p><p><b> ENDLIST</b></p><p> 6. 子函數(shù)和子程序的編寫</p>
63、<p> PCL函數(shù)在第一行必須以FUNCTION開頭,最后一行以END FUNCTION結(jié)尾,中間為函數(shù)段。函數(shù)定義格式如下:</p><p> FUNCTIONfunctionname(arg)</p><p><b> 程序段</b></p><p> END FUNCTION</p><p>
64、 編譯后直接執(zhí)行FUNCTIONfunctionname(arg)就可以了。</p><p> 編寫子程序和子函數(shù)是二次開發(fā)的重點(diǎn)和核心,在PCL語言中集成了大量的函數(shù),對(duì)這些函數(shù)要有一個(gè)整體的把握,可以分類掌握,遇到什么問題就去找那類函數(shù),在幫助文件中的分類非常清楚,對(duì)函數(shù)功能及變量定義都有非常詳細(xì)的說明,這里就不再詳述。在幫助文件中的函數(shù)還是不夠全面,有的函數(shù)沒有進(jìn)行說明,用戶可以根據(jù)用戶界面執(zhí)行命令流得到
65、函數(shù)后進(jìn)行根據(jù)經(jīng)驗(yàn)進(jìn)行測(cè)試一下,找出該函數(shù)的參數(shù)變量的個(gè)數(shù)及具體意義。</p><p> 1.6 課題研究的背景和內(nèi)容</p><p> 有限元法在船舶結(jié)構(gòu)領(lǐng)域的應(yīng)用最早始于20世紀(jì)60年代。在有限元法應(yīng)用之初,有限元法并未與計(jì)算機(jī)結(jié)合起來,有限元建模工作必須由人工來完成,這樣做不僅效率低下、手續(xù)繁瑣,而且極容易出錯(cuò),要分析一個(gè)復(fù)雜的結(jié)構(gòu)需要許多人進(jìn)行長時(shí)間的工作。據(jù)統(tǒng)計(jì),進(jìn)行網(wǎng)格準(zhǔn)備
66、工作占用了整個(gè)有限元分析工作的70%的時(shí)間和工作量。從20世紀(jì)60年代中期起,隨著計(jì)算機(jī)技術(shù)的發(fā)展及其在有限元分析領(lǐng)域的逐步應(yīng)用,有限元法也成為船舶與海洋結(jié)構(gòu)強(qiáng)度設(shè)計(jì)領(lǐng)域中流行的一種數(shù)值方法。早在1969年國際船舶結(jié)構(gòu)會(huì)議(ISSC)上,Roren就做了關(guān)于有限元法對(duì)船舶結(jié)構(gòu)設(shè)計(jì)的影響的論述。隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,一些通用有限元軟件也相繼投入使用。但當(dāng)時(shí)的有限元軟件還主要是針對(duì)有限元計(jì)算分析階段的,關(guān)于有限元前處理的軟件還很少,有限
67、元建模的工作還主要是靠手工完成。20世紀(jì)80年代末,船舶工業(yè)的新技術(shù)競爭日益加劇,市場(chǎng)競爭迫使新船設(shè)計(jì)的周期要求越來越短,對(duì)用分析法進(jìn)行設(shè)計(jì)的效率要求越來越高。當(dāng)時(shí),船舶行業(yè)上用有限元分析軟件的前后處理器,基本上都需要花費(fèi)大量的時(shí)間建立復(fù)雜船體的詳細(xì)有限元分析模型。一般來講,完成一條整船3D分析計(jì)算通常需要3</p><p> MSC的Patran Command Language語言提供了豐富表格和菜單庫,供
68、用戶開發(fā)自編分析程序和圖形界面。而對(duì)錨機(jī)螺栓分布力進(jìn)行加載計(jì)算時(shí),其過程是相當(dāng)復(fù)雜的,但考慮到其計(jì)算步驟是確定的和機(jī)械的,所以結(jié)合Patran的優(yōu)點(diǎn),開發(fā)出一套自動(dòng)加載程序并對(duì)后處理集成化。</p><p> 2 PCL函數(shù)及語法規(guī)則</p><p><b> 2.1概 述</b></p><p> 所有的MSC.Patran 命令首先是
69、由PCL編譯器所編譯過的,PCL表達(dá)式是由C語言程序所編譯的。PCL函數(shù)能被編譯到庫函數(shù)中,與MSC.Patran文件相聯(lián)系。MSC.Patran的內(nèi)置函數(shù)是由C或FORTRAN所編寫的。其邏輯圖如圖:</p><p> 圖2—1—1 邏輯圖</p><p><b> 2.2 主要函數(shù)</b></p><p> 1.ui_form_cre
70、ate ( callback, x, y, position, width, height, label, [unused] )。該函數(shù)用于創(chuàng)建任務(wù)窗口,如圖:</p><p> 圖2—2—1 任務(wù)窗口</p><p><b> 參數(shù)解釋:</b></p><p> callback:活動(dòng)窗口中的事件響應(yīng)函數(shù),由于該窗口并沒有聲明事件,所
71、以該值設(shè)置為“”。</p><p> X:相對(duì)于屏幕的橫坐標(biāo)。</p><p> Y:相對(duì)于屏幕的縱坐標(biāo)。</p><p> Position:設(shè)置該活動(dòng)窗口在屏幕中的位置,“UL”,“UR”,“LL”和“LR”分別表示該活動(dòng)窗口位于屏幕的左上角,右上角,左下角,右下角。</p><p> Width:表格的寬度。</p>
72、<p> Height:表格的高度。</p><p> Label:用于顯示在當(dāng)前的活動(dòng)名。</p><p> ui_label_create ( parent, callback, x, y, label )。該函數(shù)用于創(chuàng)建當(dāng)前活動(dòng)窗口的名字,但是并不能被修改和選擇,用于提供一些附加的說明信息。如圖:</p><p> 圖2—2—2 活動(dòng)窗口
73、</p><p> Parent:新創(chuàng)建的父類窗口,只能是已經(jīng)建立的的活動(dòng)窗口。</p><p> Callback:不用設(shè)置。</p><p><b> X:窗口的橫坐標(biāo)。</b></p><p><b> Y:窗口的縱坐標(biāo)。</b></p><p> Label
74、:用于顯示的文本內(nèi)容。</p><p> 2.ui_separator_create (parent, name, x, y, length, horizontal )。該函數(shù)用于建立分割窗口標(biāo)簽。</p><p> Parent:新創(chuàng)建的父類窗口,只能是已經(jīng)建立的活動(dòng)窗口。</p><p> Name:分割標(biāo)簽的名字。</p><p>
75、; X:分割標(biāo)簽的橫坐標(biāo)。</p><p> Y:分割標(biāo)簽的縱坐標(biāo)。</p><p> Length:分割標(biāo)簽的長度。</p><p> Horizontal:若分割標(biāo)簽是水平的,則該值設(shè)置為true,若該分割標(biāo)簽是垂直的,則該值設(shè)置為false。</p><p> 3.ui_databox_create(parent, callb
76、ack, x, y, label_length, box_length, label, value,</p><p> label_above, datatype, num_vals)。盡管數(shù)據(jù)庫只能接受一行信息,但是這個(gè)信息卻可以很長,該函數(shù)用于建立參數(shù)輸入框。</p><p> Parent:父類地址。</p><p> Callback:PCL函數(shù)名字,
77、這個(gè)函數(shù)要事先在類聲明中定義。</p><p><b> X:位置坐標(biāo)。</b></p><p><b> Y:位置坐標(biāo)。</b></p><p> Label_length:按鈕寬度。</p><p> Box_length:按鈕高度。</p><p> Labe
78、l:用于顯示按鈕文本,描述了數(shù)據(jù)框的內(nèi)容,如果不分配按鈕名字,用“”來代替該label值,并且設(shè)置label_above值為FALSE</p><p> Value:用于顯示數(shù)據(jù)框內(nèi)部的數(shù)值,如果數(shù)據(jù)框的初始值未被設(shè)定,則設(shè)定“”作為初始值。</p><p> Label_above:標(biāo)題被設(shè)置在數(shù)據(jù)框的頂部,則該值被設(shè)定為TRUE,標(biāo)題被設(shè)置在數(shù)據(jù)框的底部,則該值被設(shè)定FALSE。&
79、lt;/p><p> ui_wid_get (widget, parm, value)。</p><p> 該函數(shù)用于接收窗口參數(shù)的初始值。</p><p> widget:其數(shù)值是被詢問是否接收。</p><p><b> Parm:參數(shù)名。</b></p><p> Value:參數(shù)值。
80、</p><p> 5.sys_allocate_string ( string, size )。</p><p> 該函數(shù)用于對(duì)PCL虛擬串變量分配儲(chǔ)存空間。</p><p> 6.ui_wid_get_vstring (widget, parm, vstr )。</p><p> 用于獲取串參數(shù)的值,其返回值是虛擬的串變量。<
81、;/p><p> sys_allocate_array (array,lb1,hb1 [,lb2, hb2 [,lb3,hb3 [,lb4, hb4 ]]])。</p><p> Lb1:一維數(shù)組的低值約束。</p><p> hb1:一維數(shù)組的高值約束。</p><p> lb2:二維數(shù)組的低值約束。</p><p&
82、gt; Hb2:二維數(shù)組的高值約束。</p><p> Lb3:三位數(shù)組的低值約束。</p><p> Hb3:三維數(shù)組的高值約束。</p><p> Lb4:四位數(shù)組的低值約束。</p><p> Hb4:四維數(shù)組的高值約束。</p><p> 7.ui_spread_create:該函數(shù)用于創(chuàng)建參數(shù)輸入
83、表格。</p><p> 在用該函數(shù)創(chuàng)建表格時(shí),需要?jiǎng)?chuàng)建后臺(tái)數(shù)據(jù)處理函數(shù)。</p><p> 也就是說,該函數(shù)只是給數(shù)據(jù)造了一個(gè)房子,</p><p> 但是我們需要這些數(shù)據(jù)在房子里被加工,這時(shí)就需要?jiǎng)?chuàng)建一個(gè)spread_cb函數(shù):</p><p> FUNCTION spread_cb(status,from_c,from_r, t
84、o_c, to_r,layer)</p><p> STRING status[]</p><p> GLOBAL INTEGER from_c, to_c, from_r, to_r, layer</p><p> STRING cell_data[30]</p><p> /***********這個(gè)命令即為當(dāng)點(diǎn)中spread中的
85、任何一個(gè)時(shí),</p><p> 顯示在selectdatabox中的</p><p> 數(shù)據(jù)***********/</p><p> IF((from_c ==to_c)&&(from_r ==to_r)) THEN</p><p> ui_spread_get_cell(nodes_spread, from_c,
86、from_r, 1, cell_data)</p><p> ui_wid_set(nodes_select, "VALUE",cell_data)</p><p><b> ELSE</b></p><p> ui_wid_set(nodes_select, "VALUE",""
87、;)</p><p><b> END IF</b></p><p> END FUNCTION</p><p> /**********結(jié)束SPREAD_cb函數(shù)****************/</p><p> 8.ui_spread_get_cell ( widget_id, col, row, laye
88、r, value )</p><p> 該函數(shù)用于獲取表格輸入?yún)?shù)的地址。</p><p> Widget:必須是表格函數(shù)名。</p><p> Col:接受參數(shù)的列。</p><p> Row:接受參數(shù)的行。</p><p> Layer:接受參數(shù)的層。</p><p> 9.ui
89、_optionmenu_create ( parent, callback, x, y, label_length, label, label_above )。</p><p> 該函數(shù)用于創(chuàng)建下拉菜單選項(xiàng),其選項(xiàng)是一組垂直顯示的任務(wù),</p><p> 但是這些任務(wù)只有用戶選中后才能執(zhí)行。</p><p> 圖2—2—3 菜單選項(xiàng)窗口</p>
90、<p> parent:父系地址,必須是一個(gè)框架名,一個(gè)窗口名。</p><p> Callback:該窗口的命令響應(yīng)函數(shù),這個(gè)函數(shù)必須在類中定義創(chuàng)建。</p><p><b> X:坐標(biāo)。</b></p><p><b> Y:坐標(biāo)。</b></p><p> Label_le
91、ngth:標(biāo)簽長度。</p><p> Label:用于顯示選擇框的名字。</p><p> Label_above:標(biāo)簽顯示在菜單選項(xiàng)的上面,則該值被設(shè)定為TRUE,</p><p> 標(biāo)簽顯示在菜單選項(xiàng)的左邊,則該值被設(shè)定為FALSE。</p><p> 這里要注意的是選項(xiàng)菜單必須被選中后,才能執(zhí)行該響應(yīng)函數(shù),</p>
92、<p> 除非是當(dāng)前的工作狀態(tài)就是執(zhí)行目前的任務(wù)。</p><p> 10.ui_item_create ( parent, name, label, toggleable, options ),</p><p> 用于創(chuàng)建一個(gè)一個(gè)任務(wù)控制鍵,其下拉任務(wù)中包含多重選擇任務(wù)。</p><p> 圖2—2—4 多重任務(wù)窗口</p>&
93、lt;p> parent:父系窗口。</p><p> name:窗口活動(dòng)件的名字,這個(gè)名字通常作為事件訪問函數(shù)的名字,</p><p> 如果沒有引用訪問函數(shù),就設(shè)置為“”。</p><p> Label:被用來顯示窗口的活動(dòng)與否,如果該值被設(shè)為“”或者其父系窗口是選擇菜單,</p><p> 則該條目將被設(shè)定為隱藏。<
94、;/p><p> Toggleable:該值的設(shè)置僅用于菜單選項(xiàng),如果希望該條目顯示出相鄰的條目,</p><p> 則該值設(shè)置為TRUE,如果該值設(shè)置,則該條目僅有一個(gè)值,</p><p> 為FALSE,則該條目僅有一個(gè)值。</p><p> 需要注意的是用該函數(shù)創(chuàng)建的下拉菜單中的任務(wù)相對(duì)其它任務(wù)</p><p&g
95、t; 的位置是按照父系函數(shù)的數(shù)據(jù)類型所定義的。</p><p> 11.ui_labelicon_create ( parent, callback, x, y, iconname )。</p><p> 該函數(shù)用于創(chuàng)建多重命令窗口,</p><p> 圖2—2—5 多重命令窗口</p><p> Parent:新創(chuàng)建的父類活動(dòng)窗口
96、。</p><p> Callback:無效果,該值設(shè)置為“”。</p><p> X:該活動(dòng)窗口的橫坐標(biāo)。</p><p> Y:該活動(dòng)窗口的縱坐標(biāo)。</p><p> Iconname:包含該復(fù)合窗口內(nèi)部信息的文件名。</p><p> 2.3與C語言的交互性</p><p>
97、PCL的語法規(guī)則與C語言的規(guī)則較為相近,實(shí)際上在開發(fā)MSC.Patran的過程中,</p><p> C,RORTRAN和PCL源代碼是同時(shí)運(yùn)用的,換句話說,Patran的源文件是通過C語言開發(fā)出來的。運(yùn)用C語言有許多優(yōu)點(diǎn),包括交互性,兼容性等,這樣就增加了源代碼開發(fā)的可讀性,特別是借助C語言的宏定義,這樣會(huì)大大提高程序的運(yùn)行效率。例如下面的選擇語句的編寫:</p><p> #def
98、ine NODE 1</p><p> #define ELEMENT 2</p><p> IF ( entity == NODE ) THEN</p><p><b> xxx</b></p><p> ELSE IF ( entity == ELEMENT ) THEN</p><p&g
99、t;<b> xxx</b></p><p><b> END IF</b></p><p> 當(dāng)然我們可以這樣替代:</p><p> IF ( entity == 1 ) THEN</p><p><b> xxx</b></p><p>
100、 ELSE IF ( entity == 2 ) THEN</p><p><b> xxx</b></p><p><b> END IF</b></p><p> 另外,這些宏定義名可以放在include包含文件中,通過#define定義聲明。通過集中定義可以使程序簡潔,代碼簡單。需要注意的是,一般C語言會(huì)自動(dòng)
101、進(jìn)行預(yù)編譯,如果被嵌入FORTRAN或PCL中,這些源文件一定要進(jìn)行預(yù)編譯,其編譯語句如下:</p><p> customization <input_file_name> <output_file_name></p><p> 2.4 PCL語言的變量和常量 </p><p> PCL變量要預(yù)先定義類型,范圍,維數(shù),所有的變量的名字
102、所占用的字節(jié)為1到31位。合法的變量類型包括整形,實(shí)型,邏輯值,數(shù)據(jù)串類型,窗口值。要定義變量的作用范圍和作用時(shí)間。</p><p> Integer:整形變量聲明只要在變量名字前聲明就可以了。例如:INTEGER a, b, c</p><p> Logical:邏輯變量聲明的格式為logical變量名,邏輯返回值為true或false。</p><p>
103、Real:實(shí)型變量的聲明格式為Real變量名,冪的數(shù)值大小為1.e-30到1.e30。</p><p> Strings:數(shù)據(jù)串類型的聲明只要在對(duì)應(yīng)的變量名前就可以了,但是要注意聲明數(shù)據(jù)最大長度,例如:STRING name[20], option[130]。PCL串變量的長度數(shù)會(huì)自動(dòng)達(dá)到預(yù)先聲明的最大值。例如:STRING line[40]</p><p> line = “ABC”
104、</p><p> line = line // “ ”</p><p> line = line // “DEF”</p><p> 則該line變量被定義為“ABCDEF”沒有尾格,這一點(diǎn)是和FORTRAN不同的。</p><p> Widgets:其定義格式如下:WIDGET myform, mybutton。窗口變量僅僅用于用
105、戶與程序的交換,窗口變量可以嵌套在用戶定義的函數(shù)中或其他的窗口中。窗口的常量的值是WIDGET_NULL.如果程序執(zhí)行失敗,則窗口變量的返回值為WIDGET_NULL。要對(duì)窗口變量進(jìn)行初始化時(shí),其初始值被設(shè)定為WIDGET_NULL。</p><p> PCL中的所有變量類型都能組成數(shù)組,數(shù)組維數(shù)可以任意。各維數(shù)組上下限可以自定義,默認(rèn)的下限是“1”而不是“0”。邏輯型數(shù)組在函數(shù)被調(diào)用時(shí)開辟空間,調(diào)用后空間被釋
106、放。數(shù)組定義方法如下:</p><p> INTEGERentries(100)</p><p> REAL table(一5:10,20,5:7)</p><p> LOGICAL flags(0:8192)</p><p> STRNIG line[80](100)</p><p> 可以不用直接給數(shù)組分
107、配空間,而定義為動(dòng)態(tài)數(shù)組,其定義方法是定義數(shù)組大小的時(shí)候用關(guān)鍵詞VIRTUAL來定義,如:</p><p> REAL mydata(VIRTUAL)</p><p> 引用動(dòng)態(tài)數(shù)組之前先分配空間,用函數(shù)SYS_ALLOCATE_ARRA()來給動(dòng)態(tài)數(shù)組分配空間,或者用函數(shù)SYS_REALLOCATE_ARRAY()來給動(dòng)態(tài)數(shù)組重新分配空間。動(dòng)態(tài)分配的數(shù)組空間用函數(shù)SYS_FREE_A
108、RRAY()來釋放。如</p><p> SYS_ALLOCATE_ARRA(mydata,1,1000)</p><p> SYS_REALLOCATE_ARRAY(mydata,一200,200,0,20)</p><p> SYS_FREE_ARRAY (mydata)</p><p> 2.5 數(shù)化建模與分析的實(shí)現(xiàn)</p
109、><p> 對(duì)于船舶結(jié)構(gòu),一個(gè)簡單的分段模型的建模過程可能都要用到幾千條PCL語句,如果整個(gè)建模過程都通過手工書寫代碼的形式進(jìn)行,容易出錯(cuò),這將是一項(xiàng)非常繁瑣費(fèi)力的工作。Patran的建模過程實(shí)際上是一組命令的執(zhí)行過程,會(huì)話文件中就保存了這些命令。因此,可以將PCL語言與會(huì)話文件結(jié)合起來,通過調(diào)用會(huì)話文件實(shí)現(xiàn)參數(shù)化建模。由于在Patran用戶界面中操作直觀方便,會(huì)話文件的編寫采用Patran自動(dòng)生成和手工編寫相結(jié)合
110、的方式進(jìn)行。為了實(shí)現(xiàn)參數(shù)化,解決建模中的重復(fù)操作,首先手工在Patron中建立結(jié)構(gòu)模型,然后對(duì)保存下來的會(huì)話文件做必要的修改,在會(huì)話文件中增加變量聲明,必要的數(shù)據(jù)用變量替換。例如:研究船舶橫梁腹板開孔問題時(shí),對(duì)開孔的位置和大小的說明數(shù)據(jù)用變量替換。經(jīng)過這樣修改后,給變量賦不同的值,本來只能實(shí)現(xiàn)單一模型建模的會(huì)話文件可以根據(jù)不同的參數(shù)建立模型了。開發(fā)復(fù)雜、大型的建模程序時(shí),其中的單個(gè)建模片斷也可應(yīng)用這種方法實(shí)現(xiàn)。后面將說明,為了實(shí)現(xiàn)特定的
111、功能,會(huì)話文件中還需要嵌入PCL函數(shù)。</p><p> 會(huì)話文件可以嵌套調(diào)用,建模過程可以采用多個(gè)會(huì)話文件實(shí)現(xiàn),前面的文件結(jié)束后使用sf—play()函數(shù)調(diào)用后面的文件,會(huì)話文件一個(gè)個(gè)依次執(zhí)行,這樣做既便于控制流程,也便于源代碼的管理。建模和分析過程中要用到的函數(shù)和參數(shù)的聲明以及變量的賦值過程需要放在單獨(dú)的會(huì)話文件中,因?yàn)镻atran模型數(shù)據(jù)庫中不保存建模過程中聲明的變量和函數(shù),以后再打開模型文件時(shí),建模時(shí)聲
112、明的函數(shù)和變量都不可用了。由于對(duì)模型參數(shù)化分析或者因其他原因需要利用模型重新計(jì)算時(shí),只要重新執(zhí)行一次函數(shù)和參數(shù)的聲明以及變量賦值過程的會(huì)話文件就可以了,圖1中箭頭所指的就是這種模式,跳過了建模的步驟。</p><p> 3 船體結(jié)構(gòu)參數(shù)化建模程序的開發(fā)</p><p><b> 3.1預(yù)備知識(shí)</b></p><p> 3.1.1 PCL
113、類(CLASS)的結(jié)構(gòu)</p><p> PCL類專門用于編制用戶界面,它實(shí)際上是</p><p> 一組PCL函數(shù)的組合。類的結(jié)構(gòu)如下:</p><p> CLASS classname /*類名*/</p><p> CLASSWIDE declarations . . /*定義可以在整個(gè)類</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于patran船體結(jié)構(gòu)參數(shù)化建模初步研究【開題報(bào)告】
- 基于patran艙口蓋參數(shù)化建模研究【畢業(yè)設(shè)計(jì)】
- 基于patran板架參數(shù)化建模研究【畢業(yè)設(shè)計(jì)】
- 基于patran板架參數(shù)化建模研究【開題報(bào)告】
- 深溝球軸承畢業(yè)設(shè)計(jì)--基于ugnx深溝球軸承的參數(shù)化建模
- 打樁船船體結(jié)構(gòu)規(guī)范設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于msc.patran的航空結(jié)構(gòu)建模技術(shù)研究
- 齒輪參數(shù)化設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 減速器畢業(yè)設(shè)計(jì)---齒輪減速器參數(shù)化建模設(shè)計(jì)
- 基于參數(shù)化建模柱面網(wǎng)殼結(jié)構(gòu)拓?fù)鋬?yōu)化設(shè)計(jì).pdf
- 基于特征參數(shù)的船體曲面參數(shù)化設(shè)計(jì)方法研究與實(shí)現(xiàn).pdf
- 甲板運(yùn)輸船船體結(jié)構(gòu)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于NuCAS的船體結(jié)構(gòu)初步設(shè)計(jì)軟件開發(fā).pdf
- 基于patran船舶縱向強(qiáng)度專家系統(tǒng)開發(fā)【畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)-齒輪機(jī)構(gòu)參數(shù)化設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于proe的發(fā)動(dòng)機(jī)活塞參數(shù)化設(shè)計(jì)
- 減速器參數(shù)化畢業(yè)設(shè)計(jì)
- 基于NAPA的新型高速船船體型線及其參數(shù)化設(shè)計(jì)研究.pdf
- 基于參數(shù)化建模的風(fēng)力機(jī)葉片結(jié)構(gòu)分析及優(yōu)化設(shè)計(jì).pdf
- 基于圖像的礦井巷道結(jié)構(gòu)參數(shù)化建模的研究.pdf
評(píng)論
0/150
提交評(píng)論