PAOFLOW.pyskeaf.dos#
Tetrahedron-method density of states (DOS) on the SKEAF supercell.
Reproduces slicedos (skeaf_v1p3p0_r149.F90 lines 3133–3291) and the
top-level DOS driver loop (lines 1043–1095).
Algorithm summary#
Sample the band energies on a
(4·numint)³supercell grid via 4-point Lagrange tricubic interpolation (seePAOFLOW.pyskeaf.interp).For each of the
(4·numint - 1)³microcells (8 corner points), split into 6 tetrahedra using the Fortran’s exact corner-index pattern.For each tetrahedron whose energy span brackets
E_F, accumulate the Blöchl-style DOS contribution:e1 ≤ EF ≤ e2: 3V (EF - e1)² / [(e2 - e1)(e3 - e1)(e4 - e1)] e3 ≤ EF ≤ e4: 3V (e4 - EF)² / [(e4 - e1)(e4 - e2)(e4 - e3)] else : (3V / [(e3 - e1)(e4 - e1)]) · ( e2 - e1 + 2·EF - 2·e2 - (e3 - e1 + e4 - e2)(EF - e2)² / [(e3 - e2)(e4 - e2)] )where
Vis the per-tetrahedron volume,V = unit_cell_volume / numtetrahedraandnumtetrahedra = 6·(4·numint - 1)³.Also count “occupied” microcells (corner-(1,1,1) below
E_F) and “empty” microcells (above) to estimate the band electron / hole volume.
Classes#
Output of |
Functions#
|
Tetrahedron DOS at the Fermi energy on a 4·numint supercell. |
Module Contents#
- class PAOFLOW.pyskeaf.dos.DosResult[source]#
Output of
compute_dos().
- PAOFLOW.pyskeaf.dos.compute_dos(bxsf, numint, fermi_energy=None, *, progress=False)[source]#
Tetrahedron DOS at the Fermi energy on a 4·numint supercell.
- Parameters:
bxsf (BXSFData) – Loaded BXSF data (
recip_angis used for volumes).numint (int) – Interpolated points per single-side (matches Fortran
numint). The supercell has4 * numintpoints along each axis.fermi_energy (float, optional) – Override Fermi energy in Rydbergs. Defaults to the value stored in
bxsf.fermi_energy.progress (bool) – If True, print a one-line progress indicator (slice index / total).
- Return type: