Tight Binding
Various tight binding operators can be generated using the outputs of Wannier90.
DFWannier.TBBlock — TypeTBBlockBuilding block for TBOperator. It holds the matrix elements of the operator between central and a shifted unit cell. Upon construction, the wigner-seitz shifts are taken into account to create the correct matrix elements between the Wannierfunctions, stored in tb_block. The block field is basically tb_block but with each element divided by the amount of Wigner-Seitz degeneracies and shifts which speeds up later k-point interpolation.
DFWannier.TBOperator — TypeTBOperatorAlias for a Vector of TBBlocks. Indexing with NTuple{3,Int} or Vec3 is supported which allows for easily retrieving the TBBlock that corresponds to the shifted unit cell. Aliases: TBHamiltonian, TBSpin
The following functions can be used to generate specific operators.
DFWannier.read_hamiltonian — Functionread_hamiltonian(chk::NamedTuple, eigvals::Matrix)Uses the Wannier90 chkpoint info in chk and DFT eigenvals read with [read_eig] to construct the TBHamiltonian.
read_hamiltonian(job::Job)Goes through the job and will attempt to read the hamiltonian files. If it finds a colinear calculation in the job it will read the up and down hamiltonians, if the job was either nonmagnetic or noncolinear it will read only one hamiltonian file (there should be only one).
DFWannier.read_spin — Functionread_spin(chk_file, spn_file)
read_spin(job::Job)Reads the .spn and .chk files to generate a TBSpin tight-binding spin operator.
DFWannier.read_r — Functionread_r(chk_file::AbstractString, nnkp_file::AbstractString)
read_r(job::Job)Constructs the r [TBOperator] from the Wannier90 .chk and .nnkp files. This requires that the k_neighbor_weights is written into the .chk file and might need a patched Wannier90 version.
Reciprocal
The tight binding operators can be used to interpolate properties in reciprocal space.
DFWannier.Hk — FunctionHk(hamiltonian::TBHamiltonian, kpoint::Vec3)
Hk!(hk::AbstractMatrix, hamiltonian::TBHamiltonian, kpoint::Vec3)Constructs the reciprocal Hamiltonian at a given k-point.
DFWannier.HamiltonianKGrid — TypeHamiltonianKGrid(hami::TBHamiltonian{T}, nk, H_function_k::Function = x -> nothing) where T
HamiltonianKGrid(hami::TBHamiltonian{T}, k_grid, H_function_k::Function = x -> nothing) where TTakes a k grid, calculates Hk for each of them and diagonalizes. Only the eigenvectors and eigenvalues of Hk are stored, the H_function_k function is called on the intermediate Hk.
DFWannier.WannierBand — TypeWannierBandRepresents a Wannier interpolated band. See also wannierbands.
DFWannier.wannierbands — Functionwannierbands(hamiltonian::TBHamiltonian, kpoints::Vector{Vec3})
wannierbands(hamiltonian::TBHamiltonian, bands::Vector{DFControl.AbstractBand}Constructs the whole bandstructure for a given set of k-points and TBHamiltonian.