How are periodic boundary conditions implemented?

General discussions on the ideas behind the algorithm.
Post Reply
Posts: 9
Joined: 01 Nov 2019, 18:29

How are periodic boundary conditions implemented?

Post by Ozaru9000 »

Hi! I was wondering, how the periodic boundary conditions are implemented in TeNPy? In some other post I've read, that the MPS never create loops, so how is this issue bypassed? By means of long range MPOs, or rather differently?
User avatar
Site Admin
Posts: 362
Joined: 21 Jul 2018, 12:52
Location: TU Munich

Re: How are periodic boundary conditions implemented?

Post by Johannes »

Indeed, the MPS is always an open line where a cut of a single virtual leg always divides it into left and right parts - otherwise, the canonical form isometry conditions wouldn't go through e.g. for local expectation values or optimal truncation.

When you use infinite MPS, the Model formally has "periodic" boundary conditions in x direction in TeNPy, which indicates that you do have couplings between the different unit cells. "periodic" is not really the right word, but for determining from where to where you can have terms (when calling Model.add_coupling), it works technically the same way as if you have periodic boundary conditions.

And yes, if you use a finite MPS with periodic boundary conditions in x direction, you indeed get an open MPS with long range couplings. For the naive ordering of the MPS (going 1, 2, ... L for an L-site chain), the NN coupling accross the MPS boundary becomes range L. The Chain allows for a "folded" order, see ordering, where NN couplings map to next-NN couplings for the MPS - this can help to require less DMRG sweeps for convergence.
Post Reply