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 [10] 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_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

numpy.ndarray