<SITEBASIS name="hardcore boson">
<QUANTUMNUMBER name="N" min="0" max="1"/>
</SITEBASIS>
<SITEBASIS name="spin-1/2">
<QUANTUMNUMBER name="Sz" min="-1/2" max="1/2"/>
</SITEBASIS>
<SITEBASIS name="fermion">
<QUANTUMNUMBER name="Nup" min="0" max="1" type="fermionic"/>
<QUANTUMNUMBER name="Ndown" min="0" max="1" type="fermionic"/>
</SITEBASIS>
The SITEBASIS takes a name attribute by which it can later be referenced.
The QUANTUMNUMBER elements each take a name, and minimum
and maximum values in the min and max attributes.
The quantum numbers can take values between min, min+1,
min+2 ... up to max. Optionally, a type attribute
can be set to bosonic (the default) or fermionic. It should be set to fermionic
when the quantum number is a fermionic number operator. This information
will be used when determining commutation relation between operators on different
sites.
The range of the quantum numbers can be parametrized by input parameters,
and default can be specified such as in
<SITEBASIS name="boson">
<PARAMETER name="Nmax" default="infinity"/>
<QUANTUMNUMBER name="N" min="0" max="Nmax"/>
</SITEBASIS>
<SITEBASIS name="spin">
<PARAMETER name="S" default="1/2"/>
<QUANTUMNUMBER name="Sz" min="-S" max="S"/>
</SITEBASIS>
<BASIS name="spin">
<SITEBASIS ref="spin"/>
</BASIS>
<BASIS name="spin">
<SITEBASIS name="spin-1">
<QUANTUMNUMBER name="Sz" min="-1" max="1"/>
</SITEBASIS>
</BASIS>
The basis again takes a name attribute and contains a SITEBASIS
element which is used as default for all sites. The SITEBASIS can
either reference a previously defined one by a ref attribute or
just declare the full site basis as above.
Optionally, the SITEBASIS can take a type argument, specifying which site
(vertex) it applies to. This allows more complex basis sets to be constructed,
with different local site bases depending on the site type, such as in:
<BASIS name="Kondo lattice">
<SITEBASIS type="0" ref="fermion"/>
<SITEBASIS type="1" ref="spin-1/2"/>
</BASIS>
Finally, the basis can be restricted by specifying a constraint on the
sums of certain quantum numbers. For example to specify a basis for a spin
model with total value of spin Sz_total, a CONSTRAINT element
can be added:
<BASIS name="spin">
<SITEBASIS ref="spin"/>
<CONSTRAINT quantumnumber="Sz" value="Sz_total"/>
</BASIS>
<OPERATOR name="Splus" matrixelement="sqrt(S*(S+1)-Sz*(Sz+1))">
<CHANGE quantumnumber="Sz" change="1"/>
</OPERATOR>
<OPERATOR name="Sminus" matrixelement="sqrt(S*(S+1)-Sz*(Sz-1))">
<CHANGE quantumnumber="Sz" change="-1"/>
</OPERATOR>
<OPERATOR name="Sz" matrixelement="Sz"/>
<OPERATOR name="b" matrixelement="sqrt(N)">
<CHANGE quantumnumber="N" change="-1"/>
</OPERATOR>
<OPERATOR name="bdag" matrixelement="sqrt(N+1)">
<CHANGE quantumnumber="N" change="1"/>
</OPERATOR>
<OPERATOR name="n" matrixelement="N"/>
In the specification of the matriy element, the value of the quantum numbers
of the state can be referred to through the name of the quantum number (Sz
in these examples)
<HAMILTONIAN name="hardcore boson">First, default values can be specified for parameters such as coupling constants by using PARAMETER elements.
<PARAMETER name="mu" default="0"/>
<PARAMETER name="t" default="1"/>
<PARAMETER name="t'" default="1"/>
<BASIS ref="hardcore boson"/>
<SITETERM type="0">
-mu*n
</SITETERM>
<BONDTERM type="0" source="i" target="j">
-t*(bdag(i)*b(j)+bdag(j)*b(i)))
</BONDTERM>
<BONDTERM type="1" source="i" target="j">
-t'*(bdag(i)*b(j)+bdag(j)*b(i)))
</BONDTERM>
</HAMILTONIAN>