# How to define and implement a zig-zag chain?

+1 vote
reopened May 24, 2016

Hello,
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.

Regards,
Niraj

answered May 24, 2016 by (19,400 points)
selected May 28, 2016

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: http://itensor.org/docs.cgi?page=formulas/ladder
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:
http://itensor.org/docs.cgi?page=formulas/2d_dmrg

Best,
Miles

commented May 28, 2016 by (400 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.

Regards,
Niraj