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
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
dolfim@phys.ethz.ch www.itp.phys.ethz.ch
+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
An additional note. Compared to the standard ALPS implementation your Hamiltonian also has a different site term.
Anyway, if you experience problem you should be a bit more specific, otherwise we cannot help. What does not work? Which code you use? Do you have a comparison code? Did you try a small system/simpler to see if that one works?
Best regards, Michele
-- ETH Zurich Michele Dolfi Institute for Theoretical Physics HIT G 32.4 Wolfgang-Pauli-Str. 27 8093 Zurich Switzerland
dolfim@phys.ethz.ch www.itp.phys.ethz.ch
+41 44 633 78 56 phone +41 44 633 11 15 fax
On Jan 27, 2016, at 2:16 PM, Michele Dolfi dolfim@phys.ethz.ch wrote:
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:
- create a parameter file like (e.g. names parms):
LATTICE=“2 band chain lattice" L=4
- 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
dolfim@phys.ethz.ch mailto:dolfim@phys.ethz.ch www.itp.phys.ethz.ch http://www.itp.phys.ethz.ch/
+41 44 633 78 56 phone +41 44 633 11 15 fax
On Jan 27, 2016, at 12:21 PM, 北尘心 <740572900@qq.com mailto: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
comp-phys-alps-users@lists.phys.ethz.ch