+1 vote
asked by (170 points)


I am doing DMRG of a two leg ladder model in ITensor julia.

I have calculated the ground sate energy and spin-spin correlation in 1D Heisenberg model and 1D Hubbard model and it gives correct ground state energy and spin-spin(Total spin on each site) .

However, when i calculated DMRG for a two leg ladder model (for 48*2 sites) , it appears the ground state energy is correct, but the spin-spin correlation is antiferromagnetic while the actual correlation should be ferromagnetic.

Here is the Hamiltonian of the code with parameters


N= 2*Nx

sites=siteinds("Electron",N,conserve_qns=true,conserve_nf = true,conserve_sz=true,conserve_nfparity=false)

ampo =AutoMPO()

#intra-leg hopping
for j=1:2:(N-3)

    ampo += -t,"Cdagup",j,"Cup",j+2
    ampo += -t,"Cdagup",j+2,"Cup",j
    ampo += -t,"Cdagdn",j,"Cdn",j+2
    ampo += -t,"Cdagdn",j+2,"Cdn",j

    ampo += -t,"Cdagup",j+1,"Cup",j+3
    ampo += -t,"Cdagup",j+3,"Cup",j+1
    ampo += -t,"Cdagdn",j+1,"Cdn",j+3
    ampo += -t,"Cdagdn",j+3,"Cdn",j+1


#inter-leg hopping


for j =1:2:(N-1)

    ampo += Q(p),"Cdagup",j,"Cup",j+1
    ampo += conj(Q(p)),"Cdagup",j+1,"Cup",j
    ampo += Q(p),"Cdagdn",j,"Cdn",j+1
    ampo += conj(Q(p)),"Cdagdn",j+1,"Cdn",j


# On-site interaction       

for j=1:N

    ampo += U,"Nupdn",j


I kept the particle number fixed as i want to calculate ground sate energy at some particular electron density.

After performing the DMRG with the above Hamiltonian i calculate the spin-spin correlation in the following way

xxcorr = correlation_matrix(psi,"S+","S-")
yycorr = correlation_matrix(psi,"S-","S+")
zzcorr = correlation_matrix(psi,"Sz","Sz")
zz =  0.5* xxcorr + 0.5 * yycorr +  zzcorr

I calculate the spin-spin correlation for a reference site away from the boundary.

But as i mentioned i am not getting the correct spin-spin correlations(which is ferromagnetic for some given parameters).

So ,is there anything wrong in writing the Hamiltonian or in the correlation matrix ?


commented by (70.1k points)
Hi, so I think I'd need to know a little bit more about both the result you are getting and the result you expect.

First of all, when you say you expect the correlations to be ferromagnetic but they are not, how are you analyzing them? A common way is to take a Fourier transform and look for peaks, which can take some care to do properly on a finite-size system.

Second of all, what is the result you expected, in terms of quantitatively what you expected to see?

Thirdly, as you know with numerical methods certain things can be subtle or complicated. It could be that the correlations you expect will become more strong or clear on a larger system size. Did you study some other system sizes?

Finally, did you try different DMRG accuracy parameters (cutoff, maxdim) to see if the results you got varied strongly with those? The energy may not change very much while correlation properties could change more.

Best regards,
commented by (170 points)

Sorry for the late response. The comments to your above questions are as follows

a) I am trying to reproduce the results in a paper, So I know beforehand the results are ferromagnetic spin-spin correlation for some values of the given parameters.

b) Here is the link to the image of the ferromagnetic spin-spin correlation (from the paper) I want to reproduce.

c) I  have studied some larger system sizes like 72*2 and 96*2, and also tried with different parameters (cutoff, maxdim), but still, I didn't get the ferromagnetic spin-spin correlations for some values of the given parameters.

d) As you mentioned above can you give me some hints on how to calculate Fourier transform for a finite-size system in ITensor Julia?

So, can you suggest to me where I am doing wrong?

commented by (70.1k points)
Hi Paban, it's helpful to show that image of the correlations you mentioned, so I can see what you mean.

How many sweeps of DMRG are you doing? Is the energy converged by the last sweep, meaning it has not changed even in the second or third digits for many sweeps before the last one?

How similar or different do the correlations you are finding from the ones in the plot you linked to above? Could you show a plot of your correlations too?

commented by (170 points)
Hi Miles,

The comments to your questions are as follows,

I have done 130  sweeps, in the last two sweeps energy is the same up to 3rd decimal places.

Here is the link to the plot of spin-spin correlation that I have done by myself.



commented by (70.1k points)
Hi Paban,
All your code looks ok to me, and I can see what you mean about the correlations not being what you expected. They do look very different.

Thanks for the information about your number of sweeps and convergence.

My best guess is that there could be a mistake in your Hamiltonian definition. The "intra-leg hopping part" makes me a bit nervous the way you coded it. Are you sure that when the hoppings get to the right-hand edge that the code does not miss one of the last few hopping terms at that edge? I would recommend printing out all of the values of (j,j+2) and (j+1,j+3) to make sure they cover all of the sites that you want to.

Please log in or register to answer this question.

Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.