velocity_matrix

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

Calculate the velocity matrix of a set of states

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

\[\mathbf{v}^\alpha_{ij} = \frac1\hbar \langle \psi_j | \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)\).

Although the matrix \(\mathbf v\) should be Hermitian it is not checked, and we explicitly calculate all elements.

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

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

See also

velocity

only calculate the diagonal components of this matrix

Hamiltonian.dHk

function for generating the Hamiltonian derivatives (dHk argument)

Hamiltonian.dSk

function for generating the Hamiltonian derivatives (dSk argument)

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\).

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

velocity matrix state with final dimension (state.shape[0], state.shape[0], 3), the velocity unit is Ang/ps. Units may change in future releases.

Return type

numpy.ndarray