PAOFLOW.pyskeaf.results#

Result dataclasses and output writers for PAOFLOW.pyskeaf.

The output filenames are kept identical to those produced by the Fortran SKEAF (results_freqvsangle.out, results_short.out, results_long.out, results_orbitoutlines_invAng.out, results_orbitoutlines_invau.out) so that downstream plotting scripts (e.g. Cylinder/plot.py) keep working unmodified.

Phase 1 only defines the dataclasses and stubs the writers; full output formatting will be filled in as later phases produce real orbit data.

Classes#

Orbit

A single extremal orbit on the Fermi surface at a fixed (θ, φ).

SKEAFResult

Top-level container for a complete SKEAF run.

Functions#

write_results_freqvsangle(result[, path])

Write the CSV-style results_freqvsangle.out (Fortran-compatible).

write_results_short(result[, path])

Write the human-readable results_short.out (Fortran-compatible).

write_results_long(result[, path])

Write the verbose results_long.out (every orbit copy listed).

write_orbit_outlines(result[, path_invang, path_invau])

Write the orbit-outline coordinate files in both Å⁻¹ and a.u.⁻¹.

Module Contents#

class PAOFLOW.pyskeaf.results.Orbit[source]#

A single extremal orbit on the Fermi surface at a fixed (θ, φ).

Mirrors the per-orbit fields written by the Fortran sliceext and the final averaging step.

theta: float[source]#
phi: float[source]#
frequency_kT: float[source]#
freq_uncertainty_kT: float[source]#
effective_mass: float[source]#
effective_mass_std: float = 0.0[source]#
curvature: float = 0.0[source]#
curvature_std: float = 0.0[source]#
orbit_type: int = 0[source]#
orbit_type_std: float = 0.0[source]#
num_copies: int = 1[source]#
avg_coords_ruc: numpy.ndarray[source]#
avg_coords_ruc_std: numpy.ndarray[source]#
rep_contour_xy: numpy.ndarray | None = None[source]#
rep_slice_index: int = 0[source]#
rep_frequency_kT: float = 0.0[source]#
outline_au: numpy.ndarray | None = None[source]#
outline_ang: numpy.ndarray | None = None[source]#
class PAOFLOW.pyskeaf.results.SKEAFResult[source]#

Top-level container for a complete SKEAF run.

config_filename: str[source]#
bxsf_filename: str[source]#
fermi_energy: float[source]#
orbits: list[Orbit] = [][source]#
band_volume: float | None = None[source]#
dos_at_ef: float | None = None[source]#
angles: numpy.ndarray | None = None[source]#
config: object | None = None[source]#
bxsf: object | None = None[source]#
PAOFLOW.pyskeaf.results.write_results_freqvsangle(result, path='results_freqvsangle.out')[source]#

Write the CSV-style results_freqvsangle.out (Fortran-compatible).

Columns: Theta(deg),Phi(deg),Freq(kT),mstar(me),Curv(kTA2),Type(+e-h),NumOrbCopy. Numeric format matches Fortran write(19, '(F10.6, ",", F10.6, ",", ES14.6, "," ...)) at skeaf_v1p3p0_r149.F90:2701.

PAOFLOW.pyskeaf.results.write_results_short(result, path='results_short.out')[source]#

Write the human-readable results_short.out (Fortran-compatible).

Mirrors the per-angle block at skeaf_v1p3p0_r149.F90:2780–2810. Header comes from _results_header(). Orbits are written in the order they appear in result.orbits; the writer detects angle changes by inspecting consecutive (theta, phi) pairs and emits an “ANGLE n of N” delimiter.

PAOFLOW.pyskeaf.results.write_results_long(result, path='results_long.out')[source]#

Write the verbose results_long.out (every orbit copy listed).

Same structure as results_short.out but additionally records the representative-copy slice index and orbit number used for the outline file (Fortran F90:986–988).

PAOFLOW.pyskeaf.results.write_orbit_outlines(result, path_invang='results_orbitoutlines_invAng.out', path_invau='results_orbitoutlines_invau.out')[source]#

Write the orbit-outline coordinate files in both Å⁻¹ and a.u.⁻¹.

Each orbit’s representative contour is converted from slicing-frame Å⁻¹ to BZ-frame Cartesian Å⁻¹ via the rotation matrix at that angle, then shifted by the centroid’s nearest-RUC-lattice-vector offset (Fortran F90:990–1015). The a.u.⁻¹ file is the Å⁻¹ file scaled by CONV_AU_TO_ANG (= 0.529177209).

Notes

The Fortran outline writer requires rep_contour_xy to have been populated by PAOFLOW.pyskeaf.runner.run_at_angle(); orbits without a contour are silently skipped.