基于PCL语言的梁截面自动生成

2016-05-18 09:12意大利船级社中国有限公司上海200052
船舶 2016年1期

郭 磊 孙 强(意大利船级社(中国)有限公司 上海200052)



基于PCL语言的梁截面自动生成

郭 磊 孙 强
(意大利船级社(中国)有限公司 上海200052)

[摘 要]在船体结构有限元建模的过程中,定义梁单元是既重要又繁琐的步骤。一艘船上的骨材种类通常很多,在建模时需要定义很多的梁单元截面属性。文章利用通用有限元软件Patran中的PCL(Patran Command Language)语言,对Patran进行二次开发,使建模过程中的梁单元截面自动生成,节约了建模时间。

[关键词]有限元建模;PCL语言;梁截面属性

孙 强(1981-),男,工程师,研究方向:法定检验审图。

引 言

MSC.Patran是非常著名的有限元前后处理系统,能满足大部分有限元建模的需要。船体是一个复杂的结构系统,现在的船级社规范往往要求对一定主尺度的船舶进行有限元分析,而建模又十分费时费力。本文通过PCL语言对Patran进行二次开发,使建模过程的梁单元属性的生成能够快速和高效。

1 PCL语言类的结构

PCL是一种高级模块化编程语言,其中提供“类”的概念,通过编写PCL类来实现生成用户菜单和响应。

“类”由关键词CLASS开始,END CLASS结束。类中包含实现具体功能的函数。一套PCL程序通常包含若干类,这些类彼此调用。通过编译成一个plb文件保存在Patran的安装目录下,通过p3epilog.pcl文件对Patran进行初始化,将用户定义的菜单包含在Patran初始界面中。p3epilog.pcl文件通常包含如下语句:

!!lib 用户菜单名.plb

ui_exec_function(“用户菜单名”, “init_menu”)

2 用户菜单

利用PCL语言,可以方便地建立用户菜单。具体过程如下:

(1)利用uil_primary.get_menubar_id(),获得Patran主菜单的id。

(2)利用语句ui_menu_create()生成用户菜单。

(3)利用语句ui_item_create()生成菜单项。

(4)通过菜单项语句的"name",调用响应函数。

程序代码如下:

……

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 用户菜单

3 梁单元属性窗口

当点击用户菜单的Beam_Property子菜单,将出现如图2的属性窗口。

图2 梁单元属性窗口

图2的窗口由三部分组成,即定义材料、定义梁单元的属性和取消操作回到上级窗口。分别由3个按钮定义。首先需要使用语句ui_form_create()创建一个表单用来存放按钮控件,然后使用语句ui_button_create()创建按钮控件,程序代码如下:

……

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按钮,将会出现如图3的窗口。

图3 材料属性窗口

在图3所示的材料属性窗口中,船体一般使用的钢材属性就是其默认值,用户只需要单击"Apply",就可以创建出钢材的材料属性。

在图3的窗口中,创建表单的语句代码和前面一样,不同的是还需要创建数据框和创建材料属性的响应。

创建数据框的语句代码如下:

……

databox_id=ui_databox_create(frame_id, "",x坐标, y坐标, 标签长度, 方框长度, 标签, "",false, "STRING", 1)

……

通过PCL在Patran中创建材料属性,需要调用材料建立函数material.create()。材料的性质是一维字符串数组,而从窗口中传入的参数是实数,因此需要进行数据转换。语句代码如下:

……

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按钮,将会出现如图4的窗口。

图4 梁截面窗口

在图4的窗口中用户可以选择3种梁截面,即T型材、角钢和扁钢。在输入型材截面的参数(腹板高、腹板厚、面板宽、面板厚)之后,单击"Apply",就可以在Patran中创建1个梁截面。

用户也可以事前创建1个文本文件,其中包含很多梁截面的信息,通过点击"Input Beam Property File"按钮,将文本文件导入,从而一次性创建很多梁截面属性,大大提高建模效率。

当单击"Input Beam Property File"按钮后,将出现图5所示的窗口。

图5 导入文本文件窗口

单击"Input File"按钮,将保存有梁截面信息的文本文件导入即可。

文本文件如图6所示。

图6 梁截面属性文件

将梁截面属性文本文件导入到Patran中,就会自动创建相应类型的截面属性,如图7所示。

创建选择梁截面类型菜单的语句代码如下:

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中建立梁截面属性,需要调用梁截面建立函数beam_section_create ()。截面的性质是一维字符串数组,而从窗口中传入的参数是实数,因此需要进行数据转换。语句代码如下:

……

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中方便地创建所有梁截面属性,在定义梁单元属性时,则会简单许多。

4 帮助文档窗口

当在主菜单中单击"Help"子菜单时,将弹出1个帮助文档,帮助用户了解如何自动生成材料和梁截面属性。

帮助文档如图8所示。

图8 帮助文档窗口

生成帮助文档主要通过如下的语句代码实现:file_get_p3_home(helpfile)

utl_process_spawn(helpfile,false)

5 结 论

本文通过PCL语言对通用有限元软件Patran进行二次开发,实现对梁单元截面的自动生成,大大提高了建模效率。在梁截面属性很多的情况下,只要准备1个包含截面属性的文件,通过几步操作就可以完成之前很繁琐的操作过程。同时,二次开发程序也提供了帮助文件,指导用户正确使用,为船体有限元建模提供了极大方便。

[参考文献]

[1] MSC. MSC.Patran PCL and customization[M]. USA,2012.

[2] MSC. MSC.Patran PCL reference manual[M]. USA,2012.

[3] 唐友宏, 陈宾康. 用MSC.Patran的PCL二次开发用户界面[J]. 船海工程, 2012(3): 20-22.

[4] 张军彦, 李昌华. 基于MSC.Patran界面的PCL二次开发[J]. 现代电子技术, 2010(16): 17-19.

[5] 冯国庆, 刘相春, 任慧龙. 基于PCL语言的波浪压力自动加载方法[J]. 船舶力学, 2006(5): 107-112.

[6] 任慧龙, 曾骥, 戴愚志. 船舶与海洋工程结构的PCL参数化建模[C]. MSC.Software中国用户论文集, 2003:1-7.

信息动态

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