Ok Continuing on the same question:
Before working with a Liouvillean, I was just trying to see how good the results I might expect for ground state energy for a non-Hermitian system using ITensor DMRG. To this end, I consider an Ising model with imaginary transverse field. I use the code:
L, hx = 12, 0.5
sites = siteinds("S=1/2", L)
H_b = OpSum()
for j=1:L-1
H_b += -1.0 ,"Sz", j, "Sz", j+1
H_b += -1.0*1im*hx, "Sx", j
end
H_b += -1.0*1im*hx,"Sx", L
H = MPO(H_b,sites)
nsweeps = 80
sweeps = Sweeps(nsweeps)
maxdim!(sweeps,10,10,20,20,50,50,100,100,150,150,200,200,400,800,1000)
cutoff!(sweeps,1e-8,1e-8,1e-10,1e-10,1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-14, 1e-14, 1e-14,1e-14,1e-14, 1e-14)
noise!(sweeps,1e-4,1e-4,1e-4,1e-4,1e-6,1e-6,1e-6,1e-8,1e-10,0.0,0.0,0.0,0.,0.,0.)
Energy_obs = DMRGObserver(;energy_tol=1E-11,minsweeps=20,energy_type=Float64)
psi0_init = randomMPS(sites,2)
energy0,psi0 = dmrg(H,psi0_init,sweeps,ishermitian=false;observer=Energy_obs,)
print(energy0)
With this code, the result I get is i) wrong and ii) more alarmingly, each time I run, I get different values of groud state energy. I even tried with minimum sweeps = 10000 apprehending the convergence. But I get the same issue i.e., different runs (which means different initial random MPS) leads to different results.
So, my questions are :
i) Is there any way to improve this code further for non-Hermitian system ?
ii) Is there some criterion for structure of non-Hermitian system where ITensor dmrg with ishermitian=false is supposed to work better?
Best,
Sourav