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)
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| elphem-0.4.0.tar.gz | 23.4 kB | Without provenance | Details for elphem-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| elphem-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for elphem-0.4.0-py3-none-any.whl |
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
|
Security for elphem 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.