poor performance of DMRG on Ising chain
Dear ALPS users, I am checking the performance of the DMRG application of ALPS on a simple Ising chain with periodic boundary conditions. The program seems not to be able to converge to the right ground state, even for lengths of the chain such as L=6,8,.. Comparing to the results of the sparsdiag algorithm included in the package the ground state energies are very different. Does anyone know why it is so? Any idea on how to overcome this problem? Thank you in advance. -- Dr Emanuele Levi emanuele.levi@gmail.com
Dear Emanuele Levi, It is well known that periodic boundary conditions are a problem for DMRG. You will need a large number of states ( you don't mention how many you use) and you need to sweep often. Matthias
On Nov 14, 2013, at 10:33, Emanuele Levi <emanuele.levi@gmail.com> wrote:
Dear ALPS users, I am checking the performance of the DMRG application of ALPS on a simple Ising chain with periodic boundary conditions. The program seems not to be able to converge to the right ground state, even for lengths of the chain such as L=6,8,.. Comparing to the results of the sparsdiag algorithm included in the package the ground state energies are very different.
Does anyone know why it is so? Any idea on how to overcome this problem?
Thank you in advance.
-- Dr Emanuele Levi
emanuele.levi@gmail.com
Dear Matthias, thank you for your quick answer. Actually I have considered both periodic and open boundary conditions. The model I defined as follows <SITEOPERATOR name="Sx" site="x"> 1/2*(Splus(x)+Sminus(x)) </SITEOPERATOR> <HAMILTONIAN name="Ising"> <PARAMETER name="J" default="0"/> <PARAMETER name="h" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> J*h*2*Sz(i) </SITETERM> <BONDTERM source="i" target="j"> J*4*Sx(i)*Sx(j) </BONDTERM></HAMILTONIAN> And I run the following simulations: An exact parms = [{ 'LATTICE_LIBRARY' :"/MyIsing/lattice.xml", 'MODEL_LIBRARY' :"/MyIsing/model.xml", 'LATTICE' :"open chain lattice", 'MODEL' :"Ising", 'h' : 2.1, 'J' : -0.5, 'L' : 8 }] input_file = pyalps.writeInputFiles('IsingEXACT',parms) res = pyalps.runApplication('sparsediag',input_file,writexml=True) and a DMRG parms = [{ 'LATTICE_LIBRARY' :"/MyIsing/lattice.xml", 'MODEL_LIBRARY' :"/MyIsing/model.xml", 'LATTICE' :"open chain lattice", 'MODEL' :"Ising", 'J' : -0.5, 'h' : 2.1, 'SWEEPS' : 4, 'NUMBER_EIGENVALUES' : 1, 'L' : 8, 'MAXSTATES' : 600 }] The sparsediag gives me -8.8210316277121077 and the DMRG gives me -8.5812583500526003 with truncation error -2.2204460492503131e-16 Why the data are so distant notwithstanding the truncation error is so small, and it seems to be converged? Kindest regards. On 14 November 2013 20:03, Matthias Troyer <troyer@phys.ethz.ch> wrote:
Dear Emanuele Levi,
It is well known that periodic boundary conditions are a problem for DMRG. You will need a large number of states ( you don't mention how many you use) and you need to sweep often.
Matthias
On Nov 14, 2013, at 10:33, Emanuele Levi <emanuele.levi@gmail.com> wrote:
Dear ALPS users, I am checking the performance of the DMRG application of ALPS on a simple Ising chain with periodic boundary conditions. The program seems not to be able to converge to the right ground state, even for lengths of the chain such as L=6,8,.. Comparing to the results of the sparsdiag algorithm included in the package the ground state energies are very different.
Does anyone know why it is so? Any idea on how to overcome this problem?
Thank you in advance.
-- Dr Emanuele Levi
emanuele.levi@gmail.com
-- Dr Emanuele Levi emanuele.levi@gmail.com
You have to do more than four sweeps. Please increase the number of sweeps and observe how the error changes.
On Nov 14, 2013, at 16:56, Emanuele Levi <emanuele.levi@gmail.com> wrote:
Dear Matthias,
thank you for your quick answer. Actually I have considered both periodic and open boundary conditions.
The model I defined as follows
<SITEOPERATOR name="Sx" site="x"> 1/2*(Splus(x)+Sminus(x)) </SITEOPERATOR>
<HAMILTONIAN name="Ising"> <PARAMETER name="J" default="0"/> <PARAMETER name="h" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> J*h*2*Sz(i) </SITETERM> <BONDTERM source="i" target="j"> J*4*Sx(i)*Sx(j) </BONDTERM></HAMILTONIAN>
And I run the following simulations: An exact
parms = [{ 'LATTICE_LIBRARY' :"/MyIsing/lattice.xml", 'MODEL_LIBRARY' :"/MyIsing/model.xml", 'LATTICE' :"open chain lattice", 'MODEL' :"Ising", 'h' : 2.1, 'J' : -0.5, 'L' : 8 }] input_file = pyalps.writeInputFiles('IsingEXACT',parms) res = pyalps.runApplication('sparsediag',input_file,writexml=True)
and a DMRG
parms = [{ 'LATTICE_LIBRARY' :"/MyIsing/lattice.xml", 'MODEL_LIBRARY' :"/MyIsing/model.xml", 'LATTICE' :"open chain lattice", 'MODEL' :"Ising", 'J' : -0.5, 'h' : 2.1, 'SWEEPS' : 4, 'NUMBER_EIGENVALUES' : 1, 'L' : 8, 'MAXSTATES' : 600 }]
The sparsediag gives me
-8.8210316277121077
and the DMRG gives me
-8.5812583500526003
with truncation error -2.2204460492503131e-16
Why the data are so distant notwithstanding the truncation error is so small, and it seems to be converged?
Kindest regards.
On 14 November 2013 20:03, Matthias Troyer <troyer@phys.ethz.ch> wrote: Dear Emanuele Levi,
It is well known that periodic boundary conditions are a problem for DMRG. You will need a large number of states ( you don't mention how many you use) and you need to sweep often.
Matthias
On Nov 14, 2013, at 10:33, Emanuele Levi <emanuele.levi@gmail.com> wrote:
Dear ALPS users, I am checking the performance of the DMRG application of ALPS on a simple Ising chain with periodic boundary conditions. The program seems not to be able to converge to the right ground state, even for lengths of the chain such as L=6,8,.. Comparing to the results of the sparsdiag algorithm included in the package the ground state energies are very different.
Does anyone know why it is so? Any idea on how to overcome this problem?
Thank you in advance.
-- Dr Emanuele Levi
emanuele.levi@gmail.com
-- Dr Emanuele Levi
emanuele.levi@gmail.com
Dear Matthias, I tried to increase the sweeps running parms = [] for s in [4,8,12]: parms.append( { 'LATTICE_LIBRARY' :"/MyIsing/lattice.xml", 'MODEL_LIBRARY' :"/MyIsing/model.xml", 'LATTICE' :"open chain lattice", 'MODEL' :"Ising", 'J' : -0.5, 'h' : 2.1, 'SWEEPS' : s, 'NUMBER_EIGENVALUES' : 1, 'L' : 8, 'MAXSTATES' : 800 }) that means I am doing 4,8,12 sweeps. The result does not change too much s=4, -8.5812583500526003 s=8, -8.5812583500217769 s=12, -8.5812583528577377 and the truncation errors are always on the order of 10^(-16). What strikes me is that I am keeping 600 states for a L=8 spin chain, with a Hilbert space of dimension 2^8=256. So the DMRG step should really be just a change of basis. Could it be that due to the approximations at the warm up the algorithm gets stuck into a metastable configuration even for such a short chain? Kindest regards. On 14 November 2013 22:13, Matthias Troyer <troyer@phys.ethz.ch> wrote:
You have to do more than four sweeps. Please increase the number of sweeps and observe how the error changes.
On Nov 14, 2013, at 16:56, Emanuele Levi <emanuele.levi@gmail.com> wrote:
Dear Matthias,
thank you for your quick answer. Actually I have considered both periodic and open boundary conditions.
The model I defined as follows
<SITEOPERATOR name="Sx" site="x"> 1/2*(Splus(x)+Sminus(x)) </SITEOPERATOR>
<HAMILTONIAN name="Ising"> <PARAMETER name="J" default="0"/> <PARAMETER name="h" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> J*h*2*Sz(i) </SITETERM> <BONDTERM source="i" target="j"> J*4*Sx(i)*Sx(j) </BONDTERM></HAMILTONIAN>
And I run the following simulations: An exact
parms = [{ 'LATTICE_LIBRARY' :"/MyIsing/lattice.xml", 'MODEL_LIBRARY' :"/MyIsing/model.xml", 'LATTICE' :"open chain lattice", 'MODEL' :"Ising", 'h' : 2.1, 'J' : -0.5, 'L' : 8 }] input_file = pyalps.writeInputFiles('IsingEXACT',parms) res = pyalps.runApplication('sparsediag',input_file,writexml=True)
and a DMRG
parms = [{ 'LATTICE_LIBRARY' :"/MyIsing/lattice.xml", 'MODEL_LIBRARY' :"/MyIsing/model.xml", 'LATTICE' :"open chain lattice", 'MODEL' :"Ising", 'J' : -0.5, 'h' : 2.1, 'SWEEPS' : 4, 'NUMBER_EIGENVALUES' : 1, 'L' : 8, 'MAXSTATES' : 600 }]
The sparsediag gives me
-8.8210316277121077
and the DMRG gives me
-8.5812583500526003
with truncation error -2.2204460492503131e-16
Why the data are so distant notwithstanding the truncation error is so small, and it seems to be converged?
Kindest regards.
On 14 November 2013 20:03, Matthias Troyer <troyer@phys.ethz.ch> wrote:
Dear Emanuele Levi,
It is well known that periodic boundary conditions are a problem for DMRG. You will need a large number of states ( you don't mention how many you use) and you need to sweep often.
Matthias
On Nov 14, 2013, at 10:33, Emanuele Levi <emanuele.levi@gmail.com> wrote:
Dear ALPS users, I am checking the performance of the DMRG application of ALPS on a simple Ising chain with periodic boundary conditions. The program seems not to be able to converge to the right ground state, even for lengths of the chain such as L=6,8,.. Comparing to the results of the sparsdiag algorithm included in the package the ground state energies are very different.
Does anyone know why it is so? Any idea on how to overcome this problem?
Thank you in advance.
-- Dr Emanuele Levi
emanuele.levi@gmail.com
-- Dr Emanuele Levi
emanuele.levi@gmail.com
-- Dr Emanuele Levi emanuele.levi@gmail.com
participants (2)
-
Emanuele Levi
-
Matthias Troyer