《固体物理学》中基于Matlab的动态晶面标示

2017-04-20 08:24李建军
教育教学论坛 2017年16期
关键词:晶面

李建军

摘要:《固体物理学》的纸质教材中,一般只给出一些典型的晶面,且观察视图的角度是固定的。本文利用Matlab的图形显示功能,通过开发Matlab源程序,不但可实时显示任意设定的晶面,而且能对视图做三维旋转,从不同角度来观察晶面,增加了课程教学的生动性、直观性和交互性。

关键词:固体物理;晶面;Matlab

中图分类号:G642.3 文献标志码:A 文章编号:1674-9324(2017)16-0213-02

固体物理学是研究固体的结构及由结构决定的固体的热学、电学、光学和磁学等性质并阐明其用途的一门科学[1],其中的固体指的是晶体,而晶体最基本的性质是微观周期性。由于晶体的微观周期性决定了固体材料性质的各向异性,体现为在不同的晶面上或沿不同的晶向材料的性质不同。为了区分不同的晶向或晶面,可用晶向指数或晶面指数来标示[2],其中晶面的标示不但是《固体物理学》教学的重点,也是课程教学中的难点。然而,在传统的纸质教材中,由于其自身的限制只能给出一些特殊的晶面,不可能罗列所有的晶面,且晶面显示的角度是固定的。即使利用3DS MAX[3]、Rasmol[4]或VRML语言[5]等开发的模形也不能实现实时交互功能。为此,本文充分发挥计算机的动态显示优势,通过Matlab语言编写程序,只要输入任意的晶面的指数即可实时地显示需标示的晶面,同时利用软件的三维旋转功能可从不同角度来动态观察。实践表明,该方法在教学中具有实时、动态、精确和可视化的优点。

一、晶面的标示方法

固体物理学中,晶面用三个互质的整数h,k和l加圆括号来标示,即(hkl)[1]。需要说明的是,(hkl)表示一族平行的晶面而不是某一个晶面。由于晶体的周期性,平行晶面族中各晶面的性质是等价的,因此通常只需在原胞或晶胞中画出距原点最近的一个面即可。以立方晶系为例,图1(a)在晶胞中画出了(hkl)面,该面与三个晶轴a,b和c的截距分别为1/h,1/k和1/l,即可用顶点坐标分别为(1/h,0,0),(0,1/k,0)和(0,0,1/l)的三角形来图示。在实际中有以下几种特殊情形需注意:

1.当h,k和l中有一项为零时,其倒数为无究大,表示晶面与对应的晶轴平行无交点,这时的晶面需用平行四边形来表示。例如,(0kl)面与a轴平行,如图1(b)所示,平行四边形的四个项点坐标分别是:(0,1/k,0),(1,1/k,0),(0,0,1/l)和(1,0,1/l)。

2.当h,k和l中有两项为零时,表示晶面与两个对应的晶轴平行无交点,这时的晶面同样需用平行四边形来表示。例如(0k0)面与a轴和c轴平行,如图1(c)所示,平行四边形的四个项点坐标分别是:(0,1/k,0),(1,1/k,0),(1,1/k,1)和(0,1/k,1)。

3.当h,k或l取负值时,晶面与对应轴的截距在轴的负方向,为了将晶面标示在晶胞内而不是晶胞外,需进行一个单位的平移。例如(hkl)面与a,b和c轴的截距分别为1/h,-1/k和1/l,如图1(d)所示,为了将其在晶胞内表示,晶面的三个顶点坐标分别为:(1/h,1,0),(1,1-1/k,0)和(0,1,1/l)。

二、晶面动态标示的Matlab实现

对于设定的面指数,用Matlab语言进行动态标示的具体过程说明如下。

1.画立方晶胞。(1)用8行3列的二维矩阵p(8,3)设定立方晶胞8个顶点的三维坐标,其中每一行与一个顶点对应,3列数值分别对应各顶点在a,b,c轴上的投影。(2)用8个顶点构建表示立方晶胞12条边的三维数组line(2,3,12)。以第i条边为例,line(2,3,i)是一个2行3列的二维矩阵,其第一行与边的起点坐标对应,第二行与边的终点坐标对应。(3)根据三维数组line(2,3,12),利用Matlab的三维画线函数plot3绘制立方晶胞。(4)标注原点、晶轴及图题等。

2.标示晶面。(1)根据给定的晶面指数,确定标示在晶胞中的晶面顶点坐标。判断h,k和l中是否有零值来决定晶面是平行四边形还是三角形,并确定各顶点坐标。各顶点在a,b和c轴上的投影分别存放在一维列矩阵X,Y和Z中。(2)根据给定的晶面指数,判断h,k和l中是否有负值,如有负值,则应将晶面平移一个晶格常数,以便在晶胞中显示。如果h<0,则列阵X中的所有单元应加1,同理,如果k<0,则Y中的所有单元应加1,如果l<0,则Z中的所有单元应加1。(3)标示晶面。根据矩阵X,Y和Z中晶面顶点的坐标值,利用Matlab的fill3函数绘制晶面,并进行透明设置和开启鼠标3维旋转功能。

三、应用实例

图2给出了用Matlab显示的(100)、(110)和(2■1)面的截图结果。在Matlab环境下,可以利用鼠标的左键旋转视图,从不同方向观察晶面。

四、结语

对于大部分本科生来说,《固体物理学》是一门枯燥且抽象的课程,如何將深奥的理论教学与现代多媒体教育手段有效结合,激发学生的学习兴趣,是值得思考的问题。本文基于Matlab语言,充分发挥计算机多媒体教学的优势,可实时动态地显示任意设定的晶面,增加了课程教学的生动性、直观性和交互性。希望能对相关理论课程的教学有一定的启迪作用。

参考文献:

[1]方俊鑫,陆栋.固体物理学(上册)[M].上海:上海科学技术出版社,1980.

[2]黄昆.固体物理学[M].北京:高等教育出版社,1988.

[3]章天金,马志军,江娟,潘瑞琨.三维动画技术在固体物理学教学中的应用[J].沈阳师范大学学报(自然科学版),2007,25(4):454-456.

[4]顾燕红,黄晓江.用RasMol软件制作晶体结构的课件[J].物理与工程,2006,16(3):33-34.

[5]孟祥东,华中.VRML语言及在固体物理教学中的应用[J].吉林师范大学学报(自然科学版),2004,(2):40-42.

猜你喜欢
晶面
乙酸乙酯与ε-CL-20不同晶面的微观作用机制
基于表/界面调控的金属氧化物半导体光催化剂的理性构筑
NaCl单晶非切割面晶面的X射线衍射
(100)/(111)面金刚石膜抗氧等离子刻蚀能力
不同硅晶面指数上的类倒金字塔结构研究与分析∗
α-HgI2晶体附着能的计算
金电极晶面指数对C20富勒烯电子输运性质的影响
KDP晶体三倍频晶面微观力学行为及加工性能
立方晶格晶面间距的计算
氧化物纳米晶形貌控制与催化应用进展