Пример #1
0
def perco_fuliang():
    '''
    Get the bulk entanglement spectrum for Fu Liang's work.
    '''
    model,perco=get_models(L=5,size=5,form='x',N=100)
    hgen=model.hgen
    kspace=perco.get_kspace()
    kpath=path_k([kspace.G,kspace.special_points['X'][0],kspace.M[0],kspace.G],N=50)
    ion()
    cfunc=lambda k:EU2C(*eigh(hgen.Hk(k)),T=0.1)
    ck_red=perco.reduce_k(cfunc,kpath)
    hkmesh=Hmesh(C2H(ck_red,T=1.))
    ekmesh=hkmesh.getemesh()
    kpath.plot(ekmesh,mode='abs')
    ylim(-5,5)
    pdb.set_trace()
Пример #2
0
 def test_symm(self,useC=True):
     perco=self.get_perco(L=5,size=5,form='x')
     hgen=self.model.hgen
     kspace=perco.get_kspace()
     kpath=path_k([kspace.G,kspace.special_points['X'][0],kspace.M[0],kspace.G],N=40)
     ion()
     if useC:
         cfunc=lambda k:EU2C(*eigh(hgen.Hk(k)),T=0.1)
         ck_red=perco.reduce_k(cfunc,kpath)
         hkmesh=Hmesh(C2H(ck_red,T=1.))
     else:
         hfunc=lambda k:hgen.Hk(k)
         hk_red=perco.reduce_k(hfunc,kpath)
         hkmesh=Hmesh(hk_red)
     ekmesh=hkmesh.getemesh()
     kpath.plot(ekmesh,mode='abs',ls='--' if useC else '-')
     ylim(-5,5)
     pdb.set_trace()
Пример #3
0
 def test_bandrecover(self,useC=True):
     perco=self.get_perco(L=1,size=1,form='#')
     T=1.
     hgen=self.model.hgen
     kspace=perco.get_kspace()
     kpath=path_k([kspace.G,kspace.special_points['X'][0],kspace.M[0],kspace.G],N=50)
     if useC:
         cfunc=lambda k:EU2C(*eigh(hgen.Hk(k)),T=T)
         ck_red=perco.reduce_k(cfunc,kpath)
         hkmesh=Hmesh(C2H(ck_red))
     else:
         hfunc=lambda k:hgen.Hk(k)
         hk_red=perco.reduce_k(hfunc,kpath)
         hkmesh=Hmesh(hk_red)
     ekmesh=hkmesh.getemesh()
     ekmesh0=Hmesh([hgen.Hk(k) for k in kpath]).getemesh()
     #kpath.plot(ekmesh,mode='abs')
     #kpath.plot(ekmesh0,mode='abs',color='r',ls='--')
     assert_allclose(ekmesh,ekmesh0,atol=1e-4)