ahc
- sisl.physics.electron.ahc(bz: BrillouinZone, k_average: bool = True, *, distribution: _TDist = 'step', eigenstate_kwargs={}, apply_kwargs={}, **berry_kwargs) np.ndarray [source]
Electronic anomalous Hall conductivity for a given BrillouinZone integral
\[\sigma_{\alpha\beta} = \frac{-e^2}{\hbar}\int\,\mathrm d\mathbf k\sum_i f_i\Omega_{i,\alpha\beta}(\mathbf k)\]where \(\Omega_{i,\alpha\beta}\) and \(f_i\) is the Berry curvature and occupation for state \(i\).
The conductivity will be averaged by volume of the periodic unit cell. Hence the unit of
ahc
depends on the periodic unit cell. SeeLattice.volumef
for details.See [14] for details on the implementation.
- Parameters:
bz (
BrillouinZone
) – containing the integration grid and has thebz.parent
as an instance of Hamiltonian.k_average – if True, the returned quantity is averaged over bz, else all k-point contributions will be collected (in the 1st dimension). Note, for large bz integrations this may explode the memory usage.
distribution – An optional distribution enabling one to automatically sum states across occupied/unoccupied states.
eigenstate_kwargs – keyword arguments passed directly to the
contour.eigenstate
method. One should not pass ak
or awrap
keyword argument as they are already used.apply_kwargs – keyword arguments passed directly to
bz.apply(**apply_kwargs)
.**berry_kwargs – arguments passed directly to the berry_curvature method.
Here one can pass derivative_kwargs to pass flags to the derivative method. In particular
axes
can be used to speedup the calculation (by omitting certain directions).
Examples
To calculate the AHC for a range of energy-points. First create
E
which is the energy grid. In order for the internal algorithm to be able to broadcast arrays correctly, we have to allow the eigenvalue spectrum to be appended by reshaping.>>> E = np.linspace(-2, 2, 51) >>> dist = get_distribution("step", x0=E.reshape(-1, 1)) >>> ahc_cond = ahc(bz, dist) >>> assert ahc_cond.shape == (3, 3, len(E))
Sometimes one wishes to see the k-resolved AHC. Be aware that AHC requires a dense k-grid, and hence it might require a lot of memory. Here it is calculated at \(E=0\) (default energy reference).
>>> ahc_cond = ahc(bz, k_average=False) >>> assert ahc_cond.shape == (len(bz), 3, 3)
See also
derivative
method for calculating the exact derivatives
berry_curvature
method used to calculate the Berry curvature for calculating the conductivity
Lattice.volumef
volume calculation of the lattice
shc
spin Hall conductivity
- Returns:
ahc (
numpy.ndarray
) – Anomalous Hall conductivity returned in certain dimensionsahc[:, :]
. If sum is False, it will be at least a 3D array with the 3rd dimension having the contribution from state i. If k_average is False, it will have a dimension prepended with k-point resolved AHC. If one passes axes to the derivative_kwargs argument one will get dimensions according to the number of axes requested, by default all axes will be used (even if they are non-periodic). The dtype will be imaginary. When \(D\) is the dimensionality of the system we find the unit to be \(\mathrm S/\mathrm{Ang}^{D-2}\).