PAOFLOW.spectrum.do_adaptive_smearing#

Functions#

do_adaptive_smearing(data_controller, smearing, afac)

Compute adaptive smearing widths for each k-point and band.

Module Contents#

PAOFLOW.spectrum.do_adaptive_smearing.do_adaptive_smearing(data_controller, smearing, afac)[source]#

Compute adaptive smearing widths for each k-point and band.

Parameters:
  • data_controller (DataController) – Object providing data_arrays and data_attributes. Required array: pksp (shape (npks, 3, nawf, nawf, nspin)) — the momentum matrix elements in the Bloch eigenstate basis. Required attributes: nawf, nspin, nkpnts, omega.

  • smearing (str) – Smearing method identifier. Pass 'm-p' for Methfessel–Paxton; any other value selects the default prefactor.

  • afac (Optional[float]) – Adaptive smearing prefactor \(\alpha\). If None, defaults to 1.0 for 'm-p' smearing and 0.7 otherwise.

Returns:

Adds the following keys to data_controller.data_arrays:

  • deltakp : np.ndarray, shape (npks, nawf, nspin) — band-resolved adaptive smearing widths \(\sigma_{nk} = \alpha \, |\nabla_k E_n| \, \delta k\).

  • deltakp2 : np.ndarray, shape (npks, nawf, nawf, nspin) — interband adaptive smearing widths proportional to \(|\nabla_k E_n - \nabla_k E_m|\).

Return type:

None

Notes

The mean k-point spacing is estimated as

\[\delta k = \left(\frac{8\pi^3}{\Omega \, N_k}\right)^{1/3}\]

where \(\Omega\) is the unit-cell volume and \(N_k\) is the total number of k-points. The diagonal elements of pksp (proportional to the band velocities) are used as a proxy for \(\nabla_k E_n\).

Reference: J. R. Yates, X. Wang, D. Vanderbilt, I. Souza, Phys. Rev. B 75, 195121 (2007).