+1 vote
asked by (280 points)


I am using dmrg in the ITensor Julia version to calculate various excited states in the 1D spin system. There is a Z2 spontaneous symmetry breaking which should lead to two ground states. I was wondering whether dmrg output for ground state energy in ITensor provides both of these ground states ( one as ground state and the second ground state as an excited state) or a linear combination of them leads to ground state. I would like to know if there is any way to get both ground states rather than a linear combination.

Also, while calculating excited state energy using dmrg, how does the choice of "Weight" will impact the answer? What would be a good guess ( or approach) for choosing the value of "Weight" if a gap is closing between the excited state and ground state or the gap is very small?

Thank you so much,


commented by (400 points)
Hi Ajit,

For your first question, the discussion here might prove to be useful: http://itensor.org/support/3729/symmetry-breaking-transverse-field-ising-model-kitaev-chain. So, in general DMRG is making a trade-off between energy and entanglement. Thus, it would end up picking that state in the nearly degenerate ground state manifold which minimizes entanglement. To obtain a particular ground state, you can consider adding a symmetry breaking term to your Hamiltonian.

commented by (70.1k points)
Thanks for posting this, Navya. I was going to suggest our discussion to Ajit too.

1 Answer

0 votes
answered by (70.1k points)

Hi Ajit,
As mentioned above please do view the other discussion which Navya linked which goes into more detail.

A short answer is that the true ground state of a symmetric system which breaks a symmetry is a symmetric linear combination of the symmetry-broken (quasi-) ground states. But this true ground state is only lower in energy by a very tiny amount than the symmetry-broken states, and has higher entanglement in general. So in practice on moderate to large system sizes DMRG will return a symmetry broken state. It can be a helpful technique to actually force this to happen by applying "pinning" fields on the edge sites to go ahead and select one of the symmetry breaking scenarios.

Regarding the Weight parameter, I don't know a clear theory about how it should be chosen, but I believe it should be larger than the gap between the ground and first excited states. (Otherwise the energy penalty, which the weight adjusts, may not be strong enough for the returned state to be orthogonal.) So I'd recommend proceeding by guessing a moderately large value for the weight, then checking afterward that the returned state is really orthogonal to the previous ones. If you have any problem with convergence, try lowering the weight.

Test this all out on small system sizes, and it's always a good idea to plot real-space properties of your states, especially for excited states which often need many more sweeps to converge fully.


commented by (280 points)
Thank you so much Miles and Navya. Your comments and suggestions were very useful. I am expecting a two fold degeneracy near a critical point using dmrg. I indeed found out that first excited state energy is similar to ground state if I use low value of weight but it might lead to finite overlap between ground and first excited state wavefunction (psi0 and psi1). On the other hand, keeping a larger weight leads to vanishing overlap (orthogonal psi0 and psi1) but it introduces a gap between E0 and E1. I am not sure whether it's finite size effect or something else.
commented by (70.1k points)
Glad it was helpful. Here are some further thoughts:

(1) I think it's really best in a symmetry break scenario to break the symmetry explicity at the boundary, by applying a pinning field on the boundary sites. Here is a paper which discusses this approach in detail https://arxiv.org/pdf/1105.1374

What the pinning will do is make the other ground state now higher in energy, and there will no longer be two ground states. But that is ok and is expected. The idea is that as one makes the system size bigger, both states will still approach the same bulk energy if you subtract off the edge contributions (you can do DMRG on two system sizes, subtract the energies and divide by the number of sites which the systems differ by and this will compute the bulk energy).

It's a cleaner approach since it makes the results no longer depending on which state DMRG happens to pick in a complicated, dynamic way. Instead there is a well defined lowest energy state on any finite system.

(2) To check explicitly if a state is an eigenstate you can compute its energy variance. The code to do this in Julia looks like:

var0 = inner(H,psi0,H,psi0)-inner(psi0,H,psi0)^2
 @show var0

For a well-converged eigenstate, var should be quite small, like less than 1E-6.
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.