pulsesuite.PSTD3D.epsrtl¶
Dielectric permittivity calculations for quantum wire simulations.
This module calculates longitudinal and transverse permittivity for quantum wire systems.
Author: Rahul R. Sah
Attributes¶
Functions¶
|
Calculate energy from momentum. (Placed below in epsrtl.f90) |
|
Fermi function at finite temperature. |
|
Fermi function at zero temperature. |
|
Arctangent function. |
|
Hyperbolic arctangent function. |
|
Calculate transverse polarization function. |
|
Get longitudinal and transverse permittivity. |
|
Record transverse permittivity. |
|
Calculate longitudinal polarization function. |
|
Calculate longitudinal polarization function at zero temperature. |
|
Record longitudinal permittivity at zero temperature. |
|
Calculate Omega and Gam from permittivity. |
|
Calculate zero temperature longitudinal permittivity. |
|
Calculate zero temperature transverse permittivity. |
|
Record longitudinal permittivity. |
Module Contents¶
- pulsesuite.PSTD3D.epsrtl.pi¶
- pulsesuite.PSTD3D.epsrtl.twopi¶
- pulsesuite.PSTD3D.epsrtl.hbar¶
- pulsesuite.PSTD3D.epsrtl.kB¶
- pulsesuite.PSTD3D.epsrtl.ii = 1j¶
- pulsesuite.PSTD3D.epsrtl.c0 = 299792458.0¶
- pulsesuite.PSTD3D.epsrtl.Eng(m, k)¶
Calculate energy from momentum. (Placed below in epsrtl.f90)
Computes kinetic energy: E = hbar^2 * k^2 / (2 * m)
- pulsesuite.PSTD3D.epsrtl.ff0(E, T, m)¶
Fermi function at finite temperature.
Computes: n00 * sqrt(hbar^2 / (2*pi * m * kB * T)) * exp(-E/(kB*T))
- Parameters:
- Returns:
Fermi function value
- Return type:
float or ndarray
Notes
Uses module-level variable _n00 for carrier density.
- pulsesuite.PSTD3D.epsrtl.fT0(k, kf)¶
Fermi function at zero temperature.
Computes: 1 - theta(|k| - kf)
- pulsesuite.PSTD3D.epsrtl.atanJG(z)¶
Arctangent function.
Computes: log((ii - z) / (ii + z)) / (2 * ii)
- pulsesuite.PSTD3D.epsrtl.atanhc(x)¶
Hyperbolic arctangent function.
Computes: 0.5 * log((1 + x) / (1 - x))
- pulsesuite.PSTD3D.epsrtl.PiT(q, w, me, mh, Te, Th, dk, Ek, Ekq)¶
Calculate transverse polarization function.
Computes the transverse polarization function PiT for permittivity calculations.
- Parameters:
q (float) – Momentum transfer (1/m) (unused, kept for interface compatibility)
w (float) – Frequency (Hz)
me (float) – Electron mass (kg)
mh (float) – Hole mass (kg)
Te (float) – Electron temperature (K)
Th (float) – Hole temperature (K)
dk (float) – Momentum step size (1/m)
Ek (ndarray) – Energy array for holes (J)
Ekq (ndarray) – Energy array for electrons (J)
- Returns:
Transverse polarization function value
- Return type:
Notes
The function computes: PiT = (2/pi) * dk * sum((1 - ff0(Ek,Th,mh) - ff0(Ekq,Te,me)) *
(1 / (hbar*w - Ekq - Ek + i*hbar*g)))
- pulsesuite.PSTD3D.epsrtl.GetEpsrLEpsrT(n1D, dcv0, Te, Th, me, mh, Eg, ky)¶
Get longitudinal and transverse permittivity.
Sets up momentum arrays and calls functions to calculate permittivity at zero temperature.
- Parameters:
n1D (float) – 1D carrier density (1/m)
dcv0 (float) – Dipole matrix element (C*m)
Te (float) – Electron temperature (K) (unused, kept for interface compatibility)
Th (float) – Hole temperature (K) (unused, kept for interface compatibility)
me (float) – Effective electron mass (kg)
mh (float) – Effective hole mass (kg)
Eg (float) – Band gap (J) (unused, kept for interface compatibility)
ky (ndarray) – Momentum coordinates (1/m), 1D array
- Return type:
None
Notes
This function sets up module-level variables and calls ZeroT_L and ZeroT_T. Writes output to ‘dataQW/Wire/qw.dat’.
- pulsesuite.PSTD3D.epsrtl.RecordEpsrT(Te, Th, me, mh, Eg, ky)¶
Record transverse permittivity.
Calculates and writes the transverse permittivity components for all momentum and frequency values.
- Parameters:
- Return type:
None
Notes
Writes output to ‘dataQW/Wire/EpsT.dat’ and ‘chi.0.w.dat’. The permittivity arrays use negative indexing mapping: w from -Nw to Nw maps to array indices 0 to 2*Nw.
- pulsesuite.PSTD3D.epsrtl.PiL(q, w, m, T, dk, Ek, Ekq)¶
Calculate longitudinal polarization function.
Computes the longitudinal polarization function PiL for permittivity calculations.
- Parameters:
- Returns:
Longitudinal polarization function value
- Return type:
Notes
The function computes: PiL = (2/pi) * dk * sum((ff0(Ek,T,m) - ff0(Ekq,T,m)) *
(1 / (hbar*w - (Ekq - Ek) + i*hbar*g)))
- pulsesuite.PSTD3D.epsrtl.PiL_T0(q, w, m, T, dk, Ek, Ekq)¶
Calculate longitudinal polarization function at zero temperature.
Computes the longitudinal polarization function PiL_T0 for permittivity calculations at zero temperature.
- Parameters:
q (float) – Momentum transfer (1/m)
w (float) – Frequency (Hz)
m (float) – Mass (kg)
T (float) – Temperature (K) (unused, kept for interface compatibility)
dk (float) – Momentum step size (1/m)
Ek (ndarray) – Energy array (J) (unused, kept for interface compatibility)
Ekq (ndarray) – Energy array shifted by q (J) (unused, kept for interface compatibility)
- Returns:
Longitudinal polarization function value at zero temperature
- Return type:
Notes
Uses module-level variable _kf for Fermi momentum. The function computes: PiL_T0 = -m / (pi * hbar^2) * q_inv * (atanhc(…) + atanhc(…))
- pulsesuite.PSTD3D.epsrtl.RecordEpsrL_T0(me, ky)¶
Record longitudinal permittivity at zero temperature.
Calculates and writes the longitudinal permittivity components at zero temperature for all momentum and frequency values.
- Parameters:
me (float) – Electron mass (kg) (unused, kept for interface compatibility)
ky (ndarray) – Momentum coordinates (1/m), 1D array
- Return type:
None
Notes
Writes output to ‘dataQW/Wire/EpsL.dat’. The permittivity arrays use negative indexing mapping: w from -Nw to Nw maps to array indices 0 to 2*Nw. Note: The function has empty loops in the original Fortran code.
- pulsesuite.PSTD3D.epsrtl.QqGq(ky, Nk, dk, dw, EpsR, EpsI, eh)¶
Calculate Omega and Gam from permittivity.
Computes the quasiparticle frequency Omega and damping Gam from the permittivity components.
- Parameters:
ky (ndarray) – Momentum coordinates (1/m), 1D array
Nk (int) – Number of momentum points
dk (float) – Momentum step size (1/m)
dw (float) – Frequency step size (Hz)
EpsR (ndarray) – Real part of permittivity, shape (Nk, 2*Nw+1)
EpsI (ndarray) – Imaginary part of permittivity, shape (Nk, 2*Nw+1)
eh (str) – Character identifier for output file
- Return type:
None
Notes
Writes output to ‘dataQW/Wire/Omega_qp.{eh}.dat’. The permittivity arrays use negative indexing mapping: w from -Nw to Nw maps to array indices 0 to 2*Nw.
- pulsesuite.PSTD3D.epsrtl.ZeroT_L(B, m, qy, kf)¶
Calculate zero temperature longitudinal permittivity.
Computes the longitudinal permittivity at zero temperature.
- Parameters:
- Return type:
None
Notes
Writes output to ‘dataQW/Wire/ChiL.{B}.dat’. The permittivity arrays use negative indexing mapping: w from -Nw to Nw maps to array indices 0 to 2*Nw.
- pulsesuite.PSTD3D.epsrtl.ZeroT_T(me, mh, Egap, dcv, qy, kf)¶
Calculate zero temperature transverse permittivity.
Computes the transverse permittivity at zero temperature.
- Parameters:
- Return type:
None
Notes
Writes output to ‘dataQW/Wire/ChiT.dat’. The permittivity arrays use negative indexing mapping: w from -Nw to Nw maps to array indices 0 to 2*Nw.
- pulsesuite.PSTD3D.epsrtl.RecordEpsrL(Te, Th, me, mh, ky)¶
Record longitudinal permittivity.
Calculates and writes the longitudinal permittivity components for all momentum and frequency values.
- Parameters:
- Return type:
None
Notes
Writes output to ‘dataQW/Wire/EpsL.dat’. The permittivity arrays use negative indexing mapping: w from -Nw to Nw maps to array indices 0 to 2*Nw.