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

\[ \frac{dv_i}{dt} = F_i(v, t) + \sqrt{D_{ii}(v, t)} \xi_i(t) \]

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:

\[\begin{split} \begin{aligned} F_{||}(v) &= -\nu_\text{sd}(v) v\\ D_{||}(v) &= \nu_{||}(v) v^2 \\ D_\perp(v) &= \nu_\perp(v) v^2 \end{aligned} \end{split}\]

where the slowind down factor is given by

\[ \nu_\text{sd}(v) = \sum\limits_\beta \frac{A_\text{D}^\beta}{ 2 v^3} \left(1+ \frac{m_\alpha}{m_\beta}\right)\left(\phi(x_\beta) - x_\beta \phi'(x_\beta)\right) \]

and the dispersion frequencies along the instant parallel and perpendicular directions are given respectively by

\[ \nu_{||}(v) = \sum\limits_\beta \frac{A_\text{D}^\beta}{v^3}G(x_\beta) \]

and

\[ \nu_\perp(v) = \sum\limits_\beta \frac{A_\text{D}^\beta}{v^3}\left(\phi(x_\beta) - G(x_\beta)\right). \]

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,

\[ G(x) = \frac{\phi(x) - x \phi'(x)}{2x^2} \]

and

\[ A_\text{D}^\beta = \frac{q_\alpha^2q_\beta^2}{2 \pi \epsilon_0^2 m _\alpha^2} n_\beta \ln \Lambda_\beta. \]

With this we can include the effect of collisions for a single particle using Langevin equations

\[\begin{split} \begin{aligned} \frac{dv_1}{dt} &= -\nu_\text{sd} v + \sqrt{\nu_{||} v^2} \xi_1(t) \\ \frac{dv_{2, 3}}{dt} &= \sqrt{\frac{\nu_\perp}{2} v^2} \xi_{2, 3}(t), \end{aligned} \end{split}\]

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

\[\begin{split} \begin{aligned} \Delta v_1 &= -\nu_\text{sd} v \Delta t_\text{col} + \sqrt{\nu_{||} \Delta t_\text{col}} v N_1\\ \Delta v_{2, 3} &= \sqrt{\frac{\nu_\perp \Delta t_\text{col}}{2} } v N_{2, 3} \end{aligned} \end{split}\]

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

\[\begin{split} \begin{aligned} \nu \Delta t &= \frac{A^\beta_D}{2 v^3} F(x_\beta) \Delta t \\ &= \frac{q_\alpha^2q_\beta^2 \Delta t}{4 \pi \epsilon_0^2 m _\alpha^2 v^3} n_\beta \ln \Lambda_\beta F(x_\beta) \\ &= \frac{e^4Z_\alpha^2Z_\beta^2 \tau \Delta \hat{t}}{4 \pi \epsilon_0^2 m_e^2 \hat{m} _\alpha^2 v_0^3 \hat{v}^3} n_0 \hat{n}_\beta \ln \Lambda_\beta F(x_\beta) \\ &= \eta \frac{Z_\alpha^2Z_\beta^2\Delta\hat{t}}{\hat{m} _\alpha^2\hat{v}^3} \hat{n}_\beta \ln \Lambda_\beta F(x_\beta) \end{aligned} \end{split}\]

where \( F(x_\beta) \) depends on the component we are calculating and defining the dimensionless factor

\[ \eta = \frac{e^4 \tau n_0}{4 \pi \epsilon_0^2 m_e^2 v_0^3}. \]

[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 Vector3 dispersion(const State &x, double t)#

Stochastic dispersion from elastic collisions

Parameters
  • x – current state

  • t – current time

Returns

rate of dispersion of the velocity

inline void euler_step(State &x, double t, double dt)#

Euler stepper from the Îto calculation

Parameters
  • x[out] current state

  • t – current time

  • dt – time delta

Private Members

Plasma beta#
Particle &alpha#
MagneticField_t &_B#
double _eta#
double _kappa#
NormalRand_t &gauss#