WarpX
Public Member Functions | Private Attributes | List of all members
ImpactIonizationTransformFunc Class Reference

Transform functor for impact ionization. More...

#include <ImpactIonization.H>

Public Member Functions

 ImpactIonizationTransformFunc (amrex::ParticleReal energy_cost, double mass1, amrex::ParticleReal sqrt_kb_m, amrex::ParserExecutor< 4 > const &T_a_func, amrex::Real t)
 Constructor of the ImpactIonizationTransformFunc functor. More...
 
template<typename DstData , typename SrcData >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator() (DstData &dst1, DstData &dst2, SrcData &src, int const i_src, int const i_dst1, int const i_dst2, amrex::RandomEngine const &engine) const noexcept
 Functor call. It determines the properties of the generated pair and decreases the kinetic energy of the colliding particle. Inputs are standard from the FilterCopyTransfrom::filterCopyTransformParticles function. More...
 

Private Attributes

amrex::ParticleReal m_energy_cost
 
double m_mass1
 
amrex::ParticleReal m_sqrt_kb_m
 
amrex::ParserExecutor< 4 > m_T_a_func
 
amrex::Real m_t
 

Detailed Description

Transform functor for impact ionization.

Constructor & Destructor Documentation

◆ ImpactIonizationTransformFunc()

ImpactIonizationTransformFunc::ImpactIonizationTransformFunc ( amrex::ParticleReal  energy_cost,
double  mass1,
amrex::ParticleReal  sqrt_kb_m,
amrex::ParserExecutor< 4 > const &  T_a_func,
amrex::Real  t 
)
inline

Constructor of the ImpactIonizationTransformFunc functor.

The transform is responsible for appropriately decreasing the kinetic energy of the colliding particle and assigning appropriate velocities to the two newly created particles. To this end the energy cost of ionization is passed to the constructor as well as the mass of the colliding species and the standard deviation of the ion velocity (normalized temperature). Note that the mass and energy quantities have to be stored as doubles to ensure accurate energy calculations (otherwise errors occur with single or mixed precision builds of WarpX).

Parameters
[in]energy_costenergy cost of ionization
[in]mass1mass of the colliding species
[in]sqrt_kb_mvalue of sqrt(kB/m), where kB is Boltzmann's constant and m is the background neutral mass
[in]T_a_funcParserExecutor<4> function to get the background temperature in Kelvin as a function of space and time
[in]tthe current simulation time

Member Function Documentation

◆ operator()()

template<typename DstData , typename SrcData >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ImpactIonizationTransformFunc::operator() ( DstData &  dst1,
DstData &  dst2,
SrcData &  src,
int const  i_src,
int const  i_dst1,
int const  i_dst2,
amrex::RandomEngine const &  engine 
) const
inlinenoexcept

Functor call. It determines the properties of the generated pair and decreases the kinetic energy of the colliding particle. Inputs are standard from the FilterCopyTransfrom::filterCopyTransformParticles function.

Parameters
[in,out]dst1target species 1 (electrons)
[in,out]dst2target species 2 (ions)
[in]srcsource species (electrons)
[in]i_srcparticle index of the source species
[in]i_dst1particle index of target species 1
[in]i_dst2particle index of target species 2
[in]enginerandom number generator engine

Member Data Documentation

◆ m_energy_cost

amrex::ParticleReal ImpactIonizationTransformFunc::m_energy_cost
private

◆ m_mass1

double ImpactIonizationTransformFunc::m_mass1
private

◆ m_sqrt_kb_m

amrex::ParticleReal ImpactIonizationTransformFunc::m_sqrt_kb_m
private

◆ m_t

amrex::Real ImpactIonizationTransformFunc::m_t
private

◆ m_T_a_func

amrex::ParserExecutor<4> ImpactIonizationTransformFunc::m_T_a_func
private

The documentation for this class was generated from the following file: