functions.band_structure.wilson_loop

wilson_loop(_eigenvectors, _band, _idx_y, _group_size=1)[source]

Compute the Wilson loop.

The Wilson loop term is defined as the product of Berry phases around a cycle of the Brillouin zone, such that

\[W = -\Im \log \prod_{\alpha} \tilde{\mathcal{U}}_2(\mathbf{k}_\alpha),\]

where \(\tilde{\mathcal{U}}_2\) is the normalized link variable, \(\mathbf{k}_\alpha\) is the discretized momentum vector, and the product is taken on a Brillouin zone cycle in the \(\gamma=2\) direction. [Gresch18]

Parameters:
  • _eigenvectors (ndarray) – The array of eigenvectors with dimension (num_bands, num_bands, num_samples, num_samples).

  • _band (int) – The band number. If part of a band group, this must refer to the lowest band of the group.

  • _idx_y (int) – The y-momentum index, with respect to the discretized grid.

  • _group_size (int) – The number of touching bands a.k.a. number of bands in the band group (default=1).

Returns:

Wilson_loop – The Wilson loop term.

Return type:

complex