XGCa
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 phi, 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

◆ MonteCarloCollider() [1/2]

template<class Device >
MonteCarloCollider< Device >::MonteCarloCollider ( )
inline

◆ MonteCarloCollider() [2/2]

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
Here is the call graph for this function:

Member Function Documentation

◆ background_sp_profile()

template<class Device >
KOKKOS_INLINE_FUNCTION void MonteCarloCollider< Device >::background_sp_profile ( const MagneticField< DeviceType > &  magnetic_field,
double  theta,
double  r,
double  z,
double  phi,
double  psi,
const Species< DeviceType > &  species,
double &  den,
double &  temp,
double &  up 
) const
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ collision_c()

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 call graph for this function:
Here is the caller graph for this function:

◆ do_snapshot()

template<class Device >
bool MonteCarloCollider< Device >::do_snapshot ( int  istep) const
inline
Here is the caller graph for this function:

◆ find_freq()

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:

◆ get_accel_factor()

template<class Device >
KOKKOS_INLINE_FUNCTION double MonteCarloCollider< Device >::get_accel_factor ( double  psi) const
inlineprivate
Here is the caller graph for this function:

◆ scatter_one()

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 call graph for this function:
Here is the caller graph for this function:

◆ update_vb()

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

◆ update_vb_all_species()

template<class Device >
void MonteCarloCollider< Device >::update_vb_all_species ( const MagneticField< DeviceType > &  magnetic_field,
Plasma plasma 
)
inline
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ accel

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

Artificial acceleration of collisions.

◆ accel_factor1

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

◆ accel_factor2

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

◆ accel_n

template<class Device >
int MonteCarloCollider< Device >::accel_n
private

◆ accel_pin1

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

◆ accel_pin2

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

◆ accel_pout1

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

◆ accel_pout2

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

◆ en_col_on

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

Whether to use energy collisions.

◆ moving_frame

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

◆ period

template<class Device >
int MonteCarloCollider< Device >::period

◆ pin

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

Inner boundary for collisions in norm. pol. flux.

◆ pout

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

Outer boundary for collisions in norm. pol. flux.

◆ use_varying_bg

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

◆ vb

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

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