Hi,

To me the second implementation looks more familiar to what we have already in the model library.

Note that, if I didn’t miss weird terms in your Hamiltonian, you don’t have to redefine your model. The standard boson Hubbard model does already what you need.
The trick is that the version in the models.xml file uses the t# parameters, which is a special name for saying: on bonds of type 0 use the parameter t0, on bonds of type 1 use the parameter t1, etc.


Short note for working with custom (or unfamiliar) lattices.
ALPS comes with the printgraph tool which will take your parameter file and generate the XML structure of the actual graph. This is very convenient if you are not sure about the actual edges that you defined.
To use it:
1. create a parameter file like (e.g. names parms):
LATTICE=“2 band chain lattice"
L=4

2. printgraph parms > graph.xml



Best regards,
Michele

--
ETH Zurich
Michele Dolfi
Institute for Theoretical Physics
HIT G 32.4
Wolfgang-Pauli-Str. 27
8093 Zurich
Switzerland


+41 44 633 78 56 phone
+41 44 633 11 15 fax 





On Jan 27, 2016, at 12:21 PM, 北尘心 <740572900@qq.com> wrote:

Dear all,
I want to use 2 band chain lattice (there are three edge types in unitcell) in my hubbard model which is in lattices.xml file.
I build the lattice according to guidance in the website:

<LATTICES>
<LATTICE name="chain lattice" dimension="1">
  <PARAMETER name="a" default="1"/>
  <BASIS><VECTOR>a</VECTOR></BASIS>
  <RECIPROCALBASIS><VECTOR>2*pi/a</VECTOR></RECIPROCALBASIS>
</LATTICE>

<UNITCELL name="2band1d" dimension="1">
  <VERTEX type="0"/>
  <VERTEX type="1"/>
  <EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="2" offset="0"/></EDGE>
  <EDGE type="1"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE>
  <EDGE type="2"><SOURCE vertex="2" offset="0"/><TARGET vertex="2" offset="1"/></EDGE>
</UNITCELL> 

  <LATTICEGRAPH name = "2 band chain lattice">
  <FINITELATTICE>
    <LATTICE ref="chain lattice"/>
    <EXTENT dimension="1" size ="L"/>
    <BOUNDARY type="periodic"/>
  </FINITELATTICE>
  <UNITCELL ref="2band1d"/>
</LATTICEGRAPH>

</LATTICES>


Because there are three edge types in unitcell , i wonder what I should do to design hopping in my model.
I design two solutions ,like :
<HAMILTONIAN name="boson Hubbard">
  <PARAMETER name="mu" default="0"/>
  <PARAMETER name="t0" default="1"/>
  <PARAMETER name="t1" default="2"/>
  <PARAMETER name="t2" default="3"/>
  <PARAMETER name="U" default="0"/>
  <BASIS ref="boson"/>
  <SITETERM site="i">
    -mu*n(i)+U*bdag(i)*bdag(i)*b(i)*b(i)/2
  </SITETERM> 
  <BONDTERM type="0" source="i" target="j">
    -t0*(bdag(i)*b(j)+bdag(j)*b(i))
  </BONDTERM>
  <BONDTERM type="1" source="i" target="j">
    -t1*(bdag(i)*b(j)+bdag(j)*b(i)) 
  </BONDTERM>
  <BONDTERM type="2" source="i" target="j">
    -t2*(bdag(i)*b(j)+bdag(j)*b(i)) 
  </BONDTERM>
</HAMILTONIAN>

and 

<HAMILTONIAN name="boson Hubbard">
  <PARAMETER name="mu" default="0"/>
  <PARAMETER name="t0" default="1"/>
  <PARAMETER name="t1" default="2"/>
  <PARAMETER name="t2" default="3"/>
  <PARAMETER name="U" default="0"/>
  <BASIS ref="boson"/>
  <SITETERM site="i">
    -mu*n(i)+U*bdag(i)*bdag(i)*b(i)*b(i)/2
  </SITETERM> 
  <BONDTERM source="i" target="j">
    -t0*(bdag(i)*b(j)+bdag(j)*b(i))-t1*(bdag(i)*b(j)+bdag(j)*b(i))-t2*(bdag(i)*b(j)+bdag(j)*b(i))
  </BONDTERM>
</HAMILTONIAN>

I want to know my two design which one is correct?

Yours sincerely,

Xingbo Wei
Zhejiang Normal Universtiy,
Jinhua, 230014,
China