Conductivity and runaway rates

src/physics/conductivity.jl

Public

Runes2P.braams_karney_conductivity — Method
braams_karney_conductivity(free_electron_density, temperature, effective_charge)

Electric conductivity [S/m] of a relativistic plasma after Braams and Karney,

\[\sigma = \frac{4\pi \varepsilon_0^2 T^{3/2}}{Z_\mathrm{eff} \sqrt{m_e} \, e^2 \ln\Lambda} \, \bar\sigma\left(\frac{T}{m_e c^2}, \frac{1}{1 + Z_\mathrm{eff}}\right),\]

with the free-electron density in m⁻³, the temperature in eV (in joules in the formula), the thermal Coulomb logarithm (thermal_coulomb_logarithm) at the free-electron density, and the table of normalized_conductivity. This is DREAM's evaluateBraamsElectricConductivity. In cylindrical geometry DREAM's conductivity of Sauter and Redl equals it, since the neoclassical correction is 1 without trapped particles. At low temperature and high charge it is the Lorentz conductivity $64 \sqrt{2\pi} \, \varepsilon_0^2 T^{3/2} / (\sqrt{m_e} \, e^2 Z \ln\Lambda)$.

source
Runes2P.braams_karney_conductivity — Method
braams_karney_conductivity(plasma, ir)

The conductivity [S/m] of Braams and Karney at the radius index ir of plasma, with its free-electron density, its cold temperature and its effective charge.

source
Runes2P.effective_charge — Method
effective_charge(plasma, ir)
effective_charge(ions, ir)

Effective charge Z_eff = Σ Z₀² n / Σ Z₀ n over the charge states of all ions at the radius index ir, weighted with the free electrons, and at least 1 (DREAM IonHandler::GetZeff). The bound electrons of partially ionized ions do not enter. 1 for a plasma without free electrons.

source
Runes2P.normalized_conductivity — Method
normalized_conductivity(theta, x)

The normalized conductivity σ̄(Θ, X) of Braams and Karney, with Θ = T/mₑc² and X = 1/(1 + Z_eff), interpolated bilinearly in DREAM's table (14 temperatures from 0 to 100, 6 charges from Z_eff = ∞ to 0). σ̄(0, 0) = 32/√(2π) is the Lorentz gas, and σ̄(0, 1/2)/σ̄(0, 0) = 0.5819 the factor of Spitzer and Härm at Z = 1. Between Θ = 0 and Θ = 0.01 (5.1 keV) the table is linear in the temperature.

source
Runes2P.test_particle_conductivity_fraction — Method
test_particle_conductivity_fraction(effective_charge)

DREAM's fit of the conductivity of its kinetic operator over the conductivity of Braams and Karney, 1 − 1.406/(1.888 + Z_eff) (PredictedOhmicCurrentFromDistributionTerm::FractionOfBraamsConductivity). The kinetic operator is the test-particle operator, which does not return the momentum of the electron-electron collisions, and the fit is to conductivities of CODE, with a largest error of 1 % as stated in DREAM. It does not know the grid, the collision settings or the temperature: 0.513, 0.638, 0.761 and 0.921 at Z_eff = 1, 2, 4 and 16.

source

Internal

Runes2P.BRAAMS_KARNEY_CHARGES — Constant
BRAAMS_KARNEY_CHARGES

The values X = 1/(1 + Zeff) of the rows of `BRAAMSKARNEYTABLE, as tabulated in DREAM'sRunawayFluid.cpp(conductivityX). Read fromdata/braamskarney_conductivity.toml`.

source
Runes2P.BRAAMS_KARNEY_TABLE — Constant
BRAAMS_KARNEY_TABLE

The normalized conductivity σ̄(Θ, X) of a relativistic plasma, with Θ = T/mₑc² and X = 1/(1 + Zeff), of B. J. Braams and C. F. F. Karney, Phys. Fluids B 1, 1355 (1989), as tabulated in DREAM's RunawayFluid.cpp (conductivityBraams). Rows: X (`BRAAMSKARNEYCHARGES), columns: Θ (BRAAMSKARNEYTEMPERATURES). Read fromdata/braamskarney_conductivity.toml`.

source
Runes2P.BRAAMS_KARNEY_TEMPERATURES — Constant
BRAAMS_KARNEY_TEMPERATURES

The temperatures Θ = T/mₑc² of the columns of BRAAMS_KARNEY_TABLE, as tabulated in DREAM's RunawayFluid.cpp (conductivityTmc2). Read from data/braams_karney_conductivity.toml.

source

src/physics/runaway_rates.jl

Public

Runes2P.avalanche_growth_rate — Method
avalanche_growth_rate(total_density, critical_momentum)

Avalanche growth rate Γ = 4π r₀² c n_tot / p_c² [s⁻¹] of a runaway population, for the total electron density total_density (n_tot) [m⁻³] of the targets. It is the Rosenbluth-Putvinski estimate written with an explicit critical momentum p_c (in units of mₑc): every knock-on above p_c runs away, and the production per runaway is the Møller rate above p_c. For an infinitely energetic primary that rate is 2π r₀² c n_tot / (γ_c − 1) = (γ_c + 1)/2 · 4π r₀² c n_tot / p_c² (moller_total_rate with p1 = Inf; Embréus, Stahl and Fülöp, J. Plasma Phys. 84, 905840102 (2018), doi:10.1017/S002237781700099X), so the formula keeps its leading term for p_c ≪ 1; at p_c = 1 the exact rate is 21 % above the formula.

p_c is the ambiguous part of the formula, so it is an argument, not computed here: critical_momentum gives the test-particle value 1/√(E/E_c - 1) used by Rosenbluth-Putvinski, while DREAM's fluid mode uses the effective critical momentum of Hesslow et al. 2019, which includes screening and pitch-angle scattering and is larger, so its growth rate is lower. State which one a comparison uses.

DREAM: avalancheGrowthRate = n_tot constPreFactor / p_c² (src/Equations/RunawayFluid.cpp:353) with constPreFactor = 4π r₀² c (include/DREAM/Equations/RunawayFluid.hpp:25-26).

source
Runes2P.connor_hastie_rate — Method
connor_hastie_rate(density, temperature, electric_field, effective_charge;
                   thermal_coulomb_logarithm,
                   relativistic_coulomb_logarithm=thermal_coulomb_logarithm,
                   corrections=true, undetermined_factor=1)

Connor-Hastie Dreicer runaway rate [m⁻³ s⁻¹]: the rate at which electrons cross the critical momentum by diffusing up the electric field, for a field electric_field [V/m], an electron density density [m⁻³], a temperature temperature [eV] and an effective charge effective_charge. Zero for E ≤ E_c.

\[\mathrm{rate} = C \frac{n}{\tau_{ee}} \left(\frac{E}{E_D}\right)^{-3 (1 + Z_\mathrm{eff}) h / 16} \exp\left(-\frac{\lambda}{4 E / E_D} - \sqrt{\frac{\eta (1 + Z_\mathrm{eff})}{E / E_D}}\right)\]

with E_c from the relativistic Coulomb logarithm (complete screening) and E_D and τ_ee from the thermal one. corrections = true includes the h, η and λ corrections in E/E_c; with corrections = false all three are 1. C is the undetermined factor of the theory, which DREAM sets to 1 ("~1 is usually good according to simulations"); a kinetic rate is expected to agree in scaling rather than exactly.

Ported from DREAM ConnorHastie::RunawayRate.

source
Runes2P.dreicer_field — Method
dreicer_field(density, temperature, coulomb_logarithm)

Dreicer field E_D = E_c(mₑc²/T) [V/m] for an electron density density [m⁻³], a temperature temperature [eV] and the thermal Coulomb logarithm coulomb_logarithm, with E_c the Connor-Hastie critical field (critical_field). Electrons with E > E_D all run away; the Dreicer rate is a function of E/E_D.

source
Runes2P.free_critical_momentum — Method
free_critical_momentum(plasma, ir; coulomb_logarithm=:thermal)

Critical momentum (in units of mₑc) at radius ir from the Connor-Hastie critical field of the cold electrons (DREAM's Ec_free, RunawayFluid.cpp), critical_momentum of |E|. Screening and pitch-angle scattering raise the critical momentum, so this is a lower estimate.

coulomb_logarithm is the model of the Coulomb logarithm of the collisions, the field of the same name of CollisionSettings, whose default it shares. As in DREAM (RunawayFluid::CalculateDerivedQuantities, src/Equations/RunawayFluid.cpp:205-209), the critical field takes the thermal logarithm (thermal_coulomb_logarithm) for :thermal, DREAM's THERMAL, and the relativistic one (relativistic_coulomb_logarithm) for :energy_dependent and :relativistic, DREAM's ENERGY_DEPENDENT and CONSTANT. A run passes the coulomb_logarithm of its collisions, or :relativistic for the relativistic logarithm in any run.

The Coulomb logarithm takes the free electron density, the cold, hot and runaway electrons together, as DREAM's lnLambdaC (agreement to 1e-8) and lnLambdaT (CoulombLogarithm::evaluateLnLambdaT, src/Equations/CoulombLogarithm.cpp:90-94) do. Before the thermal quench of a fully kinetic run most electrons are hot, and the cold density alone overstates the logarithm.

source
Runes2P.thermal_collision_time — Method
thermal_collision_time(density, temperature, coulomb_logarithm)

Thermal electron collision time τ_ee = β_th³ / (lnΛ_T n 4π r₀² c) [s] for an electron density density (n) [m⁻³], a temperature temperature (T) [eV] and the thermal Coulomb logarithm coulomb_logarithm (lnΛ_T), with β_th = √(2T/mₑc²), the time scale of the Connor-Hastie rate (DREAM RunawayFluid::tauEETh).

source
Runes2P.total_critical_momentum — Method
total_critical_momentum(plasma, ir; coulomb_logarithm=:thermal)

Critical momentum (in units of mₑc) at radius ir from the Connor-Hastie critical field of all electrons, free and bound, with the Coulomb logarithm of the free electrons (DREAM's Ec_tot, RunawayFluid.cpp), critical_momentum of |E|. Inf where the field is below that critical field. coulomb_logarithm chooses the logarithm as in free_critical_momentum, by DREAM's rule (RunawayFluid::CalculateDerivedQuantities, src/Equations/RunawayFluid.cpp:205-209): the thermal one for :thermal, the default, and the relativistic one for :energy_dependent and :relativistic.

It is not DREAM's effective critical momentum (other/fluid/pCrit, Hesslow et al.), which takes the partial screening of the ions into account in the slowing down and the pitch-angle scattering of the fast electrons. The free critical field (free_critical_momentum) can give a threshold in a hot plasma where the effective one has none, below the thermal momentum. Runes2P has DREAM's effective critical field and p⋆ (effective_critical_field, avalanche_critical_momentum), from which pCrit = 1/√((Ê − Ê_ceff)/(p⋆² Ê_eff)) follows in DREAM's FLUID and KINETIC avalanche modes (RunawayFluid.cpp:647-653; not in FLUID_HESSLOW, whose p⋆ differs); no function returns it, and it is not the default of critical_momentum_at.

source

src/physics/effective_critical_field.jl

Public

Runes2P.SYNCHROTRON_RATE_PER_FIELD_SQUARED — Constant
SYNCHROTRON_RATE_PER_FIELD_SQUARED

e⁴/(6π ε₀ mₑ³ c³) [s⁻¹ T⁻²]: the inverse synchrotron time τ_s⁻¹ = e⁴B²/(6π ε₀ mₑ³ c³) per square of the magnetic field, about 0.194 s⁻¹ T⁻² (DREAM's EffectiveCriticalField.cpp:44-52; the radiation reaction of the Abraham-Lorentz-Dirac force, L. Hesslow et al., Plasma Phys. Control. Fusion 60, 074010 (2018), doi:10.1088/1361-6587/aac33e, eq. (5)).

source
Runes2P.avalanche_critical_momentum — Method
avalanche_critical_momentum(model::CollisionModel, ir, field_frequency; dual=nothing)

p⋆ (in units of mₑc) of the collisions of model as they are, without runaway_fluid_settings, at the field frequency field_frequency [s⁻¹]: the method behind the one of a plasma. dual, a model of the same plasma in dual numbers, or a field frequency in dual numbers, gives the derivatives.

source
Runes2P.avalanche_critical_momentum — Method
avalanche_critical_momentum(plasma, ir, field_frequency; settings=CollisionSettings())

DREAM's critical momentum p⋆ of the avalanche in the kinetic and fluid modes (RunawayFluid.cpp:536-589, the branch of pStarFunction; L. Hesslow et al., Nucl. Fusion 59, 084004 (2019), doi:10.1088/1741-4326/ab26c2): the root of

\[p^2 \hat E_\mathrm{eff} = \sqrt{\hat ν_s(p) (\hat ν_D(p) + 4 \hat ν_s(p))}, \qquad \hat ν_s = \frac{p^3 ν_s}{γ^2}, \quad \hat ν_D = \frac{p^3 ν_D}{γ},\]

with Ê_eff = e max(|E|, E_ceff)/(mₑc) (field_frequency) [s⁻¹], p⋆ in units of mₑc and the collisions of runaway_fluid_settings(settings; role = :critical_momentum) (no bremsstrahlung), in a cylinder, where the passing fraction is 1. Solved to 1e-12 relative (DREAM: 1e-3); with dual numbers in the plasma or the field the derivatives follow from one Newton correction.

source
Runes2P.critical_field_advection — Method
critical_field_advection(model, ir, p, field_frequency)

The momentum advection of a runaway electron averaged over its pitch distribution, in s⁻¹ (units of mₑc per second), which defines DREAM's effective critical field in a cylinder (mode FULL, EffectiveCriticalField.cpp:360-372, Hesslow et al. 2018, eq. (21)):

\[U(p) = \hat E ⟨ξ_0⟩_A − p ν_s(p) − p γ τ_s^{-1} ⟨1 − ξ_0^2⟩_A, \qquad A = \frac{2 \hat E}{p ν_D(p)},\]

with the momentum p in units of mₑc, Ê = e|E|/(mₑc) (field_frequency) [s⁻¹], the slowing-down and deflection frequencies of model (superthermal, with the bremsstrahlung stopping, runaway_fluid_settings), and the synchrotron time of the magnetic field of the plasma (SYNCHROTRON_RATE_PER_FIELD_SQUARED). In a cylinder the pitch distribution exp(−A(1 − ξ₀)) gives ⟨ξ₀⟩ = coth A − 1/A and ⟨1 − ξ₀²⟩ = 2⟨ξ₀⟩/A in closed form, where DREAM interpolates both on 50 points (REPitchDistributionAveragedBACoeff.cpp), with differences of about 1e-3.

source
Runes2P.effective_critical_field — Method
effective_critical_field(model::CollisionModel, ir; dual=nothing)

The effective critical field [V/m] and the momentum (in units of mₑc) of the largest advection of the collisions of model as they are, without the settings of runaway_fluid_settings: the method behind the one of a plasma, and the way to the limits with other collisions (a constant Coulomb logarithm in the tests). dual, a model of the same plasma in dual numbers, gives the derivatives.

source
Runes2P.effective_critical_field — Method
effective_critical_field(plasma, ir; settings=CollisionSettings())

DREAM's effective critical field [V/m] at radius ir of plasma in mode FULL in a cylinder: the field |E| at which the largest momentum advection over p, critical_field_advection, is zero (Hesslow et al., Plasma Phys. Control. Fusion 60, 074010 (2018), doi:10.1088/1361-6587/aac33e, eq. (21); DREAM's EffectiveCriticalField.cpp:124-169 and 249-372). Above it some electrons gain momentum at every pitch of their distribution. The collisions are those of runaway_fluid_settings(settings; role = :critical_field): superthermal, partially screened as settings, with the bremsstrahlung stopping and the synchrotron loss of the magnetic field of the plasma. DREAM solves to a relative 2e-3 in the field and 1e-3 in the momentum with a secant step warm-started from the last call; this solves to 1e-13 and 1e-10. Returns the field [V/m] and the momentum (in units of mₑc) of the largest advection. A plasma in dual numbers (dual_plasma) gives the field with the exact derivatives: the envelope of the maximum, dE_ceff/dx = −(∂U/∂x)/(∂U/∂E) at that momentum.

source
Runes2P.fluid_avalanche_growth_rate — Method
fluid_avalanche_growth_rate(field_model, momentum_model, ir, total_density; field_dual=nothing,
                            momentum_dual=nothing)

The growth rate of the collisions of field_model (for the effective critical field) and momentum_model (for p⋆) as they are, without runaway_fluid_settings: the method behind the one of a plasma, and the way to the limits with other collisions, for the total electron density total_density [m⁻³]. The field is that of the plasma of the models; the models in dual numbers give the derivatives. It returns the rate [s⁻¹], the effective critical field [V/m] and p⋆ (in units of mₑc), as the method of a plasma.

source
Runes2P.fluid_avalanche_growth_rate — Method
fluid_avalanche_growth_rate(plasma, ir, total_density; settings=CollisionSettings())

DREAM's avalanche growth rate [s⁻¹] of the fluid runaways at radius ir, for the total electron density total_density (n_tot) [m⁻³] (RunawayFluid.cpp:595-660 and 353; Hesslow et al. 2019), in a cylinder:

\[Γ = n_\mathrm{tot}\, 4π r_0^2 c\, \frac{\hat E − \hat E_\mathrm{ceff}}{p_⋆^2 \hat E_\mathrm{eff}}, \qquad \hat E_\mathrm{eff} = \max(\hat E, \hat E_\mathrm{ceff}),\]

with the field |E| of the plasma, the effective_critical_field and the avalanche_critical_momentum at Ê_eff. It is negative below the effective critical field, linear in |E| there, and takes the sign of the field away. Returns the rate, the effective critical field [V/m] and p⋆ (in units of mₑc). Dual numbers in plasma (also in its electric_field) or in total_density give its exact derivatives.

source
Runes2P.runaway_fluid_settings — Method
runaway_fluid_settings(settings; role)

The collision settings of DREAM's RunawayFluid (src/Settings/RunawayFluid.cpp:27-39), which take only the screening, the Coulomb logarithm and the tables of settings: the superthermal mode always, and for role = :critical_field the energy-dependent Coulomb logarithm and the bremsstrahlung stopping power, for role = :critical_momentum the Coulomb logarithm of settings and no bremsstrahlung. The collision settings of the kinetic equation (the mode :full, the bremsstrahlung of f) therefore do not reach the growth rate.

source