王 帥
(北京航空航天大學 機械工程及自動化學院,北京 100191)
常用的六面體網格生成方法有映射法[1]、掃掠法[2]、四面體轉換法[3]、基于柵格法[4]、波前推進法[5]等。對于結構復雜的模型,單獨使用上述幾種方法都無法獲得整體質量較好的六面體網格。近年來基于實體變形技術的六面體網格生成方法成為研究熱點,但這種方法需要先對多方體模型進行網格劃分,再將整套網格映射回原始模型,如此一來需要生成兩套網格數據,降低了網格的生成效率。
針對這一問題,本文提出一種利用節點填充的方式直接在原始模型中生成結構化六面體網格的方法:利用實體變形技術得到多方體模型后,不對變形多方體做實際剖分,僅通過線性規劃得到各頂點的網格信息,利用頂點信息,直接在原始模型中經過邊節點填充、面節點填充、體節點填充生成結構化六面體網格。
Y.Su[6]利用實體變形技術將原始模型變換為各邊與坐標系平行的識別模型(多方體模型,polycube),用柵格法對識別模型劃分六面體網格,然后將識別模型網格映射回原始模型,過程如圖1所示。這種方法可以生成質量較高的結構化網格,避免了體分解,對拓撲結構為類多方體的復雜結構有良好的剖分效果。但這種方法需要先對多方體模型進行網格劃分,再將整套網格映射回原始模型,如此一來需要生成兩套網格數據,降低了網格的生成效率。
對于結構復雜的模型,很難得到原始模型頂點的網格坐標;經過實體變形后的多方體模型,利用基于線性規劃的子映射法[7],可以較容易求得多方體模型各頂點的網格坐標(i,j,k);映射回原始模型,即可得到原始模型各頂點的網格信息,即實際坐標值與網格坐標值的對應關系。

圖1 基于實體變形的網格生成技術
本文利用模型頂點的網格坐標信息,通過邊節點填充、面節點填充、體節點填充的方式,直接在原始模型中生成各網格節點,過程如圖2所示。具體步驟如下:
(1)邊節點填充:在原始模型的每條邊上,利用頂點的網格坐標值得到該邊的節點個數,在該邊按等弧長創建節點,完成邊節點填充。
(2)面節點填充:在原始模型的每張面上,得到面內未知節點的網格坐標值,利用8節點等參元模型對所有面內未知節點構建線性方程組,求解方程組即可得到面內各節點的實際坐標值,完成面節點填充。
(3)體節點填充:根據所有已知的面節點,得到體內未知節點的網格坐標值,利用20節點等參元模型對所有體內未知節點構建線性方程組,求解方程組即可得到體內節點的實際坐標值,完成體節點填充。

圖2 節點填充法生成六面體網格的過程
2.1.1 二維節點數據結構
在二維面節點填充算法實現過程中,每個二維節點包含的數據為 P(i,j)=(x,y,flag,edgeTag)。其中,(i,j)為二維節點的網格坐標,x,y為二維節點的實際坐標,flag為該節點與形成該面的多邊形的位置關系(-1:該節點不在多邊形內;0:該節點為多邊形邊界點;1:該節點在多邊形內),edgeTag為該節點所屬邊的編號。
圖3為二維網格節點示意圖。

圖3 二維網格節點示意圖
在填充邊節點時,將各節點所在邊的編號存入P(i,j)→edgeTag中(記為edgeTag(i,j),下同),并將該節點的flag值改為0(flag(i,j)=0),表示該節點為邊界節點。判斷面內節點,將其flag值改為1。
2.1.2 三維節點數據結構
與二維節點類似,每個三維節點包含的數據為P(i,j,k)=(x,y,z,flag,faceTag)。其中,(i,j,k)為三維節點的網格坐標,x,y,z為三維節點的實際坐標,flag為該節點與模型的位置關系(-1:該節點在模型體外,0:該節點為模型面上的點,1:該節點為體內點),faceTag為該節點所屬面的面編號(若該節點非模型面上點,其值為-1)。
在填充面節點時,將各節點所在面的編號存入P(i,j,k)→faceTag中(記為faceTag(i,j,k),下同),并將該節點的flag值改為0(flag(i,j,k)=0),表示該節點為面節點。判斷體內節點,將其flag值改為1。
圖4為三維網格節點示意圖。

圖4 三維網格節點示意圖
在獲得所有邊界節點的實際坐標以及內部節點的網格坐標后,可以利用等參元模型對每一個內部節點列出實際坐標方程,組成線性方程組,求解此方程組即可得到所有內部點的實際坐標值。
對于二維面網格,本文利用如圖5所示的8節點等參元模型構建坐標方程。為表示中間插值點的實際坐標,可利用8個節點和其對應的二次形函數組成8節點的等參元,推導出相應的坐標方程為:

對于結構化網格,當該面所有邊界節點的坐標值已知時,對平面內每一個面內待求節點列出以上坐標方程,可以得到兩組線性方程組,求解線性方程組即可得到面內各個網格節點的實際坐標(x(i,j),y(i,j))。對于空間參數化曲面,可先在參數平面內利用該方法求得各節點的參數坐標,再通過參數轉換得到相應的實際坐標值。
對于三維體節點,本文利用如圖6所示的20節點等參元模型,得到每一個體內節點坐標方程為:


圖5 8節點等參元模型
對于結構化網格,當該實體所有面節點已知時,對每一個體內待求節點列出上述的坐標方程,可以得到三組線性方程組,求解線性方程組即可得到體內各個網格節點的實際坐標(x(i,j),y(i,j),z(i,j))。

圖6 20節點等參元模型
根據以上方法,本文以UG NX 3.0為開發平臺,利用UG/Open API開發了六面體網格自動剖分模塊,對渦輪葉片實體模型的部分結構進行了網格自動剖分,剖分結果如圖7所示。
本文提出一種基于多方體變形技術的結構化六面體網格生成方法:利用實體變形技術得到多方體模型后,不對變形多方體做實際剖分,僅通過線性規劃得到各頂點的網格信息,利用頂點信息,直接在原始模型中經過節點填充生成結構化六面體網格。該方法在保證較高網格質量的前提下,提高了網格生成效率。利用本文方法開發了六面體網格自動生成程序,可以得到整體質量較好的六面體網格。

圖7 渦輪葉片肋區網格劃分結果
[1] 王東風,翟建軍,陳文亮.基于映射法的六面體網格生成算法[J].中國制造業信息化,2009,3(5):25-27.
[2] 翟建軍,喬新宇,丁秋林.基于掃掠法的六面體網格生成算法及實現[J].南京航空航天大學學報,2007,39(1):71-74.
[3] Gregson J,Sheffer A,Zhang E.All-hex mesh generation via volumetric polycube deformation[G]//Eurographics Symposium on Geometry Processing 2011. USA:Blackwell Publishing,2011:1407-1416.
[4] 黃麗麗,趙國群,馬新武,等.柵格法三維六面體網格自動生成算法與優化[J].塑性工程學報,2009,16(3):187-191.
[5] 俞建威,沈軍,盧百平,等.一種新的六面體有限元網格算法[J].計算機工程與設計,2003,24(9):22-25.
[6] Su Y,Lee K H ,Kumar , u.Automatic hexahedral mesh generation using a new grid-based method with geometry and mesh transformation [J]. Computer Methods in Applied Mechanics and Engineering,2005,194:4071-4096.
[7] Ruiz-Girones E,Sarrate J.Generation of structured hexahedral meshes in volumes with holes[J].Finite Elements in Analysis and Design,2010,46:792-804.