How to define and implement a zig-zag chain?

+1 vote
asked May 14, 2016 by nrgphy123 (340 points)
reopened May 24, 2016 by miles

I am wondering how I can define and implement a zig-zag chain for my DMRG code. I am assuming that if I don't mention anything about the lattice geometry, the system will be treated as a 1D linear chain. Could you please help me with this? Thanks in advance.


1 Answer

0 votes
answered May 24, 2016 by miles (16,920 points)
selected May 28, 2016 by nrgphy123
Best answer

Hi Niraj,
Thanks for the question. Many other people may have the same question so I thought it was a good one.

The answer is that DMRG treats every system as a 1d chain in the sense that it represents the wavefunction as a matrix product state even for a 2d Hamiltonian. But one can input a 2d Hamiltonian anyway by numbering the sites in a 1d fashion then defining the interactions in the geometry of the 2d system, still using the 1d labeling of sites. From the 1d point of view the Hamiltonian has further-neighbor interactions (up to approximately the size Ny of the system in the y-direction) but DMRG has no fundamental problem dealing with different ranges of interactions. The main issue that occurs is that 2d wavefunctions have fundamentally more entanglement and so the MPS sizes get large.

I've created a code formula for creating a ladder Hamiltonian using AutoMPO:
As you can see there is a 1d ordering of sites (indexed by the variable j) with odd sites corresponding to the first leg of the ladder and even sites corresponding to the second leg.

For a more general idea of how to do "wider" 2d systems you can look at this code formula:


commented May 28, 2016 by nrgphy123 (340 points)
Hi Miles,
       Thank you so much for the reply. I believe I understand it now. I will let you know if I have any more questions or concerns.

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.