Tight Binding
Various tight binding operators can be generated using the outputs of Wannier90.
DFWannier.TBBlock
— TypeTBBlock
Building 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
— TypeTBOperator
Alias 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 T
Takes 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
— TypeWannierBand
Represents 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
.