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()
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()
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)