API Reference
Models
EmpiricalTightBinding.SP3 — Type
8-band sp³ model (s, px, py, pz on anion + cation).
EmpiricalTightBinding.SP3Sstar — Type
10-band sp³s* model (Vogl et al. 1983). Adds excited s* on each atom.
EmpiricalTightBinding.SP3Sstar_SO — Type
20-band sp³s* + spin-orbit model. Doubles basis with spin.
EmpiricalTightBinding.SP3D5Sstar — Type
20-band sp³d⁵s* model (Jancu et al. 1998). Adds five d orbitals per atom.
EmpiricalTightBinding.hamiltonian_size — Function
Hamiltonian matrix dimension for each model.
EmpiricalTightBinding.build_hamiltonian — Function
build_hamiltonian(model::TBModel, k, params) -> Hermitian{ComplexF64}Build the tight-binding Hamiltonian at wave vector k (in units of 2π/a). Dispatches on the model type.
Parameters
EmpiricalTightBinding.Vogl1983 — Type
Vogl1983P. Vogl, H.P. Hjalmarson, J.D. Dow, "A semi-empirical tight-binding theory of the electronic structure of semiconductors," J. Phys. Chem. Solids 44, 365-378 (1983). DOI: 10.1016/0022-3697(83)90064-1
sp³s* parameters for group-IV and III-V zinc-blende semiconductors. All energies are in eV. Supports models: SP3, SP3Sstar, SP3Sstar_SO.
EmpiricalTightBinding.Klimeck2000 — Type
Klimeck2000G. Klimeck, R.C. Bowen, T.B. Boykin, T.A. Cwik, "sp3s* tight-binding parameters for transport simulations in compound semiconductors," Superlattices and Microstructures 27, 519 (2000). DOI: 10.1006/spmi.2000.0862
Genetically-optimized sp³s*+SO parameters for III-V compound semiconductors. All energies are in eV. Supports models: SP3, SP3Sstar, SP3Sstar_SO.
EmpiricalTightBinding.Jancu1998 — Type
Jancu1998J.-M. Jancu, R. Scholz, F. Beltram, F. Bassani, "Empirical spds* tight-binding calculation for cubic semiconductors: General method and material parameters," Phys. Rev. B 57, 6493 (1998). DOI: 10.1103/PhysRevB.57.6493
sp³d⁵s* parameters for group-IV and III-V zinc-blende semiconductors. All energies are in eV. Supports model: SP3D5Sstar.
EmpiricalTightBinding.list_sources — Function
list_sources() -> VectorReturn all available parameter source types (subtypes of ParamSource). Includes sources added at runtime.
Example
list_sources()
# 3-element Vector{Any}:
# Jancu1998
# Klimeck2000
# Vogl1983EmpiricalTightBinding.list_materials — Function
list_materials(source::ParamSource)Print available materials for a given parameter source. The output format varies by source (e.g., crystal type, lattice constant).
Example
list_materials(Vogl1983())
list_materials(Jancu1998())EmpiricalTightBinding.sp3_params — Function
sp3_params(p::SP3SstarParams) -> SP3ParamsExtract the sp3 subset from sp3s* parameters.
Band Structure
EmpiricalTightBinding.compute_bands — Function
compute_bands(model::TBModel, kpath::KPath, params;
align=:VBM, material="") -> Matrix{Float64}Compute eigenvalues along a k-path. Returns nk × nbands matrix of eigenvalues (in the same units as the input parameters).
align=:VBM: shift so VBM = 0 (requiresmaterialfor n_valence)align=:none: no shift (raw eigenvalues)
EmpiricalTightBinding.band_energies — Function
band_energies(model::TBModel, k, params) -> Vector{Float64}Compute eigenvalues at a single k-point (raw, no shift).
EmpiricalTightBinding.n_valence — Function
n_valence(model::TBModel, material::String) -> IntNumber of filled valence bands. Without spin-orbit: 4 (8 electrons / 2 spin). With spin-orbit: 8 (spin explicitly in basis).
K-Paths
EmpiricalTightBinding.KPath — Type
KPathDiscretized k-path through the Brillouin zone. Stores k-points, cumulative distances, and tick info for plotting.
EmpiricalTightBinding.make_kpath — Function
make_kpath(segments; nk=100, kpoints=FCC_KPOINTS)Build a KPath from a list of segment specifications.
Each segment is a Pair of symbols or vectors:
(:L => :Γ)— uses named high-symmetry points([0.5,0.5,0.5] => [0.0,0.0,0.0])— explicit coordinates
Multiple segments can be separated by nothing to indicate a discontinuity (e.g., U,K jump in Vogl Fig.1).
Example (Vogl Fig.1 path)
kp = make_kpath([
:L => :Γ, :Γ => :X, :X => :U,
nothing, # discontinuity
:K => :Γ
])EmpiricalTightBinding.vogl_kpath — Function
vogl_kpath(; nk=100)Standard Vogl Fig.1 k-path: L → Γ → X → U,K → Γ
EmpiricalTightBinding.textbook_kpath — Function
textbook_kpath(; nk=100)Simple textbook k-path: L → Γ → X
EmpiricalTightBinding.FCC_KPOINTS — Constant
High-symmetry k-points for FCC/zinc-blende (in units of 2π/a).
Plotting
EmpiricalTightBinding.BandStructure — Type
BandStructurePrecomputed band structure data, independent of any plotting library.
Fields
x::Vector{Float64}— cumulative k-path distancesbands::Matrix{Float64}— eigenvalues,nk × nbands(same units as input parameters)tick_positions::Vector{Float64}— high-symmetry point positionstick_labels::Vector{String}— high-symmetry point labelstitle::String— plot title
EmpiricalTightBinding.savefig_publication — Function
savefig_publication(bs::BandStructure, path::AbstractString; kwargs...)
savefig_publication(bss::AbstractVector{<:BandStructure}, path::AbstractString; kwargs...)Save publication-quality band structure figure with precise axis dimensions. Requires using PythonPlot.
Keywords
axis_width_cm: axis width in cm (default: 8.0)axis_height_cm: axis height in cm (default: 6.0)layout: subplot layout tuple, e.g.,(1, 2)(for vector input)
Example
using PythonPlot
savefig_publication(bs, "bands.pdf"; axis_width_cm=8.0, axis_height_cm=6.0)