基于Excel-VBA的大型船舶纵向下水计算通用程序设计
2012-05-31张光发,刘玉君,纪卓尚
张 光 发, 刘 玉 君, 纪 卓 尚
(1.大连海洋大学 海洋工程学院,辽宁 大连 116023;2.大连理工大学 船舶工程学院,辽宁 大连 116024)
0 引 言
目前,船舶尤其是万吨级大型船舶,其下水过程是一个事故因素较多的工艺过程,为了确保船舶下水时的安全,除了必要的可靠设备和丰富的实践经验外,还必须进行详细周密的理论计算.对于一般的船舶,利用静力学方法计算预测船舶下水过程中的整体受力情况,不涉及局部受力分析.但对于大型船舶,由于下水重量增加和下水过程中瞬时受力变化复杂及受环境条件的影响,有可能因局部强度不足而造成构件失稳或破坏,需要对船舶下水的局部强度进行计算与分析.船舶纵向滑道下水的计算目的是分析下水过程中船舶的运动状态以及可能出现的各种现象(如船尾下落或船首下落),研究下水的安全性和需要采取的安全措施,保证船舶安全下水[1].
长期以来,国内外的船舶技术及研究人员从静力学和动力学方面,用各种方法对船舶下水计算进行了研究.近年来,随着船舶向大型化方向发展,许多学者和专家利用各种特殊的方法(如有限元法)对大型船舶(如汽车滚装船)的下水进行了研究和计算,极大地推动了船舶纵向下水研究的发展.吴祥虎等提出了船舶纵向下水配载优化数学模型,并开发了基于Matlab的船舶纵向下水配载优化程序[2].李磊鑫等利用动力学方法对4 300辆汽车滚装船带浮筒下水过程进行了计算和分析[3].郝金凤等对大型船舶船台下水时艏部所受墩木支反力的分布形式及其对结构的影响进行了计算分析[4].王文华等采用计算流体动力学(CFD)方法对船体从船台上纵向重力式下水过程进行动力学分析,为船体下水计算提供了水动力参数[5].国内还有一些学者,如胡日强[6],对船舶下水的底部局部强度通过有限元法,借助如ANSYS等结构分析程序进行计算与分析.
这些方法,有的计算复杂,需要基于特殊的平台编制特殊的程序和软件;有的输入数据和信息比较繁琐,影响了其实用性;有的是针对特殊的船舶和船型进行计算和分析,通用性不强.本文利用船舶下水的弹性计算方法,考虑船舶下水过程中的局部受力情况,基于Excel-VBA设计和编制适合于大型船舶下水计算通用程序,并以大连某船厂设计生产的5 000辆汽车滚装船为实例,对其下水进行计算和分析,以验证程序的通用性和实用性.
1 基本理论和计算内容
1.1 下水基本方法及过程
为了保证船舶顺利下水,必须具有相应的下水设施和工艺措施.国内外常用的一种下水方法是纵向涂油滑道下水,如图1所示.船舶下水时,利用船台和滑道合一的下水设施,首先将龙骨墩、边墩和支撑全部拆除,使船舶重量移到滑板和滑道上,再松开止滑装置,船舶便和支架、滑板等一起沿着滑道滑入水中,同时依靠船舶自身浮力漂浮在水面上.此外,为了减小滑板在滑道上的滑行摩擦阻力,在它们之间涂上一定厚度的下水油脂,故称为纵向涂油滑道下水.这种方法适用于不同重量和船型的船舶下水,并且具有设备简单、建造费用少和维护管理方便等优点.
图1 船舶纵向涂油滑道下水示意图Fig.1 Illustration of ship launching with fore-andaft lubricated sideways
滑道的数目通常为2根,其间距约为船宽的1/3.滑道坡度β根据船舶的大小而定,大体范围是:小型船舶(100m 以下)取1/12~1/15;中型船舶(100~200m)取1/15~1/20;大型船舶(200 m以上)取1/20~1/24.船上应安装下水架.下水架的长度通常约为船长的80%.两端的下水架强度比较高,分别称为前支架和后支架.取消前支架可改善船尾上浮时的受力分布.下水架的底板称为滑板,其与滑道的接触面之间敷润滑油脂,以利滚动.船舶在船台上的布置通常是船尾先入水.船的龙骨坡度α通常为1/100~1/200.
为了便于分析船舶运动情况和作用力的变化,通常将下水过程划分为4个阶段[1],具体见表1.
表1 船舶下水过程的4个阶段Tab.1 The four phases of ship launching
1.2 计算原理
以往实践表明,大型重载船舶的下水过程中,有可能出现结构受力过大造成结构强度不足而导致船体外板和结构变形.因此,对大型重载船舶进行下水计算及其安全性研究时,需要考虑船体局部结构强度问题,计算船体在下水过程中的局部受力,校核船体局部结构强度能否满足下水要求.
目前,常规的下水计算将船体和船台(包括滑道和墩木)处理为刚性体,以重力矩与浮力矩作为判断船体起浮的依据,一旦浮力对艏支点的力矩超过重力矩,船体尾部即与船台脱离,全部反力集中到艏支点处,或按经验方法将反力分布到艏部(如1/10船长处)来评估下水安全性.上述方法显然比较粗略,难以适应现代船舶尤其是大型船舶建造质量和对安全控制的高标准要求.
船舶下水的弹性计算方法是将船体沿船长模型化为变断面梁,并将船体自首至尾按肋距划分为一系列梁单元,即将船体梁划分为多个节点和分段的有限元连续梁,每一梁单元的截面特性按所在位置的船体横截面计算决定,船体下水的墩木和船台等弹性支持模型化为各个独立的线性弹簧,按支墩的实际布置位置设置在梁单元节点的下方,每个支墩弹簧的刚度按1/K= ∑(1/Ki)算出.其中,Ki为船底结构、墩木、滑板和滑道地基等的刚度系数.
船舶下水时,在触水之前,所有重力均由支架墩木支撑.船舶下水过程中当某一墩木滑出船台末端,即不再起支撑作用,船舶所受的浮力则不断增大,直至尾浮压力集中于艏支架.
下水计算从船体滑行的一系列位置进行,直至船体全浮,在每一个滑行位置处,以每一个肋距作为船体切片,根据邦戎曲线计算其获得的浮力,同时根据船体的重量分布将船体重力施加到梁单元上,用有限元法计算可得出弹性支座上的船体梁在各力作用下每个节点的位移,也即弹簧沉降,从而可得弹簧反力(即支墩反力),并可计算船体梁在每个截面处的弯矩和剪力,以进行总纵强度校核.
1.3 下水计算内容
本程序为有限元结构计算的前端程序,主要计算及处理内容如下:
(1)船舶下水常规计算.即计算下水过程中各个阶段的船舶状态、船舶浮力、浮力和下水重量对滑道末端和下水架前支点的力矩、滑道平均压力及其力矩,绘制各计算参数的曲线图(船舶下水曲线图),根据曲线图及其工况,分析船舶安全性(是否会发生船尾下落、船首下落、滑道压力对船底的破坏等不安全现象).
(2)下水过程中的船体局部受力计算,主要包括:滑道压力分布、船体梁总纵弯矩分布.
2 基于Excel-VBA的程序设计
Excel是微软公司的Microsoft Office系列软件中的一个重要软件,其功能强大,应用广泛,已经成为全球普遍采用的办公应用软件之一.在工程计算中,不仅可以利用Excel进行各种数据处理和简单计算(例如类似数据库的数据记录和查询等处理、数据库链接、图表绘制、整理和分析数据、基本数据统计和计算、中性文件暂存和数据传递、内置函数等),还可以利用Excel的强大功能,以Excel为基础平台,利用VBA开发语言开发简洁实用的计算程序以处理复杂问题.
VBA(Visual Basic for Application)是建立在可视化编程语言Visual Basic(VB)之上的一种嵌入式编程语言,它在普通Visual Basic语言的基础上,增加了对相应软件不同对象的控制功能,包括对Excel工作簿、工作表、区域、数据透视表等对象的控制功能,这样,就可以方便地对Excel进行控制,全面提高软件工作的自动化水平,并为之增加相应的功能[7].VBA提供了一组基于VB开发系统的高级编程工具,开发者能够使用它们来利用被包装的应用程序.从Office 97开始,微软将VBA作为统一的应用程序自动化语言引入到所有Office的组件中,并提供了VBA的IDE环境,直接将VBA改进为一个完整的开发工具.
大多数工程计算软件(如图形软件、应用于船舶方向的性能计算软件、结构强度校核软件等)都能输入或输出Excel格式的文件,以利于与其他软件进行交互.和一般的软件相比,大多数工程计算软件的交互界面都比较简单,主要是数据的输入和输出,重要的是后台的数据处理,以及与其他软件的数据交互.因此,工程计算软件最适合于以Excel软件为基础,利用VBA进行开发,这样可以节省大量开发时间,同时,程序还具有很好的通用性.这样开发出来的程序,前端利用Excel进行用户交互,后端接收数据后,进行数据处理,然后再利用Excel输出数据.前端输入的数据可以很方便地从其他软件输出的数据获取,而其输出的数据也可以很方便地为其他软件所利用.
3 下水计算程序设计
3.1 程序结构
基于Excel,针对上述船舶下水计算方法和内容,利用VBA设计和编制了适合于大型船舶下水分析计算的通用程序.根据其功能要求以及船舶下水的过程,下水计算程序主要划分为如下6个模块.
(1)InputData模块:处理下水计算数据的输入,包括下水基本数据、船舶下水重量分布、邦戎曲线数据等.
(2)Launch模块:处理下水计算总体控制.给定步长,计算船舶状态,计算船舶受力,保存数据,在时域内进行循环,直至船舶下水后呈自由浮态.
(3)ShipStatus模块:计算船舶的下水状态,如尾垂线距船台末端距离、船首尾吃水等.
(4)ForceCalculator模块:计算船舶所受的各种作用力(如船舶浮力、船舶滑道末端和下水架前支点的力矩、滑道平均压力及其力矩等)、下水过程中的船体局部受力以及船体梁总纵弯矩分布等.
(5)SecurityAnalyzer模块:处理船舶安全性分析,包括船尾下落分析、船首下落分析,以及船舶总体强度分析.
(6)OutputData模块:处理数据输出.
程序的结构及其主要流程如图2所示,图中步骤及处理函数见表2.
3.2 数据输入和输出
程序的数据输入由InputData模块处理,主要的输入数据有:
(1)船舶下水基本数据,包括计算要素及船舶主尺度、船台数据、下水设施及环境数据.
(2)船舶下水重量分布数据,即输入船舶各肋位处的重量数据.数据从Excel界面手工输入,也可以从CAD图中导出Excel文件,然后导入至下水计算程序.
(3)船舶邦戎曲线数据,即船舶每站在不同水线处的横剖面积及其静矩数据,其为船舶性能计算的输出数据,程序可直接利用.
表2 程序流程说明Tab.2 Description of program process
表3 船舶下水计算基本输入数据Tab.3 Basic input data for ship launchingcalculation
数据按照规定的格式,输入至Excel表格.如表3所示,表中所列数据为大连某船厂设计的5 000辆汽车滚装船的设计数据以及实际下水设施的数据,将其作为实际算例的基本输入数据.
图2 下水计算程序流程图Fig.2 Sequence diagram of calculation for ship launching
下水计算程序运行结束后,输出的主要数据有:
(1)下水过程中各个阶段的船舶状态、船舶浮力、浮力和下水重量对滑道末端和下水架前支点的力矩、滑道平均压力及其力矩.
(2)船舶安全性分析结果,如是否会发生仰倾(即船尾下落)、首跌落现象.
(3)下水过程中的船体局部受力,包括滑道压力分布数据、船体梁总纵弯矩分布数据.
图3 船舶下水质量分布图Fig.3 Mass distribution chart of ship launching
4 算 例
4.1 算例及其分析
利用本文程序,对大连某船厂设计的5 000辆汽车滚装船进行了下水计算和分析.该船舶的下水基本数据如表3所示,输入船舶下水质量分布数据(图3为根据数据绘制的下水质量(m)分布图)和船舶邦戎曲线数据后,进行下水模拟计算,运行该下水计算通用程序后,输出尾浮、全浮数据和船舶安全性分析结果(如表4~7所示)、滑道压力(F)分布和船体梁总纵弯矩(M)分布等数据(图4、5).
图4 船舶下水过程中墩木压力分布图Fig.4 Stress distribution chart of bracket frustum during ship launching
图5 船舶下水过程中船体梁总纵弯矩分布图Fig.5 Total longitudinal bending-moment distribution chart of ship body beam during launching
表4 船舶下水尾浮和全浮计算数据(部分)Tab.4 Calculation result data of launching ship during stern floating and whole floating(partial)
表5 船舶下水计算总结表Tab.5 Integrated calculation data of ship launching
表6 下水过程中各个阶段的船舶状态数据Tab.6 Ship status of different phases during launching
表7 下水过程中各状态的浮力分布数据(部分)Tab.7 Float distributing data during launching(partial)
计算时,将下水过程自静止至尾浮过程分为8个状态,如表6所示.表7给出了各状态的浮力值,表5为尾浮和全浮计算及安全性总结.在程序中,利用有限元法,分别计算了各阶段的墩木压力以及船体梁的总纵弯矩分布,利用输出的压力数据,绘制各状态的船体梁下水过程墩木压力分布图(如图4所示);利用总纵弯矩分布数据,绘制各状态的船体梁的总纵弯矩分布图(如图5所示).
通过分析表5、图5中的数据,可得出如下结论:
(1)下水过程中,可能产生首跌落现象.
(2)全浮行程将近289m,需要准备合适的下水码头区域,或者减小下水重量,以减小全浮行程.
(3)尾浮时,因首支架反力过大,应保证首支架与船体外板具有足够的接触面积使船体结构强度满足要求.
(4)下水过程中,最大弯矩为1.90×109N·m,在119肋位附近,其剖面惯性矩约为420m4,应力水平小于许用应力,船体总纵强度满足许用应力要求.
4.2 与传统方法计算结果对比
为了验证程序计算的结果,作者按照传统的方法将下水船舶简化为刚性梁,利用Excel表格,手工对该船的下水进行了计算,并与文中程序计算的结果进行了比较,主要数据见表8.
表8 计算结果比较Tab.8 Comparison of calculation results
通过比较可看出,基于刚性梁方法手工计算的尾浮行程比本文程序计算得到的结果延迟了1.65m,差距的原因主要是对于尾浮的判据不一致,前者的判据为重力矩与浮力矩相等,而后者的判据为尾部支墩脱离船底,前者达到尾浮要比后者需要更大的浮力,于是尾浮对应的行程更大;尾浮时的首支架压力有比较大的相对误差也是尾浮判据不一致而导致.其他方面也基本一致.总的来说,两种计算方法在预报是否发生仰倾、首跌落、尾浮行程及全浮行程等几个下水特征量方面基本一致.
5 结 语
本文利用船舶下水的弹性计算方法计算船体在下水过程中的局部受力,校核船体局部结构强度能否满足下水要求.以Excel软件为基础,利用VBA开发和编制适合于大型船舶下水计算的通用程序,可以节省大量开发时间,同时,程序还具有很好的通用性.该通用程序除具有常规的船舶下水分析功能(下水状态和受力分析、下水总纵强度分析)外,还具有如下功能和优势:
(1)本文计算方法及程序能输出墩木反力及其分布以及为下水安全性分析等方面提供更多的信息.
(2)可以将下水过程中的船体局部受力数据输出后,再导入至强度分析软件(如ANSYS)进行船体局部强度分析.
(3)利用该程序的输出数据,结合其他数据和船体下水结构(如船舶底纵骨和肋板结构、墩木的布置等),可对下水过程进行其他方面的分析,如船舶下水过程中内底纵骨应力情况、船体底部局部强度等.
实例计算表明,该通用程序在大型船舶下水分析方面具有较强的通用性和实用性,同时在与其他软件进行数据交互方面,也具有很强的通用性,前端输入的数据可以很方便地从其他软件输出的数据获取,而其输出的数据也可以很方便地为其他软件所利用.
[1] 盛振邦,刘应中.船舶原理[M].上海:上海交通大学出版社,2003
[2] 吴祥虎,程远胜,刘 均.船舶纵向下水配载优化研究[J].中国舰船研究,2006(2):23-25,34
[3] 李磊鑫,刘卫斌.4300辆汽车滚装船带浮筒下水动力学计算分析[J].船海工程,2007(175):30-33
[4] 郝金凤,佟福山.大型船船台下水时艏部强度计算分析[J].哈尔滨工程大学学报,2003,24(4):380-384
[5] 王文华,王言英.基于CFD方法的船体下水水动力分析[J].大连海事大学学报,2009,35(3):1-4
[6] 胡日强.船舶下水过程局部强度分析研究[D].大连:大连理工大学,2001
[7] 夏 强.Excel VBA应用开发与实例精讲[M].北京:科学出版社,2006