Closed k-yoshimi closed 2 years ago
@k-yoshimi Since Hermite pair should be given in (I,J,K,L) and (L,K,J,I), the second criterion is redundant. It is better to delete the following part
else if (isite1 == itmpsite2 && isite2 == itmpsite1 && isite3 == itmpsite4 && isite4 == itmpsite3)
And, if pair (I,J,K,L) , (L,K,J,I) does not exist, it is better to exit with an error message
In the previous comment, I did not consider the standard notation used in the spin systems.
For example, In spin systems, exchange interactions are described as
S^{+}_{A}S^{-}_{B}+S^{-}_{A}S^{+}_{B}
.
In this description,
the Hermite pair is given by
(I,J,K,L) and (J,I,L,K).
This kind of expression is frequently used in the study of the spin systems, it is better to regard the pair [(I,J,K,L), (J,I,L,K)] as the Hermiter pair.
@tmisawa Thank you for your comment. My latest commit fixes the problem. Please check it and if theres's no problem, merge it to the develop branch.
minimum.zip For a memo, I uploaded the minimum input files for this bug. Note that the true GS energy is -0.25 but it is -0.50 in the old version.
When i1 sigma1 i2 sigma2 i3 sigma3 i4 sigma4 val_re val_im is defined and i4 sigma4 i3 sigma3 i2 sigma2 i1 sigma1 val_re -val_im and i2 sigma2 i1 sigma1 i4 sigma4 i3 sigma3 val_re -val_im exists at the same time in InterAll.def, a branching error will occur.
Before
After
Before
After