建議直接將單粒子格林函數保存下來,這樣計算量小
先直接取omega‘ 算chi0測試一下,直接計算的時間複雜度是O(n^4)
nw = 200
qs = np.linspace(0,2*pi,nk)
omega_p = np.linspace(-3.5,3.5,nw)
chi0 = np.zeros((nw,nk,m,m),dtype='complex')
for i in range(nk):
for j in range(nk):
for k in range(nw):
k_plus_q = (i+j)%nk
k_mines_q = (i-j)%nk
chi0[0,i,:,:] += fermi(omega_p[k], mu, T)*(np.imag(Gk_up[k,j,:,:].T)*Gk_down[k,k_plus_q,:,:]+np.imag(Gk_down[k,j,:,:])*Gk_up[k,k_mines_q,:,:].T)
chi0 = chi0/nk/nw/N
還是要解決這個計算問題。