コード例 #1
0
ファイル: VUMPStests.py プロジェクト: mganahl/PyTeN
 def testTFI_LAN_complex(self):
     mps = mpslib.MPS.random(N=1, D=self.D, d=2, obc=False, dtype=complex)
     mps.regauge(gauge='right')
     iMPS = en.VUMPSengine(mps, self.mpo, 'erase_me')
     e=iMPS.simulate(Nmax=10000,epsilon=1E-8,tol=1E-12,lgmrestol=1E-12,\
                     ncv=30,numeig=3,artol=1E-12,arnumvecs=1,\
                     arncv=30,svd=False,solver='LAN')
     self.assertTrue(np.abs(-1.2732394 - e) < 1E-5)
コード例 #2
0
ファイル: HeisVUMPS.py プロジェクト: mganahl/PyTeN
    N = 1

    Jz = args.Jz * np.ones(N)
    Jxy = np.ones(N)
    B = args.Bz * np.ones(N)
    mpo = H.XXZ(Jz, Jxy, B, False)

    if args.dtype == 'complex':
        dtype = complex
    elif args.dtype == 'float':
        dtype = float
    else:
        sys.exit('unknown type args.dtype={0}'.format(args.dtype))

    mps = mpslib.MPS.random(
        N=N, D=args.D, d=d, obc=False,
        dtype=dtype)  #initialize a random MPS with bond dimension D'=10
    filename = args.filename + 'D{0}_Jx{1}_B{2}'.format(
        args.D, args.Jz, args.Bz)
    mps.regauge(gauge='right')
    iMPS = en.VUMPSengine(mps, mpo, args.filename)
    iMPS.__simulate__(Nmax=args.imax,epsilon=args.epsilon,tol=args.regaugetol,lgmrestol=args.lgmrestol,ncv=args.ncv,numeig=args.numeig,Nmaxlgmres=args.Nmaxlgmres,artol=args.artol,arnumvecs=1,\
                      arncv=args.arncv,svd=args.svd,checkpoint=args.cp,solver=args.solver.upper())

    [Gamma, lam, r] = mf.regauge(iMPS._A,
                                 gauge='symmetric',
                                 tol=args.regaugetol)
    print()
    print(lam, np.sum(lam**2))
    print()