Additional notes on computing Chern number
Computing the Chern number from the Berry connection is annoying because one needs to find a gauge where the Bloch wave-functions are continuous.
On the other hand, the Chern number is really the integral of the Berry curvature
as
Numerically it is more convenient to compute the integral by breaking them down into small plaquettes. So that
is broken down into chunks
For sufficiently small chunks is small and one can get away with computing the exponential
The flux on the small plaquette can be computed as
What is nice about this product is that it is gauge invariant as can be checked by multiplying each wave-function .
The nice thing about this expression is that one can also generalize this to multiband systems to calculate the total Chern number so that the contribution from each plaquette
where labels the band index.
What Vanderbilt and coworkers pointed out is that this expression can be written as is related to determinants of a bunch of matrices , which in the diagonal basis of eigenstates is nearly diagonal, which takes us back to the previous expression.
The main advantage of this expression is that it is actually invariant for any unitary transformation of the occupied eigenstates.
Final recipe
So the final recipe to compute the Chern number is as follows:
grid up the BZ into small plaquettes labelled by
Compute the flux through each plaquette where are momenta on the corners of the lattice.
The Chern number is calculated as