Liouvillian gap in ITensor

Dear ITensors team,

I am working on a problem where I need to find our the Liouvillean gap. I have previously worked with ITensor for finding energy gap in Hamiltonian system using ITensor’s DMRG function (following the example given in DMRG Examples · ITensors.jl). My question is: Because Liouvillean is a non-Hermitian object, is it enough to use the same code/setup with the modification that now I put the argument

ishermitian=false

It would be nice if you can comment on this.

Best,
Sourav.

That would be the easiest thing to try, you’ll have to try it out and see how it works.

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

I don’t have much experience with non-Hermitian DMRG, but my intuition is that for the current approach we are using, which just involves changing the local eigensolver from a Hermitian eigensolver (Lanczos) to a non-Hermitian eigensolver (Arnoldi), the closer the operator is to being Hermitian, the better it will work.

Otherwise, there are more advanced techniques for extending DMRG to non-Hermitian operators, for example biorthogonal MPS methods[1][2]. Basically it extends DMRG to target both the dominant left and right eigenvectors of the non-Hermitian operator simultaneously. Unfortunately we don’t have that implemented in ITensor right now but you are free to try to implement it.


  1. ↩︎

  2. ↩︎

Ok, I see. Thanks a lot for the references.

Here’s a very recent paper on non-Hermitian DMRG: [2401.15000] Density-matrix renormalization group algorithm for non-Hermitian systems.

Great :slight_smile: Thanks a lot