《晶体马德隆常数的计算.docx》由会员分享,可在线阅读,更多相关《晶体马德隆常数的计算.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、晶体马德隆常数的计算学习固体物理的时候,我们一定会学习到马德隆常数,它是计算固体势能中一个很重要的常数。然而对于它本身的计算似乎很少有人来说,我希望通过这个文章填补一下这方面的空白。本文首先介绍马德隆常量的数学表达形式,接着利用mathematica编程简单计算了NaCl的马德隆常数,然后简单说明同样的方法对于类似CsCl的结构是不适用的,为此我们必须使用埃夫琴晶胞来进行有效计算。在使用埃夫琴晶胞的基础上我们引入了一个新的算法,它的计算速度较快,而且有着可以更快得到每一层晶胞数据的优越性。一、马德隆常数对于NaCl晶体来说,马德隆常量的定义式为其中取全体整数。上式展开来有两种计算方法,一种是取
2、一个数N,然后对于进行求和,然后取N趋于无穷的极限;一种是对于一个数R,对于每一个逐项进行计算。然而后者被证明是不可行的,因为对于这种条件收敛的级数,对于其求和顺序的改变很容易得到发散的求和结果。于是接下来的计算都基于第一种方法。二、NaCl晶体马德隆常数的计算NaCl晶体的结构和和简单立方结构类似,不同之处在于其一半的顶点都替换为符号相反的粒子。NaCl的晶体结构本文中我们使用的软件为mathematica,程序代码如下:a = 0; n = 20;Do Do Do If(i = 0) & (j = 0) & (k = 0), a = a, a = a + (-1)(i + j + k)/S
3、qrt(i2 + j2 + k2) , i, -n, n , j, -n, n , k, -n, n a=-a;这个程序非常简单,就是设计一个三重循环对一个求和式不断求和,我们先输入一个数20,程序得到的结果为1.7194,当取数19时,得到结果1.77717。可以看到他们的平均值1.7482与真实结果非常接近,我们写一个循环输入,得到不同n值时所得到的不同结果,结果如下NaCl的马德隆常数从图中可以看到,随着n的变化总体计算出的值是上下震荡的,这是由边缘离子不断变化对总体影响的结果,如果想消除一部分这样的影响,快速求出中间的值,可以对上下震荡的数求平均值,结果如下NaCl的平均计算的马德隆常
4、数可以看到使用平均值的方法后,总体的结果也是很快收敛到一个定值,这里的定值结果为1.74829,与教材上给出的值1.748相差不大。所以可以给出结论:对于这种简单的晶体结构,我们使用的直接计算方法是有效的。三、CsCl晶体的马德隆常数的计算CsCl结构类似于体心立方结构,如下:CsCl的晶体结构可以根据简单的分析得出结论,利用以上的计算方法会得到非常振荡甚至发散的结论,所以在此我们引入埃夫琴晶胞来进行计算。简单来说就是把计算参考点放在中心,如图计算每一个粒子对中心的贡献,在最外面的面上的粒子对中心的贡献将降低,具体而言是角上的占1/8,棱上的占1/4,面上的占1/2。我们同时发现上面程序计算的
5、速度非常慢,原因在于没有有效利用粒子的对称性,导致重复计算次数过多。我们还想像上面一样,对于取n大小的晶胞时能有效计算其相关的数据进行作图比较,由此我们必须引入新的方法和算法。在给出代码之前我们先说一点:采取以上坐标系计算的时候得到的马德隆常数并不是真正的马德隆常数,由于在马德隆常数的定义式中以两个最近的粒子之前的距离为1,而上图中并非如此,所以两个马德隆常数有如下关系:我们设计算法的思路如下:首先我们引入三个变量:角量、棱量和面量,分别计算他们对于原点的马德隆常量值;然后如果我们想知道取大小为n晶胞的马德隆常数值是多少,就采取如下方法:将之前计算的n-1的角量,棱量和面量相加,然后将n层的相
6、应量取分数贡献加入。同时在计算三种量的时候我们充分考虑其对称性,具体而言就是仅计算一个角,一个棱和一个面,然后乘相应的数值即可。具体算法程序如下:edge = 0; face = 0; point = ; Alpha = ; a = 0; b = 0;n = 50;Do AppendTopoint, (8 (-1)(m - 1)/Sqrt(3 (m/2)2), m, 1, nDo e = 0; Do e = e + (12 (-1)(j - 1)/Sqrt(2 (j/2)2 + i2), i, 1 - j/2, j/2 - 1 AppendToedge, e, j, 2, nDo f = 0;
7、 Do Do f = f + (6 (-1)(j - 1)/Sqrt(j/2)2 + i2 + k2), i, 1 - j/2, j/2 - 1, k, 1 - j/2, j/2 - 1 AppendToface, f, j, 2, nDo a = b + 1/8 pointi + 1/4 edgei + 1/2 facei; b = b + pointi + edgei + facei; AppendToAlpha, NSqrt3/2 a, i, 1, n以上就是一层一层计算马德隆常量的方法,计算速度非常快,而且就计算方式而言非常像蚕结茧,可以称之为茧算法。最后输出的结果还是振荡的,如下:然后还是用老办法取平均,于是得到下图计算结果表明最后马德隆常数收敛到一个值,计算得到的结果为1.76267,与书上的结果相符。四、总结综上所述,我们利用了两种算法对不同结构的离子晶体的马德隆常数进行了计算,分别为直接计算法和茧算法。其中前者容易理解并且思路自然,然而计算速度有着较大的局限性:后者则不然,它适用于更多情况的晶体计算,并且计算收敛速度快。但是值得注意的是,还有很多种结构的晶体是不适用以上两种方法的,需要新的思路(如积分变换)等方法,这都值得我们探索学习。