Formula reference: disruption
Generated from the docstrings of vaft.formula.disruption:
11 public functions. Each entry is what
vaft.formula.describe("disruption.<name>") prints.
All formula categories
Overview
The semi-analytic middle layer between detecting a disruption in the data
(vaft.process.transients) and simulating one (DREAM-like kinetic or
integrated codes): transparent reference models whose assumptions are easy
to state. The chain they describe is::
thermal quench (T_e drops) -> resistivity rises -> current quench (L/R)
-> induced E_par -> runaway seed (Dreicer) -> avalanche -> RE current
Resistivity is spitzer_resistivity_from_T_e_Z_eff_ln_Lambda, the plasma
resistance, inductance and L/R time are the startup lumped-circuit
relations; they are reused here, not restated.
| Symbol | Meaning | Unit |
|---|---|---|
| n_e | electron density | m^-3 |
| T_e | electron temperature | eV |
| E | parallel electric field, magnitude | V/m |
| E_c | Connor-Hastie critical field | V/m |
| E_D | Dreicer field | V/m |
| Z_eff | effective ion charge | - |
| ln_Lambda | Coulomb logarithm (relativistic for E_c, thermal for E_D) [-] | |
| L_p | plasma self-inductance | H |
| I_p | plasma current | A |
| R0 | major radius | m |
| p_c | critical momentum, in units of m_e c | - |
SI throughout, temperatures in eV. Fields are magnitudes along the current; the induced field has the sign that opposes the current’s decay, so a falling current drives electrons that carry it. Every Coulomb logarithm is an explicit argument – the relativistic one ($\approx 15$-$20$) belongs in $E_c$ and the avalanche rate, the thermal one in $E_D$ and the Dreicer rate; no default is hidden (#1188).
Functions
avalanche_efolds_from_current_drop | Number of avalanche e-folds a current quench provides, $E \gg E_c$. |
avalanche_growth_rate | Rosenbluth–Putvinski avalanche (secondary) growth rate of the runaway density. Convention |
connor_hastie_critical_field | Connor–Hastie critical field below which no electron runs away. |
current_quench_current | Exponential (L/R) current quench of the plasma current. |
dreicer_field | Dreicer field: the drag on a thermal electron. Convention |
dreicer_generation_rate | Dreicer (primary) runaway generation rate, Connor–Hastie asymptotic form. Convention |
inductive_parallel_electric_field | Parallel electric field a changing plasma current induces in the plasma. Convention |
relativistic_collision_time | Collision time of a relativistic electron, $\tau_c = m_ec/(eE_c)$. |
runaway_critical_momentum | Critical momentum above which an electron runs away, in units of $m_ec$. |
runaway_current_from_density | Current carried by runaway electrons moving at the speed of light. |
thermal_quench_temperature | Prescribed exponential thermal quench of the electron temperature. |
No function matches.
avalanche_efolds_from_current_drop
source
avalanche_efolds_from_current_drop(delta_I_p, L_p, R0, Z_eff, ln_Lambda)
Show source vaft/formula/disruption.py, lines 505–561
def avalanche_efolds_from_current_drop(delta_I_p, L_p, R0, Z_eff, ln_Lambda):
r"""Number of avalanche e-folds a current quench provides, $E \gg E_c$.
$$N = \int\gamma_\mathrm{av}\,dt \simeq \frac{e\,L_p\,\Delta I_p}{2\pi R_0\,m_ec\,\ln\Lambda}
\sqrt{\frac{\pi}{3(Z_\mathrm{eff} + 5)}}$$
Parameters
----------
delta_I_p : float or np.ndarray
Current lost in the quench, non-negative [A].
L_p : float
Plasma self-inductance, positive [H].
R0 : float
Major radius, positive [m].
Z_eff : float
Effective ion charge, positive [-].
ln_Lambda : float
Relativistic Coulomb logarithm, positive [-].
Returns
-------
float or np.ndarray
Number of e-folds; the seed is multiplied by $e^N$ [-].
Raises
------
ValueError
``delta_I_p`` is negative or another argument is not positive.
Physical interpretation
-----------------------
$\int E\,dt = L_p\Delta I_p/(2\pi R_0)$ by ``inductive_parallel_electric_field``,
and $E_c\tau_c = m_ec/e$, so the $E_c$ dependence cancels: the gain
depends on the current and the inductance, not the density. With
$L_p \approx \mu_0R_0(\ln(8R_0/a) - 2 + l_i/2)$ this is the familiar
$N \propto I_p/(I_A\ln\Lambda)$, $I_A = 4\pi\varepsilon_0m_ec^3/e \approx 17$ kA:
a few MA gives tens of e-folds.
Assumptions
-----------
$E \gg E_c$ throughout (the $-1$ in $E/E_c - 1$ dropped), so this is an
upper estimate; no runaway current feeding back on $E$; no vessel
coupling.
References
----------
.. [1] M. N. Rosenbluth and S. V. Putvinski, Nucl. Fusion 37 (1997) 1355.
"""
delta_I_p = np.asarray(delta_I_p, dtype=float)
if np.any(delta_I_p < 0.0):
raise ValueError("delta_I_p must be non-negative (the current lost)")
L_p = float(_positive(L_p, "L_p"))
R0 = float(_positive(R0, "R0"))
Z = float(_positive(Z_eff, "Z_eff"))
ln_Lambda = float(_positive(ln_Lambda, "ln_Lambda"))
return _out(QE * L_p * delta_I_p / (2.0 * np.pi * R0 * ME * C_LIGHT * ln_Lambda)
* np.sqrt(np.pi / (3.0 * (Z + 5.0))))Number of avalanche e-folds a current quench provides, $E \gg E_c$.
\[N = \int\gamma_\mathrm{av}\,dt \simeq \frac{e\,L_p\,\Delta I_p}{2\pi R_0\,m_ec\,\ln\Lambda} \sqrt{\frac{\pi}{3(Z_\mathrm{eff} + 5)}}\]| Name | Type | Unit | Description |
|---|---|---|---|
delta_I_p | float or np.ndarray | A | Current lost in the quench, non-negative. |
L_p | float | H | Plasma self-inductance, positive. |
R0 | float | m | Major radius, positive. |
Z_eff | float | - | Effective ion charge, positive. |
ln_Lambda | float | - | Relativistic Coulomb logarithm, positive. |
| Returns | |||
| — | float or np.ndarray | - | Number of e-folds; the seed is multiplied by $e^N$. |
Raises
ValueErrordelta_I_pis negative or another argument is not positive.
Physical interpretation · Assumptions · References
Physical interpretation
$\int E\,dt = L_p\Delta I_p/(2\pi R_0)$ by inductive_parallel_electric_field,
and $E_c\tau_c = m_ec/e$, so the $E_c$ dependence cancels: the gain
depends on the current and the inductance, not the density. With
$L_p \approx \mu_0R_0(\ln(8R_0/a) - 2 + l_i/2)$ this is the familiar
$N \propto I_p/(I_A\ln\Lambda)$, $I_A = 4\pi\varepsilon_0m_ec^3/e \approx 17$ kA:
a few MA gives tens of e-folds.
Assumptions
$E \gg E_c$ throughout (the $-1$ in $E/E_c - 1$ dropped), so this is an upper estimate; no runaway current feeding back on $E$; no vessel coupling.
References
- M. N. Rosenbluth and S. V. Putvinski, Nucl. Fusion 37 (1997) 1355.
avalanche_growth_rate
Convention-sensitive
source
avalanche_growth_rate(E, E_c, Z_eff, ln_Lambda)
Show source vaft/formula/disruption.py, lines 444–502
def avalanche_growth_rate(E, E_c, Z_eff, ln_Lambda):
r"""Rosenbluth--Putvinski avalanche (secondary) growth rate of the runaway density.
$$\gamma_\mathrm{av} = \frac{E/E_c - 1}{\tau_c\ln\Lambda}\sqrt{\frac{\pi}{3(Z_\mathrm{eff} + 5)}},\qquad
\tau_c = \frac{m_ec}{eE_c},\qquad
\frac{dn_\mathrm{RE}}{dt} = \gamma_\mathrm{av}\,n_\mathrm{RE}$$
Parameters
----------
E : float or np.ndarray
Parallel electric field, magnitude [V/m].
E_c : float
Critical field, positive [V/m].
Z_eff : float
Effective ion charge, positive [-].
ln_Lambda : float
Relativistic Coulomb logarithm, positive [-].
Returns
-------
float or np.ndarray
$\gamma_\mathrm{av}$; zero where $E \le E_c$ [1/s].
Raises
------
ValueError
``E_c``, ``Z_eff`` or ``ln_Lambda`` is not positive.
Convention
----------
$\tau_c$ is derived from $E_c$ (``relativistic_collision_time``), so the
two cannot be passed inconsistently.
Physical interpretation
-----------------------
Close collisions of existing runaways knock thermal electrons above
$p_c$: exponential growth from any seed, independent of $T_e$. Over a
whole current quench it multiplies a seed by
``avalanche_efolds_from_current_drop`` e-folds -- a few per MA, so a
handful at 1 MA but tens at reactor currents, where a tiny seed can end up
carrying most of the current.
Assumptions
-----------
The $E \gg E_c$ asymptote of Rosenbluth & Putvinski for a classical,
fully ionised plasma: not valid with high-$Z$ impurities or partial
screening, which raise the rate, nor with radiation losses. The rate is
clipped at zero below $E_c$.
References
----------
.. [1] M. N. Rosenbluth and S. V. Putvinski, Nucl. Fusion 37 (1997) 1355.
"""
E_c = _positive(E_c, "E_c")
Z = _positive(Z_eff, "Z_eff")
ln_Lambda = _positive(ln_Lambda, "ln_Lambda")
tau_c = ME * C_LIGHT / (QE * E_c)
excess = np.maximum(np.asarray(E, dtype=float) / E_c - 1.0, 0.0)
return _out(excess / (tau_c * ln_Lambda) * np.sqrt(np.pi / (3.0 * (Z + 5.0))))Rosenbluth–Putvinski avalanche (secondary) growth rate of the runaway density.
\[\gamma_\mathrm{av} = \frac{E/E_c - 1}{\tau_c\ln\Lambda}\sqrt{\frac{\pi}{3(Z_\mathrm{eff} + 5)}},\qquad \tau_c = \frac{m_ec}{eE_c},\qquad \frac{dn_\mathrm{RE}}{dt} = \gamma_\mathrm{av}\,n_\mathrm{RE}\]| Name | Type | Unit | Description |
|---|---|---|---|
E | float or np.ndarray | V/m | Parallel electric field, magnitude. |
E_c | float | V/m | Critical field, positive. |
Z_eff | float | - | Effective ion charge, positive. |
ln_Lambda | float | - | Relativistic Coulomb logarithm, positive. |
| Returns | |||
| — | float or np.ndarray | 1/s | $\gamma_\mathrm{av}$; zero where $E \le E_c$. |
Convention
$\tau_c$ is derived from $E_c$ (relativistic_collision_time), so the
two cannot be passed inconsistently.
Raises
ValueErrorE_c,Z_efforln_Lambdais not positive.
Physical interpretation · Assumptions · References
Physical interpretation
Close collisions of existing runaways knock thermal electrons above
$p_c$: exponential growth from any seed, independent of $T_e$. Over a
whole current quench it multiplies a seed by
avalanche_efolds_from_current_drop e-folds – a few per MA, so a
handful at 1 MA but tens at reactor currents, where a tiny seed can end up
carrying most of the current.
Assumptions
The $E \gg E_c$ asymptote of Rosenbluth & Putvinski for a classical, fully ionised plasma: not valid with high-$Z$ impurities or partial screening, which raise the rate, nor with radiation losses. The rate is clipped at zero below $E_c$.
References
- M. N. Rosenbluth and S. V. Putvinski, Nucl. Fusion 37 (1997) 1355.
connor_hastie_critical_field
source
connor_hastie_critical_field(n_e, ln_Lambda)
Show source vaft/formula/disruption.py, lines 217–252
def connor_hastie_critical_field(n_e, ln_Lambda):
r"""Connor--Hastie critical field below which no electron runs away.
$$E_c = \frac{n_e e^3\ln\Lambda}{4\pi\varepsilon_0^2 m_e c^2}$$
Parameters
----------
n_e : float or np.ndarray
Electron density (free plus bound for a partially ionised plasma), positive [m^-3].
ln_Lambda : float
Relativistic Coulomb logarithm, positive [-].
Returns
-------
float or np.ndarray
$E_c$ [V/m].
Raises
------
ValueError
``n_e`` or ``ln_Lambda`` is not positive.
Physical interpretation
-----------------------
The minimum of the collisional drag on an electron, reached at
relativistic speed: below $E_c$ even the fastest electrons slow down. It
is the threshold of the avalanche; synchrotron and bremsstrahlung losses
and partial screening raise the effective threshold above it.
References
----------
.. [1] J. W. Connor and R. J. Hastie, Nucl. Fusion 15 (1975) 415.
"""
n_e = _positive(n_e, "n_e")
ln_Lambda = _positive(ln_Lambda, "ln_Lambda")
return _out(n_e * QE**3 * ln_Lambda / (4.0 * np.pi * EPS0**2 * ME * C_LIGHT**2))Connor–Hastie critical field below which no electron runs away.
\[E_c = \frac{n_e e^3\ln\Lambda}{4\pi\varepsilon_0^2 m_e c^2}\]| Name | Type | Unit | Description |
|---|---|---|---|
n_e | float or np.ndarray | m^-3 | Electron density (free plus bound for a partially ionised plasma), positive. |
ln_Lambda | float | - | Relativistic Coulomb logarithm, positive. |
| Returns | |||
| — | float or np.ndarray | V/m | $E_c$. |
Raises
ValueErrorn_eorln_Lambdais not positive.
Physical interpretation · References
Physical interpretation
The minimum of the collisional drag on an electron, reached at relativistic speed: below $E_c$ even the fastest electrons slow down. It is the threshold of the avalanche; synchrotron and bremsstrahlung losses and partial screening raise the effective threshold above it.
References
- J. W. Connor and R. J. Hastie, Nucl. Fusion 15 (1975) 415.
current_quench_current
source
current_quench_current(t, I_0, tau_CQ)
Show source vaft/formula/disruption.py, lines 123–162
def current_quench_current(t, I_0, tau_CQ):
r"""Exponential (L/R) current quench of the plasma current.
$$I_p(t) = I_0\,e^{-t/\tau_\mathrm{CQ}},\quad t \ge 0,\qquad \tau_\mathrm{CQ} = L_p/R_p$$
Parameters
----------
t : float or np.ndarray
Time from the start of the current quench [s].
I_0 : float
Current at the start [A].
tau_CQ : float
L/R time, positive (``lr_time_from_L_R``) [s].
Returns
-------
float or np.ndarray
$I_p(t)$; $I_0$ for $t < 0$ [A].
Raises
------
ValueError
``tau_CQ`` is not positive.
Assumptions
-----------
Constant $L_p$ and $R_p$ -- a cold, fixed-temperature plasma with no
runaway current and no coupling to the vessel. With $R_p$ rising as the
plasma cools, or runaways taking over the current, the decay is not a
single exponential; the linear-decay fit used for CQ rates is another
reduction.
References
----------
.. [1] J. Wesson, *Tokamaks*, 4th ed., Oxford University Press (2011),
Sec. 7.10.
"""
tau_CQ = float(_positive(tau_CQ, "tau_CQ"))
t = np.asarray(t, dtype=float)
return _out(np.where(t < 0.0, I_0, I_0 * np.exp(-np.maximum(t, 0.0) / tau_CQ)))Exponential (L/R) current quench of the plasma current.
\[I_p(t) = I_0\,e^{-t/\tau_\mathrm{CQ}},\quad t \ge 0,\qquad \tau_\mathrm{CQ} = L_p/R_p\]| Name | Type | Unit | Description |
|---|---|---|---|
t | float or np.ndarray | s | Time from the start of the current quench. |
I_0 | float | A | Current at the start. |
tau_CQ | float | s | L/R time, positive ( |
| Returns | |||
| — | float or np.ndarray | A | $I_p(t)$; $I_0$ for $t < 0$. |
Raises
ValueErrortau_CQis not positive.
Assumptions · References
Assumptions
Constant $L_p$ and $R_p$ – a cold, fixed-temperature plasma with no runaway current and no coupling to the vessel. With $R_p$ rising as the plasma cools, or runaways taking over the current, the decay is not a single exponential; the linear-decay fit used for CQ rates is another reduction.
References
- J. Wesson, Tokamaks, 4th ed., Oxford University Press (2011), Sec. 7.10.
dreicer_field
Convention-sensitive
source
dreicer_field(n_e, T_e, ln_Lambda)
Show source vaft/formula/disruption.py, lines 255–301
def dreicer_field(n_e, T_e, ln_Lambda):
r"""Dreicer field: the drag on a thermal electron.
$$E_D = \frac{n_e e^3\ln\Lambda}{4\pi\varepsilon_0^2 T_e} = E_c\,\frac{m_ec^2}{T_e}$$
Parameters
----------
n_e : float or np.ndarray
Electron density, positive [m^-3].
T_e : float or np.ndarray
Electron temperature, positive [eV].
ln_Lambda : float
Thermal Coulomb logarithm, positive [-].
Returns
-------
float or np.ndarray
$E_D$ [V/m].
Raises
------
ValueError
An argument is not positive.
Convention
----------
$T_e$ enters as an energy $eT_e$; some texts put $T_e/m_e$ as $v_{te}^2$
with $v_{te} = \sqrt{2T_e/m_e}$, which changes the prefactor by two. This
is the form of Connor & Hastie, consistent with $E_D/E_c = m_ec^2/T_e$.
Physical interpretation
-----------------------
A field $E \gtrsim E_D$ accelerates the bulk; well below it only the
tail beyond the critical velocity runs away, at the exponentially small
Dreicer rate. Which seed matters depends on the case: the rate is
negligible below a few per cent of $E_D$, but a fast current quench can
reach $E/E_D \approx 0.01$-$0.02$ at a few eV, where it is not.
References
----------
.. [1] H. Dreicer, Phys. Rev. 115 (1959) 238.
.. [2] J. W. Connor and R. J. Hastie, Nucl. Fusion 15 (1975) 415.
"""
n_e = _positive(n_e, "n_e")
T_e = _positive(T_e, "T_e")
ln_Lambda = _positive(ln_Lambda, "ln_Lambda")
return _out(n_e * QE**3 * ln_Lambda / (4.0 * np.pi * EPS0**2 * QE * T_e))Dreicer field: the drag on a thermal electron.
\[E_D = \frac{n_e e^3\ln\Lambda}{4\pi\varepsilon_0^2 T_e} = E_c\,\frac{m_ec^2}{T_e}\]| Name | Type | Unit | Description |
|---|---|---|---|
n_e | float or np.ndarray | m^-3 | Electron density, positive. |
T_e | float or np.ndarray | eV | Electron temperature, positive. |
ln_Lambda | float | - | Thermal Coulomb logarithm, positive. |
| Returns | |||
| — | float or np.ndarray | V/m | $E_D$. |
Convention
$T_e$ enters as an energy $eT_e$; some texts put $T_e/m_e$ as $v_{te}^2$ with $v_{te} = \sqrt{2T_e/m_e}$, which changes the prefactor by two. This is the form of Connor & Hastie, consistent with $E_D/E_c = m_ec^2/T_e$.
Raises
ValueErrorAn argument is not positive.
Physical interpretation · References
Physical interpretation
A field $E \gtrsim E_D$ accelerates the bulk; well below it only the tail beyond the critical velocity runs away, at the exponentially small Dreicer rate. Which seed matters depends on the case: the rate is negligible below a few per cent of $E_D$, but a fast current quench can reach $E/E_D \approx 0.01$-$0.02$ at a few eV, where it is not.
References
- H. Dreicer, Phys. Rev. 115 (1959) 238.
- J. W. Connor and R. J. Hastie, Nucl. Fusion 15 (1975) 415.
dreicer_generation_rate
Convention-sensitive
source
dreicer_generation_rate(n_e, T_e, E, Z_eff, ln_Lambda, *, prefactor)
Show source vaft/formula/disruption.py, lines 377–441
def dreicer_generation_rate(n_e, T_e, E, Z_eff, ln_Lambda, *, prefactor):
r"""Dreicer (primary) runaway generation rate, Connor--Hastie asymptotic form.
$$\frac{dn_\mathrm{RE}}{dt} = C\,n_e\nu_{ee}\left(\frac{E_D}{E}\right)^{\frac{3(1+Z)}{16}}
\exp\left(-\frac{E_D}{4E} - \sqrt{\frac{(1+Z)E_D}{E}}\right),\qquad
\nu_{ee} = \frac{n_ee^4\ln\Lambda}{4\pi\varepsilon_0^2m_e^2v_{te}^3}$$
Parameters
----------
n_e : float or np.ndarray
Electron density, positive [m^-3].
T_e : float or np.ndarray
Electron temperature, positive [eV].
E : float or np.ndarray
Parallel electric field, magnitude [V/m].
Z_eff : float
Effective ion charge, positive [-].
ln_Lambda : float
Thermal Coulomb logarithm, positive [-].
prefactor : float
The order-unity $C$ of the asymptotic formula, required: fits to
kinetic solutions put it between about 0.3 and 1, so there is no
canonical default [-].
Returns
-------
float or np.ndarray
Primary generation rate; zero where $E \le 0$ [m^-3 s^-1].
Raises
------
ValueError
A density, temperature, ``Z_eff`` or ``ln_Lambda`` is not positive.
Convention
----------
$v_{te} = \sqrt{2eT_e/m_e}$; $E_D$ is ``dreicer_field``. The prefactor is
an explicit argument because published fits differ by a factor of a few.
Assumptions
-----------
Steady state, $E \ll E_D$ (the asymptotic regime), non-relativistic
thermal electrons -- the relativistic correction factor
$\exp[-(T_e/m_ec^2)(E_D^2/8E^2 + \ldots)]$ of Connor & Hastie is dropped --
a classical fully ionised plasma (no partial screening), no hot tail;
unreliable above $E/E_D \approx 0.1$.
References
----------
.. [1] J. W. Connor and R. J. Hastie, Nucl. Fusion 15 (1975) 415, Eq. (62).
.. [2] L. Hesslow et al., Nucl. Fusion 59 (2019) 084004, Eq. (4) (the
form written here).
"""
n_e = _positive(n_e, "n_e")
T_e = _positive(T_e, "T_e")
Z = float(_positive(Z_eff, "Z_eff"))
ln_Lambda = _positive(ln_Lambda, "ln_Lambda")
E = np.asarray(E, dtype=float)
E_D = dreicer_field(n_e, T_e, ln_Lambda)
v_te = np.sqrt(2.0 * QE * T_e / ME)
nu_ee = n_e * QE**4 * ln_Lambda / (4.0 * np.pi * EPS0**2 * ME**2 * v_te**3)
with np.errstate(divide="ignore", over="ignore", invalid="ignore"):
x = np.where(E > 0.0, E_D / np.where(E > 0.0, E, 1.0), np.inf)
rate = prefactor * n_e * nu_ee * x ** (3.0 * (1.0 + Z) / 16.0) * np.exp(-x / 4.0 - np.sqrt((1.0 + Z) * x))
return _out(np.where(np.isfinite(rate), rate, 0.0))Dreicer (primary) runaway generation rate, Connor–Hastie asymptotic form.
\[\frac{dn_\mathrm{RE}}{dt} = C\,n_e\nu_{ee}\left(\frac{E_D}{E}\right)^{\frac{3(1+Z)}{16}} \exp\left(-\frac{E_D}{4E} - \sqrt{\frac{(1+Z)E_D}{E}}\right),\qquad \nu_{ee} = \frac{n_ee^4\ln\Lambda}{4\pi\varepsilon_0^2m_e^2v_{te}^3}\]| Name | Type | Unit | Description |
|---|---|---|---|
n_e | float or np.ndarray | m^-3 | Electron density, positive. |
T_e | float or np.ndarray | eV | Electron temperature, positive. |
E | float or np.ndarray | V/m | Parallel electric field, magnitude. |
Z_eff | float | - | Effective ion charge, positive. |
ln_Lambda | float | - | Thermal Coulomb logarithm, positive. |
prefactor | float | - | The order-unity $C$ of the asymptotic formula, required: fits to kinetic solutions put it between about 0.3 and 1, so there is no canonical default. |
| Returns | |||
| — | float or np.ndarray | m^-3 s^-1 | Primary generation rate; zero where $E \le 0$. |
Convention
$v_{te} = \sqrt{2eT_e/m_e}$; $E_D$ is dreicer_field. The prefactor is
an explicit argument because published fits differ by a factor of a few.
Raises
ValueErrorA density, temperature,Z_efforln_Lambdais not positive.
Assumptions · References
Assumptions
Steady state, $E \ll E_D$ (the asymptotic regime), non-relativistic thermal electrons – the relativistic correction factor $\exp[-(T_e/m_ec^2)(E_D^2/8E^2 + \ldots)]$ of Connor & Hastie is dropped – a classical fully ionised plasma (no partial screening), no hot tail; unreliable above $E/E_D \approx 0.1$.
References
- J. W. Connor and R. J. Hastie, Nucl. Fusion 15 (1975) 415, Eq. (62).
- L. Hesslow et al., Nucl. Fusion 59 (2019) 084004, Eq. (4) (the form written here).
inductive_parallel_electric_field
Convention-sensitive
source
inductive_parallel_electric_field(L_p, dI_p_dt, R0)
Show source vaft/formula/disruption.py, lines 165–214
def inductive_parallel_electric_field(L_p, dI_p_dt, R0):
r"""Parallel electric field a changing plasma current induces in the plasma.
$$E_\parallel = -\frac{L_p}{2\pi R_0}\,\frac{dI_p}{dt}$$
Parameters
----------
L_p : float
Plasma self-inductance, positive [H].
dI_p_dt : float or np.ndarray
Rate of change of the plasma current [A/s].
R0 : float
Major radius, positive [m].
Returns
-------
float or np.ndarray
$E_\parallel$, positive along the current when it decays [V/m].
Raises
------
ValueError
``L_p`` or ``R0`` is not positive.
Convention
----------
Signed along the current: a decaying current ($dI_p/dt < 0$) gives
$E_\parallel > 0$, the field that keeps pushing the current-carrying
electrons. The flux linked with the vessel and coils is ignored, so this
is the upper estimate an isolated plasma would see.
Physical interpretation
-----------------------
The magnetic energy $\tfrac12 L_pI_p^2$ cannot vanish instantly: a fast
current quench turns it into a loop voltage $L_p|dI_p/dt|$, which spread
over the circumference $2\pi R_0$ is the field that can exceed $E_c$
by orders of magnitude.
Assumptions
-----------
Uniform field over the cross-section; lumped (0-D) inductance.
References
----------
.. [1] J. Wesson, *Tokamaks*, 4th ed., Oxford University Press (2011),
Sec. 7.10.
"""
L_p = float(_positive(L_p, "L_p"))
R0 = float(_positive(R0, "R0"))
return _out(-L_p * np.asarray(dI_p_dt, dtype=float) / (2.0 * np.pi * R0))Parallel electric field a changing plasma current induces in the plasma.
\[E_\parallel = -\frac{L_p}{2\pi R_0}\,\frac{dI_p}{dt}\]| Name | Type | Unit | Description |
|---|---|---|---|
L_p | float | H | Plasma self-inductance, positive. |
dI_p_dt | float or np.ndarray | A/s | Rate of change of the plasma current. |
R0 | float | m | Major radius, positive. |
| Returns | |||
| — | float or np.ndarray | V/m | $E_\parallel$, positive along the current when it decays. |
Convention
Signed along the current: a decaying current ($dI_p/dt < 0$) gives $E_\parallel > 0$, the field that keeps pushing the current-carrying electrons. The flux linked with the vessel and coils is ignored, so this is the upper estimate an isolated plasma would see.
Raises
ValueErrorL_porR0is not positive.
Physical interpretation · Assumptions · References
Physical interpretation
The magnetic energy $\tfrac12 L_pI_p^2$ cannot vanish instantly: a fast current quench turns it into a loop voltage $L_p|dI_p/dt|$, which spread over the circumference $2\pi R_0$ is the field that can exceed $E_c$ by orders of magnitude.
Assumptions
Uniform field over the cross-section; lumped (0-D) inductance.
References
- J. Wesson, Tokamaks, 4th ed., Oxford University Press (2011), Sec. 7.10.
relativistic_collision_time
source
relativistic_collision_time(n_e, ln_Lambda)
Show source vaft/formula/disruption.py, lines 343–374
def relativistic_collision_time(n_e, ln_Lambda):
r"""Collision time of a relativistic electron, $\tau_c = m_ec/(eE_c)$.
$$\tau_c = \frac{4\pi\varepsilon_0^2m_e^2c^3}{n_ee^4\ln\Lambda}$$
Parameters
----------
n_e : float or np.ndarray
Electron density, positive [m^-3].
ln_Lambda : float
Relativistic Coulomb logarithm, positive [-].
Returns
-------
float or np.ndarray
$\tau_c$ [s].
Raises
------
ValueError
An argument is not positive.
Physical interpretation
-----------------------
The time the critical field takes to give an electron momentum $m_ec$;
the avalanche grows on $\tau_c\ln\Lambda$.
References
----------
.. [1] M. N. Rosenbluth and S. V. Putvinski, Nucl. Fusion 37 (1997) 1355.
"""
return _out(ME * C_LIGHT / (QE * connor_hastie_critical_field(n_e, ln_Lambda)))Collision time of a relativistic electron, $\tau_c = m_ec/(eE_c)$.
\[\tau_c = \frac{4\pi\varepsilon_0^2m_e^2c^3}{n_ee^4\ln\Lambda}\]| Name | Type | Unit | Description |
|---|---|---|---|
n_e | float or np.ndarray | m^-3 | Electron density, positive. |
ln_Lambda | float | - | Relativistic Coulomb logarithm, positive. |
| Returns | |||
| — | float or np.ndarray | s | $\tau_c$. |
Raises
ValueErrorAn argument is not positive.
Physical interpretation · References
Physical interpretation
The time the critical field takes to give an electron momentum $m_ec$; the avalanche grows on $\tau_c\ln\Lambda$.
References
- M. N. Rosenbluth and S. V. Putvinski, Nucl. Fusion 37 (1997) 1355.
runaway_critical_momentum
source
runaway_critical_momentum(E, E_c)
Show source vaft/formula/disruption.py, lines 304–340
def runaway_critical_momentum(E, E_c):
r"""Critical momentum above which an electron runs away, in units of $m_ec$.
$$p_c = \frac{1}{\sqrt{E/E_c - 1}},\qquad E > E_c$$
Parameters
----------
E : float or np.ndarray
Parallel electric field, magnitude [V/m].
E_c : float or np.ndarray
Critical field (``connor_hastie_critical_field``), positive [V/m].
Returns
-------
float or np.ndarray
$p_c$; ``inf`` where $E \le E_c$ [-].
Raises
------
ValueError
``E_c`` is not positive.
Assumptions
-----------
A test electron moving along the field with the relativistic drag
$\propto 1 + 1/p^2$; pitch-angle scattering (the $Z_\mathrm{eff}$ factor)
and radiation raise $p_c$.
References
----------
.. [1] B. N. Breizman et al., Nucl. Fusion 59 (2019) 083001, Sec. 2.
"""
E_c = _positive(E_c, "E_c")
ratio = np.asarray(E, dtype=float) / E_c
with np.errstate(divide="ignore", invalid="ignore"):
p = np.where(ratio > 1.0, 1.0 / np.sqrt(np.maximum(ratio - 1.0, 1e-300)), np.inf)
return _out(p)Critical momentum above which an electron runs away, in units of $m_ec$.
\[p_c = \frac{1}{\sqrt{E/E_c - 1}},\qquad E > E_c\]| Name | Type | Unit | Description |
|---|---|---|---|
E | float or np.ndarray | V/m | Parallel electric field, magnitude. |
E_c | float or np.ndarray | V/m | Critical field ( |
| Returns | |||
| — | float or np.ndarray | - | $p_c$; |
Raises
ValueErrorE_cis not positive.
Assumptions · References
Assumptions
A test electron moving along the field with the relativistic drag $\propto 1 + 1/p^2$; pitch-angle scattering (the $Z_\mathrm{eff}$ factor) and radiation raise $p_c$.
References
- B. N. Breizman et al., Nucl. Fusion 59 (2019) 083001, Sec. 2.
runaway_current_from_density
source
runaway_current_from_density(n_RE, area)
Show source vaft/formula/disruption.py, lines 564–599
def runaway_current_from_density(n_RE, area):
r"""Current carried by runaway electrons moving at the speed of light.
$$I_\mathrm{RE} = e\,c\,n_\mathrm{RE}\,A$$
Parameters
----------
n_RE : float or np.ndarray
Runaway-electron density, non-negative [m^-3].
area : float
Poloidal cross-section they occupy, positive [m^2].
Returns
-------
float or np.ndarray
$I_\mathrm{RE}$ [A].
Raises
------
ValueError
``n_RE`` is negative or ``area`` is not positive.
Assumptions
-----------
Every runaway moves along $\mathbf B$ at $v \simeq c$, uniform over the
area; pitch-angle spread lowers the parallel velocity somewhat.
References
----------
.. [1] B. N. Breizman et al., Nucl. Fusion 59 (2019) 083001, Sec. 1.
"""
n_RE = np.asarray(n_RE, dtype=float)
if np.any(n_RE < 0.0):
raise ValueError("n_RE must be non-negative")
area = float(_positive(area, "area"))
return _out(QE * C_LIGHT * n_RE * area)Current carried by runaway electrons moving at the speed of light.
\[I_\mathrm{RE} = e\,c\,n_\mathrm{RE}\,A\]| Name | Type | Unit | Description |
|---|---|---|---|
n_RE | float or np.ndarray | m^-3 | Runaway-electron density, non-negative. |
area | float | m^2 | Poloidal cross-section they occupy, positive. |
| Returns | |||
| — | float or np.ndarray | A | $I_\mathrm{RE}$. |
Raises
ValueErrorn_REis negative orareais not positive.
Assumptions · References
Assumptions
Every runaway moves along $\mathbf B$ at $v \simeq c$, uniform over the area; pitch-angle spread lowers the parallel velocity somewhat.
References
- B. N. Breizman et al., Nucl. Fusion 59 (2019) 083001, Sec. 1.
thermal_quench_temperature
source
thermal_quench_temperature(t, T_0, T_final, tau_TQ)
Show source vaft/formula/disruption.py, lines 78–120
def thermal_quench_temperature(t, T_0, T_final, tau_TQ):
r"""Prescribed exponential thermal quench of the electron temperature.
$$T_e(t) = T_\mathrm{f} + (T_0 - T_\mathrm{f})\,e^{-t/\tau_\mathrm{TQ}},\quad t \ge 0;\qquad T_e = T_0,\ t < 0$$
Parameters
----------
t : float or np.ndarray
Time from the start of the quench [s].
T_0 : float
Pre-disruption temperature [eV].
T_final : float
Post-quench temperature, positive and below ``T_0`` [eV].
tau_TQ : float
Quench e-folding time, positive [s].
Returns
-------
float or np.ndarray
$T_e(t)$ [eV].
Raises
------
ValueError
A temperature or ``tau_TQ`` is not positive, or ``T_final > T_0``.
Assumptions
-----------
A prescribed shape, not a transport or radiation calculation: real
quenches are often two-stage (a fast conductive drop after stochastisation,
then radiative cooling to a few eV) and not exponential.
References
----------
.. [1] T. C. Hender et al., Nucl. Fusion 47 (2007) S128, Sec. 3.
"""
T_0 = float(_positive(T_0, "T_0"))
T_final = float(_positive(T_final, "T_final"))
tau_TQ = float(_positive(tau_TQ, "tau_TQ"))
if T_final > T_0:
raise ValueError("T_final must not exceed T_0")
t = np.asarray(t, dtype=float)
return _out(np.where(t < 0.0, T_0, T_final + (T_0 - T_final) * np.exp(-np.maximum(t, 0.0) / tau_TQ)))Prescribed exponential thermal quench of the electron temperature.
\[T_e(t) = T_\mathrm{f} + (T_0 - T_\mathrm{f})\,e^{-t/\tau_\mathrm{TQ}},\quad t \ge 0;\qquad T_e = T_0,\ t < 0\]| Name | Type | Unit | Description |
|---|---|---|---|
t | float or np.ndarray | s | Time from the start of the quench. |
T_0 | float | eV | Pre-disruption temperature. |
T_final | float | eV | Post-quench temperature, positive and below |
tau_TQ | float | s | Quench e-folding time, positive. |
| Returns | |||
| — | float or np.ndarray | eV | $T_e(t)$. |
Raises
ValueErrorA temperature ortau_TQis not positive, orT_final > T_0.
Assumptions · References
Assumptions
A prescribed shape, not a transport or radiation calculation: real quenches are often two-stage (a fast conductive drop after stochastisation, then radiative cooling to a few eV) and not exponential.
References
- T. C. Hender et al., Nucl. Fusion 47 (2007) S128, Sec. 3.