Exchanges

Using the TBHamiltonian and calc_exchanges, it is possible to calculate the magnetic exchange parameters $J_{ij}$ between atoms $i$ and $j$ for the isotropic Heisenberg model:\ $E = \sum_{i,j} J_{ij} \overrightarrow{S}_i \cdot \overrightarrow{S}_j$

This involves calculating the Green's functions $G$ and on-site magnetic field matrices $\Delta$, which then determine $J$ as J_{ij} = \frac{1}{2\pi} \int{-\infty}^{Ef} d\varepsilon \Deltai G{ij}^{\downarrow}(\varepsilon) \Deltaj G{ji}^{\uparrow}(\varepsilon). See Weak ferromagnetism in antiferromagnets: Fe2O3 and La2CuO4.

DFWannier.Exchange2ndOrderType
Exchange2ndOrder{T <: AbstractFloat}

This holds the exhanges between different orbitals and calculated sites. Projections and atom datablocks are to be found in the corresponding wannier input file. It turns out the ordering is first projections, then atom order in the atoms datablock.

source
DFWannier.Exchange4thOrderType
Exchange4thOrder{T <: AbstractFloat}

This holds the exhanges between different orbitals and calculated sites. Projections and atom datablocks are to be found in the corresponding wannier input file. It turns out the ordering is first projections, then atom order in the atoms datablock.

source
DFWannier.calc_exchangesFunction
calc_exchanges(hamiltonian::TBHamiltonian, atoms::Vector{<:Atom}, fermi, exchange_type; kwargs...)

Calculates the magnetic exchange parameters between the atoms. exchange_type can be Exchange2ndOrder or Exchange4thOrder. The kwargs control various numerical parameters for the calculation:

  • nk = (10,10,10): the amount of k-points to be used for the uniform interpolation grid.
  • R = (0,0,0): the unit cell index to which the exchange parameters are calculated.
  • ωh = -30.0: the lower bound of the energy integration
  • ωv = 0.15: the height of the contour in complex space to integrate the Green's functions
  • n_ωh = 3000: number of integration points along the horizontal contour direction
  • n_ωv = 500: number of integration points along the vertical contour direction
  • site_diagonal = false: if true the hamiltonians and Δ will diagonalized on-site and the

returned exchange matrices hold the exchanges between well-defined orbitals. If this is not done, the exchange matrices entries don't mean anything on themselves and a trace should be performed to find the exchange between the spins on sites i and j.

source