Si的DKK哈密顿量拟合
Si 的 DKK 哈密顿量为:
拟合结果为
1, 未考虑归一化系数
2. 考虑归一化系数
L = -5.53 M = -3.64 ,N= -8.32 (参数取自GTS VSP)
这里注意的是,单位归一化问题, hbar/2m_0 = 3.8099333795 eV*A^2。
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import numpy as np import matplotlib.pyplot as plt def H(kx,ky,kz): H0, H1 = np.eye(3), np.eye(3) H0 = -0.551363*H0+M*(kx**2+ky**2+kz**2)*H0 H1[0][0],H1[0][1],H1[0][2] = (L-M)*kx**2, N*kx*ky, N*kx*kz H1[1][0],H1[1][1],H1[1][2] = N*kx*ky, (L-M)*ky**2, N*ky*kz H1[2][0],H1[2][1],H1[2][2] = N*kx*kz, N*ky*kz, (L-M)*kz**2 return H0+H1 def plot1(): res1,res2,res3 = [],[],[] kpath = [0] Lp = [0.5*1.1491,0.5*1.1491,0.5*1.1491] len_L = 100 kxold,kyold,kzold = 0,0,0 for i in range(len_L-1,-1,-1): kx = i*Lp[0]/(len_L-1) ky = i*Lp[1]/(len_L-1) kz = i*Lp[2]/(len_L-1) tmp = kpath[-1] + ((kx-kxold)**2+(ky-kyold)**2+(kz-kzold)**2)**0.5 kpath.append(tmp) kxold,kyold,kzold = kx,ky,kz a, b = np.linalg.eig(H(kx,ky,kz)) a = sorted(a) res1.append(a[0]) res2.append(a[1]) res3.append(a[2]) flag = kpath[-1] Xp = [0,1.1491,0] len_X = 100 kxold,kyold,kzold = 0,0,0 for i in range(len_X): kx = i*Xp[0]/(len_L-1) ky = i*Xp[1]/(len_L-1) kz = i*Xp[2]/(len_L-1) tmp = kpath[-1] + ((kx-kxold)**2+(ky-kyold)**2+(kz-kzold)**2)**0.5 kpath.append(tmp) kxold,kyold,kzold = kx,ky,kz a, b = np.linalg.eig(H(kx,ky,kz)) a = sorted(a) res1.append(a[0]) res2.append(a[1]) res3.append(a[2]) plt.plot(kpath[1:],res1) plt.plot(kpath[1:],res2) plt.plot(kpath[1:],res3) plt.axvline(flag) plt.ylim([-2,0]) plt.show() if __name__ == '__main__': # a = 1 a = 3.80993 L=-5.53*a M=-3.64*a N=-8.32*a plot1()