基于贪心算法的Voronoi图晶粒取向分布计算
在相场法模拟晶粒生长时,我们一般会生成初始的Voronoi图。从图片上我们能看出这是由一个个晶粒组成,如果每个晶粒都用一个单独的序参量表示,对于几十甚至几百个大晶粒问题,计算量将会十分庞大。在MOOSE中,研究者已经开发了晶粒追踪的后处理程序,可供我们调用,只要我们把初始晶粒分配好即可,使得相接触的两个晶粒具备不同的序参量。对于生成Voronoi图,网上的方法很多,有用Python代码实现的,有的是专用软件(Neper,dream3D)生成的,但是对晶粒取向都还没有相关的处理方法。有的好像是放到abaqus里手动分配序参量,但是局限性太大。

对此,笔者结合自己的所学知识与网上搜集资料,提出了一套用贪心算法实现Voronoi图晶粒取向分布的方法。贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 。具体流程如下图所示。

在此基础上,我们可以先读取图片像素颜色,生成一个矩阵列表,将颜色相同的视为一个晶粒并编号。然后根据相邻矩阵元素值是否突变,判断两个晶粒是否接触,全都判断完毕后即可得到一个和编号有关的矩阵(即上图的绿色矩阵),相邻晶粒的矩阵元素值为1,不相邻为0。接着调用贪心算法,就可以得到局部最优的晶粒取向分布结果,如下图所示。最终根据软件计算需要,导出相应的不同晶粒取向数据格式。

以上就是用贪心算法实现晶粒取向分布的基本思路,对于生成Voronoi图、贪心算法的相关程序代码网上搜素都可以得到。根据提供的思路加入自己的理解,只要耐下心来肯花时间都能实现。