elphem
Electron-Phonon Interactions with Empty Lattice
Installation
From PyPI
pip install elphem
From GitHub
git clone git@github.com:cohsh/elphem.git
cd elphem
pip install -e .
Features
Currently, Elphem allows calculations of
- direct and reciprocal lattice vectors from lattice constants with optimization.
- electronic structures with empty lattice approximation.
- phonon dispersion relations with Debye model.
- first-order electron-phonon interactions with
- Bloch coupling constants.
- Nordheim coupling constants.
- Bardeen coupling constants.
- one-electron self-energies.
- spectral functions.
Examples
Calculation of spectral functions (examples/spectrum.py)
"""Example: bcc-Li"""
import numpy as np
import matplotlib.pyplot as plt
from elphem import *
def main():
# Parameters of lattice
a = 2.98 * Length.ANGSTROM['->']
# Parameters of electron
n_electrons = 1
n_bands_electron = 10
# Parameters of phonon
debye_temperature = 344.0
n_q = [8, 8, 8]
# Parameters of k-path
k_names = ["G", "H", "N", "G", "P", "H"]
n_split = 50
# Parameters of electron-phonon
temperature = 300.0
n_bands_elph = 4
# Generate a lattice
lattice = Lattice3D('bcc', 'Li', a)
# Get k-path
k_path = lattice.get_k_path(k_names, n_split)
# Generate an electron.
electron = Electron.create_from_path(lattice, n_electrons, n_bands_electron, k_path)
# Generate a phonon.
phonon = Phonon.create_from_n(lattice, debye_temperature, n_q)
# Generate electron-phonon
electron_phonon = ElectronPhonon(electron, phonon, temperature, n_bands_elph, eta=0.05)
# Set frequencies
n_omega = 200
range_omega = [-6 * Energy.EV["->"], 20 * Energy.EV["->"]]
omega_array = np.linspace(range_omega[0] , range_omega[1], n_omega)
# Calculate a spectral function with normalization
spectrum = electron_phonon.calculate_spectrum_over_range(omega_array, normalize=True)
y, x = np.meshgrid(omega_array, k_path.minor_scales)
fig = plt.figure()
ax = fig.add_subplot(111)
mappable = ax.pcolormesh(x, y * Energy.EV["<-"], spectrum)
for x0 in k_path.major_scales:
ax.axvline(x=x0, color="black", linewidth=0.3)
ax.set_xticks(k_path.major_scales)
ax.set_xticklabels(k_names)
ax.set_ylabel("Energy ($\mathrm{eV}$)")
ax.set_title("Spectral function of bcc-Li (Normalized)")
fig.colorbar(mappable, ax=ax)
mappable.set_clim(0.00, 1.0)
fig.savefig("spectrum.png")
if __name__ == "__main__":
main()
Calculation of the electron-phonon renormalization (EPR) (examples/epr.py)
"""Example: bcc-Li"""
import numpy as np
import matplotlib.pyplot as plt
from elphem import *
def main():
# Parameters of lattice
a = 2.98 * Length.ANGSTROM['->']
# Parameters of electron
n_electrons = 1
n_bands_electron = 20
# Parameters of phonon
debye_temperature = 344.0
n_q = [10, 10, 10]
# Parameters of k-path
k_names = ["G", "H", "N", "G", "P", "H"]
n_split = 20
# Parameters of electron-phonon
temperature = 300.0
n_bands_elph = 1
# Generate a lattice
lattice = Lattice3D('bcc', 'Li', a)
# Get k-path
k_path = lattice.get_k_path(k_names, n_split)
# Generate an electron.
electron = Electron.create_from_path(lattice, n_electrons, n_bands_electron, k_path)
# Generate a phonon.
phonon = Phonon.create_from_n(lattice, debye_temperature, n_q)
# Generate electron-phonon
electron_phonon = ElectronPhonon(electron, phonon, temperature, n_bands_elph, eta=0.03)
# Calculate electron-phonon renormalization
epr = electron_phonon.calculate_electron_phonon_renormalization()
fig = plt.figure()
ax = fig.add_subplot(111)
for i in range(n_bands_elph):
ax.plot(k_path.minor_scales, electron.eigenenergies[i] * Energy.EV["<-"], color='tab:blue', label='w/o EPR')
ax.plot(k_path.minor_scales, (electron.eigenenergies[i] + epr[i]) * Energy.EV["<-"], color='tab:orange', label='w/ EPR')
for x0 in k_path.major_scales:
ax.axvline(x=x0, color="black", linewidth=0.3)
ax.legend()
ax.set_xticks(k_path.major_scales)
ax.set_xticklabels(k_names)
ax.set_ylabel("Energy ($\mathrm{eV}$)")
ax.set_title("EPR of bcc-Li ($T=300~\mathrm{K}$)")
fig.savefig("epr.png")
if __name__ == "__main__":
main()
Calculation of the electronic band structure (examples/band_structure.py)
"""Example: bcc-Li"""
import matplotlib.pyplot as plt
from elphem import *
def main():
a = 2.98 * Length.ANGSTROM['->']
n_electrons = 1
n_bands = 20
lattice = Lattice3D('bcc', 'Li', a)
k_names = ["G", "H", "N", "G", "P", "H"]
k_path = lattice.reciprocal.get_path(k_names, 100)
electron = Electron.create_from_path(lattice, n_electrons, n_bands, k_path)
eigenenergies = electron.eigenenergies * Energy.EV['<-']
fig, ax = plt.subplots()
for band in eigenenergies:
ax.plot(k_path.minor_scales, band, color="tab:blue")
y_range = [-10, 50]
ax.vlines(k_path.major_scales, ymin=y_range[0], ymax=y_range[1], color="black", linewidth=0.3)
ax.set_xticks(k_path.major_scales)
ax.set_xticklabels(k_names)
ax.set_ylabel("Energy ($\mathrm{eV}$)")
ax.set_ylim(y_range)
fig.savefig("band_structure.png")
if __name__ == "__main__":
main()
Calculation of the phonon dispersion (examples/phonon_dispersion.py)
"""Example: bcc-Li"""
import matplotlib.pyplot as plt
from elphem import *
def main():
a = 2.98 * Length.ANGSTROM["->"]
lattice = Lattice3D('bcc', 'Li', a)
q_names = ["G", "H", "N", "G", "P", "H"]
q_path = lattice.reciprocal.get_path(q_names, 40)
debye_temperature = 344.0
phonon = Phonon.create_from_path(lattice, debye_temperature, q_path)
omega = phonon.eigenenergies
fig, ax = plt.subplots()
ax.plot(q_path.minor_scales, omega * Energy.EV["<-"] * 1.0e+3, color="tab:blue")
for q0 in q_path.major_scales:
ax.axvline(x=q0, color="black", linewidth=0.3)
ax.set_xticks(q_path.major_scales)
ax.set_xticklabels(q_names)
ax.set_ylabel("Energy ($\mathrm{meV}$)")
fig.savefig("phonon_dispersion.png")
if __name__ == "__main__":
main()
License
MIT
Author
Kohei Ishii (The University of Tokyo, Japan)
Release files for elphem 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| elphem-0.4.0.tar.gz | 23.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| elphem-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.7 kB
Release files / elphem-0.4.0.tar.gz
| Download URL | elphem-0.4.0.tar.gz |
|---|---|
| Size | 23.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c20713334d99ed6d82f43b19a8984f3c6f72e31a83cb5bd5596fd76957fa8ec6
|
|
BLAKE2b-256 checksum How to use checksums |
7a8881cb0f74a3ade804a88fecbf89a923cc9881a5f8202ec7b0473d00007de7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / elphem-0.4.0-py3-none-any.whl
| Download URL | elphem-0.4.0-py3-none-any.whl |
|---|---|
| Size | 29.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f55786fc65bf8e62408ce137f896e5c58af1ddf9b3612009c8bc351f1406462
|
|
BLAKE2b-256 checksum How to use checksums |
54625596b1dff5c15989860001e6ae449f802c12b622ae7d13e42bcc790383f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|