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

Filter functor for impact ionization. More...

#include <ImpactIonization.H>

Public Member Functions

 ImpactIonizationFilterFunc (ScatteringProcess const &mcc_process, double const mass, amrex::ParticleReal const total_collision_prob, amrex::ParticleReal const nu_max, amrex::ParserExecutor< 4 > const &n_a_func, amrex::Real t)
 Constructor of the ImpactIonizationFilterFunc functor. More...
 
template<typename PData >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool operator() (const PData &ptd, int const i, amrex::RandomEngine const &engine) const noexcept
 Functor call. This method determines if a given (electron) particle should undergo an ionization collision. More...
 

Private Attributes

ScatteringProcess::Executor m_mcc_process
 
double m_mass
 
amrex::ParticleReal m_total_collision_prob = 0
 
amrex::ParticleReal m_nu_max
 
amrex::ParserExecutor< 4 > m_n_a_func
 
amrex::Real m_t
 

Detailed Description

Filter functor for impact ionization.

Constructor & Destructor Documentation

◆ ImpactIonizationFilterFunc()

ImpactIonizationFilterFunc::ImpactIonizationFilterFunc ( ScatteringProcess const &  mcc_process,
double const  mass,
amrex::ParticleReal const  total_collision_prob,
amrex::ParticleReal const  nu_max,
amrex::ParserExecutor< 4 > const &  n_a_func,
amrex::Real  t 
)
inline

Constructor of the ImpactIonizationFilterFunc functor.

This function sample a random number and compares it to the total collision probability to see if the given particle should be considered for an ionization event. If the particle passes this stage the collision cross-section is calculated given its energy and another random number is used to determine whether it actually collides. 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]mcc_processan ScatteringProcess object associated with the ionization
[in]masscolliding particle's mass (could also assume electron)
[in]total_collision_probtotal probability for a collision to occur
[in]nu_maxmaximum collision frequency
[in]n_a_funcParserExecutor<4> function to get the background density in m^-3 as a function of space and time
[in]tthe current simulation time

Member Function Documentation

◆ operator()()

template<typename PData >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool ImpactIonizationFilterFunc::operator() ( const PData &  ptd,
int const  i,
amrex::RandomEngine const &  engine 
) const
inlinenoexcept

Functor call. This method determines if a given (electron) particle should undergo an ionization collision.

Parameters
[in]ptdparticle tile data
[in]iparticle index
[in]enginethe random number state and factory
Returns
true if a collision occurs, false otherwise

Member Data Documentation

◆ m_mass

double ImpactIonizationFilterFunc::m_mass
private

◆ m_mcc_process

ScatteringProcess::Executor ImpactIonizationFilterFunc::m_mcc_process
private

◆ m_n_a_func

amrex::ParserExecutor<4> ImpactIonizationFilterFunc::m_n_a_func
private

◆ m_nu_max

amrex::ParticleReal ImpactIonizationFilterFunc::m_nu_max
private

◆ m_t

amrex::Real ImpactIonizationFilterFunc::m_t
private

◆ m_total_collision_prob

amrex::ParticleReal ImpactIonizationFilterFunc::m_total_collision_prob = 0
private

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