XGCa
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
MonteCarloCollider< Device > Class Template Reference

#include <monte_carlo_collisions.hpp>

Public Member Functions

bool do_snapshot (int istep) const
 
void update_vb (const MagneticField< DeviceType > &magnetic_field, Species< DeviceType > &species)
 
KOKKOS_INLINE_FUNCTION void collision_c (const MagneticField< DeviceType > &magnetic_field, const Species< DeviceType > &species, const Species< DeviceType > &species_b, const pool_type &rand_pool, const double dt, const bool do_pitch_angle_scattering, const double ekmin, const int idx) const
 
 MonteCarloCollider ()
 
 MonteCarloCollider (NLReader::NamelistReader &nlr, const DomainDecomposition< DeviceType > &pol_decomp, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, int n_nonadiabatic_species)
 
void update_vb_all_species (const MagneticField< DeviceType > &magnetic_field, Plasma &plasma)
 

Public Attributes

int period
 

Private Member Functions

KOKKOS_INLINE_FUNCTION double get_accel_factor (double psi) const
 
KOKKOS_INLINE_FUNCTION void scatter_one (RandGen &rand_gen, double vprt, double massa_au, double chargea_eu, double denb, double tempb_ev, double massb_au, double chargeb_eu, double accel, double dt, double ekmin, bool do_pitch_angle_scattering, double &ekin, double &pitch) const
 
KOKKOS_INLINE_FUNCTION void find_freq (double en_a, double vprt, double mass, double charge, double dn_b, double en_b_ev, double mass_b, double charge_b, double accel, double &freq_scat, double &freq_slow, double &freq_fac0) const
 
KOKKOS_INLINE_FUNCTION void background_sp_profile (const MagneticField< DeviceType > &magnetic_field, double theta, double r, double z, double psi, const Species< DeviceType > &species, double &den, double &temp, double &up) const
 

Private Attributes

bool accel
 Artificial acceleration of collisions. More...
 
int accel_n
 
double accel_pin1
 
double accel_pout1
 
double accel_pin2
 
double accel_pout2
 
double accel_factor1
 
double accel_factor2
 
bool en_col_on
 Whether to use energy collisions. More...
 
bool moving_frame
 
double pin
 Inner boundary for collisions in norm. pol. flux. More...
 
double pout
 Outer boundary for collisions in norm. pol. flux. More...
 
bool use_varying_bg
 
VaryingBackground< Device > vb
 

Constructor & Destructor Documentation

template<class Device>
MonteCarloCollider< Device >::MonteCarloCollider ( )
inline
template<class Device>
MonteCarloCollider< Device >::MonteCarloCollider ( NLReader::NamelistReader nlr,
const DomainDecomposition< DeviceType > &  pol_decomp,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
int  n_nonadiabatic_species 
)
inline

Member Function Documentation

template<class Device>
KOKKOS_INLINE_FUNCTION void MonteCarloCollider< Device >::background_sp_profile ( const MagneticField< DeviceType > &  magnetic_field,
double  theta,
double  r,
double  z,
double  psi,
const Species< DeviceType > &  species,
double &  den,
double &  temp,
double &  up 
) const
inlineprivate

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION void MonteCarloCollider< Device >::collision_c ( const MagneticField< DeviceType > &  magnetic_field,
const Species< DeviceType > &  species,
const Species< DeviceType > &  species_b,
const pool_type rand_pool,
const double  dt,
const bool  do_pitch_angle_scattering,
const double  ekmin,
const int  idx 
) const
inline

Here is the caller graph for this function:

template<class Device>
bool MonteCarloCollider< Device >::do_snapshot ( int  istep) const
inline

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION void MonteCarloCollider< Device >::find_freq ( double  en_a,
double  vprt,
double  mass,
double  charge,
double  dn_b,
double  en_b_ev,
double  mass_b,
double  charge_b,
double  accel,
double &  freq_scat,
double &  freq_slow,
double &  freq_fac0 
) const
inlineprivate

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION double MonteCarloCollider< Device >::get_accel_factor ( double  psi) const
inlineprivate

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION void MonteCarloCollider< Device >::scatter_one ( RandGen rand_gen,
double  vprt,
double  massa_au,
double  chargea_eu,
double  denb,
double  tempb_ev,
double  massb_au,
double  chargeb_eu,
double  accel,
double  dt,
double  ekmin,
bool  do_pitch_angle_scattering,
double &  ekin,
double &  pitch 
) const
inlineprivate

Here is the caller graph for this function:

template<class Device>
void MonteCarloCollider< Device >::update_vb ( const MagneticField< DeviceType > &  magnetic_field,
Species< DeviceType > &  species 
)
inline
template<class Device>
void MonteCarloCollider< Device >::update_vb_all_species ( const MagneticField< DeviceType > &  magnetic_field,
Plasma plasma 
)
inline

Here is the caller graph for this function:

Member Data Documentation

template<class Device>
bool MonteCarloCollider< Device >::accel
private

Artificial acceleration of collisions.

template<class Device>
double MonteCarloCollider< Device >::accel_factor1
private
template<class Device>
double MonteCarloCollider< Device >::accel_factor2
private
template<class Device>
int MonteCarloCollider< Device >::accel_n
private
template<class Device>
double MonteCarloCollider< Device >::accel_pin1
private
template<class Device>
double MonteCarloCollider< Device >::accel_pin2
private
template<class Device>
double MonteCarloCollider< Device >::accel_pout1
private
template<class Device>
double MonteCarloCollider< Device >::accel_pout2
private
template<class Device>
bool MonteCarloCollider< Device >::en_col_on
private

Whether to use energy collisions.

template<class Device>
bool MonteCarloCollider< Device >::moving_frame
private
template<class Device>
int MonteCarloCollider< Device >::period
template<class Device>
double MonteCarloCollider< Device >::pin
private

Inner boundary for collisions in norm. pol. flux.

template<class Device>
double MonteCarloCollider< Device >::pout
private

Outer boundary for collisions in norm. pol. flux.

template<class Device>
bool MonteCarloCollider< Device >::use_varying_bg
private
template<class Device>
VaryingBackground<Device> MonteCarloCollider< Device >::vb
private

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