Focker-Plank elastic collisions#
Implementation of the Focker-Plank elastic collisions theory.
The Focker-Plank theory [1] describes the slowing down and dispersion of ions in a plasma taking in consideration that, given the conditions of a fusion plasma, it is far more probable that a large deviation is cause by multiple succesive small deviation rather than a large unique one.
Using the Itô’s calculus one gets that the variation of the velocity \( v \) in the direction \( i \) caused by the elastic collisions is
where \( \xi_i(t) \) is white noise with Gaussian distribution that fulfills \( \langle \xi_i(t) \rangle = 0 \) and \( \langle \xi_i(t) \xi_k(t') \rangle = \delta(t-t')\delta_{ik} \). For a plasma with species \( \beta \) in a maxwellian equilibrium the friction coefficient \( F_i \) and the difusion tensor \( D_{ii} \) are known:
where the slowind down factor is given by
and the dispersion frequencies along the instant parallel and perpendicular directions are given respectively by
and
In the previous equations \( x_\beta = v/v_{s,\beta} \) where \( v_{s,\beta} = \sqrt{2 k_\text{B} T / m_\beta} \), \( \phi(x) \) is the error function,
and
With this we can include the effect of collisions for a single particle using Langevin equations
where 1 represents the direction instantly parallel to the velocity and 2, 3 represent a pair of perpendicular directions that make a right handed coordinates system. In the doctoral thesis by Clauser [2] it is shown that these equations can be solved using an Euler step wihout compromising the accuracy of the calculation. Hence the variations are calculated using
where \( N_i \) are random numbers with a Gaussian distribution with mean 0 and variance 1.
As in other parts of the code, for calculations purposes it is wise to use some dimensionless factor to prevent floating point error, in this case we have to calculate \( \nu \Delta t \) that is a dimensionless quantity
where \( F(x_\beta) \) depends on the component we are calculating and defining the dimensionless factor
[1] Krall, N., Trivelpiece, A., Kempton, J. Principles of Plasma Physics. International series in pure and applied physics. McGraw-Hill, 1973. URL https://books.google.com.ar/books?id=b0BRAAAAMAAJ.
[2] Clauser, C. F. Dinámica de partículas alfa en plasmas magnetizados y el efecto de las colisiones en la interacción partícula-plasma. Tesis Doctoral, 2018.
Functions
-
double erf_minus_d_erf(double x)#
Error function minus it’s derivative
-
double G(double x)#
Another definition for formulae simplicity
-
template<typename NormalRand_t, typename MagneticField_t>
class FockerPlank# - #include <focker_plank.hpp>
This class implements the elastic collisions calculation from Focker-Planks’ theory in the Langevin equation using Îto’s method.
Public Functions
-
inline FockerPlank(Plasma &plasma_particles, Particle &test_particle, MagneticField_t &B, double eta, double kappa, NormalRand_t &normal_rand)#
-
inline Vector3 slow_down(const State &x, double t)#
Slowing down from elastic collisions
- Parameters
x – current state
t – current time
- Returns
rate of change of the parallel velocity
-
inline double parallel_dispersion_coeff(const State &x, double t)#
Coefficient of dispersion in the parallel direction
- Parameters
x – current state
t – current time
- Returns
parallel dispersion coefficient
-
inline double perpendicular_dispersion_coeff(const State &x, double t)#
Coefficient of dispersion in the perpendicular direction
- Parameters
x – current state
t – current time
- Returns
perpendicular dispersion coefficient
-
inline FockerPlank(Plasma &plasma_particles, Particle &test_particle, MagneticField_t &B, double eta, double kappa, NormalRand_t &normal_rand)#