pythtb.WFArray.wilson_loop#

WFArray.wilson_loop(axis_idx, state_idx=None, wilson_evals=False)[source]#

Wilson loop along a specified mesh axis.

The Wilson loop is defined as the ordered product of unitary link matrices along a closed loop string of points in parameter space. For a direction \(\mu\) in the mesh, this routine computes the Wilson loop unitary matrix along that direction,

\[W_{\mu} = \prod_{n=0}^{N_{\mu}-1} U_{\mu}\!\bigl(\boldsymbol{\kappa}_n \bigr)\]

where \(\mu\) corresponds to axis_idx, and \(U_{\mu}(\boldsymbol{\kappa}_n)\) is the unitary part of the overlap matrix between the states at consecutive mesh points (see links()).

Added in version 2.0.0.

Parameters:
axis_idxint

Index of Mesh axis along which Wilson loop is computed.

state_idxint, array-like, optional

Optional band index or array of band indices to be included in the subsequent calculations. If unspecified, all bands are included.

wilson_evalsbool, optional

If True, then will compute eigenvalues of the Wilson loop and return them along with the Wilson loop. Default is False.

Returns:
U_wilsonnp.ndarray

Wilson loop unitary matrix of shape (band, band).

eigvalsnp.ndarray, optional

Unit norm complex eigenvalues of the Wilson loop unitary matrix. Returned only if wilson_evals=True, otherwise not returned.

Notes

  • When wilson_evals=True, the function computes and returns the eigenvalues of the Wilson loop unitary matrix. The eigenvalues are complex numbers of the form

    \[\lambda_n = e^{i \phi_n}\]

    where \(\phi_n\) are the multiband Berry phases associated with each band.

  • wilson_evals are to be distinguished from multiband Berry phases (as returned in berry_phase() with berry_evals=True). The berry_evals are the phase arguments of wilson_evals, not the eigenvalues themselves.

  • For an array of size N along axis_idx, the Wilson loop is formed from the N-1 nearest-neighbor inner products. This gives an open-path “Wilson line” unless the endpoints correspond to the same physical Hamiltonian; in which case the first state is appended to the end (if endpoints are not already identical) to close the loop (with appropriate PBC phase along k-axes).