N=2 and N=3 Heisenberg chains are to simple for spinpack, because spinpack uses symmetries and so matrix size becomes to one (see example3_lc2-3.html). Use minimum N=5 sites or switch off all symmetries to see the full base:
cd exe # execution path gcc -lm -o m_1d ../m_1d.c # compile model generation code for chains ./m_1d 5 > daten.def # generate 5 side chain model daten.i: verbose=33 xout=3 99 pew=2 # number of EWs for convergence proof 0..NEW-1 nev=1 # number of lowest eigenvectors nev=0..NEV sym_ud= 0 # no up-down-symmetry (never used for odd N) sym_k= -9999 param= 1.0, 0.0 nud=0,5 # ddddd-subspace a0 nud=5,0 # uuuuu-subspace (same as ddddd-subspace) a0 nud=1,4 # udddd-subspace a0 nud=2,3 # uuddd-subspace a0 make; ./spin # matrix output? daten.i: verbose=67 # verbose=64+3=bit5+bit1+bit0 nud=1,5 vvv&64: B=[ # B = basis space 0 0x0f *q( 1) # 0x0f hex means 01111 = udddd 1 0x17 *q( 1) # 0x17 hex means 10111 = duddd 2 0x1b *q( 1) 3 0x1d *q( 1) 4 0x1e *q( 1) vvv&64, output_H x_max=20 lines: # matrix entries (x, y, real, imag) addh( 0, 0, +1/4 ,+0 ): addh( 0, 1, +1/2 ,+0 ): addh( 0, 4, +1/2 ,+0 ): addh( 1, 1, +1/4 ,+0 ): addh( 1, 2, +1/2 ,+0 ): addh( 1, 0, +1/2 ,+0 ): addh( 2, 2, +1/4 ,+0 ): addh( 2, 3, +1/2 ,+0 ): addh( 2, 1, +1/2 ,+0 ): addh( 3, 3, +1/4 ,+0 ): addh( 3, 4, +1/2 ,+0 ): addh( 3, 2, +1/2 ,+0 ): addh( 4, 4, +1/4 ,+0 ): addh( 4, 3, +1/2 ,+0 ): addh( 4, 0, +1/2 ,+0 ): # 1/4 * ((1 2 0 0 2) # (2 1 2 0 0) # (0 2 1 2 0) # (0 0 2 1 2) # (2 0 0 2 1)) results: # nud=0,5 a4 eigenvals= +1.25000000 # nud=1,4 a4 eigenvals= -0.55901699 -0.55901699 +0.55901699 +0.55901699 # +1.25000000 # nud=2,3 a4 eigenvals= -1.86803399 -1.86803399 -0.75000000 -0.55901699 # -0.55901699 +0.36803399 +0.36803399 +0.55901699 # +0.55901699 +1.25000000 #a4 sym_k= 0 0 eigenvals= -0.75000000 +1.25000000 # a2: -0.559016994374947 3e-10 # a0: -0.55901699 E0/N= -0.11180340 E0/nw= -0.05590170 #! attention 2-fold degeneracy! ZiZj and other expectation values vary! # you have to build mean values ... ToDo