郭 磊 孫 強(意大利船級社(中國)有限公司 上海200052)
?
基于PCL語言的梁截面自動生成
郭 磊 孫 強
(意大利船級社(中國)有限公司 上海200052)
[摘 要]在船體結構有限元建模的過程中,定義梁單元是既重要又繁瑣的步驟。一艘船上的骨材種類通常很多,在建模時需要定義很多的梁單元截面屬性。文章利用通用有限元軟件Patran中的PCL(Patran Command Language)語言,對Patran進行二次開發(fā),使建模過程中的梁單元截面自動生成,節(jié)約了建模時間。
[關鍵詞]有限元建模;PCL語言;梁截面屬性
孫 強(1981-),男,工程師,研究方向:法定檢驗審圖。
MSC.Patran是非常著名的有限元前后處理系統(tǒng),能滿足大部分有限元建模的需要。船體是一個復雜的結構系統(tǒng),現(xiàn)在的船級社規(guī)范往往要求對一定主尺度的船舶進行有限元分析,而建模又十分費時費力。本文通過PCL語言對Patran進行二次開發(fā),使建模過程的梁單元屬性的生成能夠快速和高效。
PCL是一種高級模塊化編程語言,其中提供“類”的概念,通過編寫PCL類來實現(xiàn)生成用戶菜單和響應。
“類”由關鍵詞CLASS開始,END CLASS結束。類中包含實現(xiàn)具體功能的函數(shù)。一套PCL程序通常包含若干類,這些類彼此調用。通過編譯成一個plb文件保存在Patran的安裝目錄下,通過p3epilog.pcl文件對Patran進行初始化,將用戶定義的菜單包含在Patran初始界面中。p3epilog.pcl文件通常包含如下語句:
??!lib 用戶菜單名.plb
ui_exec_function(“用戶菜單名”, “init_menu”)
利用PCL語言,可以方便地建立用戶菜單。具體過程如下:
(1)利用uil_primary.get_menubar_id(),獲得Patran主菜單的id。
(2)利用語句ui_menu_create()生成用戶菜單。
(3)利用語句ui_item_create()生成菜單項。
(4)通過菜單項語句的"name",調用響應函數(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為用戶菜單結構。
圖1 用戶菜單
當點擊用戶菜單的Beam_Property子菜單,將出現(xiàn)如圖2的屬性窗口。
圖2 梁單元屬性窗口
圖2的窗口由三部分組成,即定義材料、定義梁單元的屬性和取消操作回到上級窗口。分別由3個按鈕定義。首先需要使用語句ui_form_create()創(chuàng)建一個表單用來存放按鈕控件,然后使用語句ui_button_create()創(chuàng)建按鈕控件,程序代碼如下:
……
form_id=ui_form_create("", 表單x坐標, 表單y坐標, 位置, 寬度, 高度, 標簽, "")
materials=ui_button_create(form_id, "callback",按鈕x坐標, 按鈕y坐標, 寬度, 高度, 標簽, true,false)
properties=ui_button_create(form_id, "callback",按鈕x坐標, 按鈕y坐標, 寬度, 高度, 標簽, true,false)
cancel=ui_button_create(form_id, "callback",按鈕x坐標, 按鈕y坐標, 寬度, 高度, 標簽, true,false)
……
單擊Materials按鈕,將會出現(xiàn)如圖3的窗口。
圖3 材料屬性窗口
在圖3所示的材料屬性窗口中,船體一般使用的鋼材屬性就是其默認值,用戶只需要單擊"Apply",就可以創(chuàng)建出鋼材的材料屬性。
在圖3的窗口中,創(chuàng)建表單的語句代碼和前面一樣,不同的是還需要創(chuàng)建數(shù)據框和創(chuàng)建材料屬性的響應。
創(chuàng)建數(shù)據框的語句代碼如下:
……
databox_id=ui_databox_create(frame_id, "",x坐標, y坐標, 標簽長度, 方框長度, 標簽, "",false, "STRING", 1)
……
通過PCL在Patran中創(chuàng)建材料屬性,需要調用材料建立函數(shù)material.create()。材料的性質是一維字符串數(shù)組,而從窗口中傳入的參數(shù)是實數(shù),因此需要進行數(shù)據轉換。語句代碼如下:
……
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按鈕,將會出現(xiàn)如圖4的窗口。
圖4 梁截面窗口
在圖4的窗口中用戶可以選擇3種梁截面,即T型材、角鋼和扁鋼。在輸入型材截面的參數(shù)(腹板高、腹板厚、面板寬、面板厚)之后,單擊"Apply",就可以在Patran中創(chuàng)建1個梁截面。
用戶也可以事前創(chuàng)建1個文本文件,其中包含很多梁截面的信息,通過點擊"Input Beam Property File"按鈕,將文本文件導入,從而一次性創(chuàng)建很多梁截面屬性,大大提高建模效率。
當單擊"Input Beam Property File"按鈕后,將出現(xiàn)圖5所示的窗口。
圖5 導入文本文件窗口
單擊"Input File"按鈕,將保存有梁截面信息的文本文件導入即可。
文本文件如圖6所示。
圖6 梁截面屬性文件
將梁截面屬性文本文件導入到Patran中,就會自動創(chuàng)建相應類型的截面屬性,如圖7所示。
創(chuàng)建選擇梁截面類型菜單的語句代碼如下:
Optionmenu_id=ui_optionmenu_create (frame_ id, "", x坐標, y坐標, 標簽長度, "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中建立梁截面屬性,需要調用梁截面建立函數(shù)beam_section_create ()。截面的性質是一維字符串數(shù)組,而從窗口中傳入的參數(shù)是實數(shù),因此需要進行數(shù)據轉換。語句代碼如下:
……
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個包含梁截面屬性的文本文件,通過上述的幾步操作,可在Patran中方便地創(chuàng)建所有梁截面屬性,在定義梁單元屬性時,則會簡單許多。
當在主菜單中單擊"Help"子菜單時,將彈出1個幫助文檔,幫助用戶了解如何自動生成材料和梁截面屬性。
幫助文檔如圖8所示。
圖8 幫助文檔窗口
生成幫助文檔主要通過如下的語句代碼實現(xiàn):file_get_p3_home(helpfile)
utl_process_spawn(helpfile,false)
本文通過PCL語言對通用有限元軟件Patran進行二次開發(fā),實現(xiàn)對梁單元截面的自動生成,大大提高了建模效率。在梁截面屬性很多的情況下,只要準備1個包含截面屬性的文件,通過幾步操作就可以完成之前很繁瑣的操作過程。同時,二次開發(fā)程序也提供了幫助文件,指導用戶正確使用,為船體有限元建模提供了極大方便。
[參考文獻]
[1] MSC. MSC.Patran PCL and customization[M]. USA,2012.
[2] MSC. MSC.Patran PCL reference manual[M]. USA,2012.
[3] 唐友宏, 陳賓康. 用MSC.Patran的PCL二次開發(fā)用戶界面[J]. 船海工程, 2012(3): 20-22.
[4] 張軍彥, 李昌華. 基于MSC.Patran界面的PCL二次開發(fā)[J]. 現(xiàn)代電子技術, 2010(16): 17-19.
[5] 馮國慶, 劉相春, 任慧龍. 基于PCL語言的波浪壓力自動加載方法[J]. 船舶力學, 2006(5): 107-112.
[6] 任慧龍, 曾驥, 戴愚志. 船舶與海洋工程結構的PCL參數(shù)化建模[C]. MSC.Software中國用戶論文集, 2003:1-7.
信息動態(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
[作者簡介]郭 磊(1984-),男,碩士,工程師,研究方向:船舶結構審圖及強度分析。
[收稿日期]2015-04-13;[修回日期]2015-05-12
[中圖分類號]U661.42
[文獻標志碼]A
[文章編號]1001-9855(2016)01-0105-05