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