I have written a model (who can be used as a model library) who generalize to classical Heisenberg model for fermion with spin up and down to fermion with ’n’ degrees of freedom and two particles per sites. Here is my code
<MODELS>
<SITEBASIS name ="SU5_m2">
<QUANTUMNUMBER
name="N_1"
min ="0"
max ="1"
type="fermionic"/>
<QUANTUMNUMBER
name="N_2"
min ="0"
max ="1"
type="fermionic"/>
<QUANTUMNUMBER
name="N_3"
min ="0"
max ="(1 - N_1*N_2)"
type ="fermionic"/>
<QUANTUMNUMBER
name="N_4"
min ="(1 - N_1)*(1 - N_2)*(1 - N_3)"
max ="(1 - N_1*N_2)*(1 - N_1*N_3)*(1 - N_2*N_3)"
type ="fermionic"/>
<QUANTUMNUMBER
name="N_5"
min ="2 - N_1 - N_2 - N_3 - N_4"
max ="2 - N_1 - N_2 - N_3 - N_4"
type ="fermionic"/>
<OPERATOR
name="S_1_1"
matrixelement="N_1"/>
<OPERATOR
name="S_2_2"
matrixelement="N_2"/>
<OPERATOR
name="S_3_3"
matrixelement="N_3"/>
<OPERATOR
name="S_4_4"
matrixelement="N_4"/>
<OPERATOR
name="S_5_5"
matrixelement="N_5"/>
<OPERATOR
name="S_1_2"
matrixelement="1">
<CHANGE
quantumnumber="N_2"
change="-1"/>
<CHANGE
quantumnumber="N_1"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_1_3"
matrixelement="1">
<CHANGE
quantumnumber="N_3"
change="-1"/>
<CHANGE
quantumnumber="N_1"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_1_4"
matrixelement="1">
<CHANGE
quantumnumber="N_4"
change="-1"/>
<CHANGE
quantumnumber="N_1"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_1_5"
matrixelement="1">
<CHANGE
quantumnumber="N_5"
change="-1"/>
<CHANGE
quantumnumber="N_1"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_2_1"
matrixelement="1">
<CHANGE
quantumnumber="N_1"
change="-1"/>
<CHANGE
quantumnumber="N_2"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_2_3"
matrixelement="1">
<CHANGE
quantumnumber="N_3"
change="-1"/>
<CHANGE
quantumnumber="N_2"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_2_4"
matrixelement="1">
<CHANGE
quantumnumber="N_4"
change="-1"/>
<CHANGE
quantumnumber="N_2"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_2_5"
matrixelement="1">
<CHANGE
quantumnumber="N_5"
change="-1"/>
<CHANGE
quantumnumber="N_2"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_3_1"
matrixelement="1">
<CHANGE
quantumnumber="N_1"
change="-1"/>
<CHANGE
quantumnumber="N_3"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_3_2"
matrixelement="1">
<CHANGE
quantumnumber="N_2"
change="-1"/>
<CHANGE
quantumnumber="N_3"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_3_4"
matrixelement="1">
<CHANGE
quantumnumber="N_4"
change="-1"/>
<CHANGE
quantumnumber="N_3"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_3_5"
matrixelement="1">
<CHANGE
quantumnumber="N_5"
change="-1"/>
<CHANGE
quantumnumber="N_3"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_4_1"
matrixelement="1">
<CHANGE
quantumnumber="N_1"
change="-1"/>
<CHANGE
quantumnumber="N_4"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_4_2"
matrixelement="1">
<CHANGE
quantumnumber="N_2"
change="-1"/>
<CHANGE
quantumnumber="N_4"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_4_3"
matrixelement="1">
<CHANGE
quantumnumber="N_3"
change="-1"/>
<CHANGE
quantumnumber="N_4"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_4_5"
matrixelement="1">
<CHANGE
quantumnumber="N_5"
change="-1"/>
<CHANGE
quantumnumber="N_4"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_5_1"
matrixelement="1">
<CHANGE
quantumnumber="N_1"
change="-1"/>
<CHANGE
quantumnumber="N_5"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_5_2"
matrixelement="1">
<CHANGE
quantumnumber="N_2"
change="-1"/>
<CHANGE
quantumnumber="N_5"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_5_3"
matrixelement="1">
<CHANGE
quantumnumber="N_3"
change="-1"/>
<CHANGE
quantumnumber="N_5"
change="+1"/>
</OPERATOR>
<OPERATOR
name="S_5_4"
matrixelement="1">
<CHANGE
quantumnumber="N_4"
change="-1"/>
<CHANGE
quantumnumber="N_5"
change="+1"/>
</OPERATOR>
</SITEBASIS>
<BASIS name =
"SU5_m2" >
<SITEBASIS
ref="SU5_m2"/>
<CONSTRAINT
quantumnumber="N_1"
value="N_total"/>
<CONSTRAINT
quantumnumber="N_2"
value="N_total"/>
<CONSTRAINT
quantumnumber="N_3"
value="N_total"/>
<CONSTRAINT
quantumnumber="N_4"
value="N_total"/>
<CONSTRAINT
quantumnumber="N_5"
value="N_total"/>
</BASIS>
<HAMILTONIAN
name ="SU5_m2" >
<BASIS ref="SU5_m2"/>
<BONDTERM
source="i"
target="j">
S_1_1(i)*S_1_1(j) + S_1_2(i)*S_2_1(j) + S_1_3(i)*S_3_1(j) + S_1_4(i)*S_4_1(j) + S_1_5(i)*S_5_1(j) + S_2_1(i)*S_1_2(j) + S_2_2(i)*S_2_2(j) + S_2_3(i)*S_3_2(j) + S_2_4(i)*S_4_2(j) + S_2_5(i)*S_5_2(j)
+ S_3_1(i)*S_1_3(j) + S_3_2(i)*S_2_3(j) + S_3_3(i)*S_3_3(j) + S_3_4(i)*S_4_3(j) + S_3_5(i)*S_5_3(j) + S_4_1(i)*S_1_4(j) + S_4_2(i)*S_2_4(j) + S_4_3(i)*S_3_4(j) + S_4_4(i)*S_4_4(j) + S_4_5(i)*S_5_4(j) + S_5_1(i)*S_1_5(j) + S_5_2(i)*S_2_5(j) + S_5_3(i)*S_3_5(j)
+ S_5_4(i)*S_4_5(j) + S_5_5(i)*S_5_5(j)
</BONDTERM>
</HAMILTONIAN>
</MODELS>
The problem is that the ground state energy is -622 and the first excited energy is -670 in a open chain lattice with 5 sites. Obviously somethings is wrong because the ground state energy is greater than the first excited energy.
I don’t know if the min and max condition in the quantum number are correctly implemented or maybe this is not the correct way to implement the bond term?