velocity
- sisl.physics.phonon.velocity(mode, hw, dDk, degenerate=None, degenerate_dir=(1, 1, 1), project=False)[source]
Calculate the velocity of a set of modes
These are calculated using the analytic expression (\(\alpha\) corresponding to the Cartesian directions):
\[\mathbf{v}_{i\alpha} = \frac1{2\hbar\omega} \langle \epsilon_i | \frac{\partial}{\partial\mathbf k}_\alpha \mathbf D(\mathbf k) | \epsilon_i \rangle\]- Parameters
mode (array_like) – vectors describing the phonon modes, 2nd dimension contains the modes. In case of degenerate modes the vectors may be rotated upon return.
hw (array_like) – frequencies of the modes, for any negative frequency the velocity will be set to 0.
dDk (list of array_like) – Dynamical matrix derivative with respect to \(\mathbf k\). This needs to be a tuple or list of the dynamical matrix derivative along the 3 Cartesian directions.
degenerate (list of array_like, optional) – a list containing the indices of degenerate modes. In that case a prior diagonalization is required to decouple them. This is done 3 times along each of the Cartesian directions.
degenerate_dir ((3,), optional) – a direction used for degenerate decoupling. The decoupling based on the velocity along this direction
project (bool, optional) – if true, velocities will be returned projected per mode component
See also
DynamicalMatrix.dDk
function for generating the dynamical matrix derivatives (dDk argument)
- Returns
numpy.ndarray – if project is false; velocities per mode with final dimension
(mode.shape[0], 3)
, the velocity unit is Ang/ps Units may change in future releases.numpy.ndarray – if project is true; velocities per mode with final dimension
(mode.shape[0], mode.shape[1], 3)
, the velocity unit is Ang/ps Units may change in future releases.