functions.band_structure.U
- U(var_num, _eigenvectors, _band, _idx_x, _idx_y, _group_size)[source]
Compute the link variable.
The normalized link variables are defined as
\[\tilde{\mathcal{U}}_\gamma(\mathbf{k}_\alpha) = \frac{\det U_\gamma(\mathbf{k}_\alpha)}{|\det U_\gamma(\mathbf{k}_\alpha)|}, \;\;\; \gamma = \{1, 2\},\]with link matrices
\[\begin{split}U_\gamma(\mathbf{k}_\alpha) = \begin{pmatrix} \braket{u_1(\mathbf{k}_\alpha)|u_1(\mathbf{k}_\alpha+\hat{\mathbf{e}_\gamma})} & \dots & \braket{u_1(\mathbf{k}_\alpha)|u_M(\mathbf{k}_\alpha+\hat{\mathbf{e}_\gamma})} \\ \vdots & \ddots & \vdots \\ \braket{u_M(\mathbf{k}_\alpha)|u_1(\mathbf{k}_\alpha+\hat{\mathbf{e}_\gamma})} & \dots & \braket{u_M(\mathbf{k}_\alpha)|u_M(\mathbf{k}_\alpha+\hat{\mathbf{e}_\gamma})} \end{pmatrix}.\end{split}\]Here, \(\mathbf{k}_\alpha\) is the discretized momentum vector, \(\{\hat{\mathbf{e}}_1, \hat{\mathbf{e}}_2\}\) are linearly independent unit vectors in the momentum grid, and \(\ket{u(\mathbf{k}_\alpha)}\) is the eigenvector at momentum \(\mathbf{k}_\alpha\). The link variables are constructed for \(M\) touching bands. [Fukui05]
Note
Input eigenvectors are already normalized from
numpy.linalg.eig
.- Parameters:
var_num ([1, 2]) – The link variable number.
_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, with respect to the discretized grid.
_idx_y (int) – The y-momentum, with respect to the discretized grid.
_group_size (int) – The number of bands in the band group.
- Returns:
link_var – The U(1) link variable.
- Return type: