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