HopTB.Topology
exported functions
HopTB.Topology.get_smooth_gauge
— Functionget_smooth_gauge(tm::TBModel, getv::Function, v0::Vector{<:Number},
kpts::Matrix{<:Real}; unwind::Bool=false)::Matrix{ComplexF64}
Parallel transport the Bloch function produced by getv
at a line in BZ denoted by kpts
. The start point is kpts[:, 1]
where the vector is assumed to be v0
. If unwind is true, then the first k point in kpts
and the last k point in kpts
are assumed to be identical k point. In this case, the vector on the two k points are made the same. kpts are assumed to be even spaced if unwind is true.
The output is a matrix of size (length(v0), length(kpts)).
get_smooth_gauge(tm::TBModel, getv::Function, nkmesh::Vector{Int64})
Find a smooth gauge in the BZ for the Bloch functions returned by getv
. Please make sure Chern number is 0 for any possible submanifold.
get_smooth_gauge(tm::TBModel, bandind::Int64, nkmesh::Vector{Int64})
Find a smooth gauge in the BZ for the bandind
band. Please make sure Chern number is 0 for any possible submanifold.
HopTB.Topology.get_wilson_spectrum
— Functionfunction get_wilson_spectrum(
tm::AbstractTBModel,
band_indices::Vector{<:Integer},
kpaths::AbstractMatrix{<:Real},
ndiv::Int64
)
Calculate Wilson loop spectrum for bands labelled by band_indices
on kpaths
.
Wilson loop spectrum is defined as the eigenvalues of the parallel transport operator $W$. Specifically, $W$ is a unitary operator and its eigenvalues are of the form $\exp(\mathrm{i}θ)$. This function returns $\{θ_i\}$.
$W$ is defined as
\[W = \prod_{\boldsymbol{k}_f \leftarrow \boldsymbol{k} \leftarrow \boldsymbol{k}_i} P_{\boldsymbol{k}},\]
where $P$ is the projection operator onto bands labelled by band_indices
. The path $\boldsymbol{k}_f \leftarrow \boldsymbol{k} \leftarrow \boldsymbol{k}_i$ is specified by kpaths
and ndiv
. Specifically, this path is kpath[:, 1]
-> ... -> kpath[:, 2]
-> ... -> kpath[:, end]
, where ndiv
k points are inserted between kpath[:, i]
and kpath[:, i + 1]
.