Exact diagonalization of the S=1/2 Heisenberg chain
(using semi-momentum states and spin-inversion symmetry)
Program: hchan_mkpz
The program generates all energy eigenvalues and total spin expectation values ( which equals the spin quantum number S for non-degenerate levels) in the sector of magnetization m=0 (which is where spin-inversion symmetry can be used to reduce the block size). For k=0,pi, parity quantum numbers p=-1 a nd +1 are included, whereas for other momenta the two sectors are degenerate and only p=1 states are generated.
Input
File read.in containing:Example read.in (N=8, rm=20)
8 20
Output
File eig.dat containing, for each sector of magnetization m=0, semi-momentu
m (=k*2*pi/N), parity (p=-1,+1),
and spin-inversion (z=-1,+1) quantum numbers:
Line 1: k,p,z and the block size nrep, followed by nrep lines with:
Column 1: Eigenvalue number (integer)
Column 2: Energy eigenvalue (real)
Column 3: Spin quantum number (from the expectation value S*S) (real)
File low.dat containing lowest eigenstate for each sector:
Column 1: k (integer)
Column 2: p (integer)
Column 3: z (integer)
Column 4: Energy eigenvalue (real)
Column 5: Spin quantum number (real)
These are all momentum 0 (k=0) and pi (k=N/2) eigenvalues for N=8:
0 1 1 7 1 -3.6510934089 0.0000000000 2 -1.8019377358 2.0000000000 3 -0.7261094450 0.0000000000 4 -0.4450418679 2.0000000000 5 0.3772028540 0.0000000000 6 1.2469796037 2.0000000000 7 2.0000000000 4.0000000000 0 1 -1 1 1 0.0000000000 1.0000000000 0 -1 -1 2 1 -1.0000000000 1.0000000000 2 0.0000000000 1.0000000000 4 1 1 5 1 -2.6996281483 0.0000000000 2 -0.7608767217 0.0000000000 3 -0.0000000000 2.0000000000 4 1.0000000000 2.0000000000 5 1.4605048700 0.0000000000 4 -1 1 1 1 0.0000000000 2.0000000000 4 -1 -1 4 1 -3.1284190638 1.0000000000 2 -1.2016396757 1.0000000000 3 0.0000000000 3.0000000000 4 1.3300587396 1.0000000000
Note that z=+1 and z=-1 states have even and odd total spin S, respectively. This holds for chain lengths of the form N=4n (n=integer). However, for lengths N=4n+2, the situation is the reverse. These are all N=6 eigenvalues:
0 1 1 3 1 -2.1180339887 1.0000000000 2 0.1180339887 1.0000000000 3 1.5000000000 3.0000000000 0 -1 -1 1 1 -1.5000000000 0.0000000000 1 1 1 1 1 -1.0000000000 1.0000000000 1 1 -1 2 1 -0.5000000000 0.0000000000 2 1.0000000000 2.0000000000 2 1 1 2 1 -1.2807764064 1.0000000000 2 0.7807764064 1.0000000000 2 1 -1 1 1 -0.0000000000 2.0000000000 3 1 1 1 1 0.5000000000 1.0000000000 3 -1 -1 3 1 -2.8027756377 0.0000000000 2 -0.5000000000 2.0000000000 3 0.8027756377 0.0000000000
There are now almost no cases of degenerate states within the blocks. For N=16, the only case is in the sector (k=8,p=1,z=1), eigenstates 211-214 (from the output file eig.dat; energy in column 2, total spinexpectation value in column 3):
205 1.7694755225 4.0000000000 206 1.8140181550 4.0000000000 207 1.8894458390 2.0000000000 208 1.9405198329 2.0000000000 209 1.9456911098 0.0000000000 210 1.9658445909 0.0000000000 211 2.0000000000 5.9511599514 212 2.0000000000 5.2310392300 213 2.0000000000 5.6346373695 214 2.0000000000 5.4079564124 215 2.0375825763 4.0000000000 216 2.0550258182 0.0000000000 217 2.1369028899 2.0000000000 218 2.1681216989 2.0000000000
Lowest eigenvalues in each (k,p,z) sector for N=16 (contents of the file low.dat):
0 1 1 -7.1422963606 0.0000000000 257 0 1 -1 -4.9014133216 1.0000000000 183 0 -1 1 -4.1926152576 2.0000000000 158 0 -1 -1 -5.7475957242 1.0000000000 212 1 1 1 -5.6071498544 2.0000000000 392 1 1 -1 -6.5234070574 1.0000000000 408 2 1 1 -5.9642495146 0.0000000000 411 2 1 -1 -5.9909868629 1.0000000000 397 3 1 1 -5.5423972804 0.0000000000 392 3 1 -1 -5.6151755979 1.0000000000 408 4 1 1 -5.3276180525 0.0000000000 413 4 1 -1 -5.4519656677 1.0000000000 396 5 1 1 -5.3539458041 0.0000000000 392 5 1 -1 -5.5253530868 1.0000000000 408 6 1 1 -5.7799253386 2.0000000000 411 6 1 -1 -5.8232311433 1.0000000000 397 7 1 1 -6.0858297375 0.0000000000 392 7 1 -1 -6.2986527255 1.0000000000 408 8 1 1 -6.6965474266 0.0000000000 239 8 1 -1 -4.4043228149 1.0000000000 166 8 -1 1 -4.8151682998 2.0000000000 175 8 -1 -1 -6.8721066784 1.0000000000 230