berry_curvature

sisl.physics.electron.berry_curvature(state, energy, dHk, dSk=None, degenerate=None, degenerate_dir=(1, 1, 1))[source]

Calculate the Berry curvature matrix for a set of states (using Kubo)

The Berry curvature is calculated using the following expression (\(\alpha\), \(\beta\) corresponding to Cartesian directions):

\[\boldsymbol\Omega_{\alpha\beta,i} = - \frac2{\hbar^2}\Im\sum_{j\neq i} \frac{v^\alpha_{ij} v^\beta_{ji}} {[\epsilon_j - \epsilon_i]^2}\]

For details see Eq. (11) in [11] or Eq. (2.59) in [1].

Parameters:
  • state (array_like) – vectors describing the electronic states, 2nd dimension contains the states. In case of degenerate states the vectors may be rotated upon return.

  • energy (array_like, optional) – energies of the states. In case of degenerate states the eigenvalues of the states will be averaged in the degenerate sub-space.

  • dHk (list of array_like) – Hamiltonian derivative with respect to \(\mathbf k\). This needs to be a tuple or list of the Hamiltonian derivative along the 3 Cartesian directions.

  • dSk (list of array_like, optional) – \(\delta \mathbf S_{\mathbf k}\) matrix required for non-orthogonal basis. Same derivative as dHk. NOTE: Using non-orthogonal basis sets are not tested.

  • degenerate (list of array_like, optional) – a list containing the indices of degenerate states. In that case a prior diagonalization is required to decouple them.

  • degenerate_dir ((3,), optional) – along which direction degenerate states are decoupled.

See also

velocity

calculate state velocities

velocity_matrix

calculate state velocities between all states

Hamiltonian.dHk

function for generating the Hamiltonian derivatives (dHk argument)

Hamiltonian.dSk

function for generating the Hamiltonian derivatives (dSk argument)

Returns:

Berry flux with final dimension (3, 3, state.shape[0])

Return type:

ndarray