Hi, I have been using TEBD for time-evolving my system with open boundary conditions, but I think for my particular system that periodic boundary conditions will have a very different outcome. So I would like to do TEBD with PBC. For this, I need to apply a nonlocal operator between the farthest right sites of my MPS to the farthest left sites. I am trying to determine the best way of doing this. My Hamiltonian is made up of 3-site gates, so for TEBD I am breaking up my Hamiltonian into three parts each of which consists of gates that commute with one another (like the even/odd breakdown but for mod 3 instead of mod 2).
I have a few possible ideas but am wondering if there was anything better. My ideas are as follows.
-
Use SWAP gates. For example, if I have N sites, I could use SWAP gates to move site N to the left of site 1 so that I can apply a local 3-site gate on N, 1, and 2. But I worry this method would be computationally costly as it would need N-1 SWAP gates to move site N to the left of site 1 and then another N-1 to move it back.
-
Add two additional sites to the right of site N which are a copy of sites 1 and 2. Then, whenever a gate is applied to sites 1 or 2 on the left, I could copy that data over to the right-most sites, allowing local 3-site operators to apply to N-1, N, 1 or N, 1, 2. Or vice-versa, copying the data from the right-most sites to the left-most. However, naively copying won’t work since the indices for the left-most sites will be different for those on the right. I saw there were methods relating to replacing or swapping indices that may be useful here, but I’m not sure. I should note that I’m using QN conservation as well.
-
Something to do with MPO evolution. I know MPOs via
OpSum()
can more easily include periodic boundary conditions, and I luckily have an exact form of my evolution operator, so exponentiation won’t be a problem. But my evolution operator is 3-site andOpSum()
I believe only allows adding 1-site operators.
If there is anything else I could consider, please let me know. Thank you!