Bug: magnetic unit cell commensuration in the Hofstadter model #452
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bug description
The
HofstadterFermions
class supports 3 different gauge choices:landau_x
,landau_y
,symmetric
, which should all be physically equivalent. I have used ED simulations on small (3 by 3) systems to confirm that this is indeed the case. While the results forlandau_x
andlandau_y
always agree, the results of thesymmetric
gauge choice agree only if boundary conditions are open in bothx
andy
.I believe the problem has to do with the incommensuration of the magnetic unit cell and the lattice. As one passes through
mx
sites of a magnetic unit cell[mx, 1]
in thelandau_x
gauge, a phase of(2pi / q) * mx
, which is a multiple of2pi
, is acquired. As one passes throughmx
sites in the symmetric gauge, only(0.5 * 2pi / q) * mx
is acquired, which is an integer multiple ofpi
, rather than2pi
. Hence, ifLx
is an odd integer multiple ofmx
, a phase of-1
is acquired encircling the lattice, and the boundary conditions are antiperiodic. A different model is implemented implicitly, though physical equivalence is expected, since one only made a different gauge choice.PR Description
L_i % (2 m_i) == 0
, withi=x,y
and otherwise raise an error. Add a similar assertion to the other gauges.