iDMRG is not working properly with next-nearest neighbor complex hopping in the Haldane model
Posted: 06 Sep 2019, 04:52
Hi everyone,
I am trying to simulate a hard-bosonic Haldane model in the honeycomb lattice. The model is defined at Eq-2 of paper,arXiv:1603.04827. I have created the nearest neighbor bonds and next-nearest neighbor bonds as in the following way in a "Lattice"-class,
where, the "beta"-vectors are same as in Fig.1(a) of the paper arXiv:1603.04827. Again, basis-0 and basis-1 represent sublattice-A and sublattice-B in the same Figure, respectively. The lattice geometry and the 1D-chain along the honeycomb lattice is chosen same as in the Fig.1(a) of paperarXiv:1208.2623. Moreover, for infinite DMRG I have chosen 2-unitcells of stripe like geometry(I have chosen 3,4,6-unitcells as well and that give me the same result). The next nearest neighbor hopping term in the "init_terms"-function of "CouplingMPOModel"-type class is taken in two ways,
Way-I:
This way of input produces fluctuating results after each sweep. The energy and entropy do not converge.
Way-II:
This way of input produces the same result for D=0 and D=finite. But, it is expected that, results for D=0 and results for D=finite should be different.
Note:
(i) The both of the above way should produce same results.
(ii) The finite-DMRG does not show any bad behavior like the above. So, I guess, in the i-DMRG code there must be a problem in the environment update part. Because complex hopping is direction dependent, so may be the direction dependent situation is not encountered in the environment update part. It is just my guess .
(iii) I know i-DMRG is not good for critical points when the correlation length is large. For my simulation, I have avoided those points in parameter space.
Sincerely,
Dhiman
I am trying to simulate a hard-bosonic Haldane model in the honeycomb lattice. The model is defined at Eq-2 of paper,arXiv:1603.04827. I have created the nearest neighbor bonds and next-nearest neighbor bonds as in the following way in a "Lattice"-class,
Code: Select all
NN = [(0, 1, np.array([0, 0])), (0, 1, beta1), (0, 1, -beta3)]
nNN=[(0,0,beta1),(0,0,beta2),(0,0,beta3),
(1,1,-beta1),(1,1,-beta2),(1,1,-beta3)]
Way-I:
Code: Select all
for u1, u2, dx in self.lat.next_nearest_neighbors:
self.add_coupling(1j*D,u1, 'Bd', u2, 'B', dx)
self.add_coupling(-1j*D,u1, 'B', u2, 'Bd', dx)
Way-II:
Code: Select all
for u1, u2, dx in self.lat.next_nearest_neighbors:
self.add_coupling(1j*D,u1, 'Bd', u2, 'B', dx)
self.add_coupling(-1j*D,u2, 'Bd', u1, 'B', dx)
Note:
(i) The both of the above way should produce same results.
(ii) The finite-DMRG does not show any bad behavior like the above. So, I guess, in the i-DMRG code there must be a problem in the environment update part. Because complex hopping is direction dependent, so may be the direction dependent situation is not encountered in the environment update part. It is just my guess .
(iii) I know i-DMRG is not good for critical points when the correlation length is large. For my simulation, I have avoided those points in parameter space.
Sincerely,
Dhiman