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