pulsesuite.PSTD3D.dcfield¶
DC field carrier transport calculations for quantum wire simulations.
This module calculates the dc field carrier transport contributions to the Semiconductor Bloch equations in support of propagation simulations for a quantum wire.
Converted from dcfield.f90 (lines 30-253).
Structure¶
Pure functions (no module state) – module-level
JIT-compiled helpers – module-level (Numba requirement)
DCFieldModule class – mutable state + methods
Backward-compatibility layer – singleton + wrapper functions
Attributes¶
Classes¶
DC field carrier transport module for quantum wire simulations. |
Functions¶
|
Generate k-space array for Fourier transforms. |
|
Lorentzian function. |
|
Heaviside step function (theta function). |
|
Calculate electron current. |
|
Calculate drift velocity from distribution. |
|
Calculate momentum from distribution. |
|
Calculate average coefficients for interpolation. |
|
DC step using scaling method (legacy code). |
|
DC step using finite difference method (legacy code). |
|
Renormalize energy with many-body corrections. |
|
Calculate drift velocity. |
|
Calculate emission matrix element. |
|
Calculate absorption matrix element. |
|
Calculate drift force from phonon interactions. |
|
Calculate drift force (alternative implementation). |
|
Calculate derivative of occupation with respect to energy. |
|
Calculate emission-absorption matrix element. |
|
Initialize the DC field module (backward-compatible wrapper). |
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
Backward-compatible wrapper for |
|
Module-level |
Module Contents¶
- pulsesuite.PSTD3D.dcfield.pi¶
- pulsesuite.PSTD3D.dcfield.hbar¶
- pulsesuite.PSTD3D.dcfield.ii = 1j¶
- pulsesuite.PSTD3D.dcfield.GetKArray(Nk, L)¶
Generate k-space array for Fourier transforms.
- pulsesuite.PSTD3D.dcfield.Lrtz(a, b)¶
Lorentzian function.
Computes the Lorentzian line shape function: (b/pi) / (a^2 + b^2)
- pulsesuite.PSTD3D.dcfield.theta(x)¶
Heaviside step function (theta function).
Computes the step function: (abs(x) + x) / 2 / (abs(x) + small) Returns 1 for x > 0, 0 for x <= 0.
- pulsesuite.PSTD3D.dcfield.CalcI0n(ne, me, ky)¶
Calculate electron current.
Computes the electron current from the electron distribution and momentum.
- pulsesuite.PSTD3D.dcfield.CalcVD(ky, m, n)¶
Calculate drift velocity from distribution.
Computes the average drift velocity from the carrier distribution and momentum: v = sum(real(n) * hbar * ky / m) / sum(real(n) + small)
- pulsesuite.PSTD3D.dcfield.CalcPD(ky, m, n)¶
Calculate momentum from distribution.
Computes the average momentum from the carrier distribution: p = sum(abs(n) * hbar * ky) / sum(abs(n) + small)
- pulsesuite.PSTD3D.dcfield.CalcAvgCoeff(ky, dk, k1, k2, i1, i2, x1, x2, x3, x4)¶
Calculate average coefficients for interpolation.
Computes interpolation coefficients for bilinear interpolation in k-space. The function extends the ky array with boundary points and calculates coefficients based on the positions k1, k2 and indices i1, i2.
- Parameters:
ky (ndarray) – Momentum coordinates (1/m), 1D array
dk (float) – Momentum step size (1/m)
k1 (float) – First momentum value for interpolation
k2 (float) – Second momentum value for interpolation
i1 (int) – First index (1-based, will be converted to 0-based)
i2 (int) – Second index (1-based, will be converted to 0-based)
x1 (float) – Output coefficient 1
x2 (float) – Output coefficient 2
x3 (float) – Output coefficient 3
x4 (float) – Output coefficient 4
- Returns:
Tuple containing (x1, x2, x3, x4) coefficients
- Return type:
- pulsesuite.PSTD3D.dcfield.DC_Step_Scale(ne, nh, ky, Edc, dt)¶
DC step using scaling method (legacy code).
Performs a DC field step by scaling the distribution functions. Uses rescale_1D to interpolate the distributions to shifted momentum grids.
- Parameters:
- Returns:
ne and nh arrays are modified in-place.
- Return type:
None
- pulsesuite.PSTD3D.dcfield.DC_Step_FD(ne, nh, nemid, nhmid, ky, Edc, dt, me, mh)¶
DC step using finite difference method (legacy code).
Performs a DC field step using finite difference derivatives. Updates the electron and hole distributions based on the DC field and momentum-dependent terms.
- Parameters:
ne (ndarray) – Electron occupation numbers (complex), modified in-place, 1D array
nh (ndarray) – Hole occupation numbers (complex), modified in-place, 1D array
nemid (ndarray) – Midpoint electron occupation numbers (complex), 1D array
nhmid (ndarray) – Midpoint hole occupation numbers (complex), 1D array
ky (ndarray) – Momentum coordinates (1/m), 1D array
Edc (float) – DC electric field (V/m)
dt (float) – Time step (s)
me (float) – Effective electron mass (kg)
mh (float) – Effective hole mass (kg)
- Returns:
ne and nh arrays are modified in-place.
- Return type:
None
- pulsesuite.PSTD3D.dcfield.EkReNorm(n, En, V)¶
Renormalize energy with many-body corrections.
Computes the renormalized energy including Hartree-Fock corrections: Ec(k) = En(k) + sum(n(:) * (V(k,k) - V(k,:))) / 2
- Parameters:
n (ndarray) – Carrier occupation numbers, 1D array
En (ndarray) – Single-particle energies (J), 1D array
V (ndarray) – Interaction matrix (J), 2D array V[k1, k2]
- Returns:
Renormalized energies (J), 1D array
- Return type:
ndarray
- pulsesuite.PSTD3D.dcfield.DriftVt(n, Ec, dkk)¶
Calculate drift velocity.
Computes the average drift velocity from the energy gradient and carrier distribution: v = sum(dEcdk * n) / sum(n) / hbar
- pulsesuite.PSTD3D.dcfield.ThetaEM(Ephn, m, g, ky, n, Cq2, v, N0, q, k)¶
Calculate emission matrix element.
Computes the emission rate matrix element for phonon-assisted transitions.
- Parameters:
Ephn (float) – Average phonon energy (J)
m (float) – Carrier mass (kg)
g (float) – Inverse lifetime (Hz)
ky (ndarray) – Momentum coordinates (1/m), 1D array
n (ndarray) – Carrier occupation numbers, 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
v (float) – Drift velocity (m/s)
N0 (float) – Phonon occupation number
q (int) – Phonon momentum index (1-based)
k (int) – Carrier momentum index (1-based)
- Returns:
Emission matrix element
- Return type:
- pulsesuite.PSTD3D.dcfield.ThetaABS(Ephn, m, g, ky, n, Cq2, v, N0, q, k)¶
Calculate absorption matrix element.
Computes the absorption rate matrix element for phonon-assisted transitions.
- Parameters:
Ephn (float) – Average phonon energy (J)
m (float) – Carrier mass (kg)
g (float) – Inverse lifetime (Hz)
ky (ndarray) – Momentum coordinates (1/m), 1D array
n (ndarray) – Carrier occupation numbers, 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
v (float) – Drift velocity (m/s)
N0 (float) – Phonon occupation number
q (int) – Phonon momentum index (1-based)
k (int) – Carrier momentum index (1-based)
- Returns:
Absorption matrix element
- Return type:
- pulsesuite.PSTD3D.dcfield.FDrift2(Ephn, m, g, ky, n, Cq2, v, N0, x)¶
Calculate drift force from phonon interactions.
Computes the drift force due to phonon emission and absorption processes.
- Parameters:
Ephn (float) – Average phonon energy (J)
m (float) – Carrier mass (kg)
g (float) – Inverse lifetime (Hz)
ky (ndarray) – Momentum coordinates (1/m), 1D array
n (ndarray) – Carrier occupation numbers, 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
v (float) – Drift velocity (m/s)
N0 (float) – Phonon occupation number
x (ndarray) – k-dependent delta-function coefficients, 1D array (unused)
- Returns:
Drift force (N), 1D array
- Return type:
ndarray
- pulsesuite.PSTD3D.dcfield.FDrift(Ephn, m, q, dndk, Cq2, v, N0, x)¶
Calculate drift force (alternative implementation).
Computes the drift force using a different approach with dndk derivative.
- Parameters:
Ephn (float) – Average phonon energy (J)
m (float) – Carrier mass (kg)
q (ndarray) – Momentum coordinates (1/m), 1D array
dndk (ndarray) – Derivative of carrier occupation with respect to momentum, 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
v (float) – Drift velocity (m/s)
N0 (float) – Phonon occupation number
x (ndarray) – k-dependent delta-function coefficients, 1D array
- Returns:
Drift force (N)
- Return type:
- pulsesuite.PSTD3D.dcfield.dndEk(Ephn, m, q, dndq)¶
Calculate derivative of occupation with respect to energy.
- pulsesuite.PSTD3D.dcfield.ThetaEMABS(Ephn, m, q, dndk, Cq2, v)¶
Calculate emission-absorption matrix element.
- Parameters:
- Returns:
Emission-absorption matrix element, 1D array
- Return type:
ndarray
- class pulsesuite.PSTD3D.dcfield.DCFieldModule(ky, me, mh, WithPhns=True, datadir='dataQW')¶
DC field carrier transport module for quantum wire simulations.
Encapsulates the mutable state and stateful methods that were previously held as module-level globals. Mirrors the Fortran
module dcfieldstructure: private allocatable arrays + public subroutines.- Parameters:
ky (ndarray) – Momentum coordinates of quantum wire (1/m), 1D array
me (float) – Effective electron mass (kg)
mh (float) – Effective hole mass (kg)
WithPhns (bool, optional) – Whether to couple damping rate with phonons (default True)
datadir (str or None, optional) – Directory for output files. Pass
Noneto skip file creation (useful for testing). Default'dataQW'.
- dkk¶
- ERate = 0.0¶
- HRate = 0.0¶
- VEDrift = 0.0¶
- VHDrift = 0.0¶
- WithPhns = True¶
- Y¶
- xe¶
- xh¶
- qinv¶
- kmin¶
- kmax¶
- close()¶
Close output file handles.
- __del__()¶
- CalcDCE2(DCTrans, ky, Cq2, Edc, me, ge, Ephn, N0, ne, Ee, Vee, n, j, DC)¶
Calculate DC field contribution for electrons (version 2).
Computes the DC field transport contribution to the electron distribution evolution using a finite difference derivative.
- Parameters:
DCTrans (bool) – Whether to include DC transport terms
ky (ndarray) – Momentum coordinates (1/m), 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
Edc (float) – DC electric field (V/m)
me (float) – Effective electron mass (kg)
ge (float) – Inverse electron lifetime (Hz)
Ephn (float) – Average phonon energy (J)
N0 (float) – Phonon occupation number
ne (ndarray) – Electron occupation numbers (complex), 1D array
Ee (ndarray) – Electron energies (J), 1D array
Vee (ndarray) – Electron-electron interaction matrix (J), 2D array
n (int) – Time step index
j (int) – Iteration index
DC (ndarray) – Output DC field contribution (modified in-place), 1D array
- Returns:
DC array is modified in-place.
- Return type:
None
- CalcDCH2(DCTrans, ky, Cq2, Edc, mh, gh, Ephn, N0, nh, Eh, Vhh, n, j, DC)¶
Calculate DC field contribution for holes (version 2).
Computes the DC field transport contribution to the hole distribution evolution using a finite difference derivative.
- Parameters:
DCTrans (bool) – Whether to include DC transport terms
ky (ndarray) – Momentum coordinates (1/m), 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
Edc (float) – DC electric field (V/m)
mh (float) – Effective hole mass (kg)
gh (float) – Inverse hole lifetime (Hz)
Ephn (float) – Average phonon energy (J)
N0 (float) – Phonon occupation number
nh (ndarray) – Hole occupation numbers (complex), 1D array
Eh (ndarray) – Hole energies (J), 1D array
Vhh (ndarray) – Hole-hole interaction matrix (J), 2D array
n (int) – Time step index
j (int) – Iteration index
DC (ndarray) – Output DC field contribution (modified in-place), 1D array
- Returns:
DC array is modified in-place.
- Return type:
None
- CalcDCE(DCTrans, ky, Cq2, Edc, me, ge, Ephn, N0, ne, Ee, Vee, DC)¶
Calculate DC field contribution for electrons (original version).
Uses FFT-based derivative.
- Parameters:
DCTrans (bool) – Whether to include DC transport terms
ky (ndarray) – Momentum coordinates (1/m), 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
Edc (float) – DC electric field (V/m)
me (float) – Effective electron mass (kg)
ge (float) – Inverse electron lifetime (Hz)
Ephn (float) – Average phonon energy (J)
N0 (float) – Phonon occupation number
ne (ndarray) – Electron occupation numbers (complex), 1D array
Ee (ndarray) – Electron energies (J), 1D array
Vee (ndarray) – Electron-electron interaction matrix (J), 2D array
DC (ndarray) – Output DC field contribution (modified in-place), 1D array
- Returns:
DC array is modified in-place.
- Return type:
None
- CalcDCH(DCTrans, ky, Cq2, Edc, mh, gh, Ephn, N0, nh, Eh, Vhh, DC)¶
Calculate DC field contribution for holes (original version).
Uses FFT-based derivative.
- Parameters:
DCTrans (bool) – Whether to include DC transport terms
ky (ndarray) – Momentum coordinates (1/m), 1D array
Cq2 (ndarray) – Coupling constant squared, 1D array
Edc (float) – DC electric field (V/m)
mh (float) – Effective hole mass (kg)
gh (float) – Inverse hole lifetime (Hz)
Ephn (float) – Average phonon energy (J)
N0 (float) – Phonon occupation number
nh (ndarray) – Hole occupation numbers (complex), 1D array
Eh (ndarray) – Hole energies (J), 1D array
Vhh (ndarray) – Hole-hole interaction matrix (J), 2D array
DC (ndarray) – Output DC field contribution (modified in-place), 1D array
- Returns:
DC array is modified in-place.
- Return type:
None
- CalcI0(ne, nh, Ee, Eh, VC, dk, ky, I0)¶
Calculate total current from electron and hole distributions.
- Parameters:
ne (ndarray) – Electron occupation numbers (complex), 1D array
nh (ndarray) – Hole occupation numbers (complex), 1D array
Ee (ndarray) – Electron energies (J), 1D array
Eh (ndarray) – Hole energies (J), 1D array
VC (ndarray) – Interaction matrix (J), 3D array
dk (float) – Momentum step size (1/m)
ky (ndarray) – Momentum coordinates (1/m), 1D array (unused)
I0 (float) – Input value (unused)
- Returns:
Total current (A)
- Return type:
- ShiftN1D(ne, dk)¶
Shift 1D distribution in momentum space.
Shifts the distribution function in momentum space by dk using FFT.
- Parameters:
ne (ndarray) – Carrier occupation numbers (complex), modified in-place, 1D array
dk (float) – Momentum shift (1/m)
- Returns:
ne array is modified in-place.
- Return type:
None
- ShiftN2D(C, dk)¶
Shift 2D distribution in momentum space.
- Parameters:
C (ndarray) – Distribution matrix (complex), modified in-place, 2D array
dk (float) – Momentum shift (1/m)
- Returns:
C array is modified in-place.
- Return type:
None
- Transport(C, Edc, Eac, dt, DCTrans, k1nek2)¶
Transport step for distribution matrix.
- Parameters:
C (ndarray) – Distribution matrix (complex), modified in-place, 2D array
Edc (float) – DC electric field (V/m)
Eac (float) – AC electric field (V/m)
dt (float) – Time step (s)
DCTrans (bool) – Whether to include DC transport terms
k1nek2 (bool) – If True, shift the full 2D matrix; if False, shift only diagonal
- Returns:
C array is modified in-place.
- Return type:
None
- GetEDrift()¶
Return electron drift rate (Hz).
- GetHDrift()¶
Return hole drift rate (Hz).
- GetVEDrift()¶
Return electron drift velocity (m/s).
- GetVHDrift()¶
Return hole drift velocity (m/s).
- pulsesuite.PSTD3D.dcfield.InitializeDC(ky, me, mh)¶
Initialize the DC field module (backward-compatible wrapper).
Creates a new
DCFieldModulesingleton from ky, me, mh. Uses the module-level_WithPhnsflag.
- pulsesuite.PSTD3D.dcfield.CalcDCE2(DCTrans, ky, Cq2, Edc, me, ge, Ephn, N0, ne, Ee, Vee, n, j, DC)¶
Backward-compatible wrapper for
DCFieldModule.CalcDCE2().
- pulsesuite.PSTD3D.dcfield.CalcDCH2(DCTrans, ky, Cq2, Edc, mh, gh, Ephn, N0, nh, Eh, Vhh, n, j, DC)¶
Backward-compatible wrapper for
DCFieldModule.CalcDCH2().
- pulsesuite.PSTD3D.dcfield.CalcDCE(DCTrans, ky, Cq2, Edc, me, ge, Ephn, N0, ne, Ee, Vee, DC)¶
Backward-compatible wrapper for
DCFieldModule.CalcDCE().
- pulsesuite.PSTD3D.dcfield.CalcDCH(DCTrans, ky, Cq2, Edc, mh, gh, Ephn, N0, nh, Eh, Vhh, DC)¶
Backward-compatible wrapper for
DCFieldModule.CalcDCH().
- pulsesuite.PSTD3D.dcfield.CalcI0(ne, nh, Ee, Eh, VC, dk, ky, I0)¶
Backward-compatible wrapper for
DCFieldModule.CalcI0().
- pulsesuite.PSTD3D.dcfield.GetEDrift()¶
Backward-compatible wrapper for
DCFieldModule.GetEDrift().
- pulsesuite.PSTD3D.dcfield.GetHDrift()¶
Backward-compatible wrapper for
DCFieldModule.GetHDrift().
- pulsesuite.PSTD3D.dcfield.GetVEDrift()¶
Backward-compatible wrapper for
DCFieldModule.GetVEDrift().
- pulsesuite.PSTD3D.dcfield.GetVHDrift()¶
Backward-compatible wrapper for
DCFieldModule.GetVHDrift().
- pulsesuite.PSTD3D.dcfield.ShiftN1D(ne, dk)¶
Backward-compatible wrapper for
DCFieldModule.ShiftN1D().
- pulsesuite.PSTD3D.dcfield.ShiftN2D(C, dk)¶
Backward-compatible wrapper for
DCFieldModule.ShiftN2D().
- pulsesuite.PSTD3D.dcfield.Transport(C, Edc, Eac, dt, DCTrans, k1nek2)¶
Backward-compatible wrapper for
DCFieldModule.Transport().
- pulsesuite.PSTD3D.dcfield.__getattr__(name)¶
Module-level
__getattr__for backward-compat attribute reads.Maps old
dcfield._Y,dcfield._xe, etc. to the singleton’s attributes. ReturnsNonewhen the singleton has not been created yet.