版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)論文(設(shè)計)</p><p><b> 目錄</b></p><p><b> 摘要III</b></p><p><b> 第一章 緒 論1</b></p><p><b> 1.1 前 言1</b></
2、p><p><b> 1.2概 述1</b></p><p> 1.3 PCL的主要功能2</p><p> 1.4 PCL的語言結(jié)構(gòu)及編譯使用3</p><p> 1.5 課題研究背景、內(nèi)容4</p><p> 1.5.1 研究背景4</p><p>
3、1.5.2 研究內(nèi)容5</p><p> 第二章 PCL函數(shù)及語法規(guī)則6</p><p><b> 2.1概 述6</b></p><p> 2.2 主要函數(shù)6</p><p> 2.3與C語言的交互性12</p><p> 2.4 PCL語言的變量和常量13</p&g
4、t;<p> 第三章 自動加載程序的開發(fā)14</p><p> 3.1程序中油船直接計算14</p><p> 3.2設(shè)置主要參數(shù)界面23</p><p> 3.3以油船為典型輸值計算36</p><p> 3.4 加載函數(shù)文件37</p><p><b> 總 結(jié)
5、38</b></p><p><b> 參考文獻39</b></p><p> 基于PATRAN船舶縱向強度專家系統(tǒng)開發(fā)</p><p><b> 摘要</b></p><p> 本文基于MSC.Patran內(nèi)置的PCL語言,開發(fā)了船舶縱向強度專家系統(tǒng),實現(xiàn)了船體所受載荷的自動
6、加載和縱向強度的計算,開發(fā)有限元后處理系統(tǒng)界面,大大提高了載荷加載效率。程序開始獲取船體參數(shù)值,船體結(jié)構(gòu)特點,貨艙裝載狀況。選定工況,確定載荷及邊界條件建立相對應(yīng)界面。</p><p> 用PCL語言編寫一些直觀的界面,再通過再程序里加入相對應(yīng)的操作命令流逐步完善船舶縱向強度專家系統(tǒng),由于時間和技術(shù)有限本文只是在初步完善了系統(tǒng)界面,而內(nèi)部語言還有待完善。</p><p> [關(guān)鍵詞]
7、PCL;縱向強度;二次開發(fā);有限元分析</p><p> Based on PATRAN longitudinal strength ship expert system development</p><p> [Abstract]These are based of a PCL which is included in MSC.Patran,which develop an lon
8、gitudinal strength ship expert system development .This system achieve distributing force autoloading for the hull and longitudinal strength calculation. It is also develop the finite element post-treatment system interf
9、ace, greatly improving the load loading efficiency.At first Program began to get hull parameters, the hull structure characteristics, cargo loading condition. Selected condition, to determine t</p><p> With
10、 the PCL language writing some intuitive interface, again through again to the corresponding program operation orders flow gradually perfect longitudinal strength ship expert system, because of the time and technology Co
11、., LTD in this paper is just a preliminary perfect system interface, and internal language remains to be perfect.</p><p> [Key words] PCL;longitudinal strength;the second develop;finite element analysis<
12、/p><p><b> 第一章 緒 論</b></p><p><b> 1.1 前 言</b></p><p> MSC.Patran是世界公認最佳的集集合訪問、有限元建模、分析求解及數(shù)據(jù)可視化于一體的新一代框架式軟件系統(tǒng),通過其全新的“并行工程概念”和無與倫比的工程應(yīng)用模塊,將世界所有著名的CAD/ CAE/ CAM
13、/ CAT(測試) 軟件系統(tǒng)及用戶自編程序自然地融為一體。MSC. Patran獨有的SGM(單一幾何模型) 技術(shù)可直接在幾何模型一級訪問各類CAD 軟件數(shù)據(jù)庫系統(tǒng),包括UG、Pro/ ENGI2NEER、CATIA、CADDSS、Euclid、SoildEdge 、Solid2works 、AutoDesk MDT 及I2DEAS 等各類CAD/ CAM軟件數(shù)據(jù)庫。除了框架系統(tǒng)外,MSC. Patran還擁有功能強大的各種專用分析應(yīng)用
14、模塊,主要包括:</p><p> MSC. Patran FEA(提供了靜力、動力、熱傳導(dǎo)、非線型及優(yōu)化靈敏度分析等功能);</p><p> MSC. Patran THERMAL (專用工程自動熱分析軟件系統(tǒng),可處理各種復(fù)雜的傳遞問題,并提供了豐富的與溫度相關(guān)的材料庫、對流關(guān)系庫及與時間和溫度相關(guān)的專業(yè)函數(shù)庫);</p><p> 3.MSC. Patr
15、an LAMINATEMODELER(集復(fù)合材料設(shè)計、分析、制造于一體的軟件系統(tǒng))。</p><p> PCL (MSC. Patran Command Language)語言是MSC. Patran的一個高級的模塊化結(jié)構(gòu)的編程語言和用戶自定義工具,隨同MSC.Patran一起發(fā)布。使用PCL語言可以創(chuàng)建新的或者改進MSC.Patran功能,能為特定應(yīng)用程序創(chuàng)建用戶界面和數(shù)據(jù)庫,能夠調(diào)用MSC.Patran內(nèi)的
16、所有函數(shù)和MSC.Patran的二次開發(fā)技術(shù)。本文利用PCL語言對MSC.Patran進行二次開發(fā),編制了錨機載荷的自動加載程序,實現(xiàn)錨機螺栓分力自動加載,并通過將自編批處理程序與具有外部工具調(diào)用功能編輯器集成,開發(fā)出了MSC.Patran的集成環(huán)境,并對軟件后處理系統(tǒng)集成化,有效地提高了工作效率。</p><p><b> 1.2概 述</b></p><p>
17、 PCL語言類似于C語言和FORTRAN語言,它包含與之相同的數(shù)據(jù)類型,也具有大量的函數(shù)庫。除了基本的數(shù)學(xué)函數(shù)庫和系統(tǒng)訪問的函數(shù)庫以外,它還提供了大量與有限元建模有關(guān)的函數(shù),如幾何建模函數(shù),網(wǎng)格自動劃分函數(shù),載荷施加,屬性添加及結(jié)果后處理有關(guān)的函數(shù)。利用這些函數(shù),用戶可以編寫自己的函數(shù),并用系統(tǒng)命令?。ibrary將其加載到Patran中,建立與NASTRAN的連接,可以在以后的建模中隨時調(diào)用。由于MSC.Patran 沒有自帶的程序
18、編輯器,需要利用那些具有外部工具調(diào)用功能的編輯器,比如MicrosoftVisual C++、Editplus等。這些編輯器都支持用戶自己開發(fā)的工具,首先要進行相關(guān)的參數(shù)設(shè)置,添加PCL 工具菜單,將PCL開發(fā)環(huán)境與批處理程序集成。設(shè)置完成后就可以在編寫函數(shù)文件的同時,直接通過編輯器進行PCL 函數(shù)文件的編譯、轉(zhuǎn)換等工作,極大地方便了程序開發(fā)。</p><p> 在使用PCL語言進行錨機螺栓分力自動加載程序的編
19、譯中,需要不斷對函數(shù)文件進行編譯,調(diào)試。這就必須調(diào)用MSC.Patran自帶的編譯程序p3pclcomp.exe,通過Patran命令行或DOS窗口中輸入!!input*.pcl的方式來完成(*代表文件名)。在進行圖形用戶界面開發(fā)時,那些表示控件大小和間距的標準參數(shù)是在appforms.p文件中定義的,在界面函數(shù)文件的開始部分使用#include“appforms.p”語句就可以鏈接這些定義。不過,此類界面函數(shù)文件還必須通過C預(yù)處理程序
20、cpp.exe進行轉(zhuǎn)換,也就是將*.pcl文件轉(zhuǎn)換為*.cpp文件后才能使用。在程序編寫初期,需要反復(fù)使用這些程序和指令進行錯誤調(diào)試,格式轉(zhuǎn)換等工作,較為麻煩。所以本文編寫了一系列批處理程序,使這些程序編譯,調(diào)試工作可以快速,準確的完成,大大提高了工作效率。這些程序以bat文件格式保存,在DOS狀態(tài)下運行,DOS主要是一種面向磁盤的系統(tǒng)軟件,說的簡單些,DOS就是人與機器的一座橋梁,是罩在機器硬件外面的一層“外殼”,有了DOS,我們就不
21、必去深入了解極其復(fù)雜的硬件結(jié)構(gòu),也不必去死記硬背那些枯燥的機器命令。我們</p><p> 1.3 PCL的主要功能</p><p> 1.命令行表達式輸入。2.可編譯的命令庫函數(shù)。3.豐富的表格及菜單庫供開發(fā)用戶圖形界面。4.遞歸的子程序和函數(shù)調(diào)用。5.同類函數(shù)歸于一個類。6.條件分子語句:if、then、else、swith、case、default、break、cont
22、inue。7.條件循環(huán)語句:repeat、until、while、end while、for、to、by、end for、list、end list。8.用戶可定義的表格生成功能使用戶的PCL函數(shù)可通過菜單選項來執(zhí)行。9.數(shù)據(jù)庫的訪問存取工具。10.整型、實型、邏輯型、字符串變量及常數(shù)。11.局部、全局、靜態(tài)變量及類變量。12.任意變量類型的數(shù)組。13.虛擬內(nèi)存數(shù)組及數(shù)組內(nèi)存管理功能。14.跟蹤調(diào)試工具。15.數(shù)組排序
23、和搜索。16.字符串函數(shù)包括大小寫轉(zhuǎn)換和所寫檢查。17.二進制和文本文件讀寫功能。18.多種數(shù)學(xué)函數(shù)程序。19.豐富的圖形函數(shù):繪點、線、虛圓或?qū)崍A、虛方塊或?qū)嵎綁K、虛多邊形或?qū)嵍噙呅?、在任意位置顯示文本、改變圖形寄存器。20.模型管理程序:比例縮放,轉(zhuǎn)動、旋轉(zhuǎn)、平移。21.系統(tǒng)實用工具。</p><p> 1.4 PCL的語言結(jié)構(gòu)及編譯使用</p><p> PCL的語言
24、結(jié)構(gòu):一個PCL程序類似于C或者FORTRAN的函數(shù),在第一行必須以FUNCTION開頭一行以END FUNCTION結(jié)尾,中間為函數(shù)段,PCL函數(shù)的定義格式如下:</p><p> FUNCTION function(arg)</p><p><b> 程序段</b></p><p> END FUNCTION</p>&
25、lt;p> 使用時,直接function(arg)執(zhí)行就行了。</p><p> PCL的編譯和使用:Patran提供了一個PCL的編譯程序p3pclcomp,在DOS窗口下可以執(zhí)行p3pclcomp,會出現(xiàn)“->”提示符,可以在提示符后輸入PCL編譯連接的指令,也可以直接在PATRAN圖形窗口的命令條中直接輸入PCL編譯連接的指令,常用的PCL編譯命令包括:1.input:讀入PCL文件并編譯
26、解釋,用此方法可以直接使用PCL文件。其具體使用說明格式為:!!input file.pcl2.compile:將PCL程序編譯成PATRAN的庫文件,用此方法可以把文本文件編譯成二進制文件,方便程序調(diào)用,而且可以進行程序的封裝。其具體使用格式為:!!compile file.pcl library.plb3.library:加載和組織PATRAN庫文件??梢约虞d任意個庫文件,也可以組織管理,包括合并,刪除程序類庫。 常用的使用
27、說明格式為: !!library [add] library.plb(library.plb...) !!library [remove] library.plb(library.plb...) !!libra</p><p> 1.5 課題研究背景、
28、內(nèi)容</p><p> 1.5.1 研究背景</p><p> 目前,海運生產(chǎn)中進行船舶縱向強度的計算與校核中,主要存在兩個問題:一方面計算方法過于復(fù)雜,另一方面計算精度不高[1]。</p><p> 開發(fā)適用于船舶設(shè)計、計算的高效可靠的程序系統(tǒng)成了各設(shè)計部門迫切的要求。雖然通用CAE 軟件具有強大的工程解決能力和廣泛的通用性, 但缺乏針對性。將自編軟件與通用
29、軟件結(jié)合, 開發(fā)出適合船舶工程問題的專門軟件, 并使過程高度自動化, 已成為國內(nèi)外各領(lǐng)域CAE 技術(shù)的發(fā)展趨勢。由于船舶縱向強度計算領(lǐng)域的專業(yè)特殊性, 希望開發(fā)出來的強度計算應(yīng)用軟件具有特定的功能和用戶界面。船舶縱向強度專家系統(tǒng)正是基于Patran平臺, 二次開發(fā)工具PCL ( Patran Command Language) 計算結(jié)果表明, 本程序系統(tǒng)界面友好、使用方便, 同時計算準確可靠、收斂迅速, 適于船舶縱向強度計算的快速化[2
30、-3]。</p><p> Patran 是工業(yè)領(lǐng)域最著名的并行框架式有限元前后處理及分析系統(tǒng), 具有完善的幾何造型、全面的有限元處理和方便的分析模型定義功能, 并能集成各種分析軟件和將分析結(jié)果可視化處理 。為提高其專業(yè)針對性, 美國MSC 公司提供了二次開發(fā)語言PCL。PCL 是集成于Patran 中的一個高級、模塊化結(jié)構(gòu)的編程語言和用戶自定義工具, 其主要結(jié)構(gòu)類似于C 語言和Fortran 語言。采用PCL
31、 語言進行二次開發(fā), 是對CAE 過程的全面支持。Patran 為PCL 語言提供了數(shù)萬個函數(shù), 可以方便地完成創(chuàng)建用戶界面控件、讀寫Patran 數(shù)據(jù)庫等操作并且, 它提供了豐富的菜單庫和大量有限元前后處理函數(shù), 供用戶集成自主開發(fā)的分析程序或特定的圖形界面于Patran 系統(tǒng)中。PCL 是Patran 開放性的主要體現(xiàn)。但一直以來, 缺少好的前后置處理模塊。通過PCL 二次開發(fā), 將自編的縱向強度程序無縫集成到Patran 系統(tǒng)中,
32、 并在計算過程中自動調(diào)用Nastran 進行結(jié)構(gòu)分析和敏度分析, 使解決工程結(jié)構(gòu)優(yōu)化問題的能力更為強大,計算過程高度自動化。</p><p> 1.5.2 研究內(nèi)容</p><p> 利用PATRAN軟件,構(gòu)建一個參數(shù)化建模的界面,船體縱向強度專家系統(tǒng)的開發(fā),為實現(xiàn)船體結(jié)構(gòu)強度分析系統(tǒng)自動化,在界面上輸入必要的參數(shù),程序根據(jù)這些參數(shù)進行分析和計算,最終完成模型創(chuàng)建。</p>
33、<p> 通過PCL 二次開發(fā), 將自編的總縱強度算法程序無縫集成到Patran系統(tǒng)中, 并在計算過程中自動調(diào)用Nastran進行結(jié)構(gòu)分析和敏度分析, 使解決工程計算船舶縱向強度的能力更為強大,計算過程高度自動化。</p><p> 第二章 PCL函數(shù)及語法規(guī)則</p><p><b> 2.1概 述</b></p><p>
34、; 所有的MSC.Patran 命令首先是由PCL編譯器所編譯過的,PCL表達式是由C語言程序所編譯的。PCL函數(shù)能被編譯到庫函數(shù)中,與MSC.Patran文件相聯(lián)系。MSC.Patran的內(nèi)置函數(shù)是由C或FORTRAN所編寫的。其邏輯圖如圖1:</p><p><b> 2.2 主要函數(shù)</b></p><p> 1.ui_form_create ( call
35、back, x, y, position, width, height, label, [unused] )。該函數(shù)用于創(chuàng)建任務(wù)窗口,如圖 2。</p><p><b> 參數(shù)解釋:</b></p><p> callback:活動窗口中的事件響應(yīng)函數(shù),由于該窗口并沒有聲明事件,所以該值設(shè)置為“”。</p><p> X:相對于屏幕的橫坐
36、標。</p><p> Y:相對于屏幕的縱坐標。</p><p> Position:設(shè)置該活動窗口在屏幕中的位置,“UL”,“UR”,“LL”和“LR”分別表示該活動窗口位于屏幕的左上角,右上角,左下角,右下角。</p><p> Width:表格的寬度。</p><p> Height:表格的高度。</p><
37、p> Label:用于顯示在當前的活動名。</p><p> ui_label_create ( parent, callback, x, y, label )。該函數(shù)用于創(chuàng)建當前活動窗口的名字,但是并不能被修改和選擇,用于提供一些附加的說明信息。如圖3。</p><p> Parent:新創(chuàng)建的父類窗口,只能是已經(jīng)建立的的活動窗口。</p><p>
38、 Callback:不用設(shè)置。</p><p><b> X:窗口的橫坐標。</b></p><p><b> Y:窗口的縱坐標。</b></p><p> Label:用于顯示的文本內(nèi)容。</p><p> 2.ui_separator_create (parent, name, x, y
39、, length, horizontal )。該函數(shù)用于建立分割窗口標簽。</p><p> Parent:新創(chuàng)建的父類窗口,只能是已經(jīng)建立的活動窗口。</p><p> Name:分割標簽的名字。</p><p> X:分割標簽的橫坐標。</p><p> Y:分割標簽的縱坐標。</p><p> Leng
40、th:分割標簽的長度。</p><p> Horizontal:若分割標簽是水平的,則該值設(shè)置為true,若該分割標簽是垂直的,則該值設(shè)置為false。</p><p> 3.ui_databox_create(parent, callback, x, y, label_length, box_length, label, value,</p><p> la
41、bel_above, datatype, num_vals)。盡管數(shù)據(jù)庫只能接受一行信息,但是這個信息卻可以很長,該函數(shù)用于建立參數(shù)輸入框。</p><p> Parent:父類地址。</p><p> Callback:PCL函數(shù)名字,這個函數(shù)要事先在類聲明中定義。</p><p><b> X:位置坐標。</b></p>
42、<p><b> Y:位置坐標。</b></p><p> Label_length:按鈕寬度。</p><p> Box_length:按鈕高度。</p><p> Label:用于顯示按鈕文本,描述了數(shù)據(jù)框的內(nèi)容,如果不分配按鈕名字,用“”來代替該label值,并且設(shè)置label_above值為FALSE</p&g
43、t;<p> Value:用于顯示數(shù)據(jù)框內(nèi)部的數(shù)值,如果數(shù)據(jù)框的初始值未被設(shè)定,則設(shè)定“”作為初始值。</p><p> Label_above:標題被設(shè)置在數(shù)據(jù)框的頂部,則該值被設(shè)定為TRUE,標題被設(shè)置在數(shù)據(jù)框的底部,則該值被設(shè)定FALSE。</p><p> 4.ui_wid_get (widget, parm, value)。該函數(shù)用于接收窗口參數(shù)的初始值。&l
44、t;/p><p> widget:其數(shù)值是被詢問是否接收。</p><p><b> Parm:參數(shù)名。</b></p><p> Value:參數(shù)值。</p><p> 5.sys_allocate_string ( string, size )。該函數(shù)用于對PCL虛擬串變量分配儲存空間。</p>&
45、lt;p> 6.ui_wid_get_vstring (widget, parm, vstr )。用于獲取串參數(shù)的值,其返回值是虛擬的串變量。</p><p> sys_allocate_array (array,lb1,hb1 [,lb2, hb2 [,lb3,hb3 [,lb4, hb4 ]]])。</p><p> Lb1:一維數(shù)組的低值約束。</p>&l
46、t;p> hb1:一維數(shù)組的高值約束。</p><p> lb2:二維數(shù)組的低值約束。</p><p> Hb2:二維數(shù)組的高值約束。</p><p> Lb3:三位數(shù)組的低值約束。</p><p> Hb3:三維數(shù)組的高值約束。</p><p> Lb4:四位數(shù)組的低值約束。</p>
47、<p> Hb4:四維數(shù)組的高值約束。</p><p> 7.ui_spread_create:該函數(shù)用于創(chuàng)建參數(shù)輸入表格。在用該函數(shù)創(chuàng)建表格時,需要創(chuàng)建后臺數(shù)據(jù)處理函數(shù)。也就是說,該函數(shù)只是給數(shù)據(jù)造了一個房子,但是我們需要這些數(shù)據(jù)在房子里被加工,這時就需要創(chuàng)建一個spread_cb函數(shù):</p><p> FUNCTION spread_cb(status,from_c,
48、from_r, to_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> /***********這個命令即為當點
49、中spread中的任何一個時,顯示在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, from_r, 1, cel
50、l_data)</p><p> ui_wid_set(nodes_select, "VALUE",cell_data)</p><p><b> ELSE</b></p><p> ui_wid_set(nodes_select, "VALUE","")</p>
51、<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, layer, value ),該函數(shù)
52、用于獲取表格輸入?yún)?shù)的地址。</p><p> Widget:必須是表格函數(shù)名。</p><p> Col:接受參數(shù)的列。</p><p> Row:接受參數(shù)的行。</p><p> Layer:接受參數(shù)的層。</p><p> 9.ui_optionmenu_create ( parent, callbac
53、k, x, y, label_length, label, label_above )。該函數(shù)用于創(chuàng)建下拉菜單選項,其選項是一組垂直顯示的任務(wù),但是這些任務(wù)只有用戶選中后才能執(zhí)行。如圖4:</p><p> parent:父系地址,必須是一個框架名,一個窗口名。</p><p> Callback:該窗口的命令響應(yīng)函數(shù),這個函數(shù)必須在類中定義創(chuàng)建。</p><p&g
54、t;<b> X:坐標。</b></p><p><b> Y:坐標。</b></p><p> Label_length:標簽長度。</p><p> Label:用于顯示選擇框的名字。</p><p> Label_above:標簽顯示在菜單選項的上面,則該值被設(shè)定為TRUE,標簽顯示
55、在菜單選項的左邊,則該值被設(shè)定為FALSE。</p><p> 這里要注意的是選項菜單必須被選中后,才能執(zhí)行該響應(yīng)函數(shù),除非是當前的工作狀態(tài)就是執(zhí)行目前的任務(wù)。</p><p> 10.ui_item_create ( parent, name, label, toggleable, options ),用于創(chuàng)建一個一個任務(wù)控制鍵,其下拉任務(wù)中包含多重選擇任務(wù)。如圖5,</p&g
56、t;<p> parent:父系窗口。</p><p> name:窗口活動件的名字,這個名字通常作為事件訪問函數(shù)的名字,如果沒有引用訪問函數(shù),就設(shè)置為“”。</p><p> Label:被用來顯示窗口的活動與否,如果該值被設(shè)為“”或者其父系窗口是選擇菜單,則該條目將被設(shè)定為隱藏。</p><p> Toggleable:該值的設(shè)置僅用于菜單
57、選項,如果希望該條目顯示出相鄰的條目,則該值設(shè)置為TRUE,如果該值設(shè)置,則該條目僅有一個值,為FALSE,則該條目僅有一個值。</p><p> 需要注意的是用該函數(shù)創(chuàng)建的下拉菜單中的任務(wù)相對其它任務(wù)的位置是按照父系函數(shù)的數(shù)據(jù)類型所定義的。</p><p> 11.ui_labelicon_create ( parent, callback, x, y, iconname )。該函數(shù)
58、用于創(chuàng)建多重命令窗口,如圖6。</p><p> Parent:新創(chuàng)建的父類活動窗口。</p><p> Callback:無效果,該值設(shè)置為“”。</p><p> X:該活動窗口的橫坐標。</p><p> Y:該活動窗口的縱坐標。</p><p> Iconname:包含該復(fù)合窗口內(nèi)部信息的文件名。&l
59、t;/p><p> 2.3與C語言的交互性</p><p> PCL的語法規(guī)則與C語言的規(guī)則較為相近,實際上在開發(fā)MSC.Patran的過程中,C,RORTRAN和PCL源代碼是同時運用的,換句話說,Patran的源文件是通過C語言開發(fā)出來的。運用C語言有許多優(yōu)點,包括交互性,兼容性等,這樣就增加了源代碼開發(fā)的可讀性,特別是借助C語言的宏定義,這樣會大大提高程序的運行效率。例如下面的選擇語
60、句的編寫:</p><p> #define NODE 1</p><p> #define ELEMENT 2</p><p> IF ( entity == NODE ) THEN</p><p><b> xxx</b></p><p> ELSE IF ( entity == E
61、LEMENT ) THEN</p><p><b> xxx</b></p><p><b> END IF</b></p><p> 當然我們可以這樣替代:</p><p> IF ( entity == 1 ) THEN</p><p><b> xx
62、x</b></p><p> ELSE IF ( entity == 2 ) THEN</p><p><b> xxx</b></p><p><b> END IF</b></p><p> 另外,這些宏定義名可以放在include包含文件中,通過#define定義聲明。通過
63、集中定義可以使程序簡潔,代碼簡單。需要注意的是,一般C語言會自動進行預(yù)編譯,如果被嵌入FORTRAN或PCL中,這些源文件一定要進行預(yù)編譯,其編譯語句如下:</p><p> customization <input_file_name> <output_file_name></p><p> 2.4 PCL語言的變量和常量 </p><p&
64、gt; PCL變量要預(yù)先定義類型,范圍,維數(shù),所有的變量的名字所占用的字節(jié)為1到31位。合法的變量類型包括整形,實型,邏輯值,數(shù)據(jù)串類型,窗口值。要定義變量的作用范圍和作用時間。</p><p> Integer:整形變量聲明只要在變量名字前聲明就可以了。例如:INTEGER a, b, c</p><p> Logical:邏輯變量聲明的格式為logical變量名,邏輯返回值為tr
65、ue或false。</p><p> Real:實型變量的聲明格式為Real變量名,冪的數(shù)值大小為1.e-30到1.e30。</p><p> Strings:數(shù)據(jù)串類型的聲明只要在對應(yīng)的變量名前就可以了,但是要注意聲明數(shù)據(jù)最大長度,例如:STRING name[20], option[130]。PCL串變量的長度數(shù)會自動達到預(yù)先聲明的最大值。例如:STRING line[40]<
66、;/p><p> line = “ABC”</p><p> line = line // “ ”</p><p> line = line // “DEF”</p><p> 則該line變量被定義為“ABCDEF”沒有尾格,這一點是和FORTRAN不同的。</p><p> Widgets:其定義格式如下:W
67、IDGET myform, mybutton。窗口變量僅僅用于用戶與程序的交換,窗口變量可以嵌套在用戶定義的函數(shù)中或其他的窗口中。窗口的常量的值是WIDGET_NULL.如果程序執(zhí)行失敗,則窗口變量的返回值為WIDGET_NULL。要對窗口變量進行初始化時,其初始值被設(shè)定為WIDGET_NULL。</p><p> 第三章 自動加載程序的開發(fā)</p><p> 3.1程序中油船直接計算
68、</p><p> 3.1.1規(guī)范適用范圍</p><p> 對于船長大于或等于190m的油船或結(jié)構(gòu)型式超出CCS《鋼質(zhì)船舶入級與建造規(guī)范》(以下簡稱《鋼規(guī)》)規(guī)定范圍的油船應(yīng)根據(jù)本指南進行結(jié)構(gòu)直接計算分析。</p><p> 3.1.2 載荷的直接計算</p><p> 一般規(guī)定船舶在海上航行時, 除承受浮力、貨物載荷及相應(yīng)的慣性
69、載荷外, 還承受來自浪引起的波浪載荷船舶的靜水載荷和波浪載荷可按《油船結(jié)構(gòu)強度直接計算指南》的計算程序進行計算。</p><p><b> 1.靜水載荷</b></p><p><b> 重量分布曲線</b></p><p> 將各項重量( 船體鋼材、設(shè)備、裝置、貨物) 沿船長方向分解成梯形重量分布塊, 逐項疊加形成
70、給定工況下的重量分布曲線。</p><p><b> 浮力曲線</b></p><p> 基于船舶靜水平衡條件, 求得船舶的平衡浮態(tài)( 以首吃水、尾吃水表達) , 根據(jù)船舶的形狀進而求得沿船長分布的浮力曲線。</p><p><b> 剪力、彎矩曲線</b></p><p> 作用在船體梁上
71、的靜水剪力Ns(x)和靜水彎矩可通過下式求得:</p><p><b> KN</b></p><p><b> KN.m</b></p><p> 由于船體首尾端是自由端, 當首尾端點處的剪力、彎矩計算值不為零時, 需對剪力曲線和彎矩曲線予以修正。</p><p><b> 2.
72、波浪載荷</b></p><p><b> 適用范圍</b></p><p> 本節(jié)的計算方法適用船舶:</p><p><b> L≤500m</b></p><p><b> L/D≤17</b></p><p> 計算方法及其
73、假定條件</p><p> ?。?)波浪載荷可用二維線性切片理論或三維線性理論進行計算</p><p><b> (2)海況條件:</b></p><p> ?、?海浪譜采用下述P-M 譜:</p><p><b> 式中:</b></p><p><b>
74、式中:</b></p><p> θ—— 組合波與主浪向的夾角, rad ;</p><p><b> ——能量擴散函數(shù)</b></p><p><b> ——有義波高,m;</b></p><p> ——海浪跨零周期,s;</p><p> ——波浪圓
75、頻率,rad/s 。</p><p> ?、?進行波浪載荷長期預(yù)報時, 認為對應(yīng)每一周期的波高呈" 瑞雷( Rayeigh ) " 分布, 而航向?qū)儆诰鶆蚍植肌?lt;/p><p> ?。?) 計算波浪彎矩時取航速為0 節(jié), 計算波浪壓力時取為船舶設(shè)計航速的2/3 。</p><p> (4)計算波浪彎矩時概率水平取 , 計算波浪壓力時概率水平取
76、。</p><p> 船舶的橫搖慣性半徑和橫搖臨界阻尼系數(shù):</p><p> 在船舶設(shè)計階段, 船舶的橫搖慣性半徑可取為: 0.35B ( 滿載)</p><p> 0.32B ( 壓載)</p><p> 船舶的橫搖臨界阻尼系數(shù)可取為: 0.10</p><p><b> 波浪載荷計算</
77、b></p><p><b> 垂向波浪彎矩和剪力</b></p><p> 設(shè)按上述方法和規(guī)定計算所得的船中剖面波浪垂向彎矩為, 沿船長的設(shè)計波浪彎矩 通過下式求得:</p><p> 中拱 KN.m</p><p> 中垂 KN.m</p><p&
78、gt; 式中: —— 由程序計算所得的船中剖面處的垂向彎矩,KN.m;</p><p> ——彎矩沿船長的分布系數(shù),一般情況下可按《鋼規(guī)》選?。?lt;/p><p> , —— 非線性修正系數(shù), 按下式確定:</p><p> 式中: —— 方形系數(shù), 不小于0.6。</p><p> 程序計算得出的設(shè)垂向波浪剪力, 則沿船長的設(shè)計垂向
79、波浪剪力 為:</p><p> 中拱 KN</p><p> 中垂 KN</p><p> 式中: —— 由程序計算所得的船中剖面處的垂向剪力, kN;</p><p> , —— 剪力分布系數(shù), 可按( 鋼規(guī)》選取</p><p> —— 修正系數(shù), 按表3.1.2確定。</p
80、><p> 表3.1.2 修正系數(shù)</p><p> 3.1.3 設(shè)計載荷</p><p><b> 1.貨物壓力</b></p><p> 艙內(nèi)液貨產(chǎn)生的壓力通過下式確定:</p><p><b> KN/</b></p><p> 式中艙內(nèi)
81、液貨的密度, 不小于0.85/</p><p> 艙頂?shù)接嬎泓c的垂直距離,。</p><p><b> 2.舷外水壓力</b></p><p> 對于舷外水壓力, 可按2.3 節(jié)要求進行直接計算或按下述兩種方法之一確定:</p><p><b> 方法一:</b></p>&l
82、t;p> ( 1 ) 滿載工況</p><p> 舷外水壓力由靜水壓力和波浪水動壓力兩部分組成</p><p> 在基線處: </p><p> 在水線處: </p><p> 在舷側(cè)頂端處: &
83、lt;/p><p> 甲板上的水動壓力: </p><p><b> 式中:</b></p><p><b> ?。?)其他狀態(tài)</b></p><p> 在基線處: </p><p> 在水線處:
84、</p><p> ?。?0m≤L≤300m)</p><p> (300m≤L≤350m)</p><p> (350≤L≤500m)</p><p> 式中: da 為對應(yīng)裝載工況下的實際吃水,。</p><p> 上述給出了基線、水線、舷側(cè)頂端處的水動壓力計算公式, 舷側(cè)其他部位的舷外水壓力按</p
85、><p><b> 線性插值確定。</b></p><p><b> 方法二</b></p><p><b> ?。?) 靜水壓力</b></p><p> 在基線處: </p><p> 在水線處: &
86、lt;/p><p><b> (2)波浪壓力</b></p><p> ?、?水線處的水動力壓力( ) :</p><p><b> 水線處 ;。</b></p><p> ?、?舭部的水動力壓力( ):</p><p> 和與水線處的計算公式一樣, 但 ;。</p&
87、gt;<p> ?、?底部的水動力壓力( ):</p><p> 和與水線處的計算公式一樣, 但;</p><p> ?、?舷側(cè)水線以上的動壓力:</p><p> h— —為從靜止水線到載荷點的高度,m</p><p> ?、?甲板( 艙口蓋) 上的動壓力</p><p><b> 其中
88、: </b></p><p> ——與艙口蓋中點的縱向位置有關(guān)的系數(shù), 如表3.1.3 所示。</p><p><b> 表 3.1.3</b></p><p> V——船舶的設(shè)計航速,(kn), 不小于 13 kn ;</p><p> L—-船長,(m) ;</p><p&g
89、t;<b> ——方型系數(shù);</b></p><p> ——從夏季載重線到艙口圍板頂點的垂向距離,(m)。</p><p><b> 其中:</b></p><p><b> —— 吃水(m)</b></p><p> = 10.75-[(300-L)/100]
90、 90m≤L≤300m</p><p> = 10.75 300m≤L≤350m</p><p> = 10.75-[(L-350)/150] 350m≤L≤500m</p><p><b> ——橫搖角</b></p><p><b> = <
91、;/b></p><p> =(1.25-0.025)</p><p> = 1.2(沒有舭龍骨)</p><p> = 1.0(有舭龍骨)</p><p> = 0.8 (有橫搖阻尼設(shè)備)</p><p><b> = 橫搖慣性半徑</b></p><p>
92、;<b> ——初穩(wěn)性高度</b></p><p> = 0.39B(質(zhì)量均勻分布)</p><p> = 0.35B (壓載狀態(tài))</p><p><b> = 0.12B</b></p><p> y ——中心線到載荷點的橫向水平距離,</p><p><
93、b> ——速度系數(shù);</b></p><p> V ——最小服務(wù)航速</p><p><b> ——概率系數(shù)</b></p><p> = 4 ()</p><p> = 8 ()</p><p> (在尾垂線及其以后區(qū)域)</p>&l
94、t;p> = (0.2L到0.6L之間) </p><p> = (在首垂線及其以前區(qū)域)</p><p> 在特定點, 線性變化</p><p> = 1.0 (在尾垂線及其以后區(qū)域)</p><p> = 0.5 (0.2L 和0.6L 之間)</p><p> = 1.0 (
95、在首垂線及其以前區(qū)域)</p><p> 在上述各指定點之間, 線性變化。</p><p> —— 取又和 之間的較小者</p><p> —— 對應(yīng)所選定的橫剖面, 從水線至舷側(cè)頂部的垂直距離, 但不超過0.8C。</p><p> 3.端面彎矩 </p><p> 施加在端面上的彎矩應(yīng)為端面處的
96、實際彎矩, 包括靜水彎矩Ms 和波浪彎矩Mw。當不能得到實際彎矩時, 可按下列下面款的所述的方法替代。 </p><p> 波浪彎矩按照《鋼規(guī)》計算確定, 中拱為正。 </p><p> 靜水彎矩 取對應(yīng)工況的模型范圍內(nèi)的最大彎矩。若無對應(yīng)工況, 對于滿載工</p><p> 況, 可選取出現(xiàn)最大(或最小) 彎矩對應(yīng)的滿載吃水工況;對于非滿載吃水的工況,
97、 可選取出現(xiàn)最大( 或最小) 彎矩對應(yīng)的非滿載吃水工況, 中拱為正, 并按下段款進行修正 </p><p> 端面彎矩由靜水彎矩、波浪彎矩和修正彎矩三部分組成: </p><p> 修正彎矩 的計算: </p><p> 修正彎矩 是由于局部載荷引起的附加彎矩。 </p><p> (1) 當=0.5Lm時 <
98、;/p><p> 中間艙段模型的線性均布壓力為, 兩端艙段的線性均布壓力為見, 沿Z 軸正向為正</p><p><b> 值: </b></p><p> : 船底外壓, 見4.2(kN/m2) </p><p> : 中間貨艙的貨物重量(含壓載水的重量), 當采用半寬模型時, 取艙內(nèi)總重量的一&l
99、t;/p><p><b> 半(KN) </b></p><p> : 端部貨艙的貨物重量( 含壓載水的重量), 當采用半寬模型時, 取艙內(nèi)總重量的一</p><p><b> 半(KN) </b></p><p> Le: 與 對應(yīng)的端部貨艙長度,(m) </p>
100、<p> Lm: 中間貨艙長度,(m) </p><p> Lo: 段模型的總長度,(m) </p><p> b: 模型的寬度, 當采用半寬模型時= B/2, B 為型寬 </p><p> (2) 當如下圖 8 所示的0.5時, 可用簡單梁計算法進行計算。此時, 壓力可</p><p> 采用本款(
101、1) 中計算的值, 取模型中最大值。</p><p> 圖 8三維有限元模型范圍</p><p> 3.1.4 邊界條件</p><p> 如果載荷左右對稱, 則中縱剖面內(nèi)節(jié)點的橫向線位移為0, 繞中縱剖面內(nèi)兩個坐標</p><p> 軸的角位移為0, 即: 。</p><p> 如果載荷左右反對稱, 則中縱
102、剖面內(nèi)節(jié)點沿縱中剖面內(nèi)兩個坐標軸方向的線位移</p><p> 為0, 繞垂直于縱中剖面的坐標軸的角位移為0, 即: 。</p><p> 端面約束: 一端獨立點約束,,,,,另端獨立點約束,,, 如表3.1.4</p><p> 表3.1.4 邊界條件施加表 </p><p&g
103、t; 注:①cons—-表示對應(yīng)的位移約束 </p><p> ?、趌in—- 面內(nèi)相點位移與獨立點連接</p><p> ③BM—-端面所受的總體彎矩</p><p> 3.2設(shè)置主要參數(shù)界面</p><p> 此的程序框架分為四步,船體主尺度輸入,典型橫剖面參數(shù)輸入,加載分析計算,后處理系統(tǒng),程序一開始輸入船體主尺度,設(shè)置參數(shù)
104、界面,獲取船體垂線間長、型深、型寬等。要實現(xiàn)人機互動,船體外載荷分布力自動加載,要設(shè)置合理的界面,易于操作,并且符合MSC.Patran的操作規(guī)則。</p><p> 三個主要界面代碼,如下:</p><p> FUNCTION init()</p><p> /*定義窗口命令*/</p><p> REAL x_loc,label_
105、x_loc</p><p> REAL y_loc</p><p> REAL b_length</p><p> x_loc = UNFRAMED_L_MARGIN</p><p> y_loc = FORM_T_MARGIN</p><p> b_length = DBOX_WID_SINGLE - DB
106、OX_LABEL_LEN_SINGLE - DBOX_LABEL_X_OFFSET</p><p> form_id2 = ui_form_create("", @</p><p> /*相對于screen而言的x坐標*/ FORM_X_LOC_SML, @</p><p> /*相對于screen而言的y坐標*/ FORM_Y_LOC,
107、@</p><p> /*相對于哪個角落,本文選用左上角*/ "UL", @</p><p> /*寬度*/ FORM_WID_SML, @</p><p> /*高度*/ FORM_HGT_TALL, @</p><p> /*標簽*/ "船型參數(shù)", @</p><p&g
108、t;<b> "" )</b></p><p> ui_button_create(form_id2, @</p><p> /*調(diào)用函數(shù)名*/ "open_db", @</p><p> /* x坐標*/ x_loc, @</p><p> /* y坐標*/ y_loc
109、, @</p><p> /*按鈕的寬度 */ BUTTON_WID_THIRD, @</p><p> /* 按鈕的高度 */ BUTTON_HGT, @</p><p> /*文字內(nèi)容 */ "打開...", @</p><p> /* */ TRUE, @</p><p> /*高亮
110、度顯示為默認的按鈕 */ TRUE)</p><p> label_x_loc = BUTTON_THIRD_X_LOC3</p><p> ui_label_create(form_id2,"",label_x_loc,y_loc,"ZJOU")</p><p> y_loc = y_loc + BUTTON_HGT
111、+ INTER_WIDGET_SPACE + INTER_WIDGET_SPACE</p><p> target_type = ui_optionmenu_create(form_id2, @</p><p> /*調(diào)用函數(shù)的名稱*/ "target_optmenu", @</p><p> /*x坐標*/ x_loc, @</p&
112、gt;<p> /*y坐標*/ y_loc, @</p><p> /*標簽的長度*/ 0.75, @</p><p> "功能的選取:", @</p><p> /*TRUE表示標簽在上面,FALSE表示在左邊*/ FALSE )</p><p> ui_item_create(target_ty
113、pe, @</p><p> /*調(diào)用函數(shù)的實參*/ "", @</p><p> /*標簽*/ "請選擇", @</p><p> /*這個選項只有一個值*/ FALSE)</p><p> ui_item_create(target_type,"tranversestrength&
114、quot;,"橫向強度",FALSE)</p><p> ui_item_create(target_type,"longitudinalstrength","縱向強度",FALSE)</p><p> y_loc = y_loc + LABEL_HGT + INTER_WIDGET_SPACE + INTER_WIDGET_
115、SPACE</p><p> ship_type = ui_optionmenu_create(form_id2, @</p><p> /*調(diào)用函數(shù)的名稱*/ "type_optmenu", @</p><p> /*x坐標*/ x_loc, @</p><p> /*y坐標*/ y_loc, @</p&g
116、t;<p> /*標簽的長度*/ 0.75, @</p><p> "船型的選取:", @</p><p> /*TRUE表示標簽在上面,FALSE表示在左邊*/ FALSE )</p><p> ui_item_create(ship_type, @</p><p> /*調(diào)用函數(shù)的實參*/ &q
117、uot;", @</p><p> /*標簽*/ "請選擇", @</p><p> /*這個選項只有一個值*/ FALSE)</p><p> ui_item_create(ship_type,"oiltank","油船",FALSE)</p><p> ui_i
118、tem_create(ship_type,"bulkcarrier","散貨船",FALSE)</p><p> ui_item_create(ship_type,"containership","集裝箱船",FALSE)</p><p> ui_item_create(ship_type,"ba
119、rge","駁船",FALSE)</p><p> ui_item_create(ship_type,"multpurpose","多用途船",FALSE)</p><p> y_loc = y_loc + LABEL_HGT + INTER_WIDGET_SPACE + INTER_WIDGET_SPACE<
120、/p><p> longitudinal_type = ui_optionmenu_create(form_id2, "longitudinal_optmenu", x_loc, y_loc, 0.75, @</p><p> "縱艙壁的選取:", FALSE )</p><p> ui_wid_set(longitudin
121、al_type,"DISPLAY",false)</p><p> ui_item_create(longitudinal_type,"","請選擇",FALSE)</p><p> ui_item_create(longitudinal_type,"l1","一道縱艙壁",FALSE)
122、</p><p> ui_item_create(longitudinal_type,"l2","兩道縱艙壁",FALSE)</p><p> /*****************針對散貨船的控件********************************/</p><p> /*****************針對
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于patran船舶縱向強度專家系統(tǒng)開發(fā)【開題報告】
- 專家系統(tǒng)開發(fā)環(huán)境.pdf
- 用于冒口設(shè)計的專家系統(tǒng)開發(fā).pdf
- 管道安全評價專家系統(tǒng)開發(fā).pdf
- 糖尿病專家系統(tǒng)開發(fā).doc
- 農(nóng)業(yè)專家系統(tǒng)開發(fā)平臺研究.pdf
- 基于知識和實例的H型鋼設(shè)計專家系統(tǒng)開發(fā).pdf
- 自升式鉆井平臺設(shè)計專家系統(tǒng)開發(fā).pdf
- 基于Web Services的網(wǎng)絡(luò)專家系統(tǒng)開發(fā)平臺研究.pdf
- 溫室控制專家系統(tǒng)開發(fā)平臺的研究.pdf
- 基于中間件的專家系統(tǒng)開發(fā)平臺設(shè)計與實現(xiàn).pdf
- 電力專家系統(tǒng)開發(fā)平臺PowerES的研制.pdf
- pb006糖尿病專家系統(tǒng)開發(fā)
- 基于CLIPS頂驅(qū)故障診斷專家系統(tǒng)開發(fā).pdf
- 隧道地質(zhì)超前預(yù)報專家系統(tǒng)開發(fā).pdf
- 法蘭密封設(shè)計、使用與管理專家系統(tǒng)開發(fā)研究.pdf
- 26604.基于vc的tds故障診斷專家系統(tǒng)開發(fā)
- 基于構(gòu)件的農(nóng)業(yè)專家系統(tǒng)開發(fā)工具的設(shè)計與實現(xiàn).pdf
- 選礦專家系統(tǒng)開發(fā)理論及方法的研究.pdf
- 基于多種分析技術(shù)的油液監(jiān)測診斷專家系統(tǒng)開發(fā).pdf
評論
0/150
提交評論