File collisions.hxx

Defines

COLLISIONS_H
struct Collisions : public Component
#include <collisions.hxx>

Calculates the collision rate of each species with all other species

Important: Be careful when including both ion_neutral collisions and reactions such as charge exchange, since that may result in double counting. Similarly for electron_neutral collisions and ionization reactions.

Public Functions

Collisions(std::string name, Options &alloptions, Solver*)

The following boolean options under alloptions[name] control which collisions are calculated:

  • electron_electron

  • electron_ion

  • electron_neutral

  • ion_ion

  • ion_neutral

  • neutral_neutral

There are also switches for other terms:

  • frictional_heating Include R dot v heating term as energy source? (includes Ohmic heating)

Parameters:

alloptions – Settings, which should include:

  • units

    • eV

    • inv_meters_cubed

    • meters

    • seconds

virtual void transform(Options &state) override

Modify the given simulation state All components must implement this function

virtual void outputVars(Options &state) override

Add extra fields for output, or set attributes e.g docstrings.

Private Functions

void collide(Options &species1, Options &species2, const Field3D &nu_12, BoutReal momentum_coefficient)

Update collision frequencies, momentum and energy exchange nu_12 normalised frequency momentum_coefficient Leading coefficient on parallel friction e.g 0.51 for electron-ion with Zi=1

Calculate transfer of momentum and energy between species1 and species2 nu_12 normalised frequency

Modifies species1 and species2

  • collision_frequency

  • momentum_source if species1 or species2 velocity is set

  • energy_source if species1 or species2 temperature is set or velocity is set and frictional_heating

Note: A* variables are used for atomic mass numbers; mass* variables are species masses in kg

Private Members

BoutReal Tnorm
BoutReal Nnorm
BoutReal rho_s0
BoutReal Omega_ci
bool electron_electron

Which types of collisions to include?

bool electron_ion
bool electron_neutral
bool ion_ion
bool ion_neutral
bool neutral_neutral
bool frictional_heating

Include frictional heating term?

BoutReal ei_multiplier
Options collision_rates

Calculated collision rates saved for post-processing and use by other components Saved in options, the BOUT++ dictionary-like object

bool diagnose

Save more diagnostics?