Dear ITensors developing team,
I am new to the ITensors package and many thanks for developing it.
I have a problem in finding the ground state with DMRG, julia version of ITensors. I was trying to reproduce the result of a paper: PhysRevB.70.132404.
Background
The system is a cluster of a N-site non-interacting Hubbard ring (c electron) on top of another ring of same size (f electron). The Hamiltonian is
where H_c is the nearest neighbor hopping in the c electron layer, H_f is the orbital energy and the Coulomb energy in the f electron layer, and H_I is the inter-layer interaction. In the paper, they did N=6 case, which I reproduced with ED. I want to do larger N, which cannot be done with ED. So I try to use ITensors DMRG.
What I do:
I map the system to an electron chain,
sites = siteinds("Electron", N2; conserve_qns=true)
where the odd (even) sites correspond to the c (f) electrons, N_2=2N. I worked at half-filling, so the electron number is also 2N. And I also fixed the number of up and down spins, so N electrons up and N electrons down.
state = [isodd(n) ? "Up" : "Dn" for n in 1:N2]
psi0 = randomMPS(sites, state, 10)
I setup the dmrg parameters as (based on Preventing-DMRG-from-getting-stuck-in-a-local-minimum and the example codes hubbard_conserve_particles)
nsweeps = 80
maxdim = [32, 50, 50, 100, 200, 400, 800, 1600]
noise = [1E-4, 1E-5, 1E-6, 1E-7, 1E-8, 1E-10, 0.0]
cutoff = [1E-10]
with observer
obs = DMRGObserver(; energy_tol=1e-9)
What confuses me:
- I started with homogeneous case with N=4,t=1,\epsilon_f^i=-3,U_i=6,V=0.25. Then I compared the ground state (gs) energy and gs expectation values from DMRG with ED. The DMRG outcomes were like
After sweep 19 energy=-16.1479714024833 maxlinkdim=215 maxerr=8.94E-11 time=0.679
After sweep 20 energy=-16.14817580521682 maxlinkdim=211 maxerr=8.00E-11 time=0.685
After sweep 21 energy=-16.148322597419632 maxlinkdim=210 maxerr=9.16E-11 time=0.670
and after 80 sweeps, it gave gs energy
The lowest eigenenergies from ED are
So I assumed the DMRG code managed to capture the gs. However, the gs expectation values are a bit strange. The system is homogeneous for each layer, so the electron density at each site in the same layer should be the same. Actually ED also gives
But, the gs expectation values from DMRG is site dependent
- Then I did another test, with one impurity in the f layer, so \epsilon_f^1=-2,U_1=1 and \epsilon_f^{i=2,3,4}=-3,U_{i=2,3,4}=6, and other parameters remain the same as in 1. This time the lowest eigenenergies from ED are
and DMRG gave (after 80 sweeps)
After sweep 78 energy=-16.16132571151096 maxlinkdim=170 maxerr=9.53E-11 time=0.574
After sweep 79 energy=-16.161325749034507 maxlinkdim=170 maxerr=9.55E-11 time=0.578
After sweep 80 energy=-16.161325799241418 maxlinkdim=170 maxerr=9.49E-11 time=0.568
And I felt it did not converge to the correct gs.
My question:
With the 2 tests above, I guess my setup of DMRG parameters can be problematic and thus the DMRG code did not converge to the gs. I would appreciate it if you could give me some advice on how to get the gs for such system.
Best regards,
Zhen