杨 鹄
(武汉船舶职业技术学院科研处,湖北武汉 430050)
船舶结构计算是船舶设计中非常重要的环节,其中涉及大量的数值计算和繁杂的规范选取。传统的结构计算是根据结构规范手工计算,也有的利用一些局部自动化的软件运算,但是,由于结构计算复杂,涉及规范的章节过多,船体外板及构件规格种类繁多,船舶结构计算就显得特别复杂而繁琐。
MATLB 在科学计算方面有独到的优势,Word 的文档编辑功能特别强大。在结构计算中涉及复杂的计算且需要生成结构技术报告,要进行复杂的文字编辑,如果能够将MATLAB 的计算功能和Word 的强大文字编辑功能结合起来,实现船舶结构计算的自动化,用户通过输入必要的计算参数,程序自动调用相应规范章节,自动完成结构计算和校核,输出必要的计算结果,实现船舶结构计算书的全自动生成,甚至可以不通过排版就可以直接打印,形成完整的结构计算书,势必可以大大提高设计的效率,降低劳动强度,提高计算精度。
首先启动Matlab 6.5 ,在命令窗口输入命令“notebook _setup”。回车后命令窗口出现如下提示:
>>Notebook-setup
Welcome to theutility for setting up the MATLAB Notebook for interfacing MATLAB to Microsoft Word (欢迎建立 Matlab Notebook与Word 的公用程序)
Choose yourversion of Microsoft Word:(选择所使用的Word 版本)
[1]Microsoft Word97
[2]Microsoft Word2OOO
[3]Microsoft Word2002(XP)
[4]Exit ,making no changes
Microsoft Word Version:3(这里选择3)
然后命令窗口出现如下提示:
Notebook setup is complete.(Matlab Notebook 安装完成)
(1)在 Matlab 中调用 Word:在 Matlab 命令窗口直接输入notebook 命令,系统会自动启动Word,其主菜单栏中将增加Notebook 一栏。
(2)在 Word 中调用 Matlab:启动 Word,然后选择“文件”菜单下的“新建”,在“根据模板新建”中选择“通用模板”,然后选择M-book 文档,按确定后系统会自动启动Matlab。
以Word 作为输入平台,用户的输入数据在Word 中存储,填写计算所需的必要参数,MATLAB 作为计算引擎,将Word 中的输入参数读入MATLAB 环境进行运算,最终将计算结果反馈到 Word 中,如图1 所示。
图1 结构计算自动化工作思路
用此种方式进行船舶结构计算,用户的操作界面始终是 Word 平台,数据的输入及输出都是在Word 中完成,非常方便。
船舶结构计算自动化的主要难度在于调用规范的复杂性,如何将规范的要求自动融入计算的过程,并将引用规范的章节准确地反映到计算书中,同时又能够做到用户不参与选择,实现“黑盒子”操作是摆在面前亟待解决的重要问题。
Notebook 某种意义上是 Word 中的 M-book,Notebook 通过动态连接库和MATLAB 进行数据交互,交互的基本单位称为单元(表1 )。M-book 需要把在Word 中输入的MATLAB 命令或者语句组成单元(群),传送到 MATLAB 中运行,运行输出结果再以细胞(群)的方式传送回M-book 中,见表1 。
“输入单元”是由 M-book 传送给 MATLAB 的命令,可以多行,也可以是包含在文本中的命令或者一段MATLAB 程序。生成输入单元:在Word 中,用文本格式输入指令,然后选中该部分,在[Notebook]菜单中用[Define Input Cel1]命令,这样M-book 会把普通文本生成“输入单元”,并用黑色括号把指令括起来,指令变为绿色字体。例如:
表1 Notebook 菜单功能
总 长: [Loa = 105.00 ;] m 型 宽:[B=17.20 ;]m
两 柱 间 长: [L=101.40 ;]m 型 深:[D=6.90 ;]m
A 级 吃 水:[d=6.10 ;]m 肋 骨 间 距:[s=0.55 ;]m
货 舱 长:[l=79.50 ;]m 货 舱 口 宽:[b=13.60 ;]m
骨间距:[szg=0.567 ;]m 实 肋 板 间距:[sslb=1.65 ;]m
载货量:[Q=7500.0 ;]t 方 型 系 数:[Cb=0.851 ;]
通过“输入单元”的设置和录入完成计算的原始数据的准备,这些数据在Word 界面中,用户只需要根据实船的情况输入(修改)方括号内的数据就可以完成计算原始数据的录入,操作简单,直观快捷。
利用MATLAB 中的M文件计算,其中程序会调用上述的输入参数,并调用一些必要的函数。下述为实现代码:
%本文件用来检验主尺度比
disp('二.主 要 数 据')
disp(['总长 Loa=',num2str (Loa ),'米。'])
disp(['型宽 B=',num2str (B),'米。'])
disp(['两柱间长 L=',num2str (L),'米。'])
disp(['肋骨间距s=',num2str (s ),'米。'])
disp(['A 级吃水 d=',num2str (d),'米。'])
disp(['方型系数 Cb=',num2str (Cb)])
LD=L/D;
BD=B/D;
l L=lc/L;
bB=bc/B;
if LD<25
disp('L/D<25 ,满足规范要求')
else
disp('L/D 不小于25 ,不满足规范要求!')
end
if BD<4.0
disp('B/D<4.0 ,满足规范要求')
else
disp('B/D 不小于4.5 ,不满足规范要求!')
end
if l L<0.88
disp('l/L<0.88 ,舱口长与船长之比满足规范要求。')
else
disp('l/L 不小于0.8 ,舱口长与船长之比不满足规范要求!')
end
if bB<0.8
disp('b/B<0.8 ,货舱口宽与船宽之比满足规范要求。')
else
disp('b/B 不小于0.8 ,货舱口宽与船宽之比满足规范要求!')
end
disp('三.结构强度较核')
disp('㈠外板与甲板')%完毕
“输出单元”是由 MATLAB 回传给 M-book 的计算结果。在[Notebook]菜单中用[E-valuate Cell ]选项,可以实现把输入单元传送到MATLAB 中运算,运算结果会自动回传到M—book 中,运算结果为蓝色标识。例如:
总长 Loa=105.00M
型宽B=17.20M
两柱间长L=101.40M
肋骨间距s=0.55M
A级吃水d=6.10M
方型系数Cb=0.851
L/D<25 ,满足规范要求;
B/D<4.0 ,满足规范要求;
l/L<0.88 ,舱口长与船长之比满足规范要求;
b/B 不小于0.75 ,货舱口宽与船宽之比不满足规范要求!应进行大开口计算。
上述结果为自动运算生成,由 MATLAB 完成数据运算,将运算结果回传给 Word,由 Word负责显示,用户无需查阅规范,甚至不需要编辑排版既可实现船舶结构计算书的自动生成。
现代船舶工业对自动化的需要和要求越来越高,利用MATLAB 强大的数据运算功能和Word强大的文字编辑功能实现船舶结构计算的自动化和结构计算书的自动生成,必然能够降低船舶设计难度,提高船舶设计工作效率和自动化水平。
1 张养安、刘林章.MATLAB 软件在数据处理中的应用[J ].水土保持研究,2005 ,12(4).
2 姜长元.Matlab 和 Word 的链接及应用[J ].洛阳师范学院学报,2005(2).
3 王沫然.MATLAB 与科学计算(第二版)[M].北京:电子工业出版社,2004.
4 郑阿奇.《MATLAB 实用教程》[M].电子工业出版社,2004.
5 曹 戈.《MATLAB 教程及实例》[M].机械工业出版社,2008.