郭 磊 孫 強(qiáng)(意大利船級(jí)社(中國(guó))有限公司 上海200052)
?
基于PCL語(yǔ)言的梁截面自動(dòng)生成
郭 磊 孫 強(qiáng)
(意大利船級(jí)社(中國(guó))有限公司 上海200052)
[摘 要]在船體結(jié)構(gòu)有限元建模的過(guò)程中,定義梁?jiǎn)卧羌戎匾址爆嵉牟襟E。一艘船上的骨材種類(lèi)通常很多,在建模時(shí)需要定義很多的梁?jiǎn)卧孛鎸傩?。文章利用通用有限元軟件Patran中的PCL(Patran Command Language)語(yǔ)言,對(duì)Patran進(jìn)行二次開(kāi)發(fā),使建模過(guò)程中的梁?jiǎn)卧孛孀詣?dòng)生成,節(jié)約了建模時(shí)間。
[關(guān)鍵詞]有限元建模;PCL語(yǔ)言;梁截面屬性
孫 強(qiáng)(1981-),男,工程師,研究方向:法定檢驗(yàn)審圖。
MSC.Patran是非常著名的有限元前后處理系統(tǒng),能滿(mǎn)足大部分有限元建模的需要。船體是一個(gè)復(fù)雜的結(jié)構(gòu)系統(tǒng),現(xiàn)在的船級(jí)社規(guī)范往往要求對(duì)一定主尺度的船舶進(jìn)行有限元分析,而建模又十分費(fèi)時(shí)費(fèi)力。本文通過(guò)PCL語(yǔ)言對(duì)Patran進(jìn)行二次開(kāi)發(fā),使建模過(guò)程的梁?jiǎn)卧獙傩缘纳赡軌蚩焖俸透咝А?/p>
PCL是一種高級(jí)模塊化編程語(yǔ)言,其中提供“類(lèi)”的概念,通過(guò)編寫(xiě)PCL類(lèi)來(lái)實(shí)現(xiàn)生成用戶(hù)菜單和響應(yīng)。
“類(lèi)”由關(guān)鍵詞CLASS開(kāi)始,END CLASS結(jié)束。類(lèi)中包含實(shí)現(xiàn)具體功能的函數(shù)。一套PCL程序通常包含若干類(lèi),這些類(lèi)彼此調(diào)用。通過(guò)編譯成一個(gè)plb文件保存在Patran的安裝目錄下,通過(guò)p3epilog.pcl文件對(duì)Patran進(jìn)行初始化,將用戶(hù)定義的菜單包含在Patran初始界面中。p3epilog.pcl文件通常包含如下語(yǔ)句:
!!lib 用戶(hù)菜單名.plb
ui_exec_function(“用戶(hù)菜單名”, “init_menu”)
利用PCL語(yǔ)言,可以方便地建立用戶(hù)菜單。具體過(guò)程如下:
(1)利用uil_primary.get_menubar_id(),獲得Patran主菜單的id。
(2)利用語(yǔ)句ui_menu_create()生成用戶(hù)菜單。
(3)利用語(yǔ)句ui_item_create()生成菜單項(xiàng)。
(4)通過(guò)菜單項(xiàng)語(yǔ)句的"name",調(diào)用響應(yīng)函數(shù)。
程序代碼如下:
……
menubar_id=uil_primary.get_menubar_id()
menu_id=ui_menu_create(menubar_id,"name", "My Apply")
ui_item_create(menu_id,"Beam","Beam_ Property", false)
ui_item_create(menu_id,"Help","&Help",false)
……
ui_exec_function("Classname","display")
圖1為用戶(hù)菜單結(jié)構(gòu)。
圖1 用戶(hù)菜單
當(dāng)點(diǎn)擊用戶(hù)菜單的Beam_Property子菜單,將出現(xiàn)如圖2的屬性窗口。
圖2 梁?jiǎn)卧獙傩源翱?/p>
圖2的窗口由三部分組成,即定義材料、定義梁?jiǎn)卧膶傩院腿∠僮骰氐缴霞?jí)窗口。分別由3個(gè)按鈕定義。首先需要使用語(yǔ)句ui_form_create()創(chuàng)建一個(gè)表單用來(lái)存放按鈕控件,然后使用語(yǔ)句ui_button_create()創(chuàng)建按鈕控件,程序代碼如下:
……
form_id=ui_form_create("", 表單x坐標(biāo), 表單y坐標(biāo), 位置, 寬度, 高度, 標(biāo)簽, "")
materials=ui_button_create(form_id, "callback",按鈕x坐標(biāo), 按鈕y坐標(biāo), 寬度, 高度, 標(biāo)簽, true,false)
properties=ui_button_create(form_id, "callback",按鈕x坐標(biāo), 按鈕y坐標(biāo), 寬度, 高度, 標(biāo)簽, true,false)
cancel=ui_button_create(form_id, "callback",按鈕x坐標(biāo), 按鈕y坐標(biāo), 寬度, 高度, 標(biāo)簽, true,false)
……
單擊Materials按鈕,將會(huì)出現(xiàn)如圖3的窗口。
圖3 材料屬性窗口
在圖3所示的材料屬性窗口中,船體一般使用的鋼材屬性就是其默認(rèn)值,用戶(hù)只需要單擊"Apply",就可以創(chuàng)建出鋼材的材料屬性。
在圖3的窗口中,創(chuàng)建表單的語(yǔ)句代碼和前面一樣,不同的是還需要?jiǎng)?chuàng)建數(shù)據(jù)框和創(chuàng)建材料屬性的響應(yīng)。
創(chuàng)建數(shù)據(jù)框的語(yǔ)句代碼如下:
……
databox_id=ui_databox_create(frame_id, "",x坐標(biāo), y坐標(biāo), 標(biāo)簽長(zhǎng)度, 方框長(zhǎng)度, 標(biāo)簽, "",false, "STRING", 1)
……
通過(guò)PCL在Patran中創(chuàng)建材料屬性,需要調(diào)用材料建立函數(shù)material.create()。材料的性質(zhì)是一維字符串?dāng)?shù)組,而從窗口中傳入的參數(shù)是實(shí)數(shù),因此需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換。語(yǔ)句代碼如下:
……
String d[20](4)
d(1)=str_from_real(ElasticModulus)
d(2)=str_from_real(PoissonRadio)
d(3)=str_from_real(Density)
d(4)=""
material.create("Analysis code ID", 1,"Analysis type ID",1, "steel",0, "" , "Isotropic", 1,"Directionality",1,"Linearity",1, "Homogeneous", 0,"Linear Elastic",1, "Model Options & IDs" ,["","","","",""], [0,0,0,0,0], "Active Flag",1, "Create", 10, "External Flag", FALSE, "Property IDs" ,["Elastic Modulus", "Poisson Radio","Density"], [2,5,16,0], "Property Values", d)
……
單擊Beam Properties按鈕,將會(huì)出現(xiàn)如圖4的窗口。
圖4 梁截面窗口
在圖4的窗口中用戶(hù)可以選擇3種梁截面,即T型材、角鋼和扁鋼。在輸入型材截面的參數(shù)(腹板高、腹板厚、面板寬、面板厚)之后,單擊"Apply",就可以在Patran中創(chuàng)建1個(gè)梁截面。
用戶(hù)也可以事前創(chuàng)建1個(gè)文本文件,其中包含很多梁截面的信息,通過(guò)點(diǎn)擊"Input Beam Property File"按鈕,將文本文件導(dǎo)入,從而一次性創(chuàng)建很多梁截面屬性,大大提高建模效率。
當(dāng)單擊"Input Beam Property File"按鈕后,將出現(xiàn)圖5所示的窗口。
圖5 導(dǎo)入文本文件窗口
單擊"Input File"按鈕,將保存有梁截面信息的文本文件導(dǎo)入即可。
文本文件如圖6所示。
圖6 梁截面屬性文件
將梁截面屬性文本文件導(dǎo)入到Patran中,就會(huì)自動(dòng)創(chuàng)建相應(yīng)類(lèi)型的截面屬性,如圖7所示。
創(chuàng)建選擇梁截面類(lèi)型菜單的語(yǔ)句代碼如下:
Optionmenu_id=ui_optionmenu_create (frame_ id, "", x坐標(biāo), y坐標(biāo), 標(biāo)簽長(zhǎng)度, "Beam Type :",false)
ui_item_create(optionmenu_id,"T","T-bar",false, 0)
圖7 Beam Library窗口
ui_item_create(optionmenu_id,"L","Anglebar", false, 0)
ui_item_create(optionmenu_id,"F","Flatbar", false, 0)
在Patran中建立梁截面屬性,需要調(diào)用梁截面建立函數(shù)beam_section_create ()。截面的性質(zhì)是一維字符串?dāng)?shù)組,而從窗口中傳入的參數(shù)是實(shí)數(shù),因此需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換。語(yǔ)句代碼如下:
……
String data[20](4)
data(1)=str_from_real(bf)
data(2)=str_from_real(hw)
data(3)=str_from_real(tf)
data(4)=str_from_real(tw)
beam_section_create (name, shape, data)
……
只需要1個(gè)包含梁截面屬性的文本文件,通過(guò)上述的幾步操作,可在Patran中方便地創(chuàng)建所有梁截面屬性,在定義梁?jiǎn)卧獙傩詴r(shí),則會(huì)簡(jiǎn)單許多。
當(dāng)在主菜單中單擊"Help"子菜單時(shí),將彈出1個(gè)幫助文檔,幫助用戶(hù)了解如何自動(dòng)生成材料和梁截面屬性。
幫助文檔如圖8所示。
圖8 幫助文檔窗口
生成幫助文檔主要通過(guò)如下的語(yǔ)句代碼實(shí)現(xiàn):file_get_p3_home(helpfile)
utl_process_spawn(helpfile,false)
本文通過(guò)PCL語(yǔ)言對(duì)通用有限元軟件Patran進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)對(duì)梁?jiǎn)卧孛娴淖詣?dòng)生成,大大提高了建模效率。在梁截面屬性很多的情況下,只要準(zhǔn)備1個(gè)包含截面屬性的文件,通過(guò)幾步操作就可以完成之前很繁瑣的操作過(guò)程。同時(shí),二次開(kāi)發(fā)程序也提供了幫助文件,指導(dǎo)用戶(hù)正確使用,為船體有限元建模提供了極大方便。
[參考文獻(xiàn)]
[1] MSC. MSC.Patran PCL and customization[M]. USA,2012.
[2] MSC. MSC.Patran PCL reference manual[M]. USA,2012.
[3] 唐友宏, 陳賓康. 用MSC.Patran的PCL二次開(kāi)發(fā)用戶(hù)界面[J]. 船海工程, 2012(3): 20-22.
[4] 張軍彥, 李昌華. 基于MSC.Patran界面的PCL二次開(kāi)發(fā)[J]. 現(xiàn)代電子技術(shù), 2010(16): 17-19.
[5] 馮國(guó)慶, 劉相春, 任慧龍. 基于PCL語(yǔ)言的波浪壓力自動(dòng)加載方法[J]. 船舶力學(xué), 2006(5): 107-112.
[6] 任慧龍, 曾驥, 戴愚志. 船舶與海洋工程結(jié)構(gòu)的PCL參數(shù)化建模[C]. MSC.Software中國(guó)用戶(hù)論文集, 2003:1-7.
信息動(dòng)態(tài)
Automatic generation of beam section based on PCL
GUO Lei SUN Qiang
(Italy Classifi cation Society (RINA), Shanghai 200052, China)
Abstract:The beam property definition is a very important and elaborate part in the hull structural finite element modeling process. In general, there are plenty of beams or longitudinal types in one ship. Therefore, a great deal of beam section properties need to be defined. In this article, the Patran software is secondarily developed by using Patran Command Language (PCL). The automatic generation of beam section property can be thus achieved to save the modeling time.
Keywords:finite element modeling; patran command language; beam section property
[作者簡(jiǎn)介]郭 磊(1984-),男,碩士,工程師,研究方向:船舶結(jié)構(gòu)審圖及強(qiáng)度分析。
[收稿日期]2015-04-13;[修回日期]2015-05-12
[中圖分類(lèi)號(hào)]U661.42
[文獻(xiàn)標(biāo)志碼]A
[文章編號(hào)]1001-9855(2016)01-0105-05