Hello All,
I have been trying to reproduce a result from these two papers: https://journals.jps.jp/doi/10.1143/JPSJ.64.3409 and https://arxiv.org/abs/cond-mat/0403035v3 using the dmrg code from alps-2.1.1-r6176-src-with-boost. I have a reason to use this older version, which I'll elaborate on later.
The Heisenberg XXZ model, with Ising anisotropy Jz<1, in the presence of a transverse field hx (Gamma in the models.xml file), shows a staggered magnetization in the y-direction, for hx < h_c. h_c is roughly sqrt(2*(1+Jz)). (Ref. the above two papers.)
In the models file, <SITEOPERATOR name="Sy" site="x"> (1/(2*I))*(Splus(x)-Sminus(x)) </SITEOPERATOR>
I set Jz = 0.25, Jxy = 1, Gamma (or hx) = 1.1 (which is < h_c for the given Jz) and chain length = 64, with open boundary conditions. MAXSTATES=70 and SWEEPS=10. I measure local Sy and then after the data have been generated, calculate the staggered average, by summing over the local expectation values for all sites, with alternating weights +1 and -1.
However, the measured local <Sy> is identically zero for all sites. So the staggered average also turns out to be zero.
---> first discrepancy - Staggered Magnetization in y should have been non-zero.
- - - -
The XXZ chain has spin-rotation symmetry in the spin-XY plane, so whether we define hx as the transverse field (with hz = hy = 0) or hy as the transverse field (with hx = hz = 0), we expect to get the same results, theoretically. So the XXZ chain with hy = 1.1 (hz=hx=0) should yield a staggered magnetization in the x-direction.
To check this, I added -hy#*Sy(i) in the site term of the "spin" Hamiltonian in the models file.
Now I get a staggered magnetization in the x-direction, as expected theoretically.
I then removed the restriction of "alps::numeric::real" from the dmrg.h and measurement_operators.h files and recompiled alps, so that I can check the real and imaginary parts of the expectation values of Splus and Sminus and see whether these match with the corresponding expectation values of Sx and Sy respectively.
Case 1: For hx = 1.1 (h=hy=0), the expectation values for the zeroth site of the chain are: Sx(0) = (0.432462,0) Sy(0) = (0,1.52059e-17) Splus(0) = (0.432462,0) Sminus(0) = (0.432463,0)
Case 2: For hy = 1.1 (h=hx=0), these are: Sx(0) = (-0.157932,-1.64072e-18) Sy(0) = (0.43251,5.62317e-19) Splus(0) = (-0.157932,0.43251) Sminus(0) = (-0.157932,-0.43251)
For case 1, the imaginary parts of the expectation values of Splus and Sminus for the zeroth site are zero (for all sites). Consequently, Sy is also identically zero for all sites, which is not expected on theoretical grounds. The Sx value is as expected.
For case 2, the real and imaginary parts of Splus and Sminus are giving the expected values of Sx and Sy, atleast qualitatively.
---> second discrepancy - Transverse fields hx and hy are giving different results; error in the measurement of the imaginary parts of Splus and Sminus.
- - - -
I request the ALPS community to look into this issue. These discrepancies have not been resolved in the newer releases of alps (2.2.b3-r7462, 2.2.b4 and 2.3.0) either. In fact, the newer versions do not give reasonable results for the XXZ chain with transverse field at all (atleast for the parameters chosen above).
Do let me know if there's any possible work-around or if there's Anything I could do in the code's modules to make things work as expected.
With best regards to the entire community, Pradeep Thakur.
comp-phys-alps-users@lists.phys.ethz.ch