The problem is that for a dimerized system you need to define two vertices in the unit cell. You cannot claim
<EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE>
since the lattice is translation invariant and thus these two need to be the same.
On 26 Apr 2015, at 20:49, Alexander Herzog Metalhead@web.de wrote:
Hello everybody,
I was trying to run a simulation on the frustrated 1D dimerized chain. To this end, I have adapted the follwoing unit-cell
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX/> <EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="2"/></EDGE> </UNITCELL>
from the "complex1d" unitcell. This enters into the latticgraph
<LATTICEGRAPH name = "nnn chain lattice with dimerization" vt_name="NNNChainLattice"> <FINITELATTICE> <LATTICE ref="chain lattice"/> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
For the most part, this is adapted from "nnn chain lattice". Consequently it uses the same definition in Lattice i.e. "chain lattice".
This latticegraph is supposed to comunicate with the following Hamiltonian
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
which, as far as I can see resembles the dimerized J1-J2-model.
However when running a dmrg calculation (for testing reasons with J1=-1, J2=delta=0) I recieve the error:
"Cannot calculate boundary crossing if neither vertex is in the original cell".
Somehow I seem to misunderstand the implementation in unitcell (that is what I at least would suppose is the source of the problem).
I would be very grateful for any kind of helpful remarks.
Thank you in advance and kindest regards,
Alex
Yes, and the first one should have offset 0 for both vertices. The n.n.n interaction then needs to appear twice as well, once for vertex 0 and once for vertex 1
Matthias
On Apr 26, 2015, at 21:07, Alexander Herzog Metalhead@web.de wrote:
Hello Matthias,
thank you for your quick reply. Does that mean that instead of the second line, I should write
<EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE>
which should fix the problem?
Kind regards,
Alex Gesendet: Sonntag, 26. April 2015 um 21:03 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell The problem is that for a dimerized system you need to define two vertices in the unit cell. You cannot claim
<EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE>
since the lattice is translation invariant and thus these two need to be the same.
On 26 Apr 2015, at 20:49, Alexander Herzog Metalhead@web.de wrote:
Hello everybody,
I was trying to run a simulation on the frustrated 1D dimerized chain. To this end, I have adapted the follwoing unit-cell
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX/> <EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="2"/></EDGE> </UNITCELL>
from the "complex1d" unitcell. This enters into the latticgraph
<LATTICEGRAPH name = "nnn chain lattice with dimerization" vt_name="NNNChainLattice"> <FINITELATTICE> <LATTICE ref="chain lattice"/> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
For the most part, this is adapted from "nnn chain lattice". Consequently it uses the same definition in Lattice i.e. "chain lattice".
This latticegraph is supposed to comunicate with the following Hamiltonian
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
which, as far as I can see resembles the dimerized J1-J2-model.
However when running a dmrg calculation (for testing reasons with J1=-1, J2=delta=0) I recieve the error:
"Cannot calculate boundary crossing if neither vertex is in the original cell".
Somehow I seem to misunderstand the implementation in unitcell (that is what I at least would suppose is the source of the problem).
I would be very grateful for any kind of helpful remarks.
Thank you in advance and kindest regards,
Alex
If you draw the graph on paper you will see that it is still not correct.
On 26.04.2015, at 22:31, Alexander Herzog Metalhead@web.de wrote:
Thank you again. I have chagned the unitcell it now reads:
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX id="1" type="0"><COORDINATE> 0 </COORDINATE></VERTEX> <VERTEX id="2" type="1"><COORDINATE> 1/2 </COORDINATE></VERTEX> <EDGE type="0"><SOURCE vertex="1" /><TARGET vertex="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" /><TARGET vertex="2" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="0"/></EDGE> <EDGE type="3"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> </UNITCELL>,
whereas th elattciegraph reads
<LATTICEGRAPH name = "nnn chain lattice with dimerization"> <FINITELATTICE> <LATTICE name="chain lattice" dimension="1"> <PARAMETER name="a" default="1"/> <BASIS><VECTOR>a</VECTOR></BASIS> <RECIPROCALBASIS><VECTOR>2*pi/a</VECTOR></RECIPROCALBASIS> </LATTICE> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
Attributed to the two vertices, I have adapted the Hamiltonian so as to read:
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> <BONDTERM type="3" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
Now using the following parameter file:
LATTICE="nnn chain lattice with dimerization" J1=-1 J2=0 delta=0 local_S=0.5 MODEL="dimfrust" CONSERVED_QUANTUMNUMBERS="N,Sz" Sz_total=0 SWEEPS=6 NUMBER_EIGENVALUES=1 MEASURE_AVERAGE[Magnetization]=Sz MEASURE_AVERAGE[Exchange]=exchange MEASURE_LOCAL[Local magnetization]=Sz MEASURE_CORRELATIONS[Diagonal spin correlations]=Sz MEASURE_CORRELATIONS[Offdiagonal spin correlations]="Splus:Sminus" L=32 { MAXSTATES=20 }
throws the error "= expected after attribute name J2" which I do not understand as J2 is followed by = in the parameter file. I have however somehow the suspection, that still the lattice graph is wrong and that the basis has to attribiuted to the dimerization and thus the splitting of the unit-cell. I do however not know, how this needs to be done.
I am very grateful for every further hint.
Thank you in advance and best regards,
Alex
Gesendet: Sonntag, 26. April 2015 um 21:09 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: "comp-phys-alps-users@lists.phys.ethz.ch" comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell Yes, and the first one should have offset 0 for both vertices. The n.n.n interaction then needs to appear twice as well, once for vertex 0 and once for vertex 1
Matthias
On Apr 26, 2015, at 21:07, Alexander Herzog Metalhead@web.de wrote:
Hello Matthias,
thank you for your quick reply. Does that mean that instead of the second line, I should write
<EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE>
which should fix the problem?
Kind regards,
Alex Gesendet: Sonntag, 26. April 2015 um 21:03 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell The problem is that for a dimerized system you need to define two vertices in the unit cell. You cannot claim
<EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE>
since the lattice is translation invariant and thus these two need to be the same.
On 26 Apr 2015, at 20:49, Alexander Herzog Metalhead@web.de wrote:
Hello everybody,
I was trying to run a simulation on the frustrated 1D dimerized chain. To this end, I have adapted the follwoing unit-cell
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX/> <EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="2"/></EDGE> </UNITCELL>
from the "complex1d" unitcell. This enters into the latticgraph
<LATTICEGRAPH name = "nnn chain lattice with dimerization" vt_name="NNNChainLattice"> <FINITELATTICE> <LATTICE ref="chain lattice"/> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
For the most part, this is adapted from "nnn chain lattice". Consequently it uses the same definition in Lattice i.e. "chain lattice".
This latticegraph is supposed to comunicate with the following Hamiltonian
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
which, as far as I can see resembles the dimerized J1-J2-model.
However when running a dmrg calculation (for testing reasons with J1=-1, J2=delta=0) I recieve the error:
"Cannot calculate boundary crossing if neither vertex is in the original cell".
Somehow I seem to misunderstand the implementation in unitcell (that is what I at least would suppose is the source of the problem).
I would be very grateful for any kind of helpful remarks.
Thank you in advance and kindest regards,
Alex
If I understand you right the third edge should be <EDGE type="3"><SOURCE vertex="2" offset="0"/><TARGET vertex=“2"offset="1"/></EDGE>
On 26 Apr 2015, at 23:02, Alexander Herzog Metalhead@web.de wrote:
Hm, maybe I do not understand the syntax correctly. The two vertices should be located on neighboring sites, as we have strong and weak bonds. So the strong bond say goes from site j to site j+1, which means it starts at vertex 1 and ends at vertex 2. The corresponding nnn interaction is shited by 1, thus the offset. Therefore I would say, these two lines are correct.
Concerning the next two lines I am not so sure. Is it from vertex 2 -> vertex 2 offset 1 and vertex 2-> vertex 1 offset 1?
I tried this option. Still throws the same error. Since the system is translational invariant, I thought it should go back to vertex 1 and vertex 1 offs. 1....
Sorry for firing questions at you in this way...
Alex Gesendet: Sonntag, 26. April 2015 um 22:38 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: "comp-phys-alps-users@lists.phys.ethz.ch" comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell
If you draw the graph on paper you will see that it is still not correct.
On 26.04.2015, at 22:31, Alexander Herzog Metalhead@web.de wrote:
Thank you again. I have chagned the unitcell it now reads:
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX id="1" type="0"><COORDINATE> 0 </COORDINATE></VERTEX> <VERTEX id="2" type="1"><COORDINATE> 1/2 </COORDINATE></VERTEX> <EDGE type="0"><SOURCE vertex="1" /><TARGET vertex="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" /><TARGET vertex="2" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="0"/></EDGE> <EDGE type="3"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> </UNITCELL>,
whereas th elattciegraph reads
<LATTICEGRAPH name = "nnn chain lattice with dimerization"> <FINITELATTICE> <LATTICE name="chain lattice" dimension="1"> <PARAMETER name="a" default="1"/> <BASIS><VECTOR>a</VECTOR></BASIS> <RECIPROCALBASIS><VECTOR>2*pi/a</VECTOR></RECIPROCALBASIS> </LATTICE> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
Attributed to the two vertices, I have adapted the Hamiltonian so as to read:
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> <BONDTERM type="3" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
Now using the following parameter file:
LATTICE="nnn chain lattice with dimerization" J1=-1 J2=0 delta=0 local_S=0.5 MODEL="dimfrust" CONSERVED_QUANTUMNUMBERS="N,Sz" Sz_total=0 SWEEPS=6 NUMBER_EIGENVALUES=1 MEASURE_AVERAGE[Magnetization]=Sz MEASURE_AVERAGE[Exchange]=exchange MEASURE_LOCAL[Local magnetization]=Sz MEASURE_CORRELATIONS[Diagonal spin correlations]=Sz MEASURE_CORRELATIONS[Offdiagonal spin correlations]="Splus:Sminus" L=32 { MAXSTATES=20 }
throws the error "= expected after attribute name J2" which I do not understand as J2 is followed by = in the parameter file. I have however somehow the suspection, that still the lattice graph is wrong and that the basis has to attribiuted to the dimerization and thus the splitting of the unit-cell. I do however not know, how this needs to be done.
I am very grateful for every further hint.
Thank you in advance and best regards,
Alex
Gesendet: Sonntag, 26. April 2015 um 21:09 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: "comp-phys-alps-users@lists.phys.ethz.ch" comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell Yes, and the first one should have offset 0 for both vertices. The n.n.n interaction then needs to appear twice as well, once for vertex 0 and once for vertex 1
Matthias
On Apr 26, 2015, at 21:07, Alexander Herzog Metalhead@web.de wrote:
Hello Matthias,
thank you for your quick reply. Does that mean that instead of the second line, I should write
<EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE>
which should fix the problem?
Kind regards,
Alex Gesendet: Sonntag, 26. April 2015 um 21:03 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell The problem is that for a dimerized system you need to define two vertices in the unit cell. You cannot claim
<EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE>
since the lattice is translation invariant and thus these two need to be the same.
On 26 Apr 2015, at 20:49, Alexander Herzog Metalhead@web.de wrote:
Hello everybody,
I was trying to run a simulation on the frustrated 1D dimerized chain. To this end, I have adapted the follwoing unit-cell
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX/> <EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="2"/></EDGE> </UNITCELL>
from the "complex1d" unitcell. This enters into the latticgraph
<LATTICEGRAPH name = "nnn chain lattice with dimerization" vt_name="NNNChainLattice"> <FINITELATTICE> <LATTICE ref="chain lattice"/> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
For the most part, this is adapted from "nnn chain lattice". Consequently it uses the same definition in Lattice i.e. "chain lattice".
This latticegraph is supposed to comunicate with the following Hamiltonian
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
which, as far as I can see resembles the dimerized J1-J2-model.
However when running a dmrg calculation (for testing reasons with J1=-1, J2=delta=0) I recieve the error:
"Cannot calculate boundary crossing if neither vertex is in the original cell".
Somehow I seem to misunderstand the implementation in unitcell (that is what I at least would suppose is the source of the problem).
I would be very grateful for any kind of helpful remarks.
Thank you in advance and kindest regards,
Alex
Please send the input files you use, and the exact commands you perform- otherwise we cannot try to reproduce what you observe. One quick guess is that it might be your use of J2#. How can ALPS decide whether J20 is J# with #=20 or J2 with #=0.
On 27 Apr 2015, at 22:25, Alexander Herzog Metalhead@web.de wrote:
Hello Matthias,
I have tried this (and other) lattcies. My current lattice part now reads
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX id="1" type="0"><COORDINATE> 0 </COORDINATE></VERTEX> <VERTEX id="2" type="1"><COORDINATE> 1/2 </COORDINATE></VERTEX> <EDGE type="0"><SOURCE vertex="1" /><TARGET vertex="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" /><TARGET vertex="2" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="2" /><TARGET vertex="1" offset="0"/></EDGE> <EDGE type="3"><SOURCE vertex="2" /><TARGET vertex="2" offset="1"/></EDGE> </UNITCELL>
However I still recieve "= expected after J2" even though I do have this in the paramert file:
LATTICE="nnn chain lattice with dimerization" J1=-1 J2=0 delta=0 local_S=0.5 MODEL="dimfrust" CONSERVED_QUANTUMNUMBERS="N,Sz" Sz_total=0 SWEEPS=6 NUMBER_EIGENVALUES=1 MEASURE_AVERAGE[Magnetization]=Sz MEASURE_AVERAGE[Exchange]=exchange MEASURE_LOCAL[Local magnetization]=Sz MEASURE_CORRELATIONS[Diagonal spin correlations]=Sz MEASURE_CORRELATIONS[Offdiagonal spin correlations]="Splus:Sminus" L=32 { MAXSTATES=20 }
and the model is more or less a shrinked copy of "spin" with an adaption so as to take account of J2 and delta:
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> <BONDTERM type="3" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
Have you ever heard of such an error report?
Kind regards and thank you for all your support.
Alex Gesendet: Montag, 27. April 2015 um 11:12 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell If I understand you right the third edge should be <EDGE type="3"><SOURCE vertex="2" offset="0"/><TARGET vertex=“2"offset="1"/></EDGE>
On 26 Apr 2015, at 23:02, Alexander Herzog Metalhead@web.de wrote:
Hm, maybe I do not understand the syntax correctly. The two vertices should be located on neighboring sites, as we have strong and weak bonds. So the strong bond say goes from site j to site j+1, which means it starts at vertex 1 and ends at vertex 2. The corresponding nnn interaction is shited by 1, thus the offset. Therefore I would say, these two lines are correct.
Concerning the next two lines I am not so sure. Is it from vertex 2 -> vertex 2 offset 1 and vertex 2-> vertex 1 offset 1?
I tried this option. Still throws the same error. Since the system is translational invariant, I thought it should go back to vertex 1 and vertex 1 offs. 1....
Sorry for firing questions at you in this way...
Alex Gesendet: Sonntag, 26. April 2015 um 22:38 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: "comp-phys-alps-users@lists.phys.ethz.ch" comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell
If you draw the graph on paper you will see that it is still not correct.
On 26.04.2015, at 22:31, Alexander Herzog Metalhead@web.de wrote:
Thank you again. I have chagned the unitcell it now reads:
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX id="1" type="0"><COORDINATE> 0 </COORDINATE></VERTEX> <VERTEX id="2" type="1"><COORDINATE> 1/2 </COORDINATE></VERTEX> <EDGE type="0"><SOURCE vertex="1" /><TARGET vertex="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" /><TARGET vertex="2" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="0"/></EDGE> <EDGE type="3"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> </UNITCELL>,
whereas th elattciegraph reads
<LATTICEGRAPH name = "nnn chain lattice with dimerization"> <FINITELATTICE> <LATTICE name="chain lattice" dimension="1"> <PARAMETER name="a" default="1"/> <BASIS><VECTOR>a</VECTOR></BASIS> <RECIPROCALBASIS><VECTOR>2*pi/a</VECTOR></RECIPROCALBASIS> </LATTICE> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
Attributed to the two vertices, I have adapted the Hamiltonian so as to read:
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> <BONDTERM type="3" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
Now using the following parameter file:
LATTICE="nnn chain lattice with dimerization" J1=-1 J2=0 delta=0 local_S=0.5 MODEL="dimfrust" CONSERVED_QUANTUMNUMBERS="N,Sz" Sz_total=0 SWEEPS=6 NUMBER_EIGENVALUES=1 MEASURE_AVERAGE[Magnetization]=Sz MEASURE_AVERAGE[Exchange]=exchange MEASURE_LOCAL[Local magnetization]=Sz MEASURE_CORRELATIONS[Diagonal spin correlations]=Sz MEASURE_CORRELATIONS[Offdiagonal spin correlations]="Splus:Sminus" L=32 { MAXSTATES=20 }
throws the error "= expected after attribute name J2" which I do not understand as J2 is followed by = in the parameter file. I have however somehow the suspection, that still the lattice graph is wrong and that the basis has to attribiuted to the dimerization and thus the splitting of the unit-cell. I do however not know, how this needs to be done.
I am very grateful for every further hint.
Thank you in advance and best regards,
Alex
Gesendet: Sonntag, 26. April 2015 um 21:09 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: "comp-phys-alps-users@lists.phys.ethz.ch" comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell Yes, and the first one should have offset 0 for both vertices. The n.n.n interaction then needs to appear twice as well, once for vertex 0 and once for vertex 1
Matthias
On Apr 26, 2015, at 21:07, Alexander Herzog Metalhead@web.de wrote:
Hello Matthias,
thank you for your quick reply. Does that mean that instead of the second line, I should write
<EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE>
which should fix the problem?
Kind regards,
Alex Gesendet: Sonntag, 26. April 2015 um 21:03 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell The problem is that for a dimerized system you need to define two vertices in the unit cell. You cannot claim
<EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE>
since the lattice is translation invariant and thus these two need to be the same.
On 26 Apr 2015, at 20:49, Alexander Herzog Metalhead@web.de wrote:
Hello everybody,
I was trying to run a simulation on the frustrated 1D dimerized chain. To this end, I have adapted the follwoing unit-cell
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX/> <EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="2"/></EDGE> </UNITCELL>
from the "complex1d" unitcell. This enters into the latticgraph
<LATTICEGRAPH name = "nnn chain lattice with dimerization" vt_name="NNNChainLattice"> <FINITELATTICE> <LATTICE ref="chain lattice"/> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
For the most part, this is adapted from "nnn chain lattice". Consequently it uses the same definition in Lattice i.e. "chain lattice".
This latticegraph is supposed to comunicate with the following Hamiltonian
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
which, as far as I can see resembles the dimerized J1-J2-model.
However when running a dmrg calculation (for testing reasons with J1=-1, J2=delta=0) I recieve the error:
"Cannot calculate boundary crossing if neither vertex is in the original cell".
Somehow I seem to misunderstand the implementation in unitcell (that is what I at least would suppose is the source of the problem).
I would be very grateful for any kind of helpful remarks.
Thank you in advance and kindest regards,
Alex
Yes, please send the lattice !
Mtthias
On 28 Apr 2015, at 19:14, Alexander Herzog Metalhead@web.de wrote:
Hello,
this will not be necessary. I have tracked down some minor mistakes, which seem to have spoiled the programs run. No it appears to work properly. At least the FM Heisenberg and AFM Heisenberg chain for S=1/2 yield the correct results.
Thank you very much for all your support.
Shall I deliever the lattice and model adaptions to you such that you can integrate them in the standard libraries of ALPS for one of the upcoming releases?
Best regards,
Alex Gesendet: Montag, 27. April 2015 um 22:30 Uhr Von: "Matthias Troyer" troyer@phys.ethz.ch An: comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell Please send the input files you use, and the exact commands you perform- otherwise we cannot try to reproduce what you observe. One quick guess is that it might be your use of J2#. How can ALPS decide whether J20 is J# with #=20 or J2 with #=0.
On 27 Apr 2015, at 22:25, Alexander Herzog <Metalhead@web.de x-msg://33/Metalhead@web.de> wrote:
Hello Matthias,
I have tried this (and other) lattcies. My current lattice part now reads
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX id="1" type="0"><COORDINATE> 0 </COORDINATE></VERTEX> <VERTEX id="2" type="1"><COORDINATE> 1/2 </COORDINATE></VERTEX> <EDGE type="0"><SOURCE vertex="1" /><TARGET vertex="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" /><TARGET vertex="2" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="2" /><TARGET vertex="1" offset="0"/></EDGE> <EDGE type="3"><SOURCE vertex="2" /><TARGET vertex="2" offset="1"/></EDGE> </UNITCELL>
However I still recieve "= expected after J2" even though I do have this in the paramert file:
LATTICE="nnn chain lattice with dimerization" J1=-1 J2=0 delta=0 local_S=0.5 MODEL="dimfrust" CONSERVED_QUANTUMNUMBERS="N,Sz" Sz_total=0 SWEEPS=6 NUMBER_EIGENVALUES=1 MEASURE_AVERAGE[Magnetization]=Sz MEASURE_AVERAGE[Exchange]=exchange MEASURE_LOCAL[Local magnetization]=Sz MEASURE_CORRELATIONS[Diagonal spin correlations]=Sz MEASURE_CORRELATIONS[Offdiagonal spin correlations]="Splus:Sminus" L=32 { MAXSTATES=20 }
and the model is more or less a shrinked copy of "spin" with an adaption so as to take account of J2 and delta:
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> <BONDTERM type="3" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
Have you ever heard of such an error report?
Kind regards and thank you for all your support.
Alex Gesendet: Montag, 27. April 2015 um 11:12 Uhr Von: "Matthias Troyer" <troyer@phys.ethz.ch x-msg://33/troyer@phys.ethz.ch> An: comp-phys-alps-users@lists.phys.ethz.ch x-msg://33/comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell If I understand you right the third edge should be <EDGE type="3"><SOURCE vertex="2" offset="0"/><TARGET vertex=“2"offset="1"/></EDGE>
On 26 Apr 2015, at 23:02, Alexander Herzog <Metalhead@web.de x-msg://33/Metalhead@web.de> wrote:
Hm, maybe I do not understand the syntax correctly. The two vertices should be located on neighboring sites, as we have strong and weak bonds. So the strong bond say goes from site j to site j+1, which means it starts at vertex 1 and ends at vertex 2. The corresponding nnn interaction is shited by 1, thus the offset. Therefore I would say, these two lines are correct.
Concerning the next two lines I am not so sure. Is it from vertex 2 -> vertex 2 offset 1 and vertex 2-> vertex 1 offset 1?
I tried this option. Still throws the same error. Since the system is translational invariant, I thought it should go back to vertex 1 and vertex 1 offs. 1....
Sorry for firing questions at you in this way...
Alex Gesendet: Sonntag, 26. April 2015 um 22:38 Uhr Von: "Matthias Troyer" <troyer@phys.ethz.ch x-msg://33/troyer@phys.ethz.ch> An: "comp-phys-alps-users@lists.phys.ethz.ch x-msg://33/comp-phys-alps-users@lists.phys.ethz.ch" <comp-phys-alps-users@lists.phys.ethz.ch x-msg://33/comp-phys-alps-users@lists.phys.ethz.ch> Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell
If you draw the graph on paper you will see that it is still not correct.
On 26.04.2015, at 22:31, Alexander Herzog <Metalhead@web.de x-msg://33/Metalhead@web.de> wrote:
Thank you again. I have chagned the unitcell it now reads:
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX id="1" type="0"><COORDINATE> 0 </COORDINATE></VERTEX> <VERTEX id="2" type="1"><COORDINATE> 1/2 </COORDINATE></VERTEX> <EDGE type="0"><SOURCE vertex="1" /><TARGET vertex="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" /><TARGET vertex="2" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="0"/></EDGE> <EDGE type="3"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> </UNITCELL>,
whereas th elattciegraph reads
<LATTICEGRAPH name = "nnn chain lattice with dimerization"> <FINITELATTICE> <LATTICE name="chain lattice" dimension="1"> <PARAMETER name="a" default="1"/> <BASIS><VECTOR>a</VECTOR></BASIS> <RECIPROCALBASIS><VECTOR>2*pi/a</VECTOR></RECIPROCALBASIS> </LATTICE> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
Attributed to the two vertices, I have adapted the Hamiltonian so as to read:
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> <BONDTERM type="3" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
Now using the following parameter file:
LATTICE="nnn chain lattice with dimerization" J1=-1 J2=0 delta=0 local_S=0.5 MODEL="dimfrust" CONSERVED_QUANTUMNUMBERS="N,Sz" Sz_total=0 SWEEPS=6 NUMBER_EIGENVALUES=1 MEASURE_AVERAGE[Magnetization]=Sz MEASURE_AVERAGE[Exchange]=exchange MEASURE_LOCAL[Local magnetization]=Sz MEASURE_CORRELATIONS[Diagonal spin correlations]=Sz MEASURE_CORRELATIONS[Offdiagonal spin correlations]="Splus:Sminus" L=32 { MAXSTATES=20 }
throws the error "= expected after attribute name J2" which I do not understand as J2 is followed by = in the parameter file. I have however somehow the suspection, that still the lattice graph is wrong and that the basis has to attribiuted to the dimerization and thus the splitting of the unit-cell. I do however not know, how this needs to be done.
I am very grateful for every further hint.
Thank you in advance and best regards,
Alex
Gesendet: Sonntag, 26. April 2015 um 21:09 Uhr Von: "Matthias Troyer" <troyer@phys.ethz.ch x-msg://33/troyer@phys.ethz.ch> An: "comp-phys-alps-users@lists.phys.ethz.ch x-msg://33/comp-phys-alps-users@lists.phys.ethz.ch" <comp-phys-alps-users@lists.phys.ethz.ch x-msg://33/comp-phys-alps-users@lists.phys.ethz.ch> Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell Yes, and the first one should have offset 0 for both vertices. The n.n.n interaction then needs to appear twice as well, once for vertex 0 and once for vertex 1
Matthias
On Apr 26, 2015, at 21:07, Alexander Herzog <Metalhead@web.de x-msg://33/Metalhead@web.de> wrote:
Hello Matthias,
thank you for your quick reply. Does that mean that instead of the second line, I should write
<EDGE type="1"><SOURCE vertex="2" offset="0"/><TARGET vertex="1" offset="1"/></EDGE>
which should fix the problem?
Kind regards,
Alex Gesendet: Sonntag, 26. April 2015 um 21:03 Uhr Von: "Matthias Troyer" <troyer@phys.ethz.ch x-msg://33/troyer@phys.ethz.ch> An: comp-phys-alps-users@lists.phys.ethz.ch x-msg://33/comp-phys-alps-users@lists.phys.ethz.ch Betreff: Re: [ALPS-users] Cannot calculate boundary crossing if neither vertex is in the original cell The problem is that for a dimerized system you need to define two vertices in the unit cell. You cannot claim
<EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE>
since the lattice is translation invariant and thus these two need to be the same.
On 26 Apr 2015, at 20:49, Alexander Herzog <Metalhead@web.de x-msg://33/Metalhead@web.de> wrote:
Hello everybody,
I was trying to run a simulation on the frustrated 1D dimerized chain. To this end, I have adapted the follwoing unit-cell
<UNITCELL name="complex1d_alt" dimension="1"> <VERTEX/> <EDGE type="0"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="1"/></EDGE> <EDGE type="1"><SOURCE vertex="1" offset="1"/><TARGET vertex="1" offset="2"/></EDGE> <EDGE type="2"><SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset="2"/></EDGE> </UNITCELL>
from the "complex1d" unitcell. This enters into the latticgraph
<LATTICEGRAPH name = "nnn chain lattice with dimerization" vt_name="NNNChainLattice"> <FINITELATTICE> <LATTICE ref="chain lattice"/> <EXTENT dimension="1" size ="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="complex1d_alt"/> </LATTICEGRAPH>
For the most part, this is adapted from "nnn chain lattice". Consequently it uses the same definition in Lattice i.e. "chain lattice".
This latticegraph is supposed to comunicate with the following Hamiltonian
<HAMILTONIAN name="dimfrust"> <PARAMETER name="J1" default="0"/> <PARAMETER name="J2" default="0"/> <PARAMETER name="delta'" default="0"/> <PARAMETER name="Jxy'" default="J'"/> <PARAMETER name="Jz1" default="Jz'"/> <PARAMETER name="Jxy1" default="Jxy'"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <PARAMETER name="D" default="0"/> <PARAMETER name="K" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> <PARAMETER name="D#" default="D"/> -h#*Sz(i)-Gamma#*Sx(i)+D#*Sz(i)*Sz(i) </SITETERM> <BONDTERM type="0" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1+delta)*Sz(i)*Sz(j)+J1#*(1+delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="1" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J1#*(1-delta)*Sz(i)*Sz(j)+J1#*(1-delta)*exchange_xy(i,j) </BONDTERM> <BONDTERM type="2" source="i" target="j"> <PARAMETER name="J1#" default="J1/> <PARAMETER name="J2#" default="J2"/> <PARAMETER name="delta#" default="delta"/> J2#*Sz(i)*Sz(j)+J2#*exchange_xy(i,j) </BONDTERM> </HAMILTONIAN>
which, as far as I can see resembles the dimerized J1-J2-model.
However when running a dmrg calculation (for testing reasons with J1=-1, J2=delta=0) I recieve the error:
"Cannot calculate boundary crossing if neither vertex is in the original cell".
Somehow I seem to misunderstand the implementation in unitcell (that is what I at least would suppose is the source of the problem).
I would be very grateful for any kind of helpful remarks.
Thank you in advance and kindest regards,
Alex
comp-phys-alps-users@lists.phys.ethz.ch