楊 鵠
(武漢船舶職業(yè)技術(shù)學(xué)院科研處,湖北武漢 430050)
船舶結(jié)構(gòu)計(jì)算是船舶設(shè)計(jì)中非常重要的環(huán)節(jié),其中涉及大量的數(shù)值計(jì)算和繁雜的規(guī)范選取。傳統(tǒng)的結(jié)構(gòu)計(jì)算是根據(jù)結(jié)構(gòu)規(guī)范手工計(jì)算,也有的利用一些局部自動(dòng)化的軟件運(yùn)算,但是,由于結(jié)構(gòu)計(jì)算復(fù)雜,涉及規(guī)范的章節(jié)過(guò)多,船體外板及構(gòu)件規(guī)格種類繁多,船舶結(jié)構(gòu)計(jì)算就顯得特別復(fù)雜而繁瑣。
MATLB 在科學(xué)計(jì)算方面有獨(dú)到的優(yōu)勢(shì),Word 的文檔編輯功能特別強(qiáng)大。在結(jié)構(gòu)計(jì)算中涉及復(fù)雜的計(jì)算且需要生成結(jié)構(gòu)技術(shù)報(bào)告,要進(jìn)行復(fù)雜的文字編輯,如果能夠?qū)ATLAB 的計(jì)算功能和Word 的強(qiáng)大文字編輯功能結(jié)合起來(lái),實(shí)現(xiàn)船舶結(jié)構(gòu)計(jì)算的自動(dòng)化,用戶通過(guò)輸入必要的計(jì)算參數(shù),程序自動(dòng)調(diào)用相應(yīng)規(guī)范章節(jié),自動(dòng)完成結(jié)構(gòu)計(jì)算和校核,輸出必要的計(jì)算結(jié)果,實(shí)現(xiàn)船舶結(jié)構(gòu)計(jì)算書的全自動(dòng)生成,甚至可以不通過(guò)排版就可以直接打印,形成完整的結(jié)構(gòu)計(jì)算書,勢(shì)必可以大大提高設(shè)計(jì)的效率,降低勞動(dòng)強(qiáng)度,提高計(jì)算精度。
首先啟動(dòng)Matlab 6.5 ,在命令窗口輸入命令“notebook _setup”?;剀嚭竺畲翱诔霈F(xiàn)如下提示:
>>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)
然后命令窗口出現(xiàn)如下提示:
Notebook setup is complete.(Matlab Notebook 安裝完成)
(1)在 Matlab 中調(diào)用 Word:在 Matlab 命令窗口直接輸入notebook 命令,系統(tǒng)會(huì)自動(dòng)啟動(dòng)Word,其主菜單欄中將增加Notebook 一欄。
(2)在 Word 中調(diào)用 Matlab:?jiǎn)?dòng) Word,然后選擇“文件”菜單下的“新建”,在“根據(jù)模板新建”中選擇“通用模板”,然后選擇M-book 文檔,按確定后系統(tǒng)會(huì)自動(dòng)啟動(dòng)Matlab。
以Word 作為輸入平臺(tái),用戶的輸入數(shù)據(jù)在Word 中存儲(chǔ),填寫計(jì)算所需的必要參數(shù),MATLAB 作為計(jì)算引擎,將Word 中的輸入?yún)?shù)讀入MATLAB 環(huán)境進(jìn)行運(yùn)算,最終將計(jì)算結(jié)果反饋到 Word 中,如圖1 所示。
圖1 結(jié)構(gòu)計(jì)算自動(dòng)化工作思路
用此種方式進(jìn)行船舶結(jié)構(gòu)計(jì)算,用戶的操作界面始終是 Word 平臺(tái),數(shù)據(jù)的輸入及輸出都是在Word 中完成,非常方便。
船舶結(jié)構(gòu)計(jì)算自動(dòng)化的主要難度在于調(diào)用規(guī)范的復(fù)雜性,如何將規(guī)范的要求自動(dòng)融入計(jì)算的過(guò)程,并將引用規(guī)范的章節(jié)準(zhǔn)確地反映到計(jì)算書中,同時(shí)又能夠做到用戶不參與選擇,實(shí)現(xiàn)“黑盒子”操作是擺在面前亟待解決的重要問(wèn)題。
Notebook 某種意義上是 Word 中的 M-book,Notebook 通過(guò)動(dòng)態(tài)連接庫(kù)和MATLAB 進(jìn)行數(shù)據(jù)交互,交互的基本單位稱為單元(表1 )。M-book 需要把在Word 中輸入的MATLAB 命令或者語(yǔ)句組成單元(群),傳送到 MATLAB 中運(yùn)行,運(yùn)行輸出結(jié)果再以細(xì)胞(群)的方式傳送回M-book 中,見(jiàn)表1 。
“輸入單元”是由 M-book 傳送給 MATLAB 的命令,可以多行,也可以是包含在文本中的命令或者一段MATLAB 程序。生成輸入單元:在Word 中,用文本格式輸入指令,然后選中該部分,在[Notebook]菜單中用[Define Input Cel1]命令,這樣M-book 會(huì)把普通文本生成“輸入單元”,并用黑色括號(hào)把指令括起來(lái),指令變?yōu)榫G色字體。例如:
表1 Notebook 菜單功能
總 長(zhǎng): [Loa = 105.00 ;] m 型 寬:[B=17.20 ;]m
兩 柱 間 長(zhǎng): [L=101.40 ;]m 型 深:[D=6.90 ;]m
A 級(jí) 吃 水:[d=6.10 ;]m 肋 骨 間 距:[s=0.55 ;]m
貨 艙 長(zhǎng):[l=79.50 ;]m 貨 艙 口 寬:[b=13.60 ;]m
骨間距:[szg=0.567 ;]m 實(shí) 肋 板 間距:[sslb=1.65 ;]m
載貨量:[Q=7500.0 ;]t 方 型 系 數(shù):[Cb=0.851 ;]
通過(guò)“輸入單元”的設(shè)置和錄入完成計(jì)算的原始數(shù)據(jù)的準(zhǔn)備,這些數(shù)據(jù)在Word 界面中,用戶只需要根據(jù)實(shí)船的情況輸入(修改)方括號(hào)內(nèi)的數(shù)據(jù)就可以完成計(jì)算原始數(shù)據(jù)的錄入,操作簡(jiǎn)單,直觀快捷。
利用MATLAB 中的M文件計(jì)算,其中程序會(huì)調(diào)用上述的輸入?yún)?shù),并調(diào)用一些必要的函數(shù)。下述為實(shí)現(xiàn)代碼:
%本文件用來(lái)檢驗(yàn)主尺度比
disp('二.主 要 數(shù) 據(jù)')
disp(['總長(zhǎng) Loa=',num2str (Loa ),'米。'])
disp(['型寬 B=',num2str (B),'米。'])
disp(['兩柱間長(zhǎng) L=',num2str (L),'米。'])
disp(['肋骨間距s=',num2str (s ),'米。'])
disp(['A 級(jí)吃水 d=',num2str (d),'米。'])
disp(['方型系數(shù) Cb=',num2str (Cb)])
LD=L/D;
BD=B/D;
l L=lc/L;
bB=bc/B;
if LD<25
disp('L/D<25 ,滿足規(guī)范要求')
else
disp('L/D 不小于25 ,不滿足規(guī)范要求?。В?/p>
end
if BD<4.0
disp('B/D<4.0 ,滿足規(guī)范要求')
else
disp('B/D 不小于4.5 ,不滿足規(guī)范要求?。В?/p>
end
if l L<0.88
disp('l/L<0.88 ,艙口長(zhǎng)與船長(zhǎng)之比滿足規(guī)范要求。')
else
disp('l/L 不小于0.8 ,艙口長(zhǎng)與船長(zhǎng)之比不滿足規(guī)范要求?。В?/p>
end
if bB<0.8
disp('b/B<0.8 ,貨艙口寬與船寬之比滿足規(guī)范要求。')
else
disp('b/B 不小于0.8 ,貨艙口寬與船寬之比滿足規(guī)范要求?。В?/p>
end
disp('三.結(jié)構(gòu)強(qiáng)度較核')
disp('㈠外板與甲板')%完畢
“輸出單元”是由 MATLAB 回傳給 M-book 的計(jì)算結(jié)果。在[Notebook]菜單中用[E-valuate Cell ]選項(xiàng),可以實(shí)現(xiàn)把輸入單元傳送到MATLAB 中運(yùn)算,運(yùn)算結(jié)果會(huì)自動(dòng)回傳到M—book 中,運(yùn)算結(jié)果為藍(lán)色標(biāo)識(shí)。例如:
總長(zhǎng) Loa=105.00M
型寬B=17.20M
兩柱間長(zhǎng)L=101.40M
肋骨間距s=0.55M
A級(jí)吃水d=6.10M
方型系數(shù)Cb=0.851
L/D<25 ,滿足規(guī)范要求;
B/D<4.0 ,滿足規(guī)范要求;
l/L<0.88 ,艙口長(zhǎng)與船長(zhǎng)之比滿足規(guī)范要求;
b/B 不小于0.75 ,貨艙口寬與船寬之比不滿足規(guī)范要求!應(yīng)進(jìn)行大開(kāi)口計(jì)算。
上述結(jié)果為自動(dòng)運(yùn)算生成,由 MATLAB 完成數(shù)據(jù)運(yùn)算,將運(yùn)算結(jié)果回傳給 Word,由 Word負(fù)責(zé)顯示,用戶無(wú)需查閱規(guī)范,甚至不需要編輯排版既可實(shí)現(xiàn)船舶結(jié)構(gòu)計(jì)算書的自動(dòng)生成。
現(xiàn)代船舶工業(yè)對(duì)自動(dòng)化的需要和要求越來(lái)越高,利用MATLAB 強(qiáng)大的數(shù)據(jù)運(yùn)算功能和Word強(qiáng)大的文字編輯功能實(shí)現(xiàn)船舶結(jié)構(gòu)計(jì)算的自動(dòng)化和結(jié)構(gòu)計(jì)算書的自動(dòng)生成,必然能夠降低船舶設(shè)計(jì)難度,提高船舶設(shè)計(jì)工作效率和自動(dòng)化水平。
1 張養(yǎng)安、劉林章.MATLAB 軟件在數(shù)據(jù)處理中的應(yīng)用[J ].水土保持研究,2005 ,12(4).
2 姜長(zhǎng)元.Matlab 和 Word 的鏈接及應(yīng)用[J ].洛陽(yáng)師范學(xué)院學(xué)報(bào),2005(2).
3 王沫然.MATLAB 與科學(xué)計(jì)算(第二版)[M].北京:電子工業(yè)出版社,2004.
4 鄭阿奇.《MATLAB 實(shí)用教程》[M].電子工業(yè)出版社,2004.
5 曹 戈.《MATLAB 教程及實(shí)例》[M].機(jī)械工業(yè)出版社,2008.