李建軍


摘要:《固體物理學》的紙質教材中,一般只給出一些典型的晶面,且觀察視圖的角度是固定的。本文利用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.