# calculateVelocity¶

calculateVelocity(configuration, kpoint=None, spin=None, band_indices=None)

Calculates the Bloch-state velocity $$\frac{1}{\hbar} \frac{dE}{dk}$$ using first order perturbation theory.

Parameters: configuration (BulkConfiguration) – The configuration for which to calculate the velocity. kpoint (tuple of floats) – The kpoint as three floats representing fractional reciprocal space coordinates. Default: The Gamma point (0.0, 0.0, 0.0) spin (Spin.Up | Spin.Down | Spin.All) – The spin component for which to perform the calculation. Default: Spin.All band_indices (list of non-negative int) – Indices of the bands for which to calculate the velocity. Default: All bands (range(number_of_bands)) The velocities for each band. numpy.array

## Usage Examples¶

Evaluate the valence band velocity for graphene at the Dirac point:

# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------

# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=Hexagonal(2.4612*Angstrom, 6.709*Angstrom),
elements=[Carbon, Carbon],
fractional_coordinates=[[ 0.333333333333,  0.166666666667,  0.5 ],
[ 0.666666666667,  0.833333333333,  0.5 ]],
)

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
calculator = LCAOCalculator()

bulk_configuration.setCalculator(calculator)
nlprint(bulk_configuration)
bulk_configuration.update()

# Fractional k-point, slighly displaced away from the Dirac point.
k = [1./3+0.001, 1./3+0.001, 0  ]

# Calculate the velocity of the band with band-index 3 (valence band)
velocity = calculateVelocity(bulk_configuration, kpoint=k, spin=Spin.Up, band_indices=[3])
# Take the velocity component along the X cartesian direction.
velocity = velocity[0][0][0]

# Print the result.
print('Fermi velocity of graphene:')
print('v = %.2e m/s' %abs(velocity.inUnitsOf(Meter/Second)))


graphene_velocity.py

Running the script you will get a Fermi velocity of $$v_F=8.4\cdot 10^{5}$$ m/s, which is close to literature values, genereally reported to be $$\approx 10^6$$ m/s.

## Notes¶

• The band velocity, usually defined as $$v_n(\mathbf{k}) = \nabla_\mathbf{k}E_n(\mathbf{k})$$ is evaluated using first-order perturbation theory. The velocity in Cartesian direction $$\alpha$$ of band $$n$$ at wavevector $$\mathbf{k}$$ is:

$v_n^\alpha(\mathbf{k}) = \langle \psi_n(\mathbf{k})| \partial_{k_\alpha} H(\mathbf{k}) - \epsilon_n(\mathbf{k}) \partial_{k_\alpha} S(\mathbf{k})| \psi_n(\mathbf{k}) \rangle,$

where $$|\psi_n(\mathbf{k}\rangle$$ is the Bloch eigenstate in band $$n$$ with energy $$\epsilon_n(\mathbf{k})$$. $$\partial_{k_\alpha} H(\mathbf{k})$$ and $$\partial_{k_\alpha} S(\mathbf{k})$$ are the derivative of the Fourier transformed Hamiltonian and overlap matrices with respect to Cartesian component $$k_\alpha$$.