PAOFLOW.spectrum.do_pdos#

Attributes#

Functions#

do_pdos(data_controller, emin, emax, ne, delta)

Compute the projected density of states with fixed Gaussian smearing.

do_pdos_adaptive(data_controller, emin, emax, ne)

Compute the projected density of states with adaptive smearing.

Module Contents#

PAOFLOW.spectrum.do_pdos.comm[source]#
PAOFLOW.spectrum.do_pdos.rank[source]#
PAOFLOW.spectrum.do_pdos.do_pdos(data_controller, emin, emax, ne, delta)[source]#

Compute the projected density of states with fixed Gaussian smearing.

Parameters:
  • data_controller (DataController) – Object providing data_arrays and data_attributes. Required arrays: E_k (shape (nkpnts, nawf, nspin)), v_k (shape (nkpnts, nawf, nawf, nspin)). Required attributes: nawf, nspin, nkpnts, shift.

  • emin (float) – Lower energy bound of the PDOS 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:

Writes the following files to the output directory via DataController.write_file_row_col():

  • {atom_indexed}_{n_orb}_pdos_{ispin}.dat (for example

    Si1_3px_pdos_0.dat) for each orbital and spin channel.

  • pdos_sum_{ispin}.dat — the total projected DOS.

Return type:

None

Notes

The PDOS for orbital m at energy E is

\[P_m(E) = \frac{1}{N_k \sqrt{\pi}\,\delta} \sum_{\mathbf{k},n} |\langle m | n, \mathbf{k} \rangle|^2 \exp\!\left(-\left(\frac{E - \varepsilon_{n\mathbf{k}}}{\delta}\right)^2\right)\]

MPI reduction (MPI.Reduce()) is used to accumulate the per-rank partial sums on rank 0.

PAOFLOW.spectrum.do_pdos.do_pdos_adaptive(data_controller, emin, emax, ne)[source]#

Compute the projected density of states with adaptive smearing.

Parameters:
  • data_controller (DataController) – Object providing data_arrays and data_attributes. Required arrays: E_k (shape (nkpnts, nawf, nspin)), v_k (shape (nkpnts, nawf, nawf, nspin)), deltakp (shape (nkpnts, nawf, nspin) or similar — per-k adaptive smearing widths). Required attributes: nawf, nspin, nkpnts, shift, smearing ('gauss' or 'm-p').

  • emin (float) – Lower energy bound (eV).

  • emax (float) – Upper energy bound; clipped to min(shift, emax) (eV).

  • ne (int) – Number of energy grid points.

Returns:

Writes the following files to the output directory:

  • {atom_indexed}_{n_orb}_pdosdk_{ispin}.dat (for example

    Si1_3px_pdosdk_0.dat) for each orbital and spin channel.

  • pdosdk_sum_{ispin}.dat — the total adaptive PDOS.

Return type:

None

Notes

At each energy point the per-k smearing width deltakp is used to evaluate either a Gaussian or a Methfessel-Paxton broadening function via smearing.gaussian() or smearing.metpax(). This approach follows Yates et al., Phys. Rev. B 75, 195121 (2007).