APP下载

基于热点应力法的船舶结构疲劳分析系统开发

2012-04-03宋亚玲吴剑国林勇

船舶 2012年3期
关键词:船体热点界面

宋亚玲吴剑国林勇

(1.浙江工业大学建筑工程学院 杭州 310032;2.浙江省船检局 杭州 310032)

基于热点应力法的船舶结构疲劳分析系统开发

宋亚玲1吴剑国1林勇2

(1.浙江工业大学建筑工程学院 杭州 310032;2.浙江省船检局 杭州 310032)

船体结构的热点应力疲劳分析过程比较复杂,按照CCS《船体结构疲劳强度评估指南》实施起来比较困难。因此采用MSC.Patran二次开发语言PCL进行编程,开发船体结构热点应力疲劳分析系统,实现了扣除腐蚀余量、荷载计算、施加疲劳荷载、提取结果及分析的自动化,大大提高了船体结构热点应力疲劳分析的效率。

船体结构;热点应力;PCL语言;疲劳分析

0 引言

疲劳破坏是船舶结构的主要破坏形式之一,中国船级社(CCS)《船体结构疲劳强度评估指南(2007)》(下文简称为:CCS指南)规定复杂结构的疲劳强度评估应该用热点应力方法[1]。疲劳热点应力需要用细化有限元直接计算,过程比较复杂。热点应力的疲劳分析主要为:有限元建模并细化、扣除腐蚀余量、疲劳分析载荷计算、疲劳载荷自动加载,热点应力计算等五步,实施起来比较困难。

本文基于CCS指南中的热点应力方法,采用PCL二次开发热点应力的疲劳分析系统,大大提高了船体结构疲劳分析的效率。

1 PCL语言简述

PCL(Patran Command language)是MSC.Patran系统中不可缺的程序设计语言。它提供了大量的函数,具有一般高级语言具有的大部分数据类型。它类似C语言和Fortran语言,尤其适合CAE应用程序的开发与应用[2-3]。其拥有丰富的表格及菜单库,可供开发用户图形界面、递归的子程序,以及函数调用、二进制及文本文件读写等功能。由于Patran程序启动时,会自动搜寻“init.pcl”文件。因此,用户可以将编写的“*pcl”文件(如model.pcl)放到“init.pcl”同样的根目录下,然后在“init.pcl”文件中加入“!!INPUT*.pcl(model.pcl)”,便可实现每次启动Patran程序即调用已编写的程序。

2 热点应力的疲劳分析系统

CCS指南对疲劳校核部位有明确规定,也要求计算点附近的有限元网格尺度不得大于受力构件板厚t,从疲劳热点位置向外所有方向延伸范围不小于10t。热点处采用4节点或8节点壳元,避免使用三角形单元。将粗网格有限元模型进行细化便可利用CCS开发的“CCS_Tools”软件中“节点细化”工具,故此处不作详述。

2.1 扣除腐蚀余量

细化有限元模型应将实际结构尺寸扣除腐蚀余量。即当厚度t≤10mm时,腐蚀余量tk为0.75mm,否则腐蚀余量tk取0.05t+0.25和1.6之间的最小值。扣除腐蚀余量较繁琐,因为所涉及到的所有单元的板厚和梁厚度均需要折减。因此利用PCL语言可以很方便解决此问题。首先编写扣除腐蚀余量界面(如图1所示),然后获取板厚和梁厚的属性列表,再点击所需要修改属性项,并单击“应用”按钮,会激发“apply_cb”函数。在“apply_cb”函数中,根据用户所选项,获取其属性值,继而再调用“reduce_thickness”函数,根据所获取的板厚或梁厚值(tk)并按上述规则进行腐蚀余量的扣除。

此程序最大的优点是将所有单元所定义的属性都放在一个列表中,通过点击属性名称就可以实现板厚度或梁厚度的修改,有效提高了工作效率。其核心代码如下[4-5]:

class deduction_corrosion_allowance

/*定义类名为“deduction_corrosion_allowance”*/classwide widget form,listbox_id1,ok_bt,ca_bt

/*定义在整个类的范围中使用的变量*/

function init()/*函数初始化*/

图1 扣除腐蚀余量界面

integer i_count,num_elems,iv_rid(VIRTUAL),

i_return_value,word_ids(8),num_words

string sv_name[64](VIRTUAL)

/*变量声明,整数和字符串数*/

form=ui_form_create(″″,1.0,1.0,″UL″,2.8,5.5,″扣除腐蚀余量″,″″)

/*定义form界面,并作为其他变量的母体*/

ui_separator_create(form,″″,0.0,0.7,3.0,TRUE)

/*定义分割符*/

listbox_id1=ui_listbox_create(form,″″,0.2,1,2.6,22,″属性列表″,″EXTEND″,false)

/*定义属性下拉列表*/

ok_bt=ui_button_create(form,″apply_cb″,0.3,5.0,1.0,0.0,″应用″,false,false)/*点击“应用”按钮,则会产生响应事件(Event)即调用apply_cb函数*/

ca_bt=ui_button_create(form,″cancel_cb″,1.8,5.0,1.0,0.0,″取消″,true,false)

/*点击“取消”按钮,则调用cancel_cb函数*/

db_count_region_ids(i_count)

/*获得已定义的单元属性域个数*/

db_get_region_ids_and_names(i_count,iv_rid,sv_name)

/*获得已定义的单元属性域号和名称*/

db_count_props(iv_rid(i),num_words)

/*通过单元属性域号获得其属性代码“word”数*/

db_get_props_by_region(num_words,iv_rid(i),word_ids)

/*获得属性代码号即“word_ids”*/

db_count_elements_in_region(iv_rid(i),num_elems)

/*获得所定义属性的单元个数*/

if(num_elems!=0)then

/*通过判断num_elems不为0,从而创建本模型所有单元的属性列表*/

db_get_prop_value(iv_rid(i),word_ids(2),

material_id,data_type,integer_val,real_values,

character_val,coord_id,node_id,field_id)

/*获得具体属性值real_values*/

end if

ui_listbox_items_create(listbox_id1,sv_wantname,

sv_wantname,select_number,wid_array)

/*创建下拉列表*/

end function/*PCL函数由关键字function开始,end function结束*/

function display()

/*显示deduction_corrosion_allowance界面*/

ui_form_display

(″deduction_corrosion_allowance″)

end function

function apply_cb()

/*点击“应用”按钮,调用apply_cb函数*/

integer pro_number

string pro_items[64](virtual)

/*定义pro_items具体维数未定*/

ui_wid_get(listbox_id1,″VALUE″,pro_items)

/*获取在属性列表中所选择项目数*/

sys_allocate_array(pro_items,1,pro_number)

/*根据选择项,定义pro_items维数*/

ui_wid_get(listbox_id1,″VALUE″,pro_items)

/*获取在属性列表中所选择项的名*/

reduce_thickness(pro_number,pro_items)

/*调用腐蚀余量扣除函数*/

end function

function cancel_cb()

/*点击“取消”按钮,调用cancel_cb函数*/

ui_form_hide(″deduction_corrosion_allowance″)

/*隐藏deduction_corrosion_allowance界面*/

end function

end class

/*类由class开始,end class结束类*/

function reduce_thickness(pro_number,pro_items)

if(num_words==2)then/*判断为板厚*/

elementprops_modify()

else if(num_words!=2)then/*判断为梁厚*/

bl_get_std_beam_section_data(id,ndim,data_types,rvalues,field_ids)/*获取梁参数rvalues*/

db_get_beam_section(id,section_shape,section_name,num_dims,mode)

/*得到梁是如何形状section_shape,有矩形、T形、L形等等*/

if(section_shape==″bar″)then/*梁为矩形时*/

beam_section_modify(section_name,section_name,

section_shape,beambar_data)

/*梁参数修改函数*/

else if(section_shape==″L″)then

/*梁为L形时*/

beam_section_modify(section_name,section_name,section_shape,beamL_data)

else if(section_shape==″T″)then

/*梁为T形时*/

beam_section_modify(section_name,section_name,section_shape,beamT_data)

end if

end if

end function

2.2 疲劳载荷计算

CCS指南指出,直接计算疲劳强度应力时,应包含满载和压载计算工况:

(1)满载或压载下总体垂向波浪弯矩范围;

(2)满载或压载下总体水平波浪弯矩范围;

(3)对应满载或压载工况的外部水动压力范围;

(4)对应满载或压载工况的内部货物动压力范围。

这四种疲劳载荷的计算主要与船体的一些参数有关,故利用PCL编制荷载计算界面(如下页图2所示)。在“指定文件名”选项处输入载荷文件名,则可以形成“*.out”文本文件,而且自动施加位移约束、集中弯矩。其核心程序代码如下:

box1=ui_databox_create(form,″″,0.8,0.5,0,1.5,″船长L(m)″,170,TRUE,″REAL″,1)/*在母体form中创建输入表,其他按钮创建也类似*/ui_wid_get(box2,″VALUE″,data2)/*获得databox中的值*/

图2 载荷计算界面

获得疲劳载荷参数后,按照CCS指南第3章的方法进行疲劳载荷计算。此时仅涉及简单的数学运算,故不赘述。将上述所计算得到疲劳载荷写入“*.out”文本文件,并存入“d:\pljs”文件夹中,以便载荷施加。所用到核心代码如下:

path=″d:\pljs″,定义荷载文件存盘路径

ui_wid_get(file_dbox,″VALUE″,file_name)

/*获得输入文件名*/

file_create_directory(path,7*64+7*8+7)

/*在根目录中创建名为pljs文件夹*/

file_build_fname(path,file_name,″out″,″NOV″,filename)/*pljs文件夹创建*.out文件*/

text_open(filename,″NOWA″,0,0,channel)

/*打开*.out文件,并对其进行编写*/

text_write_string(channel,″垂向波浪弯矩范围″)

/*一行行写,并写“垂向波浪弯矩范围”*/

text_write_string(channel,str_from_real(Mw))

/*将Mw实数转换成字符数并写入*/

2.3 疲劳载荷自动加载

疲劳强度分析主要涉及到8种荷载施加,比较复杂。本文以PCL进行二次开发,通过点击组名,对应需加荷载场名、荷载名,从而实现载荷自动加载。如图3所示。

图3 自动加载界面

第一次用MSC.Patran建立有限元模型必须规范化,特别是组名、场名、荷载名要一一对应。这样以后建立有限元模型时,就可借用之前的模型文件,而只需删除模型的几何有限元单元,最后再利用此加载程序实现快速加载。

此加载程序最核心的代码如下:

db_get_group_name(获得组名),db_get_group_id(获得组的id),db_get_all_field_names(获得场名),db_get_lbc_id_for_type(获得荷载名),ui_listbox_items_create来实现组列表、场列表、荷载列表的创建;然后,通过db_count_elems_in_group(组里单元数目),db_get_elem_ids_in_group(组里单元号),loadsbcs_create2(加载函数)实现荷载自动加载。

2.4 热点应力法疲劳分析计算

船级社推荐两点线性外推法,且为单元表面应力,其公式如下:

式中:t为板厚(mm);

σt/2为距焊趾t/2处的应力(N/mm2);

σ3t/2为距焊趾3t/2处的应力(N/mm2)。

利用PCL编制热点应力疲劳分析计算程序时,主要分两步:一是各应力范围分量应力σh提取并计算;二是应力范围合成并写入“*.out”文件中,在其主界面“热点名称”中输入所需要疲劳校核部位,单击“热点应力计算”按钮,激活并产生callback,展开热点应力计算子界面。如图4所示。

图4 热点应力计算界面

图4上部分界面所涉及到的程序代码如下:form_id=ui_form_create(″″,1.0,1.0,″UL″,2.8,6.5,″许用应力插值″,″″)

select_frame1=ui_selectframe_create(form_id,″″,0.1,0.2,2.6,1.0,″Auto Execute″,TRUE)

data_box=ui_selectdatabox_create(select_frame1,″″,0.2,0.3,1.0,2.0,″定义的热点″,

″″,TRUE,″NODE″,″select node filter″)

/*创建定义热点选择框,此处只能选择node*/

此目的是获取所要进行疲劳分析计算部位处节点的坐标。通过由图2所获得的模型起点的坐标和输入的“模型起点距尾垂线的距离”,从而计算出疲劳校核计算点距尾垂线的距离X、距纵中剖面的距离Y、距基线的距离Z,继而计算得出Se(海水动压力引起的局部应力范围)与Si(舱内货物压力引起的局部应力范围)之间的平均相关系ρ。

sort_sw1=ui_switch_create(form_id,″″,0.5,2.0,2,″″,TRUE)/*创建满载和压载选择项*/

创建图4下部分界面所涉及程序代码如下所示:

wid_id1=ui_item_create(sort_sw1,″1″,″满载″,FALSE)

ui_wid_set(wid_id1,″VALUE″,TRUE)

ui_item_create(sort_sw1,″2″,″压载″,FALSE)

select_frame2=ui_selectframe_create(form_id,″″,0.1,2.7,2.6,1.3,″Auto Execute″,TRUE)

data_box1=ui_selectdatabox_create(select_frame2,″″,0.2,0.1,1.0,2.0,″0.5t″,″″,TRUE,″ELEM2D″,

″prompt″)/*创建选择板壳单元选择框,0.5t处*/

data_box2=ui_selectdatabox_create(select_frame2,″″,0.2,0.7,1.0,2.0,″1.5t″,″″,TRUE,″ELEM2D″,″prompt″)/*创建选择板壳单元选择框,1.5t处*/

此目的是依次选择满载四个工况和压载四个工况,从而分别计算八种工况下应力范围分量应力σt/2、σ3t/2,然后计算出σh,点击“热点应力计算按钮”,激活应力计算函数“apply-cb”。其主要涉及函数为:

res_utl_get_loadcases(num_loadcases,lcids,nsub)

/*获得荷载工况数及工况数号*/

db_get_load_case_title(loadcases_ids(i),name)

/*获得荷载工况名*/

res_utl_get_subcases/*获得荷载子工况名*/

res_utl_get_result_layers

/*获得结果具体层,一般板单元有上下两层结果*/

res_utl_extract_elem_results2/*获得单元应力*/

点击“确定”按钮,即可以将应力范围合成并写入

“*.out”文件中,然后自动存入“d:\pljs”文件夹中。通过SL与[SL](许用应力范围)比较,可判断该部位疲劳分析是否满足CCS指南疲劳强度分析要求。

3 实例计算

本文对33 000 dwt散货船进行热点应力疲劳分析计算。全船除顶边舱区域采用AH36钢,外底板、内底板采用AH32钢以外,其余皆采用船用低碳钢。该船总长170m,船深26m,型深14.8m,方形系数0.837,满载和压载计算工况下吃水分别为9.98m和5.103m。船体外底板厚13mm,内底板和底边舱斜板厚15mm,甲板和舷侧外板厚16 mm,顶边舱斜板和横舱壁厚14mm。对于艏端加强以外区域,船底纵骨和底边舱舷侧纵骨为HP 280mm×11mm,内底纵骨和底边舱斜板纵骨为HP 260mm×10mm,甲板纵骨、顶边舱斜板纵骨、顶边舱舷侧纵骨为16mm×250mm,其三维有限元模型如图5所示。

图5 三维有限元模型

CCS指南对需要校核部位有详细规定。本文也给出了100号肋位底边舱与内底板折角处,100号肋位单壳散货船肋骨与底边舱,100号肋位单壳散货船肋骨与顶边舱,内底板与底凳斜板的连接处,横舱壁与底凳顶板连接处,横舱壁与顶凳斜板连接处共六处的细化有限元模型参见图6。

热点应力分析结果见表1。其中垂向SV指船体梁垂向波浪弯矩引起的应力范围,水平SH指船体梁水平波浪弯矩引起的应力范围,海水动压力Se指海水动压力引起的局部应力范围,货物Si指舱内货物压力引起的局部应力范围,系数ρ指Se与Si之间的平均相关系数,总体Sg指总体应力范围,局部Sl指局部应力范围,设计SL指各种工况下的设计应力范围,[SL]指许用应力范围。

图6 细化有限元模型

表1 热点应力分析结果

4 结论

本文采用PCL编程语言,实现了船体结构热点应力法的疲劳分析,大大减少了在扣除腐蚀余量、荷载计算及施加、结果提取和分析等方面的工作量,有效提高了疲劳分析的效率。

[1]中国船级社.船体结构疲劳强度指南[M].北京:人民交通出版社,2007:40-46.

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

[3]何祖平,王德禹.基于MSC.Patran二次开发的结构参数化建模及其集成开发环境[J].船海工程,2005(2):17-20.

[4]MSC.Patran PCL and Customization[S].London:2010.

[5]MSC.Patran PCL Reference Manual[S].London:2010.

Development of hull structure fatigue analysis system by hot spot stress method

SONG Ya-ling1WU Jian-guo1LIN Yong2
(1.College of Architectural&Civil Engineering,Zhejiang University of Technology,Hangzhou 310032,China;2.Ship Inspection Bureau of Zhejiang Province,Hangzhou 310032,China)

The hot spot stress fatigue complex analysis of the hull structure is difficult to be implemented according to the guidelines for assessment of hull structure fatigue strength by CCS.A fatigue analysis system of hull structure is developed based on Patran Command Language of MSC.Patran to automatically achieve the deduction of corrosion allowance,load calculation,imposed fatigue loading,results extraction and analysis,which can greatly improve the efficiency of the hull structure fatigue analysis.

hull structure;hot spot stress;Patran Command Language(PCL);fatigue analysis

U661.4

A

1001-9855(2012)03-0034-06

浙江省交通厅“国内航行海船结构疲劳设计与审核方法研究”资助(编号:2010W02)。

2011-12-21;

2011-12-29

宋亚玲(1986-),男,汉族,硕士研究生,研究方向:钢结构。

吴剑国(1963-),男,汉族,博士,教授,研究生导师,研究方向:钢结构。

林勇(1965-),男,汉族,双学士,高级工程师,研究方向:船舶工程。

猜你喜欢

船体热点界面
船体行驶过程中的压力监测方法
热点
微重力下两相控温型储液器内气液界面仿真分析
国企党委前置研究的“四个界面”
一种可用于潮湿界面碳纤维加固配套用底胶的研究
扁平化设计在手机界面中的发展趋势
超大型FPSO火炬塔及船体基座设计
热点
结合热点做演讲
船体剖面剪流计算中闭室搜索算法