Skip to main content

elphem

Upload Python Package Python package PyPI - Python Version PyPI - Version Downloads GitHub

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)

spectrum

"""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)

epr

"""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)

band structure

"""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)

phonon dispersion

"""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)

https://cohsh.github.io

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)

Source distribution for elphem 0.4.0
File Size Uploaded
elphem-0.4.0.tar.gz 23.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elphem 0.4.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page