[ALPS-users] mps_optim: measurement - bug?

Mateusz Łącki mateusz.lacki at gmail.com
Sat Jan 14 18:17:06 CET 2017


Dear All.
I would like to report a likely bug.

I play with a simple transverse ising model for S=1/2. I  take a short chain of length say 8, compute magnetization in x and z direction. When I compute the same input with mps_optim and sparsediag i obtain different results. Both codes give me different magnetizatios in mps_optim measurement seems to be wrong by a factor.

I changed the definition of a default model  “spin” (see below), the coupling is along x axis and field is along z. I consider the following input:

LATTICE="inhomogeneous chain lattice"
MODEL_LIBRARY="models.xml"

MODEL="spin"
J=1
SWEEPS=8
chkp_each=8

MEASURE_LOCAL[Local magnetization Xa]=Splus
MEASURE_LOCAL[Local magnetization Xb]=Sminus
MEASURE_LOCAL[Local magnetization X1]=Sx
MEASURE_LOCAL[Local magnetization X2]=Sxx
MEASURE_LOCAL[Local magnetization Z]=Sz
MAXSTATES=40;
NUMBER_EIGENVALUES=1;

{h=0;Gamma=0;L=8} 

*******************
In the above the Sxx operator is defined exactly the same as Sx:
<SITEOPERATOR name="Sx" site="x">
  1/2*(Splus(x)+Sminus(x))
</SITEOPERATOR>

but with 1/4 factor, not 1/2:
<SITEOPERATOR name="Sxx" site="x">
  1/4*(Splus(x)+Sminus(x))
</SITEOPERATOR>


There are 2 runs that are important for my message:

RUN A):
running the above input with sparsediag gives (at any site):
Local magnetization Xa=0.5
Local magnetization Xb=0.5
Local magnetization X1=0.5
Local magnetization X2=0.25

Which makes sense, as Sx=0.5*(Jplus + Jminus)

RUN B):
running the above input with mps_optim gives (at any site):
Local magnetization Xa=0.5
Local magnetization Xb=0.5
Local magnetization X1=1.0
Local magnetization X2=1.0


My conclusion:
It seems that measurement ignores the factor 1/4 in the definition of Sxx and 1/2 in the definition of Sx. If it is indeed the case (not stupid mistake on my side), would it be possible to issue a patch?

If I change 
  <BONDTERM source="i" target="j">
    <PARAMETER name="J#" default="J"/>
    -J#*Sx(i)*Sx(j)*4
  </BONDTERM>

into 
  <BONDTERM source="i" target="j">
    <PARAMETER name="J#" default="J"/>
    -J#*Sxx(i)*Sxx(j)*4
  </BONDTERM>

then I get a correct factor 4 reduction in energy. So it seems only the mesurement ignores the numerical factor.

If I exchange x-z direction in the Hamiltonian everything seems fine.

Best,
Mateusz Łącki

 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3707 bytes
Desc: not available
URL: <https://lists.phys.ethz.ch/pipermail/comp-phys-alps-users/attachments/20170114/e32b699a/attachment.bin>


More information about the Comp-phys-alps-users mailing list