投影对角化方法

 ki和kj是一些列离散的动量,在前面的对角化计算中,直接将本征向量系数都存下来,由于投影对角化,只需要存边缘态的特征值和特征向量

 

nk = 512
N = 32
k = np.linspace(0,2*pi,nk)
band = np.zeros((4*N, nk))
Ak = np.zeros((4*N,nk),dtype="complex")
for i in range(nk):
    Hk0 = Hamiltonian_H0_SU4(k[i],N)
    E, A = LA.eigh(Hk0)
    band[:,i] = E
    Ak[:,i] = A[:,N-1] 

 

def Hamiltonian_Heff(nk,iq,Ak,U,N):
    H = np.zeros((nk,nk),dtype='complex')
    for j in range(nk):
        j_q = (j - iq + nk)%nk
        for i in range(j,nk):
            i_q = (i-iq + nk)%nk
            H[j,i] = -np.sum(Ak[:,i_q].conj()*Ak[:,i]*Ak[:,j_q]*Ak[:,j].conj())
    
    H = H + H.T
    
    for i in range(nk):
        i_q = (i - iq + nk)%nk
        H[i,i] = np.sum(np.power(np.absolute(Ak),2).sum(axis=1)*np.power(np.absolute(Ak[:,i_q]),2))
    
    return U*H/N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值