Hatree-Fork單粒子格林函數計算

在完成Hatree-Fork自洽迭代後,計算單粒子格林函數和譜函數很容易,只需要如下計算:

這個計算量並不大,是可以接受的程度

nw = 200
delta = 0.002
nk = 200
ks = np.linspace(0,2*pi,nk)
omega =   np.linspace(-1,1,nw) 
Gk_up =   np.zeros((nw,nk,m,m),dtype='complex')
Gk_down = np.zeros((nw,nk,m,m),dtype='complex')
Ak_up = np.zeros((nw,nk),dtype='double')
Ak_down = np.zeros((nw,nk),dtype='double')
N = 32
for i in range(nw):
    for j in range(nk):
        Hk0 = Hamiltonian_H0(ks[j],N)
        Hk_up = Hk0 + U*(Ndown_avg -0.5*np.eye(m))
        Hk_down = Hk0 + U*(Nup_avg - 0.5*np.eye(m))
        Gk_up[i,j,:,:] = inv((omega[i]+1j*delta)*np.eye(m)-Hk_up)
        Gk_down[i,j,:,:] = inv((omega[i]+1j*delta)*np.eye(m)-Hk_down)
        Ak_up[i,j] = -np.imag(Gk_up[i,j,:,:].trace())/pi
        Ak_down[i,j] = -np.imag(Gk_down[i,j,:,:].trace())/pi
X,Y = np.meshgrid(ks,omega)
plt.pcolormesh(X, Y, Ak_up)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章