functions.band_structure.berry_curv

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

Compute the Berry curvature.

The Berry curvature around a plaquette is computed using the formula from [Fukui05] (example applications in [AidelsburgerPhD, SoluyanovPhD]), such that

\[\mathcal{B}_{12}(\mathbf{k}_\alpha) \equiv - \text{Im}\;\log\;(\tilde{\mathcal{U}}_1(\mathbf{k}_\alpha)\tilde{\mathcal{U}}_2(\mathbf{k}_\alpha+\hat{\mathbf{e}}_1)\tilde{\mathcal{U}}_1(\mathbf{k}_\alpha+\hat{\mathbf{e}}_2)^{-1}\tilde{\mathcal{U}}_2(\mathbf{k}_\alpha)^{-1}),\]

where \(\tilde{\mathcal{U}}\) are the normalized link variables. The Berry curvature at a point \(\mathbf{k}\) can then be computed by taking the limit of small plaquette size.

Note

The Berry curvature is defined within the principal branch of the logarithm. For example, the corresponding log sum formula for a single band would be

\[\mathcal{B}_{12}(\mathbf{k}_\alpha) = - \text{Im}\;\mathcal{P}\;(\log\tilde{\mathcal{U}}_1(\mathbf{k}_\alpha) +\log\tilde{\mathcal{U}}_2(\mathbf{k}_\alpha+\hat{\mathbf{e}}_1)-\log\tilde{\mathcal{U}}_1(\mathbf{k}_\alpha+\hat{\mathbf{e}}_2)-\log\tilde{\mathcal{U}}_2(\mathbf{k}_\alpha)),\]

where \(\mathcal{P}\) denotes the principal value of the complex number \(z\), such that \(-\\\pi<\text{Im}(z)\leq\\\pi\).

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_x (int) – The x-momentum index, with respect to the discretized grid.

  • _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:

Berry_curv – The Berry curvature around a square plaquette.

Return type:

float