Tight Binding

Various tight binding operators can be generated using the outputs of Wannier90.

DFWannier.TBBlockType
TBBlock

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.

source
DFWannier.TBOperatorType
TBOperator

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

source

The following functions can be used to generate specific operators.

DFWannier.read_hamiltonianFunction
read_hamiltonian(chk::NamedTuple, eigvals::Matrix)

Uses the Wannier90 chkpoint info in chk and DFT eigenvals read with [read_eig] to construct the TBHamiltonian.

source
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).

source
DFWannier.read_spinFunction
read_spin(chk_file, spn_file)
read_spin(job::Job)

Reads the .spn and .chk files to generate a TBSpin tight-binding spin operator.

source
DFWannier.read_rFunction
read_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.

source

Reciprocal

The tight binding operators can be used to interpolate properties in reciprocal space.

DFWannier.HkFunction
Hk(hamiltonian::TBHamiltonian, kpoint::Vec3)
Hk!(hk::AbstractMatrix, hamiltonian::TBHamiltonian, kpoint::Vec3)

Constructs the reciprocal Hamiltonian at a given k-point.

source
DFWannier.HamiltonianKGridType
HamiltonianKGrid(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.

source
DFWannier.wannierbandsFunction
wannierbands(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.

source