AutoBZ.jl
AutoBZ
— ModuleThis Julia package defines integrands for multi-dimensional Brillouin zone (BZ) using Wannier interpolation for the calculation of density of states, chemical potential, and optical conductivity accounting for electronic interactions through frequency-dependent self energies. It uses algorithms which automatically compute BZ integrals to a specified error tolerance by resolving smooth yet highly localized integrands.
In many-body Green's function methods, BZ integrands are localized at a scale determined by a non-zero, but possibly small, system- and temperature-dependent scattering rate. For example, the single-particle retarded Green's function of an electronic system for frequency $\omega$ and reciprocal space vector $\bm{k}$ with chemical potential $\mu$, Hermitian Hamiltonian matrix $H(\bm{k})$, and self-energy matrix $\Sigma(\omega)$, which is given by
\[G(\omega) = \int_{\text{BZ}} d\bm{k}\ \operatorname{Tr} \left[ (\hbar\omega - H(\bm{k}) - \Sigma(\omega))^{-1} \right]\]
is localized about the manifold defined by $\det(\hbar\omega - H(\bm{k}))=0$ (i.e. the Fermi surface when $\hbar\omega=\mu$) by a scattering rate depending on $\operatorname{Im}\ \Sigma(\omega)$.
AutoBZ.jl is built using a lower-level interface defined in AutoBZCore.jl intended for general-purpose integration and Wannier interpolation. If you are interested in defining your own integrals, please visit the AutoBZCore.jl documentation.
Package features
- Automatic and adaptive algorithms
- Equispace integration (PTR) as described by Kaye et al. [1]
- Automatic p-adaptive algorithm that refines $k$-grid to meet requested error
- Iterated adaptive integration (IAI) with nested calls to QuadGK.jl
- H-adaptive algorithm with logarithmic complexity for increasingly localized integrands
- Irreducible Brillouin zone (IBZ) integration for the cubic lattice
- Auxiliary integration for nearly-singular integrands as described in Ref.[2]
- Equispace integration (PTR) as described by Kaye et al. [1]
- Support for Wannier-interpolated integrands
- User-defined integrands based on Bloch Hamiltonians
- Density of states (DOS) calculations
- Transport calculations based on TRIQS DFTTools
- Calculation of transport function and kinetic coefficients
- Option to separate intra-band and inter-band contributions
- Wannier90-based parsers Hamiltonians (
*_hr.dat
files) and position operators (*_r.dat
files) - PythTB interface for using tight-binding models
- Automated interpolation for frequency-dependent self-energy data in text files, using EquiBaryInterp.jl and HChebInterp.jl.
- IBZ integration for arbitrary symmetry groups (via an interface to SymmetryReduceBZ.jl)
To start using the package, see the Getting Started and Tutorial sections.
Notes
If you are an interested Python user, see the Python section
To see a poster showcasing calculations with the library, click this link