0 votes
asked by (400 points)

I notice in [1] that ITensor offers DMRG routines for "restricted sweeping", which can be applied to a system's unit cell. I've been scouring the documentation for an example, or any info, regarding this routine. Does anyone have any links to documentation, examples, or papers in which this routine is performed?

I found a little more info in [2], which, if I'm understanding properly, describes a procedure for determining the excited states by sweeping only over the bulk, but leaving the edges fixed to that of the ground state. This procedure also requires "restricted sweeping".

[1] https://itensor.org/docs.cgi?page=classes/dmrg
[2] https://itensor.org/docs.cgi?page=articles/periodic

Any info would be greatly appreciated!

1 Answer

+1 vote
answered by (14.1k points)
selected by
Best answer


In the documentation page you link to (https://itensor.org/docs.cgi?page=classes/dmrg ) the last DMRG version listed can be used for "restricted sweeping".

That version accepts boundary tensors that represent the Hamiltonian projected into a fixed basis (you can think of it as a boundary condition for the DMRG calculation). You would have to pre-calculate those boundary tensors by projecting your Hamiltonian into the MPS basis you are interested in.

If you have any questions about how it would be used, please let us know.


commented by (400 points)
I see, thank you for the response! I do have two questions:

(1) With regard to the ITensor dmrg() function, would one have to construct an MPS with the tensor decomposition
psi = M_1*M_2*_M_3...*M_N ,
where * implies the contraction over bond indices, and with M_1 and M_N having 3 indices as stated for boundary tensors in [1]; then pass psi to dmrg() along with the determined 3-index boundary tensors (say LH,RH), such that the function call takes the form: dmrg(psi,H,LH,RH,sweeps) ? Where I'm guessing LH and RH replace M_1 and M_N. (Or is it implied the boundary tensor go outside the range of indices labeling the MPS psi, something like "M_0" and "M_N+1"?)

(2) How should one think about this when considering a "restricted sweep" over a unit cell? I'm guessing the boundary environment plays the role of periodic boundary conditions.

If there are any papers in which this procedure is utilized, or any more documentation that you can think of, I would greatly appreciate it!

[1] https://itensor.org/docs.cgi?page=classes/dmrg
commented by (14.1k points)
(1) The inputs to the function are:

H = [H_1, H_2, ..., H_N]
psi = [M_1, M_2, ..., M_N]

On the left side, the boundary tensors M_1 and H_1 are assumed to have dangling indices that are shared with tensor L (tensor L is a 3-index tensor, that also has index dag(l') where l is the Index shared between L and M_1). On the right side, those relations must hold for tensors M_N, H_N, and R.

(2) You can think of the boundary tensors as representing some sort of boundary environment, either finite or infinite (but in general, not periodic). If they were trivial (i.e. L and R were product states of decouple degrees of freedom between the MPS links and MPO links), then it would correspond to an open boundary condition. If the environment tensors L and R came from fixed points of some infinite MPS/MPO, it would correspond to infinite boundary conditions. Otherwise, the boundary conditions just represent some finite bath on either side of the "box" you are optimizing.

One could in theory have periodic boundary conditions, but I believe that would require a single boundary tensor connecting the degrees of freedom between tensors M_1, H_1, M_N, and H_N (i.e. a single order-6 boundary tensor, instead of two decoupled boundary tensors L and R). For periodic boundary conditions with a large enough unit cell (and for typical wavefunctions), these two would be approximately equivalent.

One example I know of is performing time evolution of an MPS within a small window using boundary tensors to represent an infinite bath ( https://arxiv.org/abs/1207.0652 ), which would be related to how this might be used in DMRG. Beyond that, I am not sure where this technique has been used, perhaps Miles is aware of other applications.

commented by (400 points)
This was super informative -- thanks!
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.