HopTB.BandStructure

Functions

HopTB.BandStructure.getbsFunction
getbs(atm::AbstractTBModel, kpath::AbstractMatrix{Float64}, pnkpts::Int64;
    connect_end_points::Bool=false)::(Vector{Float64}, Matrix{Float64})

Calculate band structure along a kpath for atm. kpath is a matrix that marks start and end points of each line in columns, and pnkpts is the number of points in each line. if connect_end_points is true, end point of the previous segment is used as the start point of the next segment. This function returns (kdist, egvals), where kdist is the distance of k points in reciprocal space and egvals contains band energies stored in column for each k point.

source
HopTB.BandStructure.getdosFunction
getdos(tm::AbstractTBModel, ωs::AbstractVector{Float64}, nkmesh::Vector{Int64};
    ϵ::Float64=0.1) --> dos::Vector{Float64}

Calculate density of states by a nkmesh mesh in reciprocal space.

The density of states is defined as

\[ν(ω) = \sum_n \int \frac{\mathrm{d}\boldsymbol{k}}{(2\pi)^3} δ(E_{n\boldsymbol{k}}-ω).\]

ϵ is the broadening of the delta function.

dos is in the unit of 1/(eV*Å^3).

source
getdos(
    tm::AbstractTBModel,
    em::EnergyMesh,
    ωs::AbstractVector{Float64};
    ϵ::Float64=0.1
)

Compute density of states from an energy mesh.

source
HopTB.BandStructure.getjdosFunction
getjdos(tm::AbstractTBModel, ωs::Vector{Float64}, μ::Float64,
    nkmesh::Vector{Int64}; ϵ::Float64=0.1)

Calculate joint density of states between valence and conduction band.

Joint density of states is defined as

\[∫\frac{d\mathbf{k}}{(2π)^3}\sum_{n,m}f_{mn}δ(E_n-E_m-ω).\]

source
HopTB.BandStructure.clteigFunction
clteig(tm::AbstractTBModel, nkmesh::Vector{Int64}; bandinds::Vector{Int64}=collect(1:tm.norbits))

Collect eigenvalues of bands denoted by bandinds on the kmesh defined by nkmesh. This function returns a 4D SharedArray: first index -> bands; second-fourth index -> k point.

For example, with nkmesh being [10, 10, 10], Es[3, 4, 5, 6] is the third eigenvalue at k point [0.3, 0.4, 0.5].

source
HopTB.BandStructure.get_fermi_surfacesFunction
function get_fermi_surfaces(
    tm::AbstractTBModel,
    em::EnergyMesh;
    fermi_energy::Real=0.0,
    band_indices::AbstractVector{Int64}=em.band_indices
)::Vector{FermiSurface}

Calculate Fermi surfaces from the energy mesh em for bands designated with band_indices.

The Fermi surfaces are extracted by Marching Tetrahedra method.

source
function get_fermi_surfaces(
    tm::AbstractTBModel,
    meshsize::AbstractVector{Int64},
    band_indices::AbstractVector{Int64};
    fermi_energy::Real=0.0,
    batchsize::Int64=1
)::Vector{FermiSurface}

Calculate Fermi surfaces (with Fermi energy fermi_energy) for bands (specified by band_indices) for tm. The Fermi surfaces are extracted by Marching Tetrahedra method on a uniform mesh specified by meshsize.

source