張志康,劉 戈,陳樂昆,李 闖,張思航,孫明宇
(1.中國船舶及海洋工程設計研究院,上海 200011;2.中國船舶集團有限公司系統工程研究院,北京 100000)
有限元分析是船舶結構設計中非常重要的校核方法,一般包括艙段有限元分析和全船有限元分析。在強度分析時,艙室內部水壓力載荷的施加和構件腐蝕扣除的確定均與艙室相關,因此艙室定義是必不可少的環節。
手動搜索艙室空間的邊界單元,不僅費時費力,效率低下,而且還容易出錯。尤其是近年來《散貨船和油船共同結構規范》(HCSR)生效后,規范對散貨船和油船的艙段校核范圍要求由中間貨艙擴展到全船各貨艙[1],不僅工作量加重,而且船首和船尾區域的線型變化劇烈,給艙室定義增加了難度。此外,對于集裝箱船、客滾船和豪華郵輪等需進行全船有限元計算的船型,每條船需定義的各類大小艙室多達上百個,非常考驗設計人員的體力與耐心。因此,急需實用、高效和智能的艙室自動識別算法和程序,以期能夠縮短操作時間,提升設計人員的效率。
針對此類艙室空間邊界自動識別的問題,國內外學者也進行了不少研究。單威俊等[2~4]基于有限元模型,提出“切分拼接法”實現艙室邊界單元的識別,并基于Patran 開發自動化程序,該程序已經納入CCS 的HSCR 規范校核軟件體系中,但識別過程仍需用戶人為干預,且對船首、船尾等曲面較復雜的區域,識別精度還有待提高。章志兵等[5]提出一種基于CAD 模型的艙室識別算法,并在NX 平臺上以C++語言編程實現,算法自動化與智能化程度高,有助于艙室快速建模。章志兵等[6]通過設計網格拓撲關系和分析艙室的幾何特征,基于半邊半面結構,提出了半面封閉空間概念,并利用半面擴展算法,實現了CAE 模型艙室的自動識別,但僅限于封閉艙室,且算法相對復雜。此外,法國船級社的商業軟件Veristar Hull 可以對有限元網格進行艙室搜索,但僅限于水密艙室,內在算法也不得而知。
本文基于拓撲學原理和船舶艙室特征,提出一種基于CAE 的船舶艙室識別算法“無自由邊法”,該算法適用于多種船型及任意復雜的艙室,且改進算法可適用于非封閉艙室。在此基礎上開發出自動化程序,經過實船測試驗證,能夠大幅提高艙室定義效率,具有工程應用價值。
船舶艙室最典型的特點為大多是水密艙室,因此本研究以該特點為突破點,從識別有限元三維封閉空間入手,提出一種“無自由邊法”以實現船舶水密艙室的識別,并針對非水密艙室對算法進行改進與優化,以提高算法的適用性。
首先,根據某艙室的空間位置搜索該范圍內的所有單元(Elem),統計這些單元的邊(Edge)及其數量,其中數量等于1 的一定是自由邊(Free edge)。根據該原則篩選出所有自由邊,然后將其所屬單元剔除出集合,接著重新統計邊與數量,以此不斷循環往復,直到沒有自由邊。最終,剩下的單元便形成封閉的三維空間,組成船舶艙室的搜索目標邊界。
現有研究的搜索方法大多屬于“加法”,而本文提出的算法則采用的是“減法”思想。
艙室識別的流程如圖1 所示。

圖1 艙室識別流程Fig.1 Recognition process of ship compartment
步驟1根據船舶艙室邊界的定義,獲取該長方體空間內的所有單元Elem 和及其Edge 元素。
步驟2建立有限元模型的拓撲關系,并創建單元和邊的數據結構儲存拓撲關系。
步驟3尋找唯一存在的Edge;若不存在,則結束。
步驟4識別該Edge 所屬的單元,將其從表示封閉空間的單元數組中剔除,并更新邊的數據儲存Hash 表。
步驟5將結果作為新的輸入,回到步驟3,遞歸執行艙室識別過程。
船舶艙室是由一組單元組成的封閉空間區域,各個單元之間由單元邊相互聯系。為實現本文的算法,需建立的拓撲關系:單元與邊的組合關系,邊與邊的重合關系。
將單元邊定義為從起點Start node 指向終點End node 的有向邊(Start node,End node),其中起點的編號一定比終點的編號小。
如圖2 所示,單元Elem_1 包含有向邊(1,2),(2,3),(3,4)和(1,4);單元Elem_2 包含有向邊(3,4),(4,6),(3,5)和(5,6)。它們存在共同邊(3,4),該邊的數量為2,其余均為1。

圖2 拓撲關系示意Fig.2 Topological relation
將Elem 和其包含的有向邊儲存在二維數組中。另外以有向邊的名稱作為Key,數量作為Value,使用Hash 表進行儲存。
“無自由邊法”算法用于搜索三維模型中由單元構成的封閉空間。
首先,確定搜索范圍。艙室定義數據包括了艙室名稱和x,y和z方向的范圍值。因此,對于單個艙室的搜索范圍{Elem_i},它包含的單元坐標應滿足式(1)~式(3)。
建立該范圍內的拓撲關系,創建包含Elem 和有向邊的二維數組,及儲存有向邊和數量的Hash 表。
查詢Hash 表中Value 等于1 的Key,則該有向邊即為自由邊。通過二維數組獲得該自由邊所屬的Elem,一方面將其從{Elem_i}內剔除,另一方面記錄它包含的其他有向邊,再次查詢Hash 表,各有向邊對應的Value 減一。
把更新后的二維數組和Hash 表作為新的輸入,進行遞歸運算,直至無法找到自由邊,則{Elem_i}內包含的單元即為該艙室的邊界。運行過程如圖3 所示。

圖3 “無自由邊法”示意Fig.3 No free edge algorithm
“無自由邊法”本質是搜索有限元網格中的封閉空間。為了擴大算法的適用性,滿足工程實際應用的需求,針對非封閉空間的識別問題,對本文的算法進行改進和優化。
在實際的艙室定義過程中,常常碰到有限元模型中水密艙室邊界有小孔、不封閉的情況,此時類似的艙室搜索算法都會失效,而手動去尋找缺失的單元和修補也會非常耗時。
導致此問題的原因有2 種:一種是由于建模人員在建模過程中的粗心,不小心遺漏了一些網格單元;另一種是考慮了水密艙室上的人孔。
針對有限元模型中水密艙室邊界上缺失多個且“獨立”單元的情況,對本文提出的算法進行優化。大致的原理:不以有向邊的數量來判斷是否為自由邊,而是以單元節點Node 的數量作為依據,即搜索范圍內Node 數量≤2 的,其所屬有向邊即為自由邊。
基于該改進算法,便可準確識別此類帶小孔的艙室。
對于散貨船和集裝箱船這類船型,貨艙均帶有大開口,對此現有的艙室搜索算法均不適用。
文獻[5]中提出手動創建艙口蓋進行封口的預處理方法,雖然能將此類大開口艙室轉換為“封閉艙室”,但考慮到貨艙的數量較多,因此處理起來還是過于繁瑣。
本文借鑒此預處理的思想,提出給此類貨艙加一個虛擬“貨艙蓋”的改進算法。具體實現方法:在自由邊的判斷過程中,若有向邊的2 個節點都在“貨艙蓋”的高度方向上,則該有向邊必定不是自由邊。該改進算法可由程序自動實現,避免了人工預處理的工作,有利于提高艙室識別效率。
FEMAP 是一款先進的有限元分析軟件,提供完全開放的二次開發接口,支持各種通用語言,非常適用于CAE 的二次開發[7]?;谠撥浖?,采用VB.NET 語言和WinForm 客戶端開發技術,實現本文提出的艙室識別算法。
對某15000TEU 集裝箱船實船項目的全船有限元模型進行測試。全船有限元模型如圖4 所示,共計約62 萬個單元,需定義的艙室總計110 個。

圖4 測試集裝箱船全船有限元模型Fig.4 Test global ship FEM of container vessel
測試計算機的CPU 為Intel Xeon E5-2 643 3.4 GHz,內存容量為64 GB,操作系統為Windows 7(64 位)。
利用Napa 軟件輸出總體專業的船舶艙室數據,并按照特定格式寫入Excel 文件,將其作為艙室必要數據的輸入文件。
導入成功后,一鍵運行程序即可快速、自動、準確地識別出絕大多數艙室,如首/尾尖艙、底/邊壓載水艙、LNG 燃料艙等封閉艙室和集裝箱貨艙,如圖5 所示。

圖5 水密艙室邊界Fig.5 Watertight compartment boundary
此外,對于機艙等個別非封閉艙室,需先采用手動填補開孔的方法進行預處理,然后再進行艙室邊界自動搜索。機艙搜索結果如圖6 所示。

圖6 機艙邊界Fig.6 Engine room boundary
經多次測試,完成上述110 個艙室一鍵自動識別共需106 s,平均一個艙室耗時約1.0 s。經檢查,結果無需修改的識別正確率約為90%,剩余的限于艙室特點和有限元模型質量,還需手動處理,耗時約半小時??傮w而言,該程序識別率較高,所需時間較少,具有較強的工程應用價值。
測試結果表明,對于具有不規則、復雜形狀的艙室,本文的算法能很好地實現邊界搜索。
結合實際設計和科研的需求,針對船舶有限元艙室自動識別問題進行研究,主要結論如下:
1)提出的全新船舶有限元艙室識別算法“無自由邊法”,可實現艙室空間的快速智能識別,編寫程序對其有效性進行了驗證;
2)該算法本質是解決有限元三維封閉空間的識別問題,可拓展應用到類似的科研和開發項目中;
3)通過實例驗證,該算法實用可靠,除了水密艙室,對具有大開口或小開孔的非水密艙室也適用。程序操作簡單,交互界面友好,可大幅提高設計人員的工作效率。