基于patran船體結構參數化建模初步研究【畢業(yè)設計】_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)論文(設計)</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 有限元模型建模準則4</p><p>  1.1.5 有限元模型性能指標5<

3、/p><p>  1.2MSC.Patran軟件概述6</p><p>  1.3PCL語言概述7</p><p>  1.4 PCL功能概述7</p><p>  1.5 PCL的語言結構及編譯使用8</p><p>  1.6 課題研究的背景和內容10</p><p>  2 PCL函

4、數及語法規(guī)則12</p><p><b>  2.1概 述12</b></p><p>  2.2 主要函數12</p><p>  2.3與C語言的交互性18</p><p>  2.5 數化建模與分析的實現20</p><p>  3 船體結構參數化建模程序的開發(fā)21</p&

5、gt;<p>  3.1預備知識21</p><p>  3.1.1 PCL類(CLASS)的結構21</p><p>  3.1.2 用戶函數庫21</p><p>  3.1.3 修改init.pcl文件22</p><p>  3.1.4參數化表格22</p><p>  3.1.5 事件

6、與響應23</p><p>  3.1.6 生成用戶界面23</p><p>  3.2設置參數界面23</p><p><b>  總結38</b></p><p><b>  [參考文獻]39</b></p><p><b>  致 謝40&l

7、t;/b></p><p>  基于patran船體結構參數化建模初步研究</p><p><b>  摘 要</b></p><p>  依據對PCL語言的語法學習,進行基于patran軟件的對船舶結構進行參數化建模的初步研究。首先開發(fā)出簡單板的參數化建模界面,了解和熟悉參數化建模的流程,了解船體雙層底結構形式,建立船體幾何模型參數化。

8、其次有限元模型參數化的實現,建立雙層底有限元模型,為船體結構整船參數化建模提供思路。最后,對現有的patran軟件進行二次開發(fā),開發(fā)船體結構建模模塊,并最終實現參數化建模并且總結和分析設計中存在的不足,并提出改進方案。</p><p>  結論:船體結構比較復雜,船體結構艙段建模是一項很繁瑣的工作,對現有的 patran 軟件進行二次開發(fā),開發(fā)船體結構建模模塊,可以加速建模速度,縮減建模工作量,同時也為結構優(yōu)化的

9、改進作基礎。</p><p>  [關鍵詞] 船體結構;二次開發(fā);PCL語言;參數化建模</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>  參數化(Parametric)技術是最早是CAD在實際應用工作中提出的課題,它是該應用領域內的一個重要

15、的、且正在蓬勃發(fā)展的研究課題。參數化是指設計對象的結構形狀比較定型,可以用一組參數來確定設計對象,參數與設計對象的控制尺寸有明顯的對應關系,從而可使設計的結果受尺寸的驅動。參數化設計是指參數化模型的尺寸對應關系的表示,而不是確定具體的數值,通過調準參數來修改和控制幾何形狀,自動實現產品的精確造型。變化一個參數值,自動改變所有與它相關的模型尺寸,并遵守約束條件,這就是采用參數化的模型。參數化設計與傳統方法相比,最大的不同在于它存儲了設計的

16、整個過程,能設計出一簇而不是單一的產品模型。傳統的人機交互式繪圖一般要用精確的尺寸值定義幾何元素,輸入的每一條線都必須有確定的位置,圖形一旦確定,即使結構相似,但想改變圖形大小尺寸,只能對圖形進行編輯。而工程設計中,一方面,進行新產品的設計不可避免地需要多次反復修改,需要進行零件結構和尺寸的綜合協調、優(yōu)化;另一方面,從大量機械、電子等系列產品的圖紙中可以發(fā)現,同一基本結構形式的零部件,其圖形結構具有一定的相似性,往往只是尺寸的大小不同,

17、其圖形尺寸隨尺寸參</p><p>  隨著造船技術與航運市場的發(fā)展,船舶建造向大型化和經濟化方向發(fā)展,越來越多的船舶超越了現行有關規(guī)范的規(guī)定,需要利用有限元直接計算的手段來評估船舶的安全性。這類計算有的選用國內自主開發(fā)的軟件,有的采用各大船級社的結構計算軟件。MSC公司的系列軟件在我國船舶結構計算中占據著非常廣泛的市場。然而,直接應用通用有限元軟件分析船舶結構需要較高的有限元技巧和較長建模時間,這種方式不能滿足

18、現實船舶設計建造的要求,也不具備處理突發(fā)事件的能力。有些結構建模和分析在通用軟件中實現也不是很方便。作者在研究船舶強梁腹板開孔問題時,由于需要考慮不同的開孔參數和載荷邊界條件,建模與分析過程中有許多重復性的工作,耗費大量許多寶貴的時間。為解決這個問題,本文采用對通用有限元軟件MSC. Patran進行二次開發(fā)的方法,針對船舶行業(yè)的應用特點和特定的問題,開發(fā)適當的功能模塊。MSC.Patran具有齊全的前、后處理功能,以MSC.Patra

19、n為平臺,應用PCL語言并結合會話文件對MSC.Patran進行二次開發(fā)實現結構建模與分析的參數化方法可行而且非常方便。</p><p><b>  1 緒論</b></p><p>  1.1有限元法基本簡介</p><p>  1.1.1 基本原理</p><p>  在工程技術領域內,對于力學問題或其他場問題,己經

20、得到了基本微分方程和相應的邊界條件。但能用解析方法求出精確解的只是方程性質比較簡單且?guī)缀芜吔缦喈斠?guī)則的少數問題。因此,人們多年來一直在尋求另一種方法,即數值解法。</p><p>  有限元法是一種新的現代數值方法。它將連續(xù)的求解域離散為由有限個單元組成的組合體。這樣的組合體能用來模擬和逼近求解域。因為單元本身可以有不同的幾何形狀,且單元間能夠按各種不同的聯結方式組合在一起,所以這個組合體可以模型化幾何形狀非常復

21、雜的求解域。有限元法另一重要步驟是利用在每一單元內假設的近似函數來表示全求解域上未知場函數。單元的近似函數通常由未知場函數在各個單元節(jié)點上的函數值以及單元插值函數表達,因此,在一個問題的有限元分析中,未知場函數的節(jié)點值就成為新的未知量,從而使一個連續(xù)的無限自由度問題化為離散的有限自由度問題。一經求出這些節(jié)點未知量,就可以利用插值函數確定單元組合體上的場函數。顯然,隨著單元數目的增加,即單元尺寸的縮小,解答的近似程度將不斷改進。如果單元滿

22、足收斂條件,得到的近似解最后將收斂于精確解。</p><p>  有限元法的應用已由求解彈性力學平面問題擴展到空間問題、板殼問題;由求解靜力平衡問題擴展到求解動力問題、穩(wěn)定問題;從線性分析擴展到物理、幾何和邊界的非線性分析;分析的對象也從固體力學擴展到流體力學、傳熱學、電磁學等其他領域。</p><p>  1.1.2 有限元法基本思路</p><p>  有限元法

23、的基本思路是通過連續(xù)體離散化的方法[14],尋求適應控制方程并滿足邊界條件和連續(xù)條件的數值方法。</p><p>  它的具體做法是:先將物體假想地分割(離散化)成許多小單元,各個單元由節(jié)點聯結起來。對于每個單元,用節(jié)點未知量通過插值函數近似地表征單元內部的各種物理量,并使它們在單元內部以積分的形式滿足問題的控制方程,從而將每個單元對整體的影響和貢獻,轉化到各自單元的節(jié)點上。然后將這些單元總裝成一個整體,并使它們

24、滿足整個求解域的邊界條件和連續(xù)條件,得到一組有關節(jié)點未知量的聯立方程,方程解出后,再用插值函數和有關公式,求得物體內部各點所要求的各種物理量。</p><p>  有限元分析是設計人員在計算機上調用有限元程序完成的。為此,必須了解所用程序的功能、限制以及支持軟件運行的計算機硬件環(huán)境。分析者的任務是建立有限元模型、進行有限元分析并解決分析出現的問題、以及計算后的數據處理。</p><p> 

25、 有限元模型數據主要包括:</p><p>  1)主控數據,包括分析任務描述(結構靜力分析、模態(tài)分析、時程響應分析、非線性分析、接觸分析、彈塑性分析等等)以及輸出控制數據;</p><p>  2)材料性質數據,包括材料的彈性常數、熱膨脹系數、熱傳導系數、密度、極限強度等參數;</p><p>  3)荷載數據,包括基本荷載模式、工況組合等;</p>

26、<p>  4)有限元網格節(jié)點坐標數據;</p><p>  5)單元類型及單元拓撲結構描述數據;</p><p>  6)邊界條件和連接條件數據等。</p><p>  1.1.3 有限元法分析流程</p><p>  在有限元分析實際應用中,大量的工作是數據準備和整理計算結果。目前,許多軟件都提供前后處理程序,自動生成有限元模

27、型數據(尤其是幾何數據),自動處理分析結果數據并賦予圖形顯示。因此,有限元設計過程就是正確使用有限元分析軟件的過程,典型的流程如圖</p><p>  圖1—1—1 有限元分析流程示意圖</p><p>  1.1.4 有限元模型建模準則</p><p>  所謂建模就是根據工程分析精度要求,建立合適的能模擬實際結構的有限元模型。在連續(xù)體離散化及用有限個參數表征無限

28、個形態(tài)自由度過程中不可避免地引入了近似。為使分析結果有足夠的精度,所建立的有限元模型必須在能量上與原連續(xù)系統等價。具體地應滿足下述準則:</p><p>  1)有限元模型應滿足平衡條件,即結構的整體和任一單元在節(jié)點上都必須保持靜力平衡;</p><p>  2)變形協調條件。交匯于一點上的各元素在外力作用下,引起元素變形后必須仍保持交匯于一個節(jié)點。整個結構上的各個節(jié)點,也都應同時滿足變形

29、協調條件。若用協調元,元素邊界上應滿足相應的位移協調條件;</p><p>  3)必須滿足邊界條件(包括整個結構邊界條件及單元間的邊界條件)和材料的本構關系;</p><p>  4)剛度等價原則。有限元模型的抗彎、抗扭、抗拉及抗剪剛度應盡可能等價;</p><p>  5)認真選取單元,使之能較好地反映結構構件的傳力特點,尤其是對主要受力構件,應做到盡可能地不失

30、真。在單元內部所采用的應力和位移函數必須是當單元大小遞減時有限元解趨于連續(xù)系統的精確解。對于非收斂元,應避免使用,對于波動收斂元應慎用;</p><p>  6)應根據結構特點、應力分布情況、單元性質、精度要求及計算量大小等仔細劃分計算網格;</p><p>  7)在幾何上要盡可能地逼近真實的結構體,其中特別要注意曲線與曲面的逼近問題;</p><p>  8)仔

31、細地處理載荷模型,正確地生成節(jié)點力,同時載荷的簡化不應跨越主要受力構件;</p><p>  9)質量的堆聚應滿足質量質心、質心矩及慣性矩等效要求;</p><p>  10)當量阻尼折算應符合能量等價要求;</p><p>  11)超單元的劃分盡可能單級化并使剩余結構最小。</p><p>  1.1.5 有限元模型性能指標</p&

32、gt;<p>  有限元模型是借助計算機進行分析的離散近似的模型。對于線性靜力問題,它包括有限元網格的離散點組成的近似幾何模型,由材料力學特性數據和單元剛度矩陣表達的變形應力平衡近似,以及外載荷近似和邊界條件近似的總體。因此,即便理論模型是準確的,模型誤差總是難免的。要控制和減小誤差,有限元模型應滿足下述性能指標。</p><p>  1)可靠性:簡化模型的變形和受力及力的傳遞等應與實際結構一致。例

33、如,有限元模型中的桿、梁、板(殼)、平面應力、平面應變以及連接條件和邊界條件等,均應與實際結構相符合。確定模型的可靠性可用下列準則判斷:物理力學特性保持;相應的數學特性保持。</p><p>  2)精確性:有限元解的近似誤差與分片差值函數的逼近誤差成正比。因此,在建立有限元模型時,應根據問題的性質和精度要求,選用一階精度元,二階精度元和高階精度元等不同類型的單元。</p><p>  3

34、)魯棒性:其確切含義是指有限元方法對有限元模型的幾何形狀變化,對于材料參數的變化(例如泊松比從接近不可壓縮變成不可壓縮)以及對于從中厚度板模型變成薄板的板厚變化的依賴性:也是有限元法的可靠性對上述變化的敏感程度。</p><p>  4)計算成本的經濟性:計算經濟性問題不僅與算法的復雜性、算法結構、程序的優(yōu)化程序以及總的算術運算次數相關,而且在精度確定下,與有限元建模的質量有很大的關系。選用單元時,應盡量選取在頂

35、點設置節(jié)點的單元。</p><p>  除了節(jié)點自由度相對布置對計算效率的影響之外,單元剖分全局性的疏密配置更為重要。例如,在應力集中部位,為達到好的計算效果,應該布置較密的網格,以刻畫位移變化梯度較大的實際情況。自適應網格技術的應用可以很好地解決全局疏密合理配置問題。</p><p>  1.2MSC.Patran軟件概述</p><p>  MSC.Patran

36、軟件是有限元分析前后處理軟件,它可是用戶通過圖形交互界面方便完成網格劃分、模型描述等工作,以保工程分析人員從繁重的數據準備工作中解脫出來;并且能將計算結果以多種方式提供給用戶,以便用戶在方便時獲取信息并完成后處理。目前,該軟件已廣泛應用于航空航天、汽車、造船及國防等各大領域。MSC.Nasrtna以MSC.Patran為前后處理軟件。通過MSC.Patran可以和多種CAD和CAE軟件相連接。幾何模型(一維、二維和三維模型)可以通過調入

37、(CAD)的模型,也可以在MSC.Patran里直接建立。MSC.Partna有強大的網格劃分功能,包括曲線、曲面和實體的各種網格劃分;對幾何或單元的載荷/邊界條件的各種定義;材料模型定義;單元屬性定義;在和工況定義;場定義;分析類型定義;分析結果顯示;x,y圖示等。</p><p>  MSC.Patran是世界公認最佳的集合訪問,有限元建模,分析求解及數據可視化于一體的新一代框架式軟件系統,通過其全新的“并行

38、工程概念”和無與倫比的工程應用模塊,將世界所有著名的CAD/ CAE/ CAM/ CAT(測試) 軟件系統及用戶自編程序自然地融為一體。MSC. Patran獨有的SGM(單一幾何模型) 技術可直接在幾何模型一級訪問各類CAD 軟件數據庫系統,包括UG、Pro/ ENGI2NEER、CATIA、CADDSS、Euclid、SoildEdge 、Solid2works 、AutoDesk MDT 及I2DEAS 等各類CAD/ CAM軟件

39、數據庫。除了框架系統外,MSC. Patran還擁有功能強大的各種專用分析應用模塊,主要包括:</p><p>  MSC. Patran FEA(提供了靜力、動力、熱傳導、非線型及優(yōu)化靈敏度分析等功能);</p><p>  MSC. Patran THERMAL (專用工程自動熱分析軟件系統,可處理各種復雜的傳遞問題,并提供了豐富的與溫度相關的材料庫、對流關系庫及與時間和溫度相關的專業(yè)

40、函數庫);</p><p>  MSC. Patran LAMINATEMODELER(集復合材料設計、分析、制造于一體的軟件系統)。</p><p>  PCL (MSC. Patran Command Language)語言是MSC. Patran的一個高級的模塊化結構的編程語言和用戶自定義工具,類似于C語言和FORTRAN語言。PCL語言提供了豐富的表格和菜單庫,供開發(fā)用戶自編分析程

41、序或者特定的圖形界面。同時,PCL語言提供的表格生成功能使得用戶自編的PCL函數能夠通過菜單選項來執(zhí)行。</p><p>  為了利用MSC.Patran的前后處理功能,編寫了一系列的PCL函數,用來從MSC.Patran的數據庫中讀取數據并生成計算時所需的數據輸入文件,以及將結果文件的數據寫入MSC.Patran的數據庫中,供MSC.Patran進行前后處理。開發(fā)用戶界面的目的是為了將這些自編譯的函數集中起來,

42、通過直觀的圖形界面進行交互,方便使用。PCL語言隨同MSC.Patran一起發(fā)布,使用它可以創(chuàng)建新的或者改進MSC.Patran功能,能為特定應用程序創(chuàng)建用戶界面和數據庫,能夠調用MSC.Patran內的所有函數和MSC.Patran的二次開發(fā)技術。本文利用PCL語言對MSC.Patran進行二次開發(fā),編制了船體結構自動建模程序,實現船體結構自動建模,并通過將自編處理程序與具有外部工具調用功能編輯器集成,開發(fā)出了MSC.Patran的集

43、成環(huán)境,并對軟件后處理系統集成化,有效地提高了工作效率。</p><p>  1.3PCL語言概述</p><p>  PCL語言類似于C語言和FORTRAN語言,它包含與之相同的數據類型,也具有大量的函數庫。除了基本的數學函數庫和系統訪問的函數庫以外,它還提供了大量與有限元建模有關的函數,如幾何建模函數,網格自動劃分函數,載荷施加,屬性添加及結果后處理有關的函數。利用這些函數,用戶可以編

44、寫自己的函數,并用系統命令?。ibrary將其加載到Patran中,建立與NASTRAN的連接,可以在以后的建模中隨時調用。由于MSC.Patran 沒有自帶的程序編輯器,需要利用那些具有外部工具調用功能的編輯器,比如MicrosoftVisual C++、Editplus等。這些編輯器都支持用戶自己開發(fā)的工具,首先要進行相關的參數設置,添加PCL 工具菜單,將PCL開發(fā)環(huán)境與批處理程序集成。設置完成后就可以在編寫函數文件的同時,直接

45、通過編輯器進行PCL 函數文件的編譯、轉換等工作,極大地方便了程序開發(fā)。</p><p>  在使用PCL語言進行船體結構建模程序的編譯中,需要不斷對函數文件進行編譯,調試。這就必須調用MSC.Patran自帶的編譯程序p3pclcomp.exe,通過Patran命令行或DOS窗口中輸入!!input*.pcl的方式來完成(*代表文件名)。在進行圖形用戶界面開發(fā)時,那些表示控件大小和間距的標準參數是在appfor

46、ms.p文件中定義的,在界面函數文件的開始部分使用#include“appforms.p”語句就可以鏈接這些定義。不過,此類界面函數文件還必須通過C預處理程序cpp.exe進行轉換,也就是將*.pcl文件轉換為*.cpp文件后才能使用。在程序編寫初期,需要反復使用這些程序和指令進行錯誤調試,格式轉換等工作,較為麻煩。所以本文編寫了一系列批處理程序,使這些程序編譯,調試工作可以快速,準確的完成,大大提高了工作效率。這些程序以bat文件格式

47、保存,在DOS狀態(tài)下運行,DOS主要是一種面向磁盤的系統軟件,說的簡單些,DOS就是人與機器的一座橋梁,是罩在機器硬件外面的一層“外殼”,有了DOS,我們就不必去深入了解極其復雜的硬件結構,也不必去死記硬背那些枯燥的機器命令。我們只需通過</p><p>  1.4 PCL功能概述</p><p>  PCL的主要功能包括:命令行表達式輸入、可編程的命令庫函數、豐富的表格及菜單庫共開發(fā)用戶

48、圖形界面、遞歸的子程序和函數調用、同類函數歸于一個類、條件分支語句、條件循環(huán)語句、用戶可定義的表格生成功能是用戶的PCL函數可通過菜單選項來執(zhí)行、數據庫的訪問存取工具、整型、實型、邏輯型、字符串標量及常數、局部、全局、靜態(tài)變量及類變量、任意變量類型的數組、虛擬內存數組技術組內存管理功能、跟蹤調試工具、數組排序和搜索、字符串函數包括大小寫轉換和縮寫檢查、二進制及文本文件讀寫功能、多種數學函數程序、豐富的圖形函數、模型管理程序、系統實用工具

49、等。PCL語言為用戶解決千變萬化的問題提供了一個發(fā)揮主動性的空間,根據實際問題可以用PCL語言編寫一個用戶程序接口,使計算更加快速有效。它允許用戶方便地編制Patran的應用小程序,擴展Patran的功能,輕松地完成本來是很繁瑣的重復性很高的操作。通過使用PCL自定義功能,用戶能夠在Patran的界面中增強自定義菜單或表格、場分析及應用程序所需特定的載荷、特性和邊界條件等,也可以把自己的分析程序集成到Patran統一的環(huán)境中。針對特殊的

50、工程問題,還可以對Patran的</p><p>  1.5 PCL的語言結構及編譯使用</p><p>  PCL的語言結構:一個PCL程序類似于C或者FORTRAN的函數,在第一行必須以FUNCTION開頭一行以END FUNCTION結尾,中間為函數段,PCL函數的定義格式如下:</p><p>  FUNCTION function(arg)</p&g

51、t;<p><b>  程序段</b></p><p>  END FUNCTION</p><p>  使用時,直接function(arg)執(zhí)行就行了。</p><p>  PCL的編譯和使用:Patran提供了一個PCL的編譯程序p3pclcomp,在DOS窗口下可以執(zhí)行p3pclcomp,會出現“->”提示符,可以在

52、提示符后輸入PCL編譯連接的指令,也可以直接在PATRAN圖形窗口的命令條中直接輸入PCL編譯連接的指令,常用的PCL編譯命令包括:1. input:讀入PCL文件并編譯解釋,用此方法可以直接使用PCL文件。其具體使用說明格式為:!!input file.pcl2. compile:將PCL程序編譯成PATRAN的庫文件,用此方法可以把文本文件編譯成二進制文件,方便程序調用,而且可以進行程序的封裝。其具體使用格式為:!!comp

53、ile file.pcl library.plb3. library:加載和組織PATRAN庫文件??梢约虞d任意個庫文件,也可以組織管理,包括合并,刪除程序類庫。 常用的使用說明格式為:    !!library   [add] library.plb(library.plb...)    !!library   [remove]

54、library.plb(library.plb...)    !!li</p><p>  另外,PCL還提供了跟蹤調試命令和其他命令,實用比較少。我們一般把PCL程序的后綴作“.pcl”。PCL程序在PATRAN中可通過三種方法來進行編譯和連接,即:(1)PATRAN(2)p3pclcomp;(3)make。</p><p>  5. 條件分支和循環(huán)語句&

55、lt;/p><p>  同別的高級語言一樣,PCL也具有對程序流程的控制,即分支和循環(huán),用于條件分支的語句有berkaocntinue,swiethcase,fihetneles等:在循環(huán)語句中,當需要非正常跳出循環(huán)體時,可以用以下語句中斷和跳出循環(huán):</p><p>  BREAK[lbael]</p><p>  CONTn悶UE[lbael]</p>

56、<p>  對于單個條件分支可以用采用fi,htne,eles語句進行條件分支判斷,如</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>  對于多個分支,可以用swctih,case來實現,如</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語句來實現,</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、還有一個條件循環(huán)語句就是hst:</p><p>  LIST(varibale=ePxressionl’[,exPressioZn,…])[lbael]</p><p>  StatCmeniS…</p><p><b>  ENDLIST</b></p><p>  6. 子函數和子程序的編寫</p>

63、<p>  PCL函數在第一行必須以FUNCTION開頭,最后一行以END FUNCTION結尾,中間為函數段。函數定義格式如下:</p><p>  FUNCTIONfunctionname(arg)</p><p><b>  程序段</b></p><p>  END FUNCTION</p><p> 

64、 編譯后直接執(zhí)行FUNCTIONfunctionname(arg)就可以了。</p><p>  編寫子程序和子函數是二次開發(fā)的重點和核心,在PCL語言中集成了大量的函數,對這些函數要有一個整體的把握,可以分類掌握,遇到什么問題就去找那類函數,在幫助文件中的分類非常清楚,對函數功能及變量定義都有非常詳細的說明,這里就不再詳述。在幫助文件中的函數還是不夠全面,有的函數沒有進行說明,用戶可以根據用戶界面執(zhí)行命令流得到

65、函數后進行根據經驗進行測試一下,找出該函數的參數變量的個數及具體意義。</p><p>  1.6 課題研究的背景和內容</p><p>  有限元法在船舶結構領域的應用最早始于20世紀60年代。在有限元法應用之初,有限元法并未與計算機結合起來,有限元建模工作必須由人工來完成,這樣做不僅效率低下、手續(xù)繁瑣,而且極容易出錯,要分析一個復雜的結構需要許多人進行長時間的工作。據統計,進行網格準備

66、工作占用了整個有限元分析工作的70%的時間和工作量。從20世紀60年代中期起,隨著計算機技術的發(fā)展及其在有限元分析領域的逐步應用,有限元法也成為船舶與海洋結構強度設計領域中流行的一種數值方法。早在1969年國際船舶結構會議(ISSC)上,Roren就做了關于有限元法對船舶結構設計的影響的論述。隨著計算機技術的快速發(fā)展,一些通用有限元軟件也相繼投入使用。但當時的有限元軟件還主要是針對有限元計算分析階段的,關于有限元前處理的軟件還很少,有限

67、元建模的工作還主要是靠手工完成。20世紀80年代末,船舶工業(yè)的新技術競爭日益加劇,市場競爭迫使新船設計的周期要求越來越短,對用分析法進行設計的效率要求越來越高。當時,船舶行業(yè)上用有限元分析軟件的前后處理器,基本上都需要花費大量的時間建立復雜船體的詳細有限元分析模型。一般來講,完成一條整船3D分析計算通常需要3</p><p>  MSC的Patran Command Language語言提供了豐富表格和菜單庫,供

68、用戶開發(fā)自編分析程序和圖形界面。而對錨機螺栓分布力進行加載計算時,其過程是相當復雜的,但考慮到其計算步驟是確定的和機械的,所以結合Patran的優(yōu)點,開發(fā)出一套自動加載程序并對后處理集成化。</p><p>  2 PCL函數及語法規(guī)則</p><p><b>  2.1概 述</b></p><p>  所有的MSC.Patran 命令首先是

69、由PCL編譯器所編譯過的,PCL表達式是由C語言程序所編譯的。PCL函數能被編譯到庫函數中,與MSC.Patran文件相聯系。MSC.Patran的內置函數是由C或FORTRAN所編寫的。其邏輯圖如圖:</p><p>  圖2—1—1 邏輯圖</p><p><b>  2.2 主要函數</b></p><p>  1.ui_form_cre

70、ate ( callback, x, y, position, width, height, label, [unused] )。該函數用于創(chuàng)建任務窗口,如圖:</p><p>  圖2—2—1 任務窗口</p><p><b>  參數解釋:</b></p><p>  callback:活動窗口中的事件響應函數,由于該窗口并沒有聲明事件,所

71、以該值設置為“”。</p><p>  X:相對于屏幕的橫坐標。</p><p>  Y:相對于屏幕的縱坐標。</p><p>  Position:設置該活動窗口在屏幕中的位置,“UL”,“UR”,“LL”和“LR”分別表示該活動窗口位于屏幕的左上角,右上角,左下角,右下角。</p><p>  Width:表格的寬度。</p>

72、<p>  Height:表格的高度。</p><p>  Label:用于顯示在當前的活動名。</p><p>  ui_label_create ( parent, callback, x, y, label )。該函數用于創(chuàng)建當前活動窗口的名字,但是并不能被修改和選擇,用于提供一些附加的說明信息。如圖:</p><p>  圖2—2—2 活動窗口

73、</p><p>  Parent:新創(chuàng)建的父類窗口,只能是已經建立的的活動窗口。</p><p>  Callback:不用設置。</p><p><b>  X:窗口的橫坐標。</b></p><p><b>  Y:窗口的縱坐標。</b></p><p>  Label

74、:用于顯示的文本內容。</p><p>  2.ui_separator_create (parent, name, x, y, length, horizontal )。該函數用于建立分割窗口標簽。</p><p>  Parent:新創(chuàng)建的父類窗口,只能是已經建立的活動窗口。</p><p>  Name:分割標簽的名字。</p><p>

75、;  X:分割標簽的橫坐標。</p><p>  Y:分割標簽的縱坐標。</p><p>  Length:分割標簽的長度。</p><p>  Horizontal:若分割標簽是水平的,則該值設置為true,若該分割標簽是垂直的,則該值設置為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)。盡管數據庫只能接受一行信息,但是這個信息卻可以很長,該函數用于建立參數輸入框。</p><p>  Parent:父類地址。</p><p>  Callback:PCL函數名字,

77、這個函數要事先在類聲明中定義。</p><p><b>  X:位置坐標。</b></p><p><b>  Y:位置坐標。</b></p><p>  Label_length:按鈕寬度。</p><p>  Box_length:按鈕高度。</p><p>  Labe

78、l:用于顯示按鈕文本,描述了數據框的內容,如果不分配按鈕名字,用“”來代替該label值,并且設置label_above值為FALSE</p><p>  Value:用于顯示數據框內部的數值,如果數據框的初始值未被設定,則設定“”作為初始值。</p><p>  Label_above:標題被設置在數據框的頂部,則該值被設定為TRUE,標題被設置在數據框的底部,則該值被設定FALSE。&

79、lt;/p><p>  ui_wid_get (widget, parm, value)。</p><p>  該函數用于接收窗口參數的初始值。</p><p>  widget:其數值是被詢問是否接收。</p><p><b>  Parm:參數名。</b></p><p>  Value:參數值。

80、</p><p>  5.sys_allocate_string ( string, size )。</p><p>  該函數用于對PCL虛擬串變量分配儲存空間。</p><p>  6.ui_wid_get_vstring (widget, parm, vstr )。</p><p>  用于獲取串參數的值,其返回值是虛擬的串變量。<

81、;/p><p>  sys_allocate_array (array,lb1,hb1 [,lb2, hb2 [,lb3,hb3 [,lb4, hb4 ]]])。</p><p>  Lb1:一維數組的低值約束。</p><p>  hb1:一維數組的高值約束。</p><p>  lb2:二維數組的低值約束。</p><p&

82、gt;  Hb2:二維數組的高值約束。</p><p>  Lb3:三位數組的低值約束。</p><p>  Hb3:三維數組的高值約束。</p><p>  Lb4:四位數組的低值約束。</p><p>  Hb4:四維數組的高值約束。</p><p>  7.ui_spread_create:該函數用于創(chuàng)建參數輸入

83、表格。</p><p>  在用該函數創(chuàng)建表格時,需要創(chuàng)建后臺數據處理函數。</p><p>  也就是說,該函數只是給數據造了一個房子,</p><p>  但是我們需要這些數據在房子里被加工,這時就需要創(chuàng)建一個spread_cb函數:</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>  /***********這個命令即為當點中spread中的

85、任何一個時,</p><p>  顯示在selectdatabox中的</p><p>  數據***********/</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>  /**********結束SPREAD_cb函數****************/</p><p>  8.ui_spread_get_cell ( widget_id, col, row, laye

88、r, value )</p><p>  該函數用于獲取表格輸入參數的地址。</p><p>  Widget:必須是表格函數名。</p><p>  Col:接受參數的列。</p><p>  Row:接受參數的行。</p><p>  Layer:接受參數的層。</p><p>  9.ui

89、_optionmenu_create ( parent, callback, x, y, label_length, label, label_above )。</p><p>  該函數用于創(chuàng)建下拉菜單選項,其選項是一組垂直顯示的任務,</p><p>  但是這些任務只有用戶選中后才能執(zhí)行。</p><p>  圖2—2—3 菜單選項窗口</p>

90、<p>  parent:父系地址,必須是一個框架名,一個窗口名。</p><p>  Callback:該窗口的命令響應函數,這個函數必須在類中定義創(chuàng)建。</p><p><b>  X:坐標。</b></p><p><b>  Y:坐標。</b></p><p>  Label_le

91、ngth:標簽長度。</p><p>  Label:用于顯示選擇框的名字。</p><p>  Label_above:標簽顯示在菜單選項的上面,則該值被設定為TRUE,</p><p>  標簽顯示在菜單選項的左邊,則該值被設定為FALSE。</p><p>  這里要注意的是選項菜單必須被選中后,才能執(zhí)行該響應函數,</p>

92、<p>  除非是當前的工作狀態(tài)就是執(zhí)行目前的任務。</p><p>  10.ui_item_create ( parent, name, label, toggleable, options ),</p><p>  用于創(chuàng)建一個一個任務控制鍵,其下拉任務中包含多重選擇任務。</p><p>  圖2—2—4 多重任務窗口</p>&

93、lt;p>  parent:父系窗口。</p><p>  name:窗口活動件的名字,這個名字通常作為事件訪問函數的名字,</p><p>  如果沒有引用訪問函數,就設置為“”。</p><p>  Label:被用來顯示窗口的活動與否,如果該值被設為“”或者其父系窗口是選擇菜單,</p><p>  則該條目將被設定為隱藏。<

94、;/p><p>  Toggleable:該值的設置僅用于菜單選項,如果希望該條目顯示出相鄰的條目,</p><p>  則該值設置為TRUE,如果該值設置,則該條目僅有一個值,</p><p>  為FALSE,則該條目僅有一個值。</p><p>  需要注意的是用該函數創(chuàng)建的下拉菜單中的任務相對其它任務</p><p&g

95、t;  的位置是按照父系函數的數據類型所定義的。</p><p>  11.ui_labelicon_create ( parent, callback, x, y, iconname )。</p><p>  該函數用于創(chuàng)建多重命令窗口,</p><p>  圖2—2—5 多重命令窗口</p><p>  Parent:新創(chuàng)建的父類活動窗口

96、。</p><p>  Callback:無效果,該值設置為“”。</p><p>  X:該活動窗口的橫坐標。</p><p>  Y:該活動窗口的縱坐標。</p><p>  Iconname:包含該復合窗口內部信息的文件名。</p><p>  2.3與C語言的交互性</p><p>  

97、PCL的語法規(guī)則與C語言的規(guī)則較為相近,實際上在開發(fā)MSC.Patran的過程中,</p><p>  C,RORTRAN和PCL源代碼是同時運用的,換句話說,Patran的源文件是通過C語言開發(fā)出來的。運用C語言有許多優(yōu)點,包括交互性,兼容性等,這樣就增加了源代碼開發(fā)的可讀性,特別是借助C語言的宏定義,這樣會大大提高程序的運行效率。例如下面的選擇語句的編寫:</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>  當然我們可以這樣替代:</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語言會自動

101、進行預編譯,如果被嵌入FORTRAN或PCL中,這些源文件一定要進行預編譯,其編譯語句如下:</p><p>  customization <input_file_name> <output_file_name></p><p>  2.4 PCL語言的變量和常量 </p><p>  PCL變量要預先定義類型,范圍,維數,所有的變量的名字

102、所占用的字節(jié)為1到31位。合法的變量類型包括整形,實型,邏輯值,數據串類型,窗口值。要定義變量的作用范圍和作用時間。</p><p>  Integer:整形變量聲明只要在變量名字前聲明就可以了。例如:INTEGER a, b, c</p><p>  Logical:邏輯變量聲明的格式為logical變量名,邏輯返回值為true或false。</p><p>  

103、Real:實型變量的聲明格式為Real變量名,冪的數值大小為1.e-30到1.e30。</p><p>  Strings:數據串類型的聲明只要在對應的變量名前就可以了,但是要注意聲明數據最大長度,例如:STRING name[20], option[130]。PCL串變量的長度數會自動達到預先聲明的最大值。例如:STRING line[40]</p><p>  line = “ABC”

104、</p><p>  line = line // “ ”</p><p>  line = line // “DEF”</p><p>  則該line變量被定義為“ABCDEF”沒有尾格,這一點是和FORTRAN不同的。</p><p>  Widgets:其定義格式如下:WIDGET myform, mybutton。窗口變量僅僅用于用

105、戶與程序的交換,窗口變量可以嵌套在用戶定義的函數中或其他的窗口中。窗口的常量的值是WIDGET_NULL.如果程序執(zhí)行失敗,則窗口變量的返回值為WIDGET_NULL。要對窗口變量進行初始化時,其初始值被設定為WIDGET_NULL。</p><p>  PCL中的所有變量類型都能組成數組,數組維數可以任意。各維數組上下限可以自定義,默認的下限是“1”而不是“0”。邏輯型數組在函數被調用時開辟空間,調用后空間被釋

106、放。數組定義方法如下:</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>  可以不用直接給數組分

107、配空間,而定義為動態(tài)數組,其定義方法是定義數組大小的時候用關鍵詞VIRTUAL來定義,如:</p><p>  REAL mydata(VIRTUAL)</p><p>  引用動態(tài)數組之前先分配空間,用函數SYS_ALLOCATE_ARRA()來給動態(tài)數組分配空間,或者用函數SYS_REALLOCATE_ARRAY()來給動態(tài)數組重新分配空間。動態(tài)分配的數組空間用函數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 數化建模與分析的實現</p

109、><p>  對于船舶結構,一個簡單的分段模型的建模過程可能都要用到幾千條PCL語句,如果整個建模過程都通過手工書寫代碼的形式進行,容易出錯,這將是一項非常繁瑣費力的工作。Patran的建模過程實際上是一組命令的執(zhí)行過程,會話文件中就保存了這些命令。因此,可以將PCL語言與會話文件結合起來,通過調用會話文件實現參數化建模。由于在Patran用戶界面中操作直觀方便,會話文件的編寫采用Patran自動生成和手工編寫相結合

110、的方式進行。為了實現參數化,解決建模中的重復操作,首先手工在Patron中建立結構模型,然后對保存下來的會話文件做必要的修改,在會話文件中增加變量聲明,必要的數據用變量替換。例如:研究船舶橫梁腹板開孔問題時,對開孔的位置和大小的說明數據用變量替換。經過這樣修改后,給變量賦不同的值,本來只能實現單一模型建模的會話文件可以根據不同的參數建立模型了。開發(fā)復雜、大型的建模程序時,其中的單個建模片斷也可應用這種方法實現。后面將說明,為了實現特定的

111、功能,會話文件中還需要嵌入PCL函數。</p><p>  會話文件可以嵌套調用,建模過程可以采用多個會話文件實現,前面的文件結束后使用sf—play()函數調用后面的文件,會話文件一個個依次執(zhí)行,這樣做既便于控制流程,也便于源代碼的管理。建模和分析過程中要用到的函數和參數的聲明以及變量的賦值過程需要放在單獨的會話文件中,因為Patran模型數據庫中不保存建模過程中聲明的變量和函數,以后再打開模型文件時,建模時聲

112、明的函數和變量都不可用了。由于對模型參數化分析或者因其他原因需要利用模型重新計算時,只要重新執(zhí)行一次函數和參數的聲明以及變量賦值過程的會話文件就可以了,圖1中箭頭所指的就是這種模式,跳過了建模的步驟。</p><p>  3 船體結構參數化建模程序的開發(fā)</p><p><b>  3.1預備知識</b></p><p>  3.1.1 PCL

113、類(CLASS)的結構</p><p>  PCL類專門用于編制用戶界面,它實際上是</p><p>  一組PCL函數的組合。類的結構如下:</p><p>  CLASS classname /*類名*/</p><p>  CLASSWIDE declarations . . /*定義可以在整個類</p><p&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論