基于貪心算法的Voronoi圖晶粒取向分布計算
在相場法模擬晶粒生長時,我們一般會生成初始的Voronoi圖。從圖片上我們能看出這是由一個個晶粒組成,如果每個晶粒都用一個單獨的序參量表示,對于幾十甚至幾百個大晶粒問題,計算量將會十分龐大。在MOOSE中,研究者已經(jīng)開發(fā)了晶粒追蹤的后處理程序,可供我們調(diào)用,只要我們把初始晶粒分配好即可,使得相接觸的兩個晶粒具備不同的序參量。對于生成Voronoi圖,網(wǎng)上的方法很多,有用Python代碼實現(xiàn)的,有的是專用軟件(Neper,dream3D)生成的,但是對晶粒取向都還沒有相關(guān)的處理方法。有的好像是放到abaqus里手動分配序參量,但是局限性太大。

對此,筆者結(jié)合自己的所學(xué)知識與網(wǎng)上搜集資料,提出了一套用貪心算法實現(xiàn)Voronoi圖晶粒取向分布的方法。貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當(dāng)前看來是最好的選擇。也就是說,不從整體最優(yōu)上加以考慮,算法得到的是在某種意義上的局部最優(yōu)解 。具體流程如下圖所示。

在此基礎(chǔ)上,我們可以先讀取圖片像素顏色,生成一個矩陣列表,將顏色相同的視為一個晶粒并編號。然后根據(jù)相鄰矩陣元素值是否突變,判斷兩個晶粒是否接觸,全都判斷完畢后即可得到一個和編號有關(guān)的矩陣(即上圖的綠色矩陣),相鄰晶粒的矩陣元素值為1,不相鄰為0。接著調(diào)用貪心算法,就可以得到局部最優(yōu)的晶粒取向分布結(jié)果,如下圖所示。最終根據(jù)軟件計算需要,導(dǎo)出相應(yīng)的不同晶粒取向數(shù)據(jù)格式。

以上就是用貪心算法實現(xiàn)晶粒取向分布的基本思路,對于生成Voronoi圖、貪心算法的相關(guān)程序代碼網(wǎng)上搜素都可以得到。根據(jù)提供的思路加入自己的理解,只要耐下心來肯花時間都能實現(xiàn)。