Tight Binding

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

DFWannier.TBBlock — Type
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.TBOperator — Type
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_hamiltonian — Function
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_spin — Function
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_r — Function
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.Hk — Function
Hk(hamiltonian::TBHamiltonian, kpoint::Vec3)
Hk!(hk::AbstractMatrix, hamiltonian::TBHamiltonian, kpoint::Vec3)

Constructs the reciprocal Hamiltonian at a given k-point.

source
DFWannier.HamiltonianKGrid — Type
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.wannierbands — Function
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