collisions

The collisions property of the DREAMSettings object contains settings for how electron-electron and electron-ion collisions are to be handled. The object is very simple in structure and only contains a number of flags. The available options are listed below.

Object documentation

class CollisionHandler
bremsstrahlung_mode

Whether or not to take bremsstrahlung losses into account. The available options are

BREMSSTRAHLUNG_MODE_NEGLECT

Neglect bremsstrahlung losses

BREMSSTRAHLUNG_MODE_STOPPING_POWER

Use the stopping-power formula.

collfreq_mode

Which model to use for the collision frequencies. The available options are

COLLFREQ_MODE_SUPERTHERMAL

Super-thermal limit of collision frequencies.

COLLFREQ_MODE_FULL

Fully relativistic collision frequencies.

COLLFREQ_MODE_ULTRA_RELATIVISTIC

Ultra-relativistic limit of collision frequencies.

The full collision model uses collision frequencies which are valid everywhere for test-particles and supports the relativistic Maxwell-Jüttner distribution as equilibrium, and is therefore the least approximate model currently implemented in DREAM. This mode is required for running fully-kinetic simulations where all electrons are resolved on the kinetic grid.

The super-thermal limit of the full expressions has also been implemented and is intended for “standard” DREAM calculations, i.e. where a combined fluid-kinetic calculation is conducted. This model for the distribution is non-conservative, where electrons are lost in the origin, are removed from the distribution and enter the fluid cold population. Notably, this setting removes the possibility of resolving Dreicer runaway generation, but captures all other mechanisms.

The ultra-relativistic is finally intended for benchmarking and for modelling the highly relativistic runaway electrons, where the \(v=c\) limit is taken in the collision frequencies.

collfreq_type

Which type of ion nuclear screening to assume for ions.

COLLFREQ_TYPE_COMPLETELY_SCREENED

Assume that ion charges are completely screened.

COLLFREQ_TYPE_NON_SCREENED

Assume collisions with the full nuclear charge.

COLLFREQ_TYPE_PARTIALLY_SCREENED

Take into account the partial screening of the nucleus

The partially-screened model is valid at all energies and captures the momentum-dependent screening effect of bound electrons, and contains the most accurate collision model available. Formally, the completely-screened type is the low-energy limit of this general model, and non-screened the asymptotic high-energy limit.

lnlambda

Which model to use for the Coulomb logarithm \(\ln\Lambda\).

LNLAMBDA_THERMAL

Take the Coulomb logarithm to depend only on temperature and density.

LNLAMBDA_CONSTANT

Take the Coulomb logarithm to depend only on temperature and density.

LNLAMBDA_ENERGY_DEPENDENT

Account for the Coulomb logarithm’s dependence on electron energy.

The energy-dependent Coulomb logarithm accounts for the increase of (and difference between) the electron-electron and electron-ion Coulomb logarithms as the electron energy increases. LNLAMBDA_THERMAL corresponds roughly to the energy-dependent model evaluated at the thermal momentum, and LNLAMBDA_CONSTANT at the speed of light.

pstar_mode

Which model to use for the effective critical momentum \(p_\star\), which set the analytical runaway rates of avalanche, Compton and tritium.

PSTAR_MODE_COLLISIONLESS

Assumes banana-regime runaway generation with trapping corrections

PSTAR_MODE_COLLISIONAL

Assumes local runaway generation

The local model is inspired by C J McDevitt, X-Z Tang, EPL 127, 45001 (2019), where they showed that at sufficiently strong electric fields (and therefore low critical momenta), the electrons enter the collisional regimes where they are scattered before completing a bounce orbit. At electron densities of 2e20, this occurs at approximately \(p_c\sim 0.1\).

Note

Fluid Dreicer generation does not support COLLISIONLESS and always default to COLLISIONAL.

Examples

The below example shows how to set collision options:

from DREAM.DREAMSettings import DREAMSettings
import DREAM.Settings.CollisionHandler as Collisions

ds = DREAMSettings()
...
ds.collisions.bremsstrahlung_mode = Collisions.BREMSSTRAHLUNG_MODE_STOPPING_POWER
ds.collisions.collfreq_mode       = Collisions.COLLFREQ_MODE_FULL
ds.collisions.collfreq_type       = Collisions.COLLFREQ_TYPE_NON_SCREENED
ds.collisions.lnlambda            = Collisions.LNLAMBDA_CONSTANT
ds.collision.pstar_mode           = Collisions.PSTAR_MODE_COLLISIONAL