唐旭東 周書敏 張鵬飛
(中國(guó)船舶及海洋工程設(shè)計(jì)研究院 上海 200011)
NAPA Designer是由芬蘭NAPA公司開發(fā)的全新一代船舶三維設(shè)計(jì)軟件,主要用于船舶和海洋工程總體和結(jié)構(gòu)設(shè)計(jì),與船級(jí)社專用軟件和其他通用軟件之間有較多接口,并逐漸融入其他功能且日臻完善。早期NAPA軟件的結(jié)構(gòu)模塊(NAPA Steel)基于Linux系統(tǒng)開發(fā),用戶通過(guò)宏命令進(jìn)行二次開發(fā)[1-2],界面和交互功能都相對(duì)較弱。新一代的NAPA Designer軟件基于Windows系統(tǒng)平臺(tái)開發(fā),提供了基于C#語(yǔ)言的二次開發(fā)接口。盡管目前公開的二次開發(fā)實(shí)例較少,但基于NAPA Designer軟件提供的大量二次開發(fā)接口以及C#語(yǔ)言簡(jiǎn)單、類型安全和面向?qū)ο蟮戎T多優(yōu)點(diǎn)[3],更具開發(fā)應(yīng)用前景。
鉆臺(tái)結(jié)構(gòu)是鉆井船或鉆井平臺(tái)中核心模塊(即鉆井模塊)的載體,是井架和眾多鉆井設(shè)備的支撐結(jié)構(gòu)[4]。鉆臺(tái)通常由鉆臺(tái)面和支腿結(jié)構(gòu)組成,鉆臺(tái)面布置井架、鉆機(jī)、轉(zhuǎn)盤、絞車、立根盒和司鉆房等鉆井設(shè)施,鉆臺(tái)面通過(guò)支腿與鉆井船或鉆井平臺(tái)的主體結(jié)構(gòu)連接。鉆臺(tái)結(jié)構(gòu)設(shè)計(jì)既要滿足作業(yè)功能的需求,又受到船體/平臺(tái)尺度和重量控制等因素的制約,在初步設(shè)計(jì)階段可能存在較多不確定因素,需要根據(jù)實(shí)際空間布置需求及結(jié)構(gòu)強(qiáng)度要求等作多種方案的對(duì)比優(yōu)化。
本文以某鉆井船的鉆臺(tái)結(jié)構(gòu)為研究對(duì)象,基于NAPA Designer軟件開發(fā)了鉆臺(tái)結(jié)構(gòu)的參數(shù)化設(shè)計(jì)模塊,可快速獲取多個(gè)鉆臺(tái)結(jié)構(gòu)方案,用于可視化展示、提取質(zhì)量重心以及三維有限元分析等工作。
參數(shù)化設(shè)計(jì)是將工程本身編寫為函數(shù)與過(guò)程,通過(guò)修改初始條件并經(jīng)計(jì)算機(jī)計(jì)算得到工程結(jié)果的設(shè)計(jì)過(guò)程。本文鉆臺(tái)參數(shù)化設(shè)計(jì)以鉆臺(tái)布置需求為基礎(chǔ),提取鉆臺(tái)面高度、主桁結(jié)構(gòu)位置和鉆臺(tái)支腿尺寸等為設(shè)計(jì)參數(shù),通過(guò)二次開發(fā)的界面進(jìn)行數(shù)據(jù)交互,輸出得到鉆臺(tái)結(jié)構(gòu)模型,并以質(zhì)量重心控制、規(guī)范強(qiáng)度要求等作為約束,形成設(shè)計(jì)方案供優(yōu)化選擇。
鉆臺(tái)參數(shù)化設(shè)計(jì)過(guò)程中,首先需對(duì)鉆臺(tái)的結(jié)構(gòu)特征進(jìn)行分析,提取出關(guān)鍵控制參數(shù)。鉆臺(tái)結(jié)構(gòu)通常由鉆臺(tái)面和支腿兩部分組成。鉆臺(tái)面以井架支撐底座、轉(zhuǎn)盤、鉆井絞車和其他重型設(shè)備底座為基礎(chǔ)布置主桁框架,再選擇合適的位置通過(guò)鉆臺(tái)支腿與主船體或平臺(tái)的主體結(jié)構(gòu)相連接[5]。鉆臺(tái)結(jié)構(gòu)的關(guān)鍵參數(shù)主要包含鉆臺(tái)面高度、邊界范圍、主桁結(jié)構(gòu)位置、支腿和支撐肘板尺寸,以及各構(gòu)件的板厚、材質(zhì)等,圖1是某鉆井船鉆臺(tái)結(jié)構(gòu)示意圖。
圖1 鉆臺(tái)結(jié)構(gòu)示意圖
其次,根據(jù)特征參數(shù)建立參考面和板元。在NAPA Designer軟件中,參考面一般是指沒(méi)有厚度的幾何面,基于參考面生成的可賦板厚、材質(zhì)等屬性的對(duì)象為面對(duì)象(或稱板元)。參考面是建立結(jié)構(gòu)板架的基礎(chǔ),既可作為板架的基礎(chǔ)面,也可作為板架的邊界,通過(guò)指定參考面和邊界對(duì)象生成板元。板元與參考面及邊界之間存在拓?fù)潢P(guān)系,通過(guò)修改后者的控制參數(shù)即可實(shí)現(xiàn)關(guān)聯(lián)板架的動(dòng)態(tài)更新。
隨后,將生成的板元添加到結(jié)構(gòu)樹中,即可對(duì)板元指定結(jié)構(gòu)類型、板厚、材質(zhì)、加強(qiáng)筋、開孔等特性,構(gòu)成一個(gè)完整的結(jié)構(gòu)板架。通過(guò)該步驟的重復(fù),將鉆臺(tái)面甲板、周界圍壁板、主桁結(jié)構(gòu)、支腿圍壁板和支腿支撐肘板等分別建立板元并添加到結(jié)構(gòu)樹中賦予屬性,完成整個(gè)鉆臺(tái)結(jié)構(gòu)初步模型。
最后,通過(guò)鉆臺(tái)模型提取質(zhì)量重心數(shù)據(jù)并判斷其是否滿足設(shè)計(jì)要求,且通過(guò)鉆臺(tái)與周圍設(shè)備干涉檢查,判斷布置空間是否滿足設(shè)計(jì)需求。此外,根據(jù)計(jì)算需求生成有限元網(wǎng)格模型,導(dǎo)入通用有限元軟件進(jìn)行強(qiáng)度分析,根據(jù)計(jì)算結(jié)果判斷強(qiáng)度是否滿足設(shè)計(jì)需求;根據(jù)設(shè)計(jì)要求對(duì)模型方案進(jìn)行反饋、修改與優(yōu)化,最終完善后的模型可用于材料明細(xì)統(tǒng)計(jì)、輔助出圖和進(jìn)一步細(xì)化分析計(jì)算等。
在NAPA Designer軟件中,從提取控制參數(shù)建立參考面,到由參考面建立板元并添加到結(jié)構(gòu)樹,再到添加屬性形成結(jié)構(gòu)板架,最后由各板架組成完整的鉆臺(tái)結(jié)構(gòu)模型。在這一系列過(guò)程中,各控制參數(shù)零散地分布在各類不同層次的構(gòu)件定義中,不便于識(shí)別和修改。因此,通過(guò)二次開發(fā)自定義交互界面,將各控制參數(shù)集中在一個(gè)界面,不僅顯示直觀,也便于管理和批量化操作。參數(shù)化設(shè)計(jì)流程見下頁(yè)圖2。
圖2 參數(shù)化設(shè)計(jì)流程
參數(shù)化設(shè)計(jì)實(shí)現(xiàn)過(guò)程主要包含開發(fā)自定義界面進(jìn)行數(shù)據(jù)交互,根據(jù)特征參數(shù)建立參考面,由參考面建立板元并添加到結(jié)構(gòu)樹,添加筋和開孔等特性后形成結(jié)構(gòu)板架,再由多個(gè)板架形成三維模型,最后進(jìn)行布置干涉檢查、質(zhì)量重心統(tǒng)計(jì)和有限元分析等。
NAPA Designer軟件提供了基于C#語(yǔ)言的二次開發(fā)接口NAPA Designer Scripting,通過(guò)NAPA對(duì)象模型讀寫NAPA數(shù)據(jù)庫(kù),并且提供可視化交互界面(包含對(duì)話框和圖形等)[6],為NAPA Designer用戶開發(fā)定制化的功能提供便捷。Scripting代碼通過(guò)NAPA Designer提供的“Script Editor”模塊編寫和調(diào)試,代碼框架通常由引用命名空間、主程序和用戶界面等部分組成(見圖3),其中引用命名空間為包含一系列命令的集合,例如:使用結(jié)構(gòu)建模相關(guān)命令需引用Napa.Core.Steel,使用對(duì)話框需引用Napa.Gui、System.ComponentModel等。
圖3 Scripting代碼一般框架
主程序是實(shí)現(xiàn)用戶需求的關(guān)鍵代碼,包括用戶界面顯示數(shù)據(jù)的初始化、數(shù)據(jù)讀寫處理、驅(qū)動(dòng)模型生成等,可由多個(gè)子程序構(gòu)成。用戶界面是基于對(duì)話框型式的可視化界面,主要用于參數(shù)化模型中關(guān)鍵控制參數(shù)的人機(jī)交互。
用戶界面基于對(duì)話框,由各類控件組成,在鉆臺(tái)參數(shù)化設(shè)計(jì)中,主要采用編輯框、選擇框等控件即可滿足常規(guī)信息的交互。定義控件的代碼主要包含類別(Category)、顯示名稱(DisplayName)、讀寫函數(shù)(get; set;)和其他附加屬性。通過(guò)Category實(shí)現(xiàn)控件的分組,DisplayName為控件顯示在界面的名稱,在讀寫函數(shù)中定義參數(shù)名稱和數(shù)據(jù)類型,參數(shù)名稱為代碼中引用的名稱,具有唯一性;數(shù)據(jù)類型可包含整型、雙精度型、字符串型和布爾型等,指定類型后,控件只能輸入相應(yīng)類型的數(shù)據(jù)。數(shù)據(jù)類型與功能見表1。
表1 數(shù)據(jù)類型與功能
以生成型材庫(kù)的選擇控件為例,可通過(guò)自定義函數(shù)(GetProfileAlternative)讀取模型中型材庫(kù)名稱并轉(zhuǎn)換為數(shù)組,動(dòng)態(tài)選擇(DynamicAlternatives)屬性使控件以列表框呈現(xiàn),列表內(nèi)容即為型材庫(kù)名稱數(shù)組中的內(nèi)容。主要代碼和實(shí)現(xiàn)效果如圖4所示。
圖4 控件實(shí)現(xiàn)示例
針對(duì)鉆臺(tái)參數(shù)化設(shè)計(jì)過(guò)程中不同類型的參數(shù)制定相應(yīng)的控件,將控件按區(qū)域進(jìn)行分組并形成用戶自定義界面,如圖5所示。
圖5 用戶自定義界面
建立參考面之前首先要?jiǎng)?chuàng)建NAPA坐標(biāo)系。坐標(biāo)系是參數(shù)化建模的基準(zhǔn),NAPA Designer軟件采用船舶坐標(biāo)系,即縱向軸(X)向艏、橫向軸(Y)向左、垂向軸(Z)向上為正,長(zhǎng)度單位為m。通過(guò)分段式定義肋骨間距、縱骨間距、強(qiáng)框間距和垂向骨材間距。在NAPA Designer軟件中,通常X向坐標(biāo)以#10、#10.5、#10+0.3等形式表達(dá),Y向坐標(biāo)以#L10、#L-10等形式表達(dá),Z向坐標(biāo)以#V10、#V10+0.1等形式表達(dá),各向坐標(biāo)也可通過(guò)絕對(duì)值進(jìn)行定義,具體根據(jù)用戶使用習(xí)慣確定。
NAPA Designer軟件中的參考面主要有平面、折角面和曲面等類型,其中平面主要用于甲板、艙壁等結(jié)構(gòu)的參考面,折角面主要用于階梯型平臺(tái)、有折角的內(nèi)殼艙壁等結(jié)構(gòu)的參考面,曲面主要用于外板、圓柱體和流線形上建外圍壁等結(jié)構(gòu)的參考面。在鉆臺(tái)參數(shù)化設(shè)計(jì)中,參考面主要是平面,由位置和法線方向2個(gè)參數(shù)確定,實(shí)際涉及的參考面較多,但定義方法一致,本文僅列出其中一部分,見表2。
表2 參考面輸入?yún)?shù)
以鉆臺(tái)甲板1為例,參考面名稱為 S.DFDK1,法線方向?yàn)閆方向,位置為28.0 m,定義參考面的語(yǔ)句為:
參考面的法線方向一般確定后無(wú)需變化,因此只需關(guān)注具體位置。程序首先判斷模型數(shù)據(jù)庫(kù)中是否存在名稱為“S.DFDK1”的參考面,若存在則提取其定義語(yǔ)句并解析出數(shù)值28.0,否則就采用預(yù)設(shè)值顯示在用戶界面對(duì)應(yīng)的控件中。用戶修改該值后,生成新的定義語(yǔ)句(strDefString),調(diào)用Geometry.RunDefinition(strDefString),即可完成相應(yīng)參考面的創(chuàng)建或更新。其主要代碼見下頁(yè)圖6。
圖6 創(chuàng)建或更新參考面的主要代碼
作為結(jié)構(gòu)板架的最小組成單元,板元基于參考面,并以其他參考面、坐標(biāo)值或參數(shù)化曲線為邊界而創(chuàng)建(見圖7):甲板、艙壁大平面板等具有封閉邊界的板元以參考面為邊界;大肘板、桁材等存在自由邊的板元通過(guò)參考面+參數(shù)化曲線創(chuàng)建。NAPA Designer軟件的參數(shù)化曲線(parametric curve,PCUR),可用于構(gòu)建板元的自由邊邊界、面內(nèi)開孔等。
圖7 典型板元
通過(guò)代碼創(chuàng)建和修改板元的實(shí)現(xiàn)過(guò)程與更新參考面的過(guò)程類似,不同的是需將板元加入結(jié)構(gòu)樹中。結(jié)構(gòu)樹是組織和管理整個(gè)結(jié)構(gòu)模型的集合,只有加入結(jié)構(gòu)樹中的對(duì)象,才能賦予其板厚、材質(zhì)、加強(qiáng)筋等特性。結(jié)構(gòu)樹中添加和刪除對(duì)象的操作主要通過(guò)IHierarchicalArrangement接口實(shí)現(xiàn),見圖8。修改自定義界面中的控制參數(shù),即可控制加入結(jié)構(gòu)模型中的板元對(duì)象,實(shí)現(xiàn)參數(shù)化控制的目的。
圖8 結(jié)構(gòu)樹添加對(duì)象主要代碼
板元加入結(jié)構(gòu)樹后,可賦予其材質(zhì)、加強(qiáng)筋、板厚和開孔等特性,即成為1個(gè)板架結(jié)構(gòu)。二次開發(fā)中創(chuàng)建各類屬性涉及的主要接口/方法見表3。
表3 創(chuàng)建屬性涉及的主要接口/方法
以創(chuàng)建加強(qiáng)筋為例,根據(jù)用戶設(shè)定的位置批量化創(chuàng)建板元上的加強(qiáng)筋,通過(guò)代碼語(yǔ)言判斷避開艙壁和主桁位置,以避免構(gòu)件重合。首先讀取用戶界面的設(shè)定參數(shù),通過(guò)代碼將其解析為數(shù)組,存儲(chǔ)需要?jiǎng)?chuàng)建筋的坐標(biāo)位置;隨后根據(jù)數(shù)組內(nèi)的各項(xiàng)數(shù)據(jù)創(chuàng)建加強(qiáng)筋的軌跡線,并設(shè)定筋的類型、尺寸、朝向、材質(zhì)、端部邊界和端切形式等參數(shù);最后通過(guò)IEditableStiffener接口創(chuàng)建加強(qiáng)筋Stiffeners,并賦予目標(biāo)板元,見下頁(yè)圖9。
圖9 創(chuàng)建加強(qiáng)筋主要代碼
在NAPA Designer軟件中結(jié)構(gòu)板架上的板厚、材質(zhì)、加強(qiáng)筋和開孔等屬性也可通過(guò)共享方式賦予其他對(duì)象,見下頁(yè)圖10。將肘板A上的加強(qiáng)筋復(fù)制到肘板B和肘板C,若修改肘板A上加強(qiáng)筋,其余肘板的屬性則隨之更新。
在鉆臺(tái)結(jié)構(gòu)中,有較多相似結(jié)構(gòu),通過(guò)代碼moSrc.ShareSteelDefinitions(moDesArray),將源結(jié)構(gòu)moSrc的屬性復(fù)制到一組目標(biāo)結(jié)構(gòu)moDesArray中,實(shí)現(xiàn)屬性的快速設(shè)置,并具有關(guān)聯(lián)性,主要代碼見圖11。此外,也可通過(guò)設(shè)置取消構(gòu)件屬性的關(guān)聯(lián)性,對(duì)各板元結(jié)構(gòu)分別單獨(dú)修改。
圖11 屬性共享主要代碼
生成參數(shù)化模型后,可分別對(duì)布置空間、質(zhì)量重心進(jìn)行驗(yàn)證。若滿足設(shè)計(jì)需求,則導(dǎo)出有限元模型對(duì)結(jié)構(gòu)強(qiáng)度進(jìn)行評(píng)估,判斷是否符合規(guī)范[7]要求;若不滿足,則需調(diào)整參數(shù),對(duì)模型進(jìn)行修改。通過(guò)參數(shù)化設(shè)計(jì),可快速制定多種方案進(jìn)行比較,并結(jié)合設(shè)計(jì)需求進(jìn)行優(yōu)化。
對(duì)于布置空間的干涉檢查,NAPA Designer軟件可導(dǎo)入設(shè)備的三維模型,用戶可在三維空間內(nèi)更直觀地判斷結(jié)構(gòu)模型是否與設(shè)備存在干涉,以及設(shè)備周圍是否有足夠的安裝和維護(hù)空間。鉆臺(tái)結(jié)構(gòu)與防噴器轉(zhuǎn)運(yùn)設(shè)備之間的模型干涉檢查參見圖12。
圖12 模型干涉檢查
質(zhì)量重心通過(guò)IHierarchicalArrangement接口遍歷鉆臺(tái)所在結(jié)構(gòu)樹節(jié)點(diǎn)下的所有對(duì)象,分別提取板、加強(qiáng)筋和肘板等的質(zhì)量、材質(zhì)和重心位置,導(dǎo)出csv格式文件并利用Excel軟件進(jìn)行材料明細(xì)統(tǒng)計(jì),同時(shí)將匯總的質(zhì)量、重心以提示框形式展示(見圖13),以便判斷方案是否滿足質(zhì)量重心的控制要求。
圖13 材料明細(xì)及質(zhì)量重心匯總
結(jié)構(gòu)強(qiáng)度評(píng)估需結(jié)合其他有限元分析軟件。NAPA Designer軟件提供了有限元網(wǎng)格(finite element meshing, FEM)劃分模塊,通過(guò)簡(jiǎn)單設(shè)置即可快速生成較高質(zhì)量的有限元網(wǎng)格模型,還可根據(jù)需要對(duì)局部網(wǎng)格進(jìn)行細(xì)化[8],再導(dǎo)入有限元分析軟件進(jìn)行計(jì)算。
通過(guò)用戶界面對(duì)鉆臺(tái)箱體高度、鉆臺(tái)支腿高度、支腿寬度以及是否增加鉆臺(tái)支腿肘板等參數(shù)的調(diào)節(jié),快速生成4種方案模型并提取相應(yīng)的質(zhì)量重心,見圖14。
圖14 各方案模型及質(zhì)量重心對(duì)比
利用NAPA Designer軟件的有限元網(wǎng)格劃分模塊,將各設(shè)計(jì)方案模型快速轉(zhuǎn)化成三維有限元模型,進(jìn)行結(jié)構(gòu)強(qiáng)度分析,得到初步的強(qiáng)度計(jì)算結(jié)果供設(shè)計(jì)比較和優(yōu)化。各設(shè)計(jì)方案對(duì)比見下頁(yè)圖15和圖16。
圖15 各方案變形對(duì)比
圖16 各方案應(yīng)力水平對(duì)比
此外,還可根據(jù)設(shè)計(jì)需求對(duì)鉆臺(tái)面邊界范圍、骨材間距、支腿肘板尺寸等各種參數(shù)進(jìn)行修改,通過(guò)更多組合方案的比較,篩選出最優(yōu)方案。
NAPA Designer本身是基于參數(shù)化設(shè)計(jì)理念的船體結(jié)構(gòu)三維設(shè)計(jì)軟件,界面簡(jiǎn)潔、操作簡(jiǎn)單。在此平臺(tái)上通過(guò)二次開發(fā),定制生成更具針對(duì)性和實(shí)用性的用戶界面,并將可標(biāo)準(zhǔn)化、系列化的結(jié)構(gòu)通過(guò)特征化參數(shù)進(jìn)行表達(dá),可快速進(jìn)行結(jié)構(gòu)設(shè)計(jì)方案的制定和設(shè)計(jì)模型的三維展示。通過(guò)對(duì)比各設(shè)計(jì)方案反饋的信息(質(zhì)量、強(qiáng)度等),有助于建?;蚓幊探?jīng)驗(yàn)較少的設(shè)計(jì)人員快速優(yōu)化并確定方案,減少設(shè)計(jì)反復(fù)性,縮短設(shè)計(jì)周期,顯著提高設(shè)計(jì)效率。
本文以鉆臺(tái)為研究對(duì)象,對(duì)NAPA Designer軟件參數(shù)化建模和二次開發(fā)進(jìn)行探索,實(shí)現(xiàn)了通過(guò)自定義界面進(jìn)行數(shù)據(jù)交互并驅(qū)動(dòng)鉆臺(tái)參數(shù)化模型的創(chuàng)建、更新和質(zhì)量重心統(tǒng)計(jì)等功能,同時(shí)借助其網(wǎng)格劃分模塊輸出有限元模型用于結(jié)構(gòu)計(jì)算。
本文僅對(duì)設(shè)計(jì)結(jié)果進(jìn)行了結(jié)構(gòu)強(qiáng)度分析,在此基礎(chǔ)上,還可通過(guò)納入更多設(shè)計(jì)參數(shù),完善結(jié)構(gòu)細(xì)節(jié),可進(jìn)一步將該軟件功能拓展到振動(dòng)分析和疲勞分析等方面。此外,基于NAPA Designer軟件的參數(shù)化設(shè)計(jì),也可推廣應(yīng)用于船舶與海洋工程中較規(guī)則但需根據(jù)不同設(shè)計(jì)輸入經(jīng)常變化尺度的相關(guān)結(jié)構(gòu)設(shè)計(jì)中,以提高設(shè)計(jì)效率。