Determining whether a wave-particle interaction is linear (quasi-linear diffusion) or nonlinear (phase trapping, bunching) is a critical first step before choosing a simulation strategy. WPIT provides dedicated functions — based on the Bortnik (2004) thesis formalism — that compute the nonlinearity parameter S, the inhomogeneity parameter H, the phase-angle evolution, and the auxiliary coefficients C0, C1m, and C1p. These routines exist in bothDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/stourgai/WPIT/llms.txt
Use this file to discover all available pages before exploring further.
whistler_electron_mod (electrons interacting with whistler-mode waves) and EMIC_ion_mod (ions interacting with EMIC waves), with slightly different function signatures reflecting the different polarisation geometry.
Physical background
The threshold between linear and nonlinear regimes is determined by the ratio of the wave-induced inhomogeneity H to the trapping frequency squared ω²_τ:- |S| < 1: The wave amplitude is large enough to produce phase trapping — particles are trapped in the wave’s potential well and undergo nonlinear bouncing motion.
- |S| ≥ 1: The ambient field gradients dominate over the wave force. Interactions are quasi-linear and particles pass through the resonance zone without trapping.
wpi_params.
wpi_params — interaction parameters
wpi_params is the entry point for computing all parameters required by the equations of motion and the nonlinearity analysis.
Whistler-electron version
| Return value | Symbol | Physical meaning |
|---|---|---|
gamma | γ | Lorentz factor: γ = √(1 + (p/mₑc)²) |
w1 | ω₁ | RH coupling frequency: ω₁ = (qₑ/2mₑ)(Bxw + Byw) [Bortnik Eq. 2.25e] |
w2 | ω₂ | LH coupling frequency: ω₂ = (qₑ/2mₑ)(Bxw − Byw) [Bortnik Eq. 2.25e] |
wtau_sq | ω²_τ | Trapping frequency squared [Bortnik Eq. 2.25c] |
R1 | R₁ | RH electric-to-magnetic polarisation ratio: (Exw + Eyw)/(Bxw + Byw) |
R2 | R₂ | LH electric-to-magnetic polarisation ratio: (Exw − Eyw)/(Bxw − Byw) |
beta | β | Finite-Larmor-radius argument: β = kx p⊥ / (mₑ γ ωce) [Bortnik Eq. 2.25a] |
EMIC-ion version
The EMIC formulation uses a different polarisation decomposition into right-hand (R) and left-hand (L) circular components:The EMIC version of
beta is defined with the opposite sign convention: β = −k⊥ p⊥ / (qᵢ B₀), consistent with the ion resonance formulation.Inhomogeneity parameter H
nonlinear_H computes the parameter H that quantifies the rate of change of the resonance condition along the particle trajectory:
Whistler-electron H
EMIC-ion H
The EMIC version has the same signature but with an additionaldkpar_dt_arg term and sign differences reflecting the ion resonance condition:
Nonlinearity parameter S
nonlinear_S is a direct ratio of H to ω²_τ:
Phase-angle evolution — nonlinear_theta
nonlinear_theta combines the C0, C1m, and C1p coefficients with Bessel functions to give the full phase-angle driving term (and its magnitude) used in the equations of motion:
C coefficients
The three C coefficients capture contributions from the parallel electric field (C0) and the two circular wave polarisation components (C1m, C1p):nonlinear_C0
Contribution from the parallel electric field Ezw. Dominates at small pitch angles and for Landau (m = 0) resonance.
nonlinear_C1m
Contribution from the right-hand circularly polarised (RH) electric component EwR = ½(Exw + Eyw).
nonlinear_C1p
Contribution from the left-hand circularly polarised (LH) electric component EwL = ½(Exw − Eyw).
nonlinear_theta
Combines all three C coefficients with Bessel functions Jₘ₋₁, Jₘ, Jₘ₊₁ to give the total phase-angle driving term.
Whistler-electron C coefficients
EMIC-ion C coefficients
The EMIC versions use the circular electric amplitudesEwL and EwR directly and include the ion charge and mass explicitly:
Practical example: diagnosing the regime
The following snippet computes S for a range of wave amplitudes and determines whether each case is in the linear or nonlinear regime.Computing S along a ray path
Computing S along a ray path
Once you have an appended ray file you can evaluate S at every step by looping over the DataFrame and calling
wpi_params, nonlinear_H, and nonlinear_S for each row. This gives the spatial profile of the nonlinearity parameter along the actual propagation trajectory of the wave, accounting for the varying field and density.