Exact diagonalization of the S=1/2 Heisenberg chain
(using momentum states)

Program: hchan_mk

Running instructions

Input: File read.in containing:
Column 1: System size N (integer)
Column 2: Estimated maximum block hilbert space size rm (integer)

Example read.in (N=8, rm=20)

    8  20

Output: File eig.dat containing:
For each sector of fixed number of up spins nu and momentum k (integer, k=0,...,N/2):
Line 1: nu,k and the block size nst, followed by nst lines with:
Column 1: Eigenvalue number (integer)
Column 2: Energy eigenvalue (real)
Column 3: Spin quantum number (real)

File low.dat containing lowest eigenstate for each sector:
Column 1: k (integer)
Column 4: Energy eigenvalue (real)
Column 5: Spin quantum number (real)

Examples and comments

Following are results for N=6. The file eig.dat:

 nu = 0  k =  0    nst = 1
    0      1.5000000000      3.0000000000
 nu = 1  k =  0    nst = 1
    0      1.5000000000      3.0000000000
 nu = 1  k =  1    nst = 1
    0      1.0000000000      2.0000000000
 nu = 1  k =  2    nst = 1
    0     -0.0000000000      2.0000000000
 nu = 1  k =  3    nst = 1
    0     -0.5000000000      2.0000000000
 nu = 2  k =  0    nst = 3
    0     -2.1180339887      1.0000000000
    1      0.1180339887      1.0000000000
    2      1.5000000000      3.0000000000
 nu = 2  k =  1    nst = 2
    0     -1.0000000000      1.0000000000
    1      1.0000000000      2.0000000000
 nu = 2  k =  2    nst = 3
    0     -1.2807764064      1.0000000000
    1      0.0000000000      2.0000000000
    2      0.7807764064      1.0000000000
 nu = 2  k =  3    nst = 2
    0     -0.5000000000      2.0000000000
    1      0.5000000000      1.0000000000
 nu = 3  k =  0    nst = 4
    0     -2.1180339887      1.0000000000
    1     -1.5000000000      0.0000000000
    2      0.1180339887      1.0000000000
    3      1.5000000000      3.0000000000
 nu = 3  k =  1    nst = 3
    0     -1.0000000000      1.0000000000
    1     -0.5000000000      0.0000000000
    2      1.0000000000      2.0000000000
 nu = 3  k =  2    nst = 3
    0     -1.2807764064      1.0000000000
    1     -0.0000000000      2.0000000000
    2      0.7807764064      1.0000000000
 nu = 3  k =  3    nst = 4
    0     -2.8027756377      0.0000000000
    1     -0.5000000000      2.0000000000
    2      0.5000000000      1.0000000000
    3      0.8027756377      0.0000000000

The file low.dat (lowest-energy state in each sector):

    0    0    1.5000000000    3.0000000000         1
    1    0    1.5000000000    3.0000000000         1
    1    1    1.0000000000    2.0000000000         1
    1    2   -0.0000000000    2.0000000000         1
    1    3   -0.5000000000    2.0000000000         1
    2    0   -2.1180339887    1.0000000000         3
    2    1   -1.0000000000    1.0000000000         2
    2    2   -1.2807764064    1.0000000000         3
    2    3   -0.5000000000    2.0000000000         2
    3    0   -2.1180339887    1.0000000000         4
    3    1   -1.0000000000    1.0000000000         3
    3    2   -1.2807764064    1.0000000000         3
    3    3   -2.8027756377    0.0000000000         4

For N=6 all the (mz,k) states have fixed total-spin, as can be seen in the all-integer values obtained for S. For larger N, there are still some cases of degeneracy of states with different S. For N=8, there is such a case of 3 degenerate states with nu=2, k=4, as seen in eig.dat for that sector:

 nu = 2  k =  4    nst = 4
    0     -0.0000000000      2.0009877794
    1      0.0000000000      2.9990995860
    2      0.0000000000      2.0002724281
    3      1.0000000000      2.0000000000

There are such degeneracies in some other sectors as well.