本文版權歸Wang Tian所有
本文針對p4vasp導出的能帶數據,進行處理得到有效質量。其它軟體也可以導出數據進行類似的處理,但是需要自己注意導出數據的單位。有效質量的計算數學上是很簡單的,主要是需要注意單位。我們的思路就是把所有單位都轉化為原子單位,例如長度為玻爾半徑 (Bohr radius),能量為Hartree,那麼得到質量的單位就是電子質量 (m0)。本文很囉嗦,是一個面向新手的教程。
1. 第一步:使用p4v提取能帶數據
在正確的能帶計算完成後(這個大家自己檢查,我們目前就先假設能帶計算的沒問題),使用p4v打開計算完後產生的vasprun.xml文件。
然後點擊DOS+bands,然後點擊show-Bands。
然後點擊那個長得像照相機一樣的按鈕,就可以把整幅圖的數據導出了。
導出的有三個,我們需要處理其中的.dat文件。
這個.dat 文件一共兩列,第一列是k空間路徑的路程,單位是2pi/Angstrom;第二列是能量本徵值,單位是電子伏特 eV。
* 很多同學很困惑這個橫坐標是怎麼來的,那麼我在這裡簡單說一下。不感興趣的同學請直接跳到第二步。
在direct lattice vector這一欄下,是我們的實空間基矢,這一欄應該是和POSCAR裡3-5行的內容一模一樣的。而旁邊reciprocal lattice vectors是VASP給出的倒空間的基矢。按大多數定義,如下面這個圖裡所說,由於我們是個正交格子,所以b1的方向與a1相同,就是a2叉乘a3的方向,右手則,長度就是a1自己的模。對於我這個截圖,應該是 2pi/5.995 = 1.048 A-1,然而VASP用的定義有點點不一樣,沒有乘以2pi,所以基矢長度就是 1/5.995=0.1668,就是reciprocal lattice vectors這一欄顯示的。知道VASP如何給出的倒格子以後,我們就忘掉實格子,僅僅關注倒格子,在倒空間遨遊。
然後就是如何得到橫坐標的問題。首先我們看向 KPOINTS文件:
在前兩個高對稱點間,插了50個點(包括高對稱點本身),這50個點在倒空間的坐標,OUTCAR裡也給出了:
這裡把(0, 0, 0)到(0.5, 0, 0)等分50份,由於0點也算一個點,那點之間的間隔就是0.5/49 = 0.0102。如圖所示,我們得到了倒空間的K點坐標。這三個坐標再乘以剛才的倒格子基矢,就可以得到剛才那幅圖裡的k-points in units of 2pi/SCALE and weight。我們可以驗證一下,0.0102*0.1668 = 0.001702。這裡注意SCALE = 1,具體你的體系SCALE是多少,那是POSCAR裡第二行有寫的,一般都是1,也可以在OUTCAR裡找到SCALE是多少。
那麼,橫坐標就是k-points in units of 2pi/SCALE and weight中點所經歷的路程了。那就是兩點之間的距離公式了,相信大家都會。
2. 第二步:將數據導入Origin
我們需要的是第一導帶和第一價帶的數據,也就是first conduction band和first valence band。由於p4v把每一條帶的數據全都導出了,所以尋找起來會有一些麻煩。
還好,p4v把費米能級平移到0了(平移相當於y加上一個常數,不影響y的二階導數的值),如果你是半導體,那麼肯定小於零的是VB,大於零的是CB,處於正負交接的,那就是第一CB和第一VB,如圖所示。
上面那條帶,那就是第一VB,都小於0。下面那個帶,那就是第一CB,數據我沒截全,就是截了一個交接處。一條帶的總共數據就是那麼些,x值從0到下一個0之間不包含下一個0。
下面我們把第一CB和第一VB的數據導入Origin。
然後就是注意,在高對稱點那裡,會出現重複點:
也就是說,50和51號點,對應的是同一個高對稱點。所以,最好的方法就是分方向。對於我來說,1-50號對應G-X,51-100對應X-M,101-150對應M-G,那麼在同一個X點或M點,就會出現兩種二階導數值,這樣就可以得到兩種在M點的有效質量,分別是M->X方向和M->G方向的有效質量,二者可能相同,也可能不同,取決於材料本身的性質。
3. 第三步:轉換單位!
先說能量,1 eV = 0.036749 Hartree,所以第二列乘以0.036749 就從eV化成Hartree。
再說x軸,之前的單位是 2pi/Angstrom,現在要化為1/Bhor,因為1 Bohr = 0.529177 Ang, 那就是: 第一列*0.5291772108*2*pi。轉化如下圖所示:
4. 第四步:求導或者擬合。
對於轉化完單位的數據,我們用origin自帶的分析工具,選中C-D兩列數據,然後求二階導:Analysis-Mathematics-Differentiate-Open Dialog。
然後如下圖進行設置,輸入數據選為C, D兩列,也就是我們剛才轉化完單位的兩列,階數選擇為2。
然後我們就得到了每一處的二階導數。下面我們要找到我們的CBM和VBM對應的K點是哪個,這個也很簡單,去p4v給的能帶圖看一下,哪裡是我們的CBM和VBM。如下圖:
我們這個例子裡,VBM和CBM均在第三個高對稱點上,也就是M點,M點對應的是orgin裡100或者101號點。由於我每一段都分開了,所以我直接找到X-M段最後一個點,那就是我需要的M點所在的位置。
最後一列那個數就是我們需要的二階導數值。
當然,你也可以用附近的點擬合一個二階函數,然後取二次項的係數。實際上origin給你的二階導,是相應的二次函數的係數。
得到的二階導數記為E』』。m = 1/2E』』 = 0.5/E』』 = 0.5/3.15574 = 0.158 (m0)。m0為電子質量。
同樣的,我們也可以擬合二次函數:
最好取CBM或者VBM附近的幾個點,這樣使得數據落在二次函數範圍內,減小誤差,離得太遠的點不一定在二次函數區域內。
我們取CBM點附近的四個點,擬合二次函數,結果類似,得到二次項係數為C。
我本人怕麻煩,一般不用這個圖形擬合的方法。
之後就可以按照定義:
Effective mass = 1/2/C = 0.164 (m0) ,m0是電子質量。
由於假設半導體電子激發後,電子在CB上運動,空穴在VB上運動,所以CB上求得的認為是電子有效質量,VB上求得的是空穴有效質量。
第一次寫教程,難免有很多問題,希望大家多提意見,我好做修改。
* vaspkit也可以用來求有效質量,具體怎麼做,已經有教程了,我就不囉嗦了。作者用本文的方法和vaspkit的方法都用過,兩個不同的方法,對於同一個體系來說,得到的有效質量是十分接近的,也間接證明本文的單位轉化是沒問題的。vaspkit結果如下圖:
同一個體系,用本文計算: