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