0 votes
asked by (220 points)

I want to obtain the symmetry-broken ground state of the Ising chain.
Interestingly, it seems that it makes a difference for ITensor whether I use

for (int i = 1; i < N; i++)
    ampo += -1, "Sx", i, "Sx", i+1;      


for (int i = 1; i < N; i++)
    ampo += -0.5, "S+", i, "S+", i+1;
    ampo += -0.5, "S-", i, "S-", i+1;
    ampo += -0.5, "S+", i, "S-", i+1;
    ampo += -0.5, "S-", i, "S+", i+1;

to construct the MPO.
The upper version delivers a wrong result whereas the version below delivers the correct ground state after applying DMRG several times with decreasing field in x-direction to finally end up in the symmetry-broken ground state. Shouldn't the two versions be equivalent and therefore deliver the same results? You can find a working example here:


All the best,

1 Answer

+1 vote
answered by (14.1k points)
selected by
Best answer

Hi Matthias,

Since Sx = 1/2(S+ + S-), I think to get the same Hamiltonian you would need to use:

ampo += -2, "Sx", i, "Sx", i+1;

(since Sxi Sxi+1 = 1/2 (S+i + S-i+1) 1/2 (S+i + S-i+1) = 1/4 (S+ S+ + S- S- + S+ S- + S- S+)).

though I haven't tested it. Could you try it out?


commented by (220 points)
Hi Matt,

Thank you for your fast reply. I cannot believe I actually messed up the prefactors and was not able to see it, although I have checked for it.

All the best,
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.