SSE program for the 2D S=1/2 Heisenberg antiferromagnet

Program: ssebasic

For given lattice lengths Lx, Ly, and inverse temperature beta=J/T, the program computes the energy, specific heat, squared sublattice magnetization, spin stiffness (in the x and y directions), and the magnetic susceptibility.

Running instructions

Input:

File read.in containing:

  lx  ly  beta
  nbin  msteps  isteps

Line 1 Column 1: System x length lx (integer)
Line 1 Column 2: System x length ly (integer)
Line 1 Column 3: Inverse temperature beta=J/T (real)
Line 2 Column 1: Number of bins (integer)
Line 2 Column 2: Number of MC sweeps / bin (integer)
Line 2 Column 3: Number of MC sweeps for equilibration (integer)

Example read.in (N=8)

    8      8        4.0
    20     10000    10000

File seed.in containing a random number seed (integer)

Output:

Written to a file results.txt.

The self-determined cut-off of the Taylor expansion is reported on the first line. This number is written to the file also during the equilibration part of the simulation. The number of bins completed so far is on the second line. The results for the various physical quantities follow after the ======= line, with the error bar (one standard deviation of the mean) following the computed expectation values. All quantities are given per spin:

Line 1: Energy (up to a minus sign)
Line 2: Specific heat
Line 3: Square of the sublattice magnetization
Line 4: Spin stiffness in the x lattice direction
Line 5: Spin stiffness in the y lattice direction
Line 6: Spin stiffness average
Line 7: Magnetic susceptibility

Examples and comments

With the read.in file given above (8*8 lattice, inverse temperature beta=J/T=4), the following output was generated in results.txt (the results of course depend on the random seed used). The calculation took about 15 seconds on a MacBook Air.

  Cut-off L :  498
  Number of bins completed :  20
  =========================================
  -E/N       :     0.66827225    0.00020682
   C/N       :     0.06549587    0.01610406
   ms**2     :     0.17663510    0.00030052
   rhos_x    :     0.21461813    0.00125239
   rhos_y    :     0.21378188    0.00113683
   rhos_av   :     0.21420000    0.00101809
   X(0,0)    :     0.05486312    0.00024252
  =========================================

Note the large error bar on the specific heat. It is very difficult to compute it accurately for large systems at low T.

For this L*L lattice the spin stiffness constants rhos_x and rhos_y are the same in the x and y direction. Its average is also given as rhos_av; it's error bar is smaller because of the averaging. In a rectangular Lx*Ly system (Lx and Ly) different, the x and y stiffnesses will be different.

In order to obtain ground state properties, a larger beta has to be used. These are results obtained for the 8*8 system at beta=32, using the same number of bins and speps/bins as above):

  Cut-off L :  3452
  Number of bins completed :  20
  =========================================
  -E/N       :     0.67347541    0.00008077
   C/N       :    -0.00563635    0.20961121
   ms**2     :     0.17786945    0.00013501
   rhos_x    :     0.22011281    0.00066053
   rhos_y    :     0.22233328    0.00062287
   rhos_av   :     0.22122305    0.00043888
   X(0,0)    :     0.00370500    0.00014709
  =========================================

One good check for obtaining the T->0 limit is that the uniform susceptibility X(0,0) should be 0 (or extremely small), indicating that only a singlet state (the ground state) contributes to the thermodynamics. In the results above one can see that X(0,0) is small, but still clearly different from 0. Going to beta=64 gives the following output:

  Cut-off L :  6753
  Number of bins completed :  20
  =========================================
  -E/N       :     0.67345773    0.00008345
   C/N       :     0.00754591    0.36350415
   ms**2     :     0.17803665    0.00011365
   rhos_x    :     0.22042559    0.00085950
   rhos_y    :     0.22094027    0.00078177
   rhos_av   :     0.22068293    0.00065517
   X(0,0)    :     0.00001000    0.00000671
  =========================================

Now X(0,0) is significantly smaller, almost 0 within the error bar, but other quantities are not much different from before. The beta needed to obtain ground state properties also depends on the error bars (the length of the run). With increasing numbers of Monte Carlo sweeps, one can detect smaller deviations from T=0 results, and, thus, higher beta is required. The beta=64 run above took about 3 minutes on a MacBook Air computer.