ffm¶
- starkzee.ffm.calculate_ion_fluctuation_rate(Ne_m3, Ti_ev, Z_ion, A_ion)[source]¶
Return the ion fluctuation (jumping) rate ν_i [eV].
The FFM treats the ion microfield as a stochastic process that switches between field configurations at rate ν_i. This rate is estimated as the inverse of the mean time for an ion to cross the inter-ion distance r_i at its thermal velocity:
N_i = N_e / Z_ion r_i = (3 / 4π N_i)^{1/3} — mean inter-ion spacing [m] v_th = √(2 k_B T_i / m_i) — most-probable ion speed [m s⁻¹] ν_i = (v_th / r_i) × ħ / e — converted to eV
A larger ν_i (high density, high T_i, light ions) pushes the profile toward the dynamical (motional) narrowing limit; ν_i → 0 recovers the static Holtsmark profile.
- Parameters:
- Returns:
Ion fluctuation rate ν_i [eV].
- Return type:
- starkzee.ffm.calculate_ffm_profile(n_u, n_l, Z, B, Ne_m3, Te_ev, Ti_ev, A_ion, energies_ev, num_f=30, num_mu=10, use_screening=True, quadratic_zeeman=True, fine_structure=True, numerical_inversion=False)[source]¶
Compute the dynamical Stark-Zeeman line profile using the Frequency Fluctuation Model.
The FFM treats the ion microfield as a Markov jump process between Stark-dressed field configurations. At each quadrature point (field magnitude F, angle μ = cos θ) the Stark-Zeeman Hamiltonian is diagonalized to obtain the dressed-state transition frequencies ω_k and weights d_k. These form the Stark-Dressed Transitions (SDTs). The FFM then solves the Markov master equation to obtain a profile that interpolates between the quasi-static limit (ν_i → 0, identical to the static profile) and the motional-narrowing limit (ν_i → ∞, single Lorentzian).
Sherman-Morrison solver (default,
numerical_inversion=False):I(ω) = (R²/π) Re [ S(ω) / (1 − ν_i S(ω)) ]
S(ω) = Σ_k p_k / (ν_i + γ_k + i(ω − ω_k))
where p_k = d_k² / Σ d_k² are the normalized SDT weights and γ_k is the electron-impact half-width. This analytical result is exact for a Markov jump process with uniform jumping rate ν_i and O(N) per frequency point.
Full matrix inversion (
numerical_inversion=True): Solves the Liouville-space Markov equation A x = b directly for each frequency point, which is O(N³) but handles non-uniform jumping rates or more complex correlation structures.- Parameters:
n_u (
int) – Upper and lower principal quantum numbers.n_l (
int) – Upper and lower principal quantum numbers.Z (
int) – Nuclear charge.B (
float) – Magnetic field [T]. B = 0 is fully supported.Ne_m3 (
float) – Electron number density [m⁻³].Te_ev (
float) – Electron temperature [eV]. Used for Debye screening and electron impact width.Ti_ev (
float) – Ion temperature [eV]. Used to compute the ion fluctuation rate ν_i.A_ion (
float) – Atomic mass number of the perturbing ion species (e.g. 1 for H⁺).energies_ev (
array-like) – Photon energies at which to evaluate the profile [eV].num_f (
int, optional) – Number of microfield quadrature points (default 30).num_mu (
int, optional) – Number of Gauss-Legendre points for the field-angle integration over μ = cos θ ∈ [0, 1] (default 10).use_screening (
bool, optional) – Use the Hooper screened microfield distribution (default True).quadratic_zeeman (
bool, optional) – Include the diamagnetic quadratic Zeeman term (default True).fine_structure (
bool, optional) – Include mass-velocity and Darwin corrections (default True).numerical_inversion (
bool, optional) – If True, solve the full Markov matrix by direct inversion instead of the Sherman-Morrison approximation (default False). Falls back to Sherman-Morrison if the matrix is singular.
- Returns:
profile_pi (
ndarray,shape like *energies_ev*) – π polarization component (Δm = 0).profile_sig_plus (
ndarray) – σ+ polarization component (Δm = +1).profile_sig_minus (
ndarray) – σ− polarization component (Δm = −1).
Notes
Static vs FFM guidance: use the static profile (
calculate_static_profile()) when B ≥ 50 T or N_e < 10²¹ m⁻³, where ion dynamics are negligible. For lower B or higher densities (especially Hβ, Hδ at N_e ≥ 10²³ m⁻³) FFM is needed to reproduce the correct central dip depth and peak structure.B = 0 note: the π/σ decomposition is physically meaningless at B = 0 (no preferred axis); all three components are equal by symmetry and their sum gives the isotropic total profile.
References
Calisti, A. et al., Phys. Rev. A 42, 5433 (1990). — FFM formulation. Ferri, S., Peyrusse, O. & Calisti, A., Matter Radiat. Extremes 7, 015901 (2022).