(s=1)-Heisenberg-triangular lattice

All s=1 lattices are based on s=1/2 lattices which are doubled using the defspin1.sh script.

(s=1/2)-(N=3)-Heisenberg triangle

The s=1/2 N=3 Heisenberg linear chain as minimum triangle is to simple for spinpack. For N=3 spinpack uses symmetries to form a s=3/2 spin and finally matrix size becomes to one. But you can use different bonds to circumvent this behavior. First let us see, what the s=1/2 N=3 result will be:

#
#        3
#       / \
#      1---2
#
cd spinpack/exe
gcc -o m_1d ../models/m_1d.c  # J1J2Chain must be defined in m_1d.c
./m_1d 3 >daten.def
# remove j2 bonds in daten.def
edit daten.def # change Nw and bonds
 #+++model+++
 # NN=Number_of_sites Nw=Number_of_bonds [Nq=quad_terms]
 3 3 0
 # s=site  XYZ=position #=index
 # s Rx Ry Rz [e#] [U#]
  0  1  1  0 e8 u7
  1  2  1  0 e8 u7
  2  3  1  0 e8 u7
 # Bond s1 s2 [R= # # #] [t#] [j#] [v#] [w#]
   0  0  1  R= 1 0 0  t3 j1 v0 w6  
   2  1  2  R= 1 0 0  t3 j1 v0 w6  
   4  2  0  R= 1 0 0  t3 j1 v0 w6 +
 #---model---
# create initial daten.i
cp ../doc/daten.i .
# edit daten.i
 nud=1,2
 sym_k= -9999
 param= 1, 0
 a4        # a0 = lowest state, a4 = all states (for small systems)
./spin # start computation
# output:
 LS=1   3  3  3     # detection of s=3/2 symmetry
 eigenvals=  +0.75000000  # we get the S=3/2 result only
Now we want to break the artificial symmetry by replacing bond indices.
edit daten.def # change Nw and bonds
 #+++model+++
 # NN=Number_of_sites Nw=Number_of_bonds [Nq=quad_terms]
 3 3 0
 # s=site  XYZ=position #=index
 # s Rx Ry Rz [e#] [U#]
  0  1  1  0 e8 u7
  1  2  1  0 e8 u7
  2  3  1  0 e8 u7
 # Bond s1 s2 [R= # # #] [t#] [j#] [v#] [w#]
   0  0  1  R= 1 0 0  t3 j1 v0 w6  
   2  1  2  R= 1 0 0  t3 j2 v0 w6  
   4  2  0  R= 1 0 0  t3 j3 v0 w6 +
 #---model---
# create initial daten.i
cp ../doc/daten.i .
# edit daten.i
 sym_k= -9999
 param= 1, 1, 1    # now we have 3 bonds, but all of same value
 nud=1,2   # 1st run for Sz=1/2
 a4        # a0 = lowest state, a4 = all states (for small systems)
 nud=0,3   # 2nd run for Sz=3/2
 a4        
./spin # start computation
# output:
 LS=1   1  1  1     # everything is fine (three s=1/2 sites)
 eigenvals=  -0.75000000  -0.75000000  +0.75000000    # Sz=1/2 subspace
 eigenvals=  +0.75000000                              # Sz=3/2 subspace

(s=1)-(N=3)-Heisenberg triangle

Now we have th full spectrum and can continue with the s=1 system.

../utils/defspin1.sh -s 2 > a.def
cp a.def daten.def
# now we find 6 sites and 12 bonds in the def-file
# edit daten.i
 sym_ud=+1
 param= 1, 1, 1
 nud=3,3
 a4
 sym_ud=-1     # for Sz=0 we have additional spin inversion symmetry
 a4
 nud=2,4
 a4
 nud=1,5
 a4
 nud=0,6
 a4
./spin
# output:
 LS=3   2  2  2  2  2  2  # autodected s=1 objects
 LI=3   0  0  0  1  1  1  # counting 3 s=1 objects
 # Sz=0 sector
 eigenvals=  -2.00000000  -2.00000000  -2.00000000  +3.00000000
 eigenvals=  -3.00000000  -0.00000000  +0.00000000
 # Sz=1 sector
 eigenvals=  -2.00000000  -2.00000000  -2.00000000  -0.00000000  +0.00000000  +3.00000000
 # Sz=2 sector
 eigenvals=  -0.00000000  +0.00000000  +3.00000000
 # Sz=3 sector
 eigenvals=  +3.00000000
The ground state (lowest eigenvalue) has the energy -3 and is found in the Sz=0 and Sud=-1 subspace.

(s=1)-Heisenberg triangular lattice

cd spinpack/exe
gcc -o m_tilings -lm ../models/m_tilings.c
# choose one of the following lattices
./m_tilings 0  2 4 0 6  > daten.def # N=12 choosing this for the sample!
./m_tilings 0  1 5 0 15 > daten.def # N=15 (odd number of sites)
./m_tilings 0  1 5 0 18 > daten.def # N=18
./m_tilings 0  1 5 0 21 > daten.def # N=21 (odd number of sites) 
./m_tilings 0  2 4 0 12 > daten.def # N=24
./m_tilings 0  6 0 0 6  > daten.def # N=36 to big for s=1 (72bit)!
# generate picture
./utils/def2fig.sh -i daten.def > a.fig  # use xfig to show/edit
# generate s1 file by doubling all sites
cp daten.def a.def
./utils/defspin1 -s 2 a.def > daten.def
# edit ../src/config.h 
 #define CONFIG_NOS1SYM 1
 #define Sud 0
 
# edit daten.i
 verbose=33
 x3 99
 # pick one of the automatically generated symmetries
 # try sym_k= 0 -9999, sym_k= -1 0 -9999, sym_k= -2 0 -9999, etc.
 # ... until a high orbital symmetry or translation is found
 # we found for N=2*12, orbital length = ...
 sym_k= 0 -9999
 nud=12,12   # choose 2Sz=nu-nd=0 subspace
 a0