API Reference

Models

EmpiricalTightBinding.build_hamiltonianFunction
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.

source

Parameters

EmpiricalTightBinding.Vogl1983Type
Vogl1983

P. 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.

source
EmpiricalTightBinding.Klimeck2000Type
Klimeck2000

G. 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.

source
EmpiricalTightBinding.Jancu1998Type
Jancu1998

J.-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.

source
EmpiricalTightBinding.list_sourcesFunction
list_sources() -> Vector

Return all available parameter source types (subtypes of ParamSource). Includes sources added at runtime.

Example

list_sources()
# 3-element Vector{Any}:
#  Jancu1998
#  Klimeck2000
#  Vogl1983
source
EmpiricalTightBinding.list_materialsFunction
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())
source

Band Structure

EmpiricalTightBinding.compute_bandsFunction
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 (requires material for n_valence)
  • align=:none: no shift (raw eigenvalues)
source
EmpiricalTightBinding.n_valenceFunction
n_valence(model::TBModel, material::String) -> Int

Number of filled valence bands. Without spin-orbit: 4 (8 electrons / 2 spin). With spin-orbit: 8 (spin explicitly in basis).

source

K-Paths

EmpiricalTightBinding.make_kpathFunction
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 => :Γ
])
source

Plotting

EmpiricalTightBinding.BandStructureType
BandStructure

Precomputed band structure data, independent of any plotting library.

Fields

  • x::Vector{Float64} — cumulative k-path distances
  • bands::Matrix{Float64} — eigenvalues, nk × nbands (same units as input parameters)
  • tick_positions::Vector{Float64} — high-symmetry point positions
  • tick_labels::Vector{String} — high-symmetry point labels
  • title::String — plot title
source
EmpiricalTightBinding.savefig_publicationFunction
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)
source