鄭燕娟 李庚袁
【摘 要】為了解決HYPERMESH前處理軟件無法實現六面體網格局部加密的問題,利用Tcl/tk語言開發了六面體網格局部加密插件,在HYPERMESH中實現了六面體網格的局部加密功能,擴充了HYPERMESH的六面體網格劃分功能。實例結果表明,該插件可自動對選擇的六面體網格進行加密,極大地提高了HYPERMESH軟件六面體網格的劃分效率和質量。
【關鍵詞】局部加密;HYPERMESH;Tcl/tk;六面體網格
【中圖分類號】TP391.72 【文獻標識碼】A 【文章編號】1674-0688(2018)03-0083-04
0 引言
在有限元分析中,同一個模型以同樣大小的單元尺寸劃分,六面體網格數要比四面體網格數少得多,加上六面體網格在計算精度、劃分網格數量及抗畸變程度等方面比四面體網格具有明顯的優勢[1-2],因此六面體網格是有限元分析的首選網格。
在點接觸、裂紋等有限元分析中,需要分析的區域往往占整個模型的很小一部分,而為了得到較準確的結果,常常需要在應力集中的地方劃分較小的網格尺寸,但如果全部模型都用較小的網格尺寸,特別是在整體模型較大的情況下,會使模型單元總數很多,需要較多的計算資源,甚至超過計算機所能承受的范圍。通常的做法是在應力集中的區域使用較小的網格,其他區域使用較大網格,在它們之間用過渡單元來連接,保證網格之間的連續性。國內外許多學者致力于六面體網格過渡算法的研究[4-6],并開發了相應軟件實現六面體網格的劃分及自動過渡加密,但由于是獨立的軟件,開發工作量巨大,所以普通個人或單位難以完成。
HYPERMESH是一款劃分六面體網格分功能十分出色的商用軟件[3],能夠滿足大多數網格的劃分,但尚不能在網格尺寸相差較大的六面體網格之間自動劃分六面體過渡網格。Ito等人提出的六面體網格加密算法,單元質量高,過渡單元少。本文以Ito等人提出的加密算法為基礎,在HYPERMESH環境中通過Tcl/tk語言實現六面體網格的自動過渡加密,充分利用HYPERMESH軟件劃分六面體網格的優勢,同時降低開發難度。
1 過渡網格加密算法
在網格劃分中,很多情況下都是要對一段連續的區域進行細化,如模擬圓球壓平板的接觸分析中,應力集中的區域占整個模型的很小一部分,常常要在接觸點附近區域細化網格,以保證整體有限元模型不會太大,并得到較準確的模擬結果(如圖1所示)。
上述有限元模型中,與細化區域網格相鄰的網格單元有共點、共邊、共面3種情況(如圖2所示)。
此時只需要用到Ito等人提出的加密算法模板中的邊加密、面加密,加上對加密單元進行全加密即可,共點情況不需要處理,加密模板如圖3所示,A、B、C、D、E、F、G、H是原網格單元的8個頂點,字母加黑表示加密點。根據每個網格含有的黑點個數來判斷該網格應使用哪種對應的加密方式(見表1)。
2 程序設計
2.1 HYPERMESH二次開發介紹
HYPERMESH的前處理功能十分強大,提供了功能豐富的二次開發接口[7]。按開發程度可分為宏命令、Tcl/tk腳本、process manager流程3個等級。鑒于本文僅開發六面體網格過渡加密功能,使用特定模板即可對六面體網格進行加密,只需要用到邏輯判斷和條件控制,故利用Tcl/tk腳本及HYPERMESH軟件自帶的函數來完成開發,即通過HYPERMESH的API函數及Hm命令可以實現所需的功能。關于API函數及Hm命令的功能和用法,讀者可以在HYPERMESH的幫助文檔中找到詳細的說明[8-9]。本開發程序中主要用到的API函數或Hm命令見表2。
2.2 程序流程
首先,根據用戶需求,用戶單擊命令按鈕后,程序彈出選擇網格單元的面板,提示用戶選擇需要加密網格單元。其次,用戶選擇需要加密的網格單元后,程序提取加密網格單元及其節點編號,檢測過渡層和加密網格單元中含有加密節點的個數N,考慮到網格加密模板只能對六面體網格進行加密,對所檢查的網格網格類型進行判斷,若是六面體網格,則根據單元所含有的加密節點個數N使用表1對應的加密模板進行加密,若不是六面體網格,則返回提示用戶重新選擇六面體網格進行加密(如圖4所示)。
2.3 實現功能步驟
(1)創建六面體網格加密命令按鈕。在HYPERMESH軟件中,專門預留了用戶自定義的按鈕面板文件userpage.mac,位于軟件啟動目錄或者安裝目錄路徑下,在該文件中添加*createbutton函數便可創建一個快捷按鈕,實現與HYPERMESH無縫結合。圖5為HexRemesh27命令按鈕。創建代碼如下:
*createbutton(5,”HexRemesh27”,6,1,20,YELLOW,”Remesh the elements”,”EvalTcl”,”HexRemesh27.tcl”)
該代碼目的為在第5頁面第6行第1列創建一個寬度為20、名稱叫HexRemesh27的按鈕,用戶點擊該按鈕后執行HexRemesh27.tcl程序。
(2)為用戶提供選擇加密網格單元的面板。通過*createmarkpanel函數實現用戶點擊加密命令后提供選擇加密單元的面板。實現代碼如下:
*createmarkpanel elems 1 “Select elements:”
(3)提取加密網格單元中的節點號。HYPERMESH會把用戶選擇的網格單元放在名字為mark的集合1中,通過利用hm_getmark命令可提取出單元號,再結合foreach函數和hm_nodelist命令可以方便地循環提取各個單元的節點號[10]。
(4)檢測各網格單元中所包含的加密節點數。一般情況下,要加密的網格單元只占總模型的一小部分,如果程序對模型中所有的網格單元都逐一檢測,程序的運行時間會很長。考慮到過渡處的網格最多需要加密單元外的一層,故可以只檢測需要加密的網格單元及其外一層的網格單元即可,特別是總模型很大的時候,這樣可以減少程序的運行時間,提高程序的運行效率。同樣,利用foreach函數和hm_nodelist命令進行循環檢測各個網格單元的加密點數。
(5)加密六面體網格單元。根據六面體網格單元中所含的加密節點數,使用對應的六面體網格加密模板加密網格單元。從圖3中可看出,加密模板有以下特點:全加密模板就是把一個六面體網格分為27個一樣大小的六面體網格單元,邊加密模板和面加密模板以這27個小六面體網格單元的節點為基礎節點連接生產過渡網格單元。這27個小六面體網格單元的頂點是以原六面體網格加密單元的8個節點為基礎生成的,故要先確定加密網格單元的8個節點與模板中的8個節點相對應,才能進行加密,這也是程序的關鍵步驟。
通過HYPERMESH的API函數或Hm命令是可以獲取單元節點的坐標的,但在不知道加密單元空間位置和六面體單元形狀不理想的時候,要確定待加密六面體網格的8個節點與加密模板六面體網格的8個節點對應起來則是困難的。
首先,我們可以通過*findfaces命令生成六面體單元的6個面單元來輔助判斷,以邊加密模板為例說明。?譹?訛確定節點AB。AB兩點是容易確定的,觀察模板可以發現,A和B位置是可以調換的,只需找出加密單元的加密點,一點標記為A,另一點標記為B即可。?譺?訛確定節點CDEF。確定AB節點后,EF和DC的位置也是可以調換的。找出含有AB 2個節點的2個面單元(命名為1、2號面單元),先對1號面單元分析,AB節點知道了,另外2點以MN字母表示,通過hm_getangle命令獲取∠BAM和∠BAN的角度來判斷,大者是∠BAD,小者是∠BAC,CD節點即可找到。對于另一個含AB的面單元,同樣判斷即可找到EF節點。?譻?訛確定節點GH。在包含BCF節點的面單元的第4個節點就是G,剩下一個就是H點。
至此,待加密六面體網格單元的8個節點與加密模板六面體網格的8個節點一一對應,通過*createnodesbetweennodes命令在A、B、C、D、E、F、G、H 8個節點之間創建所需節點,再通過*createelement命令連接相應節點即可創建出邊加密的過渡單元。
其次,再來看面加密模板確認的步驟:生成待加密六面體網格單元的6個面單元;找出含有4個加密點的面單元;在確認有4個加密點的面單元中找出邊長最短的邊,作為AB;接下來,按照邊加密的步驟即可找出C、D、E、F、G、H點;生成面模板所需節點和單元。
最后,看全加密模板的確認步驟:生成待加密六面體單元的6個面單元;選出其中一個面單元,再以面加密模板步驟分析即可找出待加密六面體的8個節點A、B、C、D、E、F、G、H。生成全加密模板所需節點和單元。
通過上述步驟,可以確定待加密六面體網格的8個節點與3種加密模板的8個節點一一對應,并生成對應的加密網格單元,即細化加密后的六面體網格單元。
3 應用實例
3.1 圓球壓平板網格模型細化
圓球壓平板屬于點面接觸的有限元分析,接觸面積相對于整體模型的尺寸來說是很小的一部分,為了獲得較準確的接觸應力及變形量,需要在接觸區域劃分尺寸較小的六面體網格單元,同時為減少計算資源,在接觸區域外劃分尺寸較大的六面體網格單元(如圖7所示)。
3.2 圓柱體外層網格細化
圓柱體是有限元分析中典型的零件特征,與其他零件相互作用的區域是其外表面,在劃分有限元網格的時候總希望其表層的網格細,圓柱內部網格大一些,以減小網格模型的數量,但由于圓柱的形狀是內小外大,所以普通處理很難劃出理想的網格。若用本文開發的程序,則可以很方便地實現:首先對圓柱體劃分等大的六面體網格單元,然后選擇圓柱體外圈的一層六面體網格進行加密,加密前后的四分之一有限元模型(如圖8所示)。
3.3 回轉支承網格劃分
有限元法是研究回轉支承的一種重要方法,足夠小的網格單元尺寸是獲得足夠精確結果的保證。圖9所示是010.20.200系列回轉支承二十四分之一普通六面體網格劃分模型。通過2次使用本文開發的六面體網格加密插件進行加密劃分,使整體模型的網格數較少,同時在接觸區域使用局部加密,保證了有限元模型的準確性。
4 結論
本文利用Ito等人提出的六面體網格過渡加密模板,利用Tcl/tk語言在HYPERMESH環境中開發了六面體網格單元自動過渡加密的插件,實現了自動加密的功能。加密插件充分利用了HYPERMESH軟件劃分六面體網格的優勢,同時加密插件也增強了HYPERMESH軟件劃分六面體網格的能力。該插件可以大幅減少有限元模型的單元和節點,特別是在需要局部細化加密的六面體網格有限元模型中,節約了大量計算資源,為有限元分析得到準確的結果提供保障。本文開發的六面體網格加密方法,難度系數低,其他類型的六面體網格加密模板也可以通過這種方法實現,如Schneiders的27分法模板和8分法模板[6]、黃麗麗的8分法模板[6],同時也可以在其他六面體網格劃分軟件如ICEM中進行開發,以滿足不同的加密需求。
參 考 文 獻
[1]BenzleyS E,Perry E,Merkley K,et al.Acomparison of all hexahedral and all tetrahedral finite element meshes for elasticandelasto plasticanalysis[C].Proceedings of the 4th International Meshing Roundtable,Albuquerque,1995:179-191.
[2]關振群,宋超,顧元憲,等.有限元網格生成方法研究的新進展[J].計算機輔助設計與圖形學學報,2003,15(1):1-14.
[3]賀李平,龍凱,肖介平.ANSYS 13.0與HYPERMESH 11.0聯合仿真有限元分析[M].北京:機械工業出版社,2012.
[4]Zhang Y J,Bajaj C.Adaptive and quality quadrilateral hexahedral meshing from volumetric data[J].Computer Methodsin AppliedMechanicsandEngineer-ing,2006,195(9/12):942-960.
[5]Ito Y,Shih A M,Soni B K.Octree basedreasonable quality hexahedral mesh generation using a new set of refinement templates[J].International Journalfor Numerical Methods in Engineering,2008,77(13):1809-1833.
[6]黃麗麗,趙國群,王忠雷.柵格法三維六面體網格局部加密算法[J].計算機輔助設計與圖形學學報,2010(6).
[7]王鈺棟,金磊,洪清泉.HYPERMESH&HyperView應用技巧與高級實例[M].北京:機械工業出版社,2012.
[8]Altair Engineering,Inc.HYPERMESH 10.0 Users Guide[Z].2009.
[9]Altair Engineering,Inc.HYPERMESH 10.0 Reference Guide[Z].2009.
[10]Brent B Welch.Tcl/Tk組合教程[M].北京:電子工業出版社,2011.
[責任編輯:鐘聲賢]