HopTB.BandStructure
Functions
HopTB.BandStructure.getbs
— Functiongetbs(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.
HopTB.BandStructure.getdos
— Functiongetdos(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).
getdos(
tm::AbstractTBModel,
em::EnergyMesh,
ωs::AbstractVector{Float64};
ϵ::Float64=0.1
)
Compute density of states from an energy mesh.
HopTB.BandStructure.getjdos
— Functiongetjdos(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-ω).\]
HopTB.BandStructure.clteig
— Functionclteig(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]
.
HopTB.BandStructure.get_fermi_surfaces
— Functionfunction 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.
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
.