velocity

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

Calculate the velocity of a set of states

These are calculated using the analytic expression (\(\alpha\) corresponding to the Cartesian directions):

\[\mathbf{v}^\alpha_{i} = \frac1\hbar \langle \psi_i | \frac{\partial}{\partial\mathbf k_\alpha} \mathbf H(\mathbf k) | \psi_i \rangle\]

In case of non-orthogonal basis the equations substitutes \(\mathbf H(\mathbf k)\) by \(\mathbf H(\mathbf k) - \epsilon_i\mathbf S(\mathbf k)\).

In case the user requests to project the velocities (project is True) the equation follows that of PDOS with the same changes. In case of non-colinear spin the velocities will be returned also for each spin-direction.

Notes

The velocities are calculated without the Berry curvature contribution see Eq. (2) in 1. The missing contribution may be added in later editions, for completeness sake, it is:

\[\delta \mathbf v = - \mathbf k\times \Omega_i(\mathbf k)\]

where \(\Omega_i\) is the Berry curvature for state \(i\).

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.

  • 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.

  • energy (array_like, optional) – energies of the states. Required for non-orthogonal basis together with dSk. In case of degenerate states the eigenvalues of the states will be averaged in the degenerate sub-space.

  • dSk (list of array_like, optional) – \(\delta \mathbf S_k\) matrix required for non-orthogonal basis. This and energy must both be provided in a non-orthogonal basis (otherwise the results will be wrong). Same derivative as dHk

  • 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. See degenerate_dir for the sum of directions.

  • degenerate_dir ((3,), optional) – a direction used for degenerate decoupling. The decoupling based on the velocity along this direction

  • project (bool, optional) – whether the velocities will be returned projected per orbital

See also

Hamiltonian.dHk

function for generating the Hamiltonian derivatives (dHk argument)

Hamiltonian.dSk

function for generating the Hamiltonian derivatives (dSk argument)

References

1

X. Wang, J. R. Yates, I. Souza, D. Vanderbilt, “Ab initio calculation of the anomalous Hall conductivity by Wannier interpolation”, PRB **74**, 195118 (2006)

Returns

  • numpy.ndarray – if project is false, velocities per state with final dimension (state.shape[0], 3), the velocity unit is Ang/ps. Units may change in future releases.

  • numpy.ndarray – if project is true, velocities per state with final dimension (state.shape[0], state.shape[1], 3), the velocity unit is Ang/ps. Units may change in future releases.