Esempio n. 1
0
def solve1_update(J,nsite,override=True,C2parity=None,h=0.):
    '''Get and store the eigen vectors and eigen values for ground state.'''
    model=IsingModel(J=J,h=h,nsite=nsite)

    spaceconfig=SpinSpaceConfig([2,1])
    H_serial=model.H_serial
    expander=RGHGen(spaceconfig=spaceconfig,H=H_serial,evolutor_type='null')
    t0=time.time()
    H=get_H(expander)
    Emin,EV=eigsh(H,k=2,which='SA')
    t1=time.time()

    print 'The Ground State Energy for %s: %s, Elapse %s.'%(model,Emin,t1-t0)
    print 'FIN - CORE:%s'%RANK

    for i in xrange(2):
        suffix='%s_%s.dat'%(model.get_str(),i)
        filename_mps='data/mps_'+suffix
        filename_eng='data/eng_'+suffix
        mps=state2MPS(EV[:,i],sitedim=2,l=0)
        mps.save(filename_mps)
        savetxt(filename_eng,Emin)
Esempio n. 2
0
def solve1(J,target_block,nsite,override=True,C2parity=None,h=0.):
    '''Get and store the eigen vectors and eigen values for ground state.'''
    model=IsingModel(J=J,h=h,nsite=nsite)
    suffix='%s_%s.dat'%(model.get_str(),target_block)
    filename_mps='data/mps_'+suffix
    filename_eng='data/eng_'+suffix
    if not override and os.path.isfile(filename_mps):
        Ei=loadtxt(filename_eng)[0]
        return Ei,MPS.load(filename_mps)

    spaceconfig=SpinSpaceConfig([2,1])
    H_serial=model.H_serial
    expander=RGHGen(spaceconfig=spaceconfig,H=H_serial,evolutor_type='masked')

    t0=time.time()
    dmrgegn=DMRGEngine(hgen=expander,tol=1e-7,reflect=False,eigen_solver='JD')   #we can not use reflect here, because SOC do not meet reflection condition!
    dmrgegn.use_U1_symmetry(model.qnumber,target_block=target_block)
    Emin,mps=dmrgegn.run_finite(endpoint=(5,'<-',0),maxN=[10,25,50,70,70,70,70],tol=1e-8)
    t1=time.time()
    print 'The Ground State Energy for %s: %s, Elapse %s.'%(model,Emin,t1-t0)
    print 'FIN - CORE:%s'%RANK
    mps.save(filename_mps)
    savetxt(filename_eng,Emin)
    return Emin,mps