PAOFLOW.spectrum.do_dos#
Attributes#
Functions#
|
Compute the total electronic density of states with fixed Gaussian smearing. |
|
Compute the total density of states with adaptive smearing. |
Module Contents#
- PAOFLOW.spectrum.do_dos.do_dos(data_controller, emin, emax, ne, delta)[source]#
Compute the total electronic density of states with fixed Gaussian smearing.
- Parameters:
data_controller (DataController) – Object providing
data_arraysanddata_attributes. Required arrays:E_k(shape(nkpnts, nawf, nspin)). Required attributes:bnd,nkpnts,nspin,shift,verbose.emin (float) – Lower energy bound of the DOS grid (eV).
emax (float) – Upper energy bound; clipped to
min(shift, emax)(eV).ne (int) – Number of energy grid points.
delta (float) – Gaussian smearing width (eV).
- Returns:
Adds or updates the following entries in
data_controller.data_arrays:dos: np.ndarray, shape(ne,)— the DOS on the energy grid (broadcast to all ranks).
Writes
dos_{ispin}.datviaDataController.write_file_row_col().- Return type:
None
Notes
The DOS is computed as
\[g(E) = \frac{N_{\rm bnd}}{N_{\rm tot} \sqrt{\pi}\,\delta} \sum_{\mathbf{k},n} \exp\!\left( -\left(\frac{E - \varepsilon_{n\mathbf{k}}}{\delta}\right)^2\right)\]where \(N_{\rm tot} = N_k \times N_{\rm bnd}\). MPI reduction is used to sum partial contributions from each rank.
- PAOFLOW.spectrum.do_dos.do_dos_adaptive(data_controller, emin, emax, ne)[source]#
Compute the total density of states with adaptive smearing.
- Parameters:
data_controller (DataController) – Object providing
data_arraysanddata_attributes. Required arrays:E_k(shape(nkpnts, nawf, nspin)),deltakp(per-k adaptive smearing widths). Required attributes:bnd,nkpnts,nspin,smearing('gauss'or'm-p'),verbose.emin (float) – Lower energy bound (eV).
emax (float) – Upper energy bound (eV).
ne (int) – Number of energy grid points.
- Returns:
Adds or updates the following entries in
data_controller.data_arrays:dosdk: np.ndarray, shape(ne,)— the adaptive DOS (broadcast to all ranks).
Writes
dosdk_{ispin}.datviaDataController.write_file_row_col().- Return type:
None
Notes
At each energy point the per-k adaptive smearing width from
deltakpis passed to eithersmearing.gaussian()(Gaussian broadening) orsmearing.metpax()(Methfessel-Paxton broadening). This approach follows Yates et al., Phys. Rev. B 75, 195121 (2007).