JJDFTX.jl serves to bridge the gap between computational quantum chemistry (e.g. DFT) and photonics. The point of the package is to make easy the calculation of relevant physical quantities of materials that determine photonic properties such as plasmonic losses due to the electron-phonon interaction. Below, we show just a sample of the functionality of the package.
Some basic plotting functionality demonstrated with hexagonal boron nitride:
Spin densities may also be visualized and analyzed in the case of defect systems:
Phonon dispersions may be plotted using the phonon_force_matrix and the phonon_dispersion_path methods. An example below is of the monolayer graphene phonon dispersion along the Gamma-M-K-Gamma path.
Monolayer graphene plasmon dispersion:
Two plasmon absorption in graphene as detailed in Jablan, Marinko, and Darrick E. Chang. "Multiplasmon absorption in graphene." Physical review letters 114.23 (2015): 236801.
Phonon-assisted plasmon loss in graphene for a chemical potential of 0.135 eV calculated through a Fermi's golden rule. An analogous calculation is done in Jablan, Marinko, Hrvoje Buljan, and Marin Soljačić. "Plasmonics in graphene at infrared frequencies." Physical review B 80.24 (2009): 245435.
Twisted bilayer graphene plasmon dispersion:
Two plasmon modes in spatially separated graphene planes (50 nanometer separation at 0.4 eV doping. Units are always in terms of the chemical potential and the Fermi wavevector)
Electron-Phonon Coupling in Aluminum (which may be cross checked with the reference Brown, Ana M., et al. "Ab initio phonon coupling and optical response of hot electrons in plasmonic metals." Physical Review B 94.7 (2016): 075120. )
Real part of conductivity of graphene as derived within RPA or Kubo formula
Contribution to the real part of graphene's conductivity as derived from the Eliashberg Spectral Function:
We may also compute this Eliashberg contribution from wannierization of electron-phonon matrix elements, momentum matrix elements, and band energies. The below may be reproduced from the example in /data/boltzmann using the package's provided monte carlo integration functions for 2d metals.
We may also calculate the interband conductivity of a material like graphene through the same Fermi golden rule approach- interpolating matrix elements and energies across the Brillouin zone. The plot below may be cross checked with "Plasmonics in argentene" by Shankar et al. The functionality is available through the "interbandsigma" method in the Boltzmann code.
In graphene, the velocity matrix elements are easy to compute, and should be equal to 3/2at/hbar*[cos(theta), sin(theta)]. Where theta is the angle about the Dirac point. In JJDFTx, you may compute these elements by using the momentum_matrix_elements method. Note that this expects kpoints to be given in the lattice reciprocal basis. To make things convenient, one may use the normalize_kvector method to avoid converting from the cartesian basis explicitly.
There is also functionality to compute the interband momentum matrix elements from the Bloch functions or from wannierized momentum matrix elements. Below is the case of the two pz bands of graphene (for which an analytic calculation is easy).