As described in the documentation, this calculates ['fdagger', 'f'] for sites i<=j. The outcome, however, is a LxL matrix (which cannot be filled by only considering i<=j). So how are the extra terms calculated?
Thanks in advance,
Rafael B.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
all two site correlation measurement are defined via two operators L and R. In your example L=fdagger and R=f. Some have an addition phase term including the one you use implicitly defined via Phase=True.
The diagonal entries are based on a new operator (L * R) via a matrix multiplication. In this specific example, you get the number operator on each site for "free" with the correlation measurement.
The other entries are the measurement L_i R_j as a two site correlator (i different from j). Now you can have i < j and j < i which explains why both triangles in the correlation matrix are filled.
For speed, there should actually be a test and if L = R, then we just fill the entries of the second triangular matrix without calculating them in an extra step.
I hope that gives you a good overview and let us know if you need more details than that.
Best regards,
Daniel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the reply. Right, so I understand that you fill the remaining slots by considering i<j AND j<i. But in the result we see that the out of diagonal elements differ by a minus sign, which indicates that the operators f_dagger and f have been swapped. Is it correct to assume that?
Best,
Rafael
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I am trying to compare some correlation results obtained with OSMPS. When creating the operators (for fermions) I define
myObservables.AddObservable('corr', ['fdagger', 'f'], name='spdm', Phase=True)
As described in the documentation, this calculates ['fdagger', 'f'] for sites i<=j. The outcome, however, is a LxL matrix (which cannot be filled by only considering i<=j). So how are the extra terms calculated?
Thanks in advance,
Rafael B.
Hi Rafael,
all two site correlation measurement are defined via two operators L and R. In your example L=fdagger and R=f. Some have an addition phase term including the one you use implicitly defined via Phase=True.
The diagonal entries are based on a new operator (L * R) via a matrix multiplication. In this specific example, you get the number operator on each site for "free" with the correlation measurement.
The other entries are the measurement L_i R_j as a two site correlator (i different from j). Now you can have i < j and j < i which explains why both triangles in the correlation matrix are filled.
For speed, there should actually be a test and if L = R, then we just fill the entries of the second triangular matrix without calculating them in an extra step.
I hope that gives you a good overview and let us know if you need more details than that.
Best regards,
Daniel
Hi Daniel,
Thanks for the reply. Right, so I understand that you fill the remaining slots by considering i<j AND j<i. But in the result we see that the out of diagonal elements differ by a minus sign, which indicates that the operators f_dagger and f have been swapped. Is it correct to assume that?
Best,
Rafael