shc
- sisl.physics.electron.shc(bz, k_average=True, sigma='z', *, J_axes='xyz', distribution='step', eigenstate_kwargs={}, apply_kwargs={}, **berry_kwargs)[source]
Electronic spin Hall conductivity for a given BrillouinZone integral
where
and are the spin Berry curvature and occupation for state .The conductivity will be averaged by volume of the periodic unit cell. See
volumef
for details.See [9] and [4] for details on the implementation.
- Parameters:
bz (BrillouinZone) – containing the integration grid and has the
bz.parent
as an instance of Hamiltonian.k_average (bool) – if True, the returned quantity is averaged over bz, else all k-point contributions will be collected. Note, for large bz integrations this may explode the memory usage.
sigma (Union[CartesianAxisStrLiteral, npt.ArrayLike]) – which Pauli matrix is used, alternatively one can pass a custom spin matrix, or the full sigma.
J_axes (Union[CartesianAxisStrLiteral, Sequence[CartesianAxisStrLiteral]]) – the direction(s) where the
operator will be applied (defaults to all).distribution (DistributionType) – An optional distribution enabling one to automatically sum states across occupied/unoccupied states. Defaults to the step function.
eigenstate_kwargs – keyword arguments passed directly to the
bz.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.renew(**apply_kwargs)
.**berry_kwargs (
dict
, optional) –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).
- Return type:
np.ndarray
Examples
For instance,
sigma = 'x', J_axes = 'y'
will result in , and the rest will be the AHC.>>> cond = shc(bz, J_axes="y") >>> shc_y_xyz = cond[1] >>> ahc_xz_xyz = cond[[0, 2]]
Passing an explicit
matrix is also allowed:>>> cond = shc(bz) >>> assert np.allclose(cond, shc(bz, sigma=Spin.Z))
For further examples, please see
ahc
which is equivalent to this method.Notes
Original implementation by Armando Pezo.
See also
derivative
method for calculating the exact derivatives
berry_curvature
the actual method used internally
spin_berry_curvature
method used to calculate the Berry-flux for calculating the spin conductivity
volumef
volume calculation of the primary unit cell.
ahc
anomalous Hall conductivity, this is the equivalent method for the SHC.
- Returns:
shc – Spin Hall conductivity returned in certain dimensions
shc[J_axes, :]
. Anomalous Hall conductivity returned in the remaining dimensionsshc[!J_axes, :]
. 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/SHC. 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 is the dimensionality we find the unit to beAHC:
shc[!J_axes, :]
.SHC:
shc[J_axes, :]
.
- Return type:
- Parameters:
bz (BrillouinZone)
k_average (bool)
sigma (Union[CartesianAxisStrLiteral, npt.ArrayLike])
J_axes (Union[CartesianAxisStrLiteral, Sequence[CartesianAxisStrLiteral]])
distribution (DistributionType)