def compute(n): spins = [2 for i in range(n)] sc = spinchain.Spin_Hamiltonian(spins) # create the chain sc.clean() sc = spinchain.Spin_Hamiltonian(spins) # create the chain def fj(i, j): if 0.9 < abs(i - j) < 1.1: return 1.0 return 0.0 sc.set_exchange(fj) # set exchange couplings #sc.set_fields(lambda x: [0.2,0.2,0.2]) # set exchange couplings sc.maxm = 10 sc.nsweeps = 2 sc.get_gs() i = 0 j = 1 t0 = time.time() sc.fit_td = True # (x,y) = sc.evolution(nt=100,dt=0.03,name="ZZ",i=i,j=j) (x2, y2) = sc.get_dynamical_correlator(es=es, use_kpm=False, dt=0.1) t1 = time.time() print("Time", t1 - t0) return t1 - t0
import sys import os import numpy as np sys.path.append(os.environ["DMRGROOT"]) # root for dmrg import spinchain n = 30 spins = [2 for i in range(n)] # spin 1/2 heisenberg chain sc = spinchain.Spin_Hamiltonian(spins) # create the spin chain # dimerized coupling def fj(i,j): if abs(i-j)==1: ij = (i+j)%4 dj = -0.2 if ij==1: return 1.0 + dj else: return 1.0 - dj return 0.0 sc.set_exchange(fj) # set those exchange couplings #sc.kpmmaxm = 10 # KPM max m sc.kpmscale = 10.0 import time import matplotlib.pyplot as plt fo = open("DCF.OUT","w") # dynamical correlation function for i in range(n): # loop over sites (xs,ys) = sc.get_spismj(n=1000,mode="DMRG",i=i,j=0)