+1 vote
asked by (650 points)


I was wondering that when we call psi.position(n) to put orthogonal center at n site, it should include some SVD. But SVD should be assigned with "Cutoff" and "Maxm". Why we don't consider that in psi.position(n)?


1 Answer

+1 vote
answered by (70.1k points)

Hi Victor,
There's only a need to provide a "Cutoff" and "Maxm" parameter to the SVD if one wishes to truncate. If one does not want any truncation to happen, then those parameters aren't needed.

The .position method is mainly intended to just shift the orthogonality center of the MPS without changing anything else about the MPS. So typically one doesn't want to truncate, or at least it's not the default behavior.

The SVD inside the position method is defined to just keep the same bond dimensions that the MPS had before position was called.

Finally, the .position method does in fact accept optional named args. But I neglected to mention this in the documentation. So I just updated the documentation to point this out.


commented by (650 points)
Hi Miles,

Thanks for your prompt reply.
So the reason for truncation of MPS in DMRG is mainly to reduce the cost of ED at each bond. The SVD for  shifting orthogonality center doesn't cost that much.

commented by (70.1k points)
Hi Victor,
Your comment is correct to the extent that (1) the ED step is the most costly part of DMRG and (2) truncating the MPS does keep this ED step from being prohibitively costly. However there are many other parts of DMRG that would also be prohibitively costly if one didn't truncate the MPS, as each part of the algorithm has some dependence on the MPS dimension, which would be exponentially big if one didn't truncate it. But also, yes, the actual part about truncating the MPS which also involves shifting the orthogonality is a less costly part of DMRG.

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.