Program AHB1

How to run the program AHB1

The dimensionality and the lattice size are determined at compile-time by the parameters dd (number of dimensions) and nx (system length) in the include-file 'ahb1.h'. In addition, an integer bm should be set to the highest inverse temperature J/T at which simulations are to be carried out. At run-time, random number seeds are read from a file 'rand.in', which should contain 4 integers written on four separate lines. Other input data are read from a file 'read.in', which should contain a single line as follows:

  dd,nx,beta,nr,mstp,in,istp

  dd   = dimensionality (1,2, or 3) (must be same as dd in ahb1.h)
  nx   = linear system size (must be same as nx in ahb1.h)
  beta = inverse temperature J/T (maxmimum is approximately bm in ahb1.h)
  nr   = number of bin averages to calculate 
  mstp = number of Monte Carlo steps per bin
  in   = 0  to start from scratch, 1 to start from saved configuration 
  istp = number of Monte Carlo steps for equilibration 

In the case in=0, the simulation starts from scratch, i.e., a random spin configuration and a short "empty" operator list. The simulation should then be equilibrated by using istp > 0. After equilibration and after each completed bin the current configuration is written to a file 'conf'. A simulation can be started from an old conf-file by using in=1. If the old configuration was generated at the same beta, it should already be equilibrated an istp=0 can be used. If it was generated at a higher temperature (lower beta) some equilibration steps should be carried out. A configuration generated at a higher beta should not be used as a starting configuration, since it has a larger truncation L than will be needed and L can only be increased by the program.

The program writes progress reports to a log-file 'log.txt'. During equilibration, the current value of the truncation L is written after each 1/10 of the total number of eqilibration steps. Certain error messages are also written to this file (e.g., if a too high beta is used, so that the number of operators exceeds the maximum number determined by bm in 'ahb1.h').

After each completed bin, the accumulated bin-averages of physical quantities are written to the files 'len.dat' and 'mag.dat'. The bin avarages are processed by a separate program, AHB1RES, which writes the calculated expectation values and statistical errors (one standard deviation of the averages) to standard output.

Example run

A 2D lattice with 8*8 sites at maximum beta=32 is specified in the file 'ahb1.h' as follows:

 c=============================================================================
 c     USER-ADJUSTABLE LATTICE SIZE PARAMETERS
 c=============================================================================
       PARAMETER (dd=2)     ! number of dimensions 
       PARAMETER (nx=8)     ! linear size (length) 
       PARAMETER (bm=32)    ! highest (appr.) inverse temperature J/T 
 c=============================================================================

With the following input data:

 read.in: 2  8  32.  20  10000  0  10000 

 rand.in: 46364722   
          53738728 
          24524549 
          79320903 

the output of the program AHB1RES after the simulation program AHB1 has completed all 20 bins is

 Internal energy             =      -0.6733860     0.0001078
 Specific heat               =      -0.1311863     0.1426934
 Uniform susceptibility      =       0.0038150     0.0001561
 Spin stiffess               =       0.1477291     0.0004396
 Staggered structure factor  =       3.7891842     0.0043257
 Staggered susceptibility    =      41.9791255     0.1607310

Note that the error bar of the specific heat is very large. In practice, a useful specific heat estimate can only be obtained at relatively high temperatures. At beta=32 used in this simulation, the 8*8 system is close to its singlet ground state, and therefore the uniform susceptibility is very small.

The CPU time for this simulation was 8 minutes 40 seconds on a PIII running at 866 Mhz.