羅繼相 王 志
(武漢理工大學(xué)物流工程學(xué)院 武漢 430063)
鑄造過程計算機(jī)模擬是鑄造學(xué)科發(fā)展的前沿領(lǐng)域,是當(dāng)今世界各國專家學(xué)者關(guān)注的熱點(diǎn),同時也是改造傳統(tǒng)鑄造產(chǎn)業(yè)的必由之路[1].前處理模塊是鑄造模擬軟件開發(fā)的基礎(chǔ),涉及到網(wǎng)格剖分、材質(zhì)賦予等內(nèi)容,影響到模擬時間、模擬精度等問題,故而也是鑄造模擬軟件系統(tǒng)開發(fā)的一個關(guān)鍵所在[2-4].網(wǎng)格剖分是數(shù)值模擬前處理軟件中的核心部分,也是前處理軟件所要完成的一項重要工作.
有限差分網(wǎng)格剖分過程實(shí)際上就是利用眾多的長方體網(wǎng)格去近視被剖分的實(shí)體模型,此過程完成的好壞將直接影響到網(wǎng)格模型近似實(shí)體模型的精度.同時,數(shù)值模擬又以網(wǎng)格模型為計算對象,所以網(wǎng)格剖分過程也將直接影響到計算的精度和計算的效率,并最終影響數(shù)值模擬過程與實(shí)際生產(chǎn)過程之間的差異問題[5-6].
對于擠壓鑄造模擬而言,模擬過程還將會涉及多種不同材質(zhì)網(wǎng)格之間的數(shù)值計算,涉及到鑄件、鑄型、保溫體、冷卻水等實(shí)體,需要對每個實(shí)體范圍內(nèi)的網(wǎng)格賦予不同的材質(zhì)屬性,這樣才能保證在后續(xù)的模擬計算中得到有效的計算結(jié)果.所以對于擠壓鑄造模擬的網(wǎng)格剖分而言,不僅要綜合考慮計算精度和計算效率而確定合理的網(wǎng)格密度,同時還要能夠?qū)崿F(xiàn)網(wǎng)格的多材質(zhì).綜上可見,網(wǎng)格剖分是一項復(fù)雜的工作,但也是數(shù)值模擬中至關(guān)重要的一環(huán).所以,尋找一種快捷、方便、準(zhǔn)確的網(wǎng)格剖分方法一直是數(shù)值模擬領(lǐng)域研究的重點(diǎn).
有限差分網(wǎng)格剖分的實(shí)質(zhì)就是運(yùn)用一系列立方體或長方體去近似被剖分的實(shí)體.傳統(tǒng)的剖分過程為:首先,依據(jù)實(shí)體尺寸建立一個剛好包圍實(shí)體的長方體,即包容盒,并使得包容盒的6個面與實(shí)體坐標(biāo)系的3個坐標(biāo)平面平行;然后分別沿3個坐標(biāo)方向按指定距離分割此包容盒,得到一系列小長方體網(wǎng)格單元;最后通過對照實(shí)體的空間范圍,判斷剖分得到的網(wǎng)格單元中心點(diǎn)的位置,保留處于實(shí)體內(nèi)部的中心點(diǎn),這樣就實(shí)現(xiàn)了對實(shí)體的網(wǎng)格剖分.此種算法相對來說剖分原理較為直觀,易于理解和接受,為后續(xù)其他網(wǎng)格剖分算法的開發(fā)提供了依據(jù).
在實(shí)際應(yīng)用中若采用上述方法進(jìn)行網(wǎng)格剖分,則會發(fā)現(xiàn)其具有很大的局限性,這是因為在進(jìn)行網(wǎng)格剖分時,剖分范圍并沒有限制于實(shí)體本身,而是對其包容盒進(jìn)行的剖分,但只有實(shí)體內(nèi)部的網(wǎng)格才是所需的網(wǎng)格,所以就要對剖分得到的網(wǎng)格進(jìn)行判斷.對于鑄造模擬而言,為了提高計算的準(zhǔn)確性,每次剖分實(shí)體時采用的步長一般較小,得到的網(wǎng)格則會較多,對如此多的網(wǎng)格進(jìn)行判斷必然要耗費(fèi)大量的時間和內(nèi)存空間,不利于程序的運(yùn)行.另一方面,判斷所采用的算法較為繁瑣,不易理解,給后面的程序設(shè)計帶來了困難.
本文在實(shí)現(xiàn)網(wǎng)格剖分時,對上述過程進(jìn)行了優(yōu)化和改進(jìn),方便了程序的實(shí)現(xiàn).首先,為了簡化對網(wǎng)格的判斷,在剖分網(wǎng)格時,將剖分的范圍由包容盒縮小到只剖分實(shí)體本身,這樣剖分所得到的網(wǎng)格都是有用的網(wǎng)格,無需再進(jìn)行判斷挑選.其次,由于后續(xù)的模擬計算是以剖分網(wǎng)格的中心點(diǎn)為對象,所以為了方便后續(xù)計算,在剖分時直接得到中心點(diǎn),而不是先切割實(shí)體得到網(wǎng)格,再由網(wǎng)格去推算中心點(diǎn).正是因為剖分后直接得到網(wǎng)格中心點(diǎn),在設(shè)計切割平面時,平面位置應(yīng)位于網(wǎng)格中心面上.最后,切割實(shí)體時須遵循面-線-點(diǎn)的剖分次序,先沿Z方向由下至上切割實(shí)體,得到一系列的平面,再沿Y方向逐次切割這一系列的面,得到一簇簇平行于Y軸的線,最后沿X軸切割這些線,就得到了所需的中心點(diǎn),具體剖分過程見圖1.
圖1 網(wǎng)格剖分原理示意圖
在剖分的過程中,依據(jù)面-線-點(diǎn)的次序進(jìn)行的剖分,首先選擇一個平行于坐標(biāo)軸的面,將復(fù)雜的數(shù)據(jù)模型實(shí)體劃分為一系列的面.然后采用與Y軸垂直的面將平行的面劃分為線.最后采用與X軸垂直的面將線劃分為點(diǎn).依據(jù)這種思想,在程序設(shè)計過程中,可以通過3步進(jìn)行網(wǎng)格剖分程序的設(shè)計,即Z向平面劃分,Y向直線劃分和X向中心點(diǎn)生成.
由于常規(guī)的CAD軟件提供的STL文件轉(zhuǎn)換功能在生成算法上不夠健全,而STL文件自身也不具有自動糾錯的能力,所以對于生成的STL文件而言,本身難免存在一些缺陷[7].其中STL文件存在孔洞對有限差分網(wǎng)格剖分影響最大,它將給后續(xù)的程序運(yùn)行帶來致命的錯誤,使得剖分過程無法正常進(jìn)行,見圖2.
圖2 STL文件存在破洞造成多邊形不封閉
在進(jìn)行Z向剖分時,最后所希望得到的平面為一系列封閉的多邊形.若STL文件自身存在孔洞時,Z向剖分得到的平面域?qū)⒉辉俜忾],構(gòu)成平面域的多邊形將在孔洞的位置斷開,即多邊形的邊出現(xiàn)缺失現(xiàn)象.當(dāng)進(jìn)行Y向剖分時,切割平面域的某些切割線恰好穿過多邊形的缺口,這樣得到的切割線將為一條條射線,而非線段,后續(xù)對其端點(diǎn)進(jìn)行配對時,將會使得程序陷入死循環(huán),導(dǎo)致軟件崩潰.
通過建立多邊形鏈表可有效的解決STL文件存在孔洞問題.在求得Z平面與STL文件各三角面片相交所得的線段后,將這些無序的線段根據(jù)連接關(guān)系建立若干個有序的鏈表,一個鏈表對應(yīng)一個多邊形,根據(jù)鏈表的首尾是否相連來判斷多邊形是否封閉.如果多邊形不封閉,則需對其進(jìn)行修正.
以圖3為例對修正過程進(jìn)行說明:(1)建立新鏈表,提取任意線段L1的2個端點(diǎn)作為鏈表頭,沿指定方向搜索與L1第二個端點(diǎn)v2同點(diǎn)的線段L2,將L2插入鏈表頭部.搜索與L2第二個端點(diǎn)v3共點(diǎn)的線段L3,將其插入鏈表頭部 .在對L3的第二個端點(diǎn)v4進(jìn)行搜索時發(fā)現(xiàn),沒有線段與之共點(diǎn),說明該多邊形為不封閉多邊形,原STL文件存在孔洞.(2)遍歷鏈表到線段L1的節(jié)點(diǎn),搜索與L1第一點(diǎn)v1共點(diǎn)的線段L4,并將其插入鏈表尾部.在對L4另一端點(diǎn)v5進(jìn)行搜索時發(fā)現(xiàn),沒有與之共點(diǎn)的線段,這表明缺口存在于L4的端點(diǎn)v5與L3的端點(diǎn)v4之間.(3)在鏈表尾部插入新的節(jié)點(diǎn)用于存放點(diǎn)v5與點(diǎn)v4,這樣在原多邊形斷開的位置增加了一條直線,連接了缺口,從而修正了孔洞缺陷.
圖3 鏈表法原理
在切割平面對三角面片進(jìn)行切割時,切割平面與三角面片有2種關(guān)系:相交;不相交.而對于相交的關(guān)系又有3種不同的情況(見圖4),第一種情況為切割平面穿過面片的1個頂點(diǎn),與三角面片存在一個交點(diǎn).第二種情況為切割平面穿過三角面片的2個頂點(diǎn)或相交于三角面片的兩條棱邊,與三角面片有2個交點(diǎn).第三種情況為切割平面與穿過三角面片的3個頂點(diǎn),即三角面片在切割平面上,切割平面與三角面片有3個交點(diǎn).對于第一種和第三種情況,剖分后將得到多條退化線段,這將為后續(xù)文件漏洞修補(bǔ)中多邊形鏈表的建立以及Y向剖分帶來困難,也容易產(chǎn)生錯誤.為避免不必要的復(fù)雜性,在程序設(shè)計中可通過將剖分平面偏移一段微小距離,使其避開相交的頂點(diǎn).這樣在剖分時,切割平面在與三角面片相交時,只會產(chǎn)生2個交點(diǎn).
圖4 Z向剖分平面過三角面片頂點(diǎn)
在進(jìn)行Y向剖分時,切割平面與多邊形交于多邊形的一個頂點(diǎn),在該頂點(diǎn)處求出的交點(diǎn)為重合的2個點(diǎn),但在頂點(diǎn)排序配對時,這2個重合的點(diǎn)只能算一個,將會導(dǎo)致材質(zhì)判斷的錯誤.為了避免此種情況的發(fā)生,在進(jìn)行剖分時,同樣將剖分平面偏移一段微小距離,避開相交的頂點(diǎn),見圖5.
圖5 Y向剖分平面過多邊形頂點(diǎn)
在前處理網(wǎng)格繪制過程中,將所有網(wǎng)格繪制出來將會耗費(fèi)大量的時間和占用大量的內(nèi)存空間,在后續(xù)對其進(jìn)行變換操作時也將產(chǎn)生滯留現(xiàn)象,使得操作不流暢.在實(shí)際應(yīng)用中,用戶看到的僅僅是實(shí)體外圍的表面網(wǎng)格,所以在對網(wǎng)格模型進(jìn)行繪制時,只需要將表面網(wǎng)格繪制出來,沒必要將所有網(wǎng)格在都繪制出來,見圖6.可采用2種方法對表面網(wǎng)格進(jìn)行判斷.
圖6 處于實(shí)體表面的網(wǎng)格節(jié)點(diǎn)
第一種方法為首先記錄以Z向最大值和最小值做為Z向分量的所有點(diǎn),得到實(shí)體的下表面與上表面.然后記錄每層面片上以該層Y向最大值與最小值為Y向分量的所有點(diǎn).最后提取Y向剖分配對完成用于表示實(shí)體邊界的所有點(diǎn),得到的這些點(diǎn)即為實(shí)體外表面和內(nèi)表面的點(diǎn),見圖7.
圖7 實(shí)體內(nèi)部網(wǎng)格與表面網(wǎng)格
第二種方法為在節(jié)點(diǎn)中提取任意網(wǎng)格節(jié)點(diǎn),判斷其周圍6個方向是否存在其他的網(wǎng)格節(jié)點(diǎn),若6個方向均存在節(jié)點(diǎn),說明其為實(shí)體內(nèi)部的點(diǎn),將其排除,進(jìn)行下一節(jié)點(diǎn)的判斷.若6個方向中有一個方向沒有節(jié)點(diǎn)存在,則說明其表示的網(wǎng)格為表面網(wǎng)格,將其記錄下來,并判斷節(jié)點(diǎn)直至所有網(wǎng)格節(jié)點(diǎn)記錄完成.
對于第一種方法,理解起來較為復(fù)雜,但省去了實(shí)體內(nèi)部節(jié)點(diǎn)的判斷,計算量較少.第二種相對來說思路清晰,但要遍歷所有的網(wǎng)格節(jié)點(diǎn),計算量較大.
對于剖分生成的網(wǎng)格模型有線框模型顯示和實(shí)體模型顯示2種形式,當(dāng)采用實(shí)體模型顯示時發(fā)現(xiàn),網(wǎng)格線與網(wǎng)格面融合為一體,在對模型進(jìn)行變換的過程中,網(wǎng)格線會出現(xiàn)時隱時現(xiàn)的現(xiàn)象,稱之為“隱線”現(xiàn)象.這是由于網(wǎng)格線與網(wǎng)格面在像素上不能實(shí)現(xiàn)精確的重合,導(dǎo)致了二者顯示時深度值的不同.此現(xiàn)象的發(fā)生極大的影響了視覺美觀效果,可通過網(wǎng)格線偏移技術(shù)進(jìn)行解決.在繪制網(wǎng)格線的過程中,給各向的網(wǎng)格線一個小的偏移量,使其與網(wǎng)格的邊緣線相脫離,這樣就可消除“隱線”現(xiàn)象,得到一個線面清晰的網(wǎng)格模型.
以空調(diào)器殼體為例,對前處理模塊中網(wǎng)格剖分功能進(jìn)行展示.首先導(dǎo)入殼體的STL文件,如圖8所示.設(shè)置網(wǎng)格剖分步長,零件尺寸為:155.00 mm×48.99 mm×133.86 mm,剖分步長為:1 mm×1 mm×1 mm.在CPU為AMD Athlon 64 X2 3600+(2.00 GHz),RAM 為1.00 GB的計算機(jī)上進(jìn)行剖分,得到的網(wǎng)格模型(見圖9)能很好地反映實(shí)體形狀,網(wǎng)格總數(shù)為253 499,耗時10 s.剖分所得結(jié)果與國外商業(yè)化軟件AnyCasting在同樣條件下剖分該實(shí)體所得結(jié)果相比,AnyCasting剖分耗時4 s,所得網(wǎng)格總數(shù)為253 507,二者剖分偏差低于萬分之一.由此可見,本文所討論的剖分方法是可靠的,具有一定的實(shí)用價值.
圖8 空調(diào)器殼體鑄件實(shí)體模型
圖9 空調(diào)器殼體鑄件網(wǎng)格剖分圖
本文對擠壓鑄造計算機(jī)模擬軟件前處理技術(shù)網(wǎng)格剖分進(jìn)行了較為深入的研究,實(shí)現(xiàn)了對數(shù)據(jù)模型的快速網(wǎng)格剖分.在網(wǎng)格剖分的過程中,針對出現(xiàn)的奇異點(diǎn)問題,開發(fā)了錯誤自動診斷和容錯的系統(tǒng).針對網(wǎng)格顯示過程中出現(xiàn)的網(wǎng)格“隱線”現(xiàn)象和操作滯后現(xiàn)象,提出了解決網(wǎng)格線偏移和表面網(wǎng)格顯示的措施.
[1]柳百成,荊 濤.鑄造工程的模擬仿真及質(zhì)量控制[M].北京:機(jī)械工業(yè)出版社,2001.
[2]吳士平,潘顯榮.凝固數(shù)值模擬中鑄件三維實(shí)體造型及三維網(wǎng)格自動剖分的研究[J].鑄造技術(shù),1995(6):17-19.
[3]徐雪華,蘇仕方.復(fù)雜鑄件的三維實(shí)體造型及自動剖分[J].鑄造,1995(8):15-19.
[4]閔光國,袁國強(qiáng).復(fù)雜形狀鑄件實(shí)體造型及網(wǎng)格剖分[J].鑄造,1997(5):42-44.
[5]Schneider R,Bunten R.Automatic generation of hexahedral finite element meshes[J].Computer-aided Geometric Design,1995(12):693-707.
[6]關(guān) 洋.鑄件充型凝固過程數(shù)值模擬前后處理技術(shù)研究[D].沈陽:沈陽鑄造研究所,2010.
[7]Szilvasi N M,Matyasi G.Analysis of STL files[J].Mathematical and Computer Modelling,2003(9):945-960.