# Liouvillian gap in ITensor

**URL:** <https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445>\
**Category:** ITensor Julia Questions\
**Created:** [January 25, 2024, 12:28pm UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445 "2024-01-25T12:28:58Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![sourav](https://avatars.discourse-cdn.com/v4/letter/s/a4c791/32.png) [@sourav](https://itensor.discourse.group/u/sourav)\
**Post date:** [January 25, 2024, 12:28pm UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445/1 "2024-01-25T12:28:58Z")

</div>

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](https://itensor.github.io/ITensors.jl/stable/examples/DMRG.html)). 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

```auto
ishermitian=false

```

It would be nice if you can comment on this.

Best,  
Sourav.

---

<div class="post-metadata">

**Author:** ![mtfishman](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/mtfishman/32/11_2.png) [@mtfishman](https://itensor.discourse.group/u/mtfishman)\
**Post date:** [January 25, 2024, 5:35pm UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445/2 "2024-01-25T17:35:57Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![sourav](https://avatars.discourse-cdn.com/v4/letter/s/a4c791/32.png) [@sourav](https://itensor.discourse.group/u/sourav)\
**Post date:** [January 25, 2024, 7:55pm UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445/3 "2024-01-25T19:55:50Z")

</div>

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:

```auto
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

---

<div class="post-metadata">

**Author:** ![mtfishman](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/mtfishman/32/11_2.png) [@mtfishman](https://itensor.discourse.group/u/mtfishman)\
**Post date:** [January 25, 2024, 8:26pm UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445/4 "2024-01-25T20:26:26Z")

</div>

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. 

> **[Biorthonormal transfer-matrix renormalization-group method for non-Hermitian...](https://journals.aps.org/pre/abstract/10.1103/PhysRevE.83.036702)**
>
> A biorthonormal transfer-matrix renormalization-group (BTMRG) method for non-Hermitian matrices is presented. This BTMRG produces a dual set of biorthonormal bases to construct the renormalized transfer matrix with only half the dimensions of the...

2. 

> **[Biorthonormal Matrix-Product-State Analysis for Non-Hermitian Transfer-Matrix...](https://arxiv.org/abs/1105.2596)**
>
> We give a thorough Biorthonormal Matrix-Product-State (BMPS) analysis of the Transfer-Matrix Renormalization-Group (TMRG) for non-Hermitian matrices in the thermodynamic limit. The BMPS is built on a dual series of reduced biorthonormal bases for the...

---

<div class="post-metadata">

**Author:** ![sourav](https://avatars.discourse-cdn.com/v4/letter/s/a4c791/32.png) [@sourav](https://itensor.discourse.group/u/sourav)\
**Post date:** [January 25, 2024, 9:18pm UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445/5 "2024-01-25T21:18:27Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mtfishman](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/mtfishman/32/11_2.png) [@mtfishman](https://itensor.discourse.group/u/mtfishman)\
**Post date:** [January 29, 2024, 1:17pm UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445/6 "2024-01-29T13:17:28Z")

</div>

Here’s a very recent paper on non-Hermitian DMRG: [[2401.15000] Density-matrix renormalization group algorithm for non-Hermitian systems](https://arxiv.org/abs/2401.15000).

---

<div class="post-metadata">

**Author:** ![sourav](https://avatars.discourse-cdn.com/v4/letter/s/a4c791/32.png) [@sourav](https://itensor.discourse.group/u/sourav)\
**Post date:** [January 31, 2024, 6:49am UTC](https://itensor.discourse.group/t/liouvillian-gap-in-itensor/1445/7 "2024-01-31T06:49:56Z")

</div>

Great 🙂 Thanks a lot
