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