+1 vote
asked by (220 points)

I am using the code for calculating the correlation functions of a free
particle in 1 D using the itensor available codes by only keeping the kinetic energy term without impurity or interactions using the codes

https://github.com/ITensor/ITensor/blob/master/sample/exthubbard.cc http://itensor.org/docs.cgi?page=formulas

The analytical expression of the correlation function for a free particle is given by

G(i,j)=sin(kF(i-j))/(pi(i-j)).

Now if we scale (by a factor say h) such that

i -> hi
j -> h
j
kF -> kF/h

then

G(hi,hj)=sin(kF(i-j))/(pih(i-j)) = G(i,j) / h
OR
Log[G(hi,hj)/G(i,j)] = - log[h]

Now I am doing for 100 sites and quarter filling, i.e. No. of particles =
50. When I plot Log[G(hi,hj)/G(i,j)] vs log[h], I should get a straight
line with slope -1.

But I am not getting a line quite straight and when I do a least square
fit, I get a slope of -.029 for 10 sweeps and -0.43 for 100 sweeps. Should
I increase the number of sweeps to more and expect it to go to -1,
although this is computationally quite expensive. I just wanted to make sure that I am doing the free particle case correctly so that I can proceed to more complicated things.

1 Answer

+1 vote
answered by (25k points)

Hi, so it turns out that the case of totally free/non-interacting particles is actually one of the most difficult limits for the DMRG method (assuming the system is gapless; if it's gapped then it works better). Basically the reason is that such systems are hard to represent as MPS and are very sensitive to perturbations.

So I'm not too surprised that you are observing a very slow convergence as a function of sweep number.

You may want to just try a much smaller system, although the finite size effects will of course be larger. Or you may want to compare an easier to converge quantity, such as just the total energy.

But as you start to include interactions it should be possible to converge the wavefunction with much fewer sweeps (often as few as 5 or 10 sweeps).

commented by (220 points)
Our main motive behind using DMRG is to validate the analytical results of two point correlation functions for gapless systems obtained using a novel analytical technique developed by us. But before that we have to validate the limiting cases of no impurity and/or no interactions.  But as you have mentioned that for gapless systems its difficult. We are really surprised that PRB editors and Prof. Duncan Haldane are insisting us to compare the results with DMRG. They should know better that  it is unsuitable to study gapless systems. Is there some trick which can do this which we are
not aware of?
commented by (25k points)
Hi, so it's not unsuitable to study gapless systems in general. It's just that one has to work harder to make sure it is converged, including choosing a good initial state. For the particular case of gapless free fermions it can be hard to choose a good initial state (except for doing a rather detailed construction of the exact solution as an MPS), so this can be one reason it's hard to converge.

What I don't understand, though, is if it's non-interacting why do you need to use DMRG when you can just compute the exact solution? If it's to check the method I would think a better check would be to compare the DMRG results for an *interacting* system to exact diagonalization on a small system then show evidence that results are converged (i.e. not changing from sweep to sweep & having a small truncation error) on larger systems.
commented by (220 points)
Thanks for the quick response. We have the analytical solution for the interacting system but we first wanted to check the non interacting one with dmrg.

"...the DMRG results for an *interacting* system to exact diagonalization
on a small system then show evidence that results are converged   on
larger systems."

Our analytical results (NCBT) are valid only in the thermodynamic limit so
verifying for a small system is out of the question. There is an
additional problem that our results are valid for continuum systems only
not lattice systems. Finally we are only able to correctly give the
asymptotic forms of the correlation functions. Unless DMRG can help us
verify these results with the above limitations/caveats, DMRG is not
useful to us. We are increasingly convinced that DMRG is not of much use for the
above purpose.
commented by (25k points)
I see. You'll have to decide what you think is most helpful for you, of course, and all methods have their own limitations including DMRG.

To re-emphasize one point, though, it's not that DMRG won't work for non-interacting fermions. It's just that you may have to start with a well-chosen initial state and do many sweeps in order to get a well converged result. With a gapped, interacting system, things are often much easier to converge.
commented by (220 points)
At the outset we thank you for spending so much time clarifying our
misconceptions. I am aware of how to adjust the number of sweeps. But I do
not know how to choose a better initial state to study gapless systems.
Perhaps this is the key. Could you point me to a piece of code that makes
this better choice which I can then incorporate and see if things improve?
commented by (25k points)
Hi, so the best way to prepare a matrix product state which is the initial state of a free fermion system is using the technique explained in this paper: https://arxiv.org/abs/1504.07701

However, that technique will basically already construct the exact state (up to very small truncation errors) so there will be nothing left for DMRG to do!  (Assuming the state constructed is the ground state.)

For a more approximate preparation of a good initial state, you could make creation operators which add fermions into states defined by orbitals which are spread out in real space, or you could place them on lattice sites then do a small amount of imaginary time evolution to spread out their wavefunctions somewhat and lower their kinetic energy.

I don't have any code readily available to do these things unfortunately, since it's somewhat of a special and technical case.
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.

Categories

...