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

#include <BreitWheelerEngineWrapper.H>

Public Member Functions

 BreitWheelerGeneratePairs ()=default
 
 BreitWheelerGeneratePairs (const BW_pair_prod_table_view table_view)
 
AMREX_GPU_DEVICE AMREX_FORCE_INLINE int operator() (const amrex::ParticleReal ux, const amrex::ParticleReal uy, const amrex::ParticleReal uz, const amrex::ParticleReal ex, const amrex::ParticleReal ey, const amrex::ParticleReal ez, const amrex::ParticleReal bx, const amrex::ParticleReal by, const amrex::ParticleReal bz, amrex::ParticleReal &e_ux, amrex::ParticleReal &e_uy, amrex::ParticleReal &e_uz, amrex::ParticleReal &p_ux, amrex::ParticleReal &p_uy, amrex::ParticleReal &p_uz, amrex::RandomEngine const &engine) const noexcept
 

Private Attributes

BW_pair_prod_table_view m_table_view
 

Detailed Description

Functor to generate a pair via the Breit-Wheeler process

Constructor & Destructor Documentation

◆ BreitWheelerGeneratePairs() [1/2]

BreitWheelerGeneratePairs::BreitWheelerGeneratePairs ( )
default

Default constructor: it leaves the functor in a non-initialized state.

◆ BreitWheelerGeneratePairs() [2/2]

BreitWheelerGeneratePairs::BreitWheelerGeneratePairs ( const BW_pair_prod_table_view  table_view)
inline

Constructor acquires pointers to control parameters and lookup tables data. lookup_table uses non-owning vectors under the hood. So no new data allocations should be triggered on GPU

Parameters
[in]table_viewa BW_pair_prod_table_view

Member Function Documentation

◆ operator()()

AMREX_GPU_DEVICE AMREX_FORCE_INLINE int BreitWheelerGeneratePairs::operator() ( const amrex::ParticleReal  ux,
const amrex::ParticleReal  uy,
const amrex::ParticleReal  uz,
const amrex::ParticleReal  ex,
const amrex::ParticleReal  ey,
const amrex::ParticleReal  ez,
const amrex::ParticleReal  bx,
const amrex::ParticleReal  by,
const amrex::ParticleReal  bz,
amrex::ParticleReal &  e_ux,
amrex::ParticleReal &  e_uy,
amrex::ParticleReal &  e_uz,
amrex::ParticleReal &  p_ux,
amrex::ParticleReal &  p_uy,
amrex::ParticleReal &  p_uz,
amrex::RandomEngine const &  engine 
) const
inlinenoexcept

Generates pairs according to Breit Wheeler process. It can be used on GPU. Warning: the energy of the photon must be > 2mec^2, but it is not checked in this method.

Parameters
[in]ux,uy,uzgamma*v components of the photon (SI units)
[in]ex,ey,ezelectric field components (SI units)
[in]bx,by,bzmagnetic field components (SI units)
[out]e_ux,e_uy,e_uzgamma*v components of generated electron (SI units)
[out]p_ux,p_uy,p_uzgamma*v components of generated positron (SI units)
[in]enginerandom number generator engine
Returns
a flag which is 1 if chi_photon was out of table

Member Data Documentation

◆ m_table_view

BW_pair_prod_table_view BreitWheelerGeneratePairs::m_table_view
private

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