pulsesuite.PSTD3D.phonons

Phonon interaction calculations for quantum wire simulations.

This module calculates the many-body electron-hole phonon contribution to the Semiconductor Bloch equations in support of propagation simulations for a quantum wire.

Author: Rahul R. Sah

Attributes

hbar

kB

ii

Functions

InitializePhonons(ky, Ee, Eh, L, epsr, Gph, Oph)

Initialize phonon interaction matrices (Unecessary the jit version?).

MBPE(ne, VC, E1D, Win, Wout)

Many-body phonon-electron interaction.

MBPH(nh, VC, E1D, Win, Wout)

Many-body phonon-hole interaction.

Cq2(q, V, E1D)

Calculate Cq for use in the DC Field module.

FermiDistr(En)

Calculate Fermi-Dirac distribution.

BoseDistr(En)

Calculate Bose-Einstein distribution.

N00()

Get the Bose distribution value for phonons.

Module Contents

pulsesuite.PSTD3D.phonons.hbar
pulsesuite.PSTD3D.phonons.kB
pulsesuite.PSTD3D.phonons.ii = 1j
pulsesuite.PSTD3D.phonons.InitializePhonons(ky, Ee, Eh, L, epsr, Gph, Oph)

Initialize phonon interaction matrices (Unecessary the jit version?).

Sets up the electron and hole phonon interaction matrices EP, HP and their transposes EPT, HPT. Also calculates the scaling factor Vscale.

Parameters:
  • ky (ndarray) – Momentum coordinates (1/m), 1D array

  • Ee (ndarray) – Electron energies (J), 1D array

  • Eh (ndarray) – Hole energies (J), 1D array

  • L (float) – Length parameter (unused, kept for interface compatibility)

  • epsr (float) – Dielectric constant

  • Gph (float) – Phonon damping rate (Hz)

  • Oph (float) – Phonon frequency (Hz)

Return type:

None

Notes

Sets module-level variables: - _NO: Bose distribution for phonons - _idel: Identity exclusion matrix (1 where k != k1, 0 where k == k1) - _EP, _EPT: Electron phonon interaction matrix and its transpose - _HP, _HPT: Hole phonon interaction matrix and its transpose - _Vscale: Scaling constant for Coulomb interactions

pulsesuite.PSTD3D.phonons.MBPE(ne, VC, E1D, Win, Wout)

Many-body phonon-electron interaction.

Calculates the in-scattering and out-scattering rates for electrons due to phonon interactions.

Parameters:
  • ne (ndarray) – Electron carrier populations, 1D array

  • VC (ndarray) – Coulomb interaction array, shape (Nk, Nk, 3) Uses VC[:, :, 1] for electron-electron interaction (Fortran uses VC(:,:,2) which is 1-based)

  • E1D (ndarray) – 1D energy array, shape (Nk, Nk)

  • Win (ndarray) – In-scattering rates (modified in-place), 1D array

  • Wout (ndarray) – Out-scattering rates (modified in-place), 1D array

Return type:

None

Notes

Modifies Win and Wout in-place. Uses module-level variables _EPT, _EP, _Vscale.

pulsesuite.PSTD3D.phonons.MBPH(nh, VC, E1D, Win, Wout)

Many-body phonon-hole interaction.

Calculates the in-scattering and out-scattering rates for holes due to phonon interactions.

Parameters:
  • nh (ndarray) – Hole carrier populations, 1D array

  • VC (ndarray) – Coulomb interaction array, shape (Nk, Nk, 3) Uses VC[:, :, 2] for hole-hole interaction (Fortran uses VC(:,:,3) which is 1-based)

  • E1D (ndarray) – 1D energy array, shape (Nk, Nk)

  • Win (ndarray) – In-scattering rates (modified in-place), 1D array

  • Wout (ndarray) – Out-scattering rates (modified in-place), 1D array

Return type:

None

Notes

Modifies Win and Wout in-place. Uses module-level variables _HPT, _HP, _Vscale.

pulsesuite.PSTD3D.phonons.Cq2(q, V, E1D)

Calculate Cq for use in the DC Field module.

Computes the phonon coupling constant Cq for a given momentum array.

Parameters:
  • q (ndarray) – Momentum coordinates (1/m), 1D array

  • V (ndarray) – Interaction potential array, shape (Nk, Nk)

  • E1D (ndarray) – 1D energy array, shape (Nk, Nk)

Returns:

Cq values, 1D array of same length as q

Return type:

ndarray

Notes

Uses module-level variable _Vscale for scaling. The function maps q values to indices in V and E1D arrays.

pulsesuite.PSTD3D.phonons.FermiDistr(En)

Calculate Fermi-Dirac distribution.

Computes the Fermi-Dirac distribution assuming host temperature and Fermi Energy = 0.

Parameters:

En (float or ndarray) – Energy (J)

Returns:

Fermi-Dirac distribution value: 1 / (exp(En / (kB * T)) + 1)

Return type:

float or ndarray

Notes

Uses module-level variable _Temp for temperature. Note: Fortran returns complex type, but the value is always real, so Python returns float.

pulsesuite.PSTD3D.phonons.BoseDistr(En)

Calculate Bose-Einstein distribution.

Computes the Bose-Einstein distribution for phonons.

Parameters:

En (float or ndarray) – Energy (J)

Returns:

Bose-Einstein distribution value: 1 / (exp(En / (kB * T)) - 1)

Return type:

float or ndarray

Notes

Uses module-level variable _Temp for temperature.

pulsesuite.PSTD3D.phonons.N00()

Get the Bose distribution value for phonons.

Returns the module-level variable _NO which is the Bose function for thermal equilibrium longitudinal-optical phonons in host.

Returns:

Bose distribution value NO

Return type:

float