The user guide introduction to models suggested to add the hermitian conjugate coupling for a CouplingModel with the formulation
Simply add another line self.add_coupling(J, u1, 'Sz', u2, 'Sz', -dx)
The models in TenPy followed this, e.g. the FermionModel in the fermions_spinless.py had the wrong lines
for u1, u2, dx in self.lat.nearest_neighbors:
self.add_coupling(-J, u1, 'Cd', u2, 'C', dx, 'JW', True)
self.add_coupling(-J, u1, 'Cd', u2, 'C', -dx, 'JW', True) # hermitian conjugate
In general, the hermitian conjugate of sum_<i,j> A_i B_j = sum_i A_i B_(i+dx) is
sum_<i,j> B^dagger_i A^dagger_j = sum_j B^dagger_j A^dagger_(i-dx).
Hence, the general rule should be:
- send
dx to -dx
- swap the order of the operators,
- take the hermitian conjugate of the operators.
The correct lines for the above couplings should hence be
for u1, u2, dx in self.lat.nearest_neighbors:
self.add_coupling(-J, u1, 'Cd', u2, 'C', dx, 'JW', True)
self.add_coupling(-J, u2, 'Cd', u1, 'C', -dx, 'JW', True) # h.c.
or in general
for u1, u2, dx in self.lat.nearest_neighbors:
self.add_coupling(strength, u1, 'A', u2, 'B', dx)
self.add_coupling(np.conj(strength), u2, 'Bdagger', u1, 'Adagger', -dx) # h.c.
All the models in TenPy are fine for lattices with a trivial unit cell, e.g., the "Chain", "Square".
However, for models on a lattice with non-trivial unit cell, it might have given wrong Hamiltonians.
The user guide introduction to models suggested to add the hermitian conjugate coupling for a
CouplingModelwith the formulationThe models in TenPy followed this, e.g. the
FermionModelin thefermions_spinless.pyhad the wrong linesIn general, the hermitian conjugate of
sum_<i,j> A_i B_j = sum_i A_i B_(i+dx)issum_<i,j> B^dagger_i A^dagger_j = sum_j B^dagger_j A^dagger_(i-dx).Hence, the general rule should be:
dxto-dxThe correct lines for the above couplings should hence be
or in general
All the models in TenPy are fine for lattices with a trivial unit cell, e.g., the "Chain", "Square".
However, for models on a lattice with non-trivial unit cell, it might have given wrong Hamiltonians.