0 votes
asked by (340 points)

Hi Miles,

I'm trying to calculate observables from idmrg. The scheme used in the sample "idmrg.cc" is base on the right-orthogonal gauge. But when I use the following code to check the orthogonality, it turns that this condition is not satisfied in the middle of the unicell

int Nuc = 4;
int N = 2*Nuc;
// Other codes
 for(auto ni=1;ni<=N;++ni)
    auto pa=psi.A(ni);
    auto indc = commonIndex(pa,psi.A(ni-1));

where right-orthogonality is satisfied except for the center tensor, i.e., ni=5. The result for that site is not an identity matrix.

Su Wei

1 Answer

0 votes
answered by (70.1k points)

Hi, sorry for the very slow reply. I think the issue may be where you write


The .A method of an MPS is 1-indexed. On the other hand, it does allow you to input A(0), but this retrieves the "center" tensor which has no site index, and is the singular values resulting from a Schmidt decomposition of the infinite system done between two unit cells. So it should not obey the right-orthogonal gauge. I understand this is not well documented. So for version 3 we are moving the iDMRG code to a separate "code" project and planning to replace it with a better implementation that is also better documented.

Best regards,

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.