WarpX
|
Transform functor for the Breit-Wheeler process. More...
#include <QEDPairGeneration.H>
Public Member Functions | |
PairGenerationTransformFunc (BreitWheelerGeneratePairs generate_functor, const WarpXParIter &a_pti, int lev, amrex::IntVect ngEB, amrex::FArrayBox const &exfab, amrex::FArrayBox const &eyfab, amrex::FArrayBox const &ezfab, amrex::FArrayBox const &bxfab, amrex::FArrayBox const &byfab, amrex::FArrayBox const &bzfab, amrex::Vector< amrex::ParticleReal > &E_external_particle, amrex::Vector< amrex::ParticleReal > &B_external_particle, int a_offset=0) | |
Constructor of the PairGenerationTransformFunc 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 it sets to -1 the id of the source photon. More... | |
Transform functor for the Breit-Wheeler process.
PairGenerationTransformFunc::PairGenerationTransformFunc | ( | BreitWheelerGeneratePairs | generate_functor, |
const WarpXParIter & | a_pti, | ||
int | lev, | ||
amrex::IntVect | ngEB, | ||
amrex::FArrayBox const & | exfab, | ||
amrex::FArrayBox const & | eyfab, | ||
amrex::FArrayBox const & | ezfab, | ||
amrex::FArrayBox const & | bxfab, | ||
amrex::FArrayBox const & | byfab, | ||
amrex::FArrayBox const & | bzfab, | ||
amrex::Vector< amrex::ParticleReal > & | E_external_particle, | ||
amrex::Vector< amrex::ParticleReal > & | B_external_particle, | ||
int | a_offset = 0 |
||
) |
Constructor of the PairGenerationTransformFunc functor.
A BreitWheelerGeneratePairs functor is passed by value. However, it contains only few integer and real parameters and few pointers to the raw data of the lookup tables. Therefore, it should be rather lightweight to copy.
[in] | generate_functor | functor to be called to determine the properties of the generated pairs |
[in] | a_pti | particle iterator to iterate over photons undergoing QED pair generation process |
[in] | lev | the mesh-refinement level |
[in] | ngEB | number of guard cells allocated for the E and B MultiFabs |
[in] | exfab | constant reference to the FArrayBox of the x component of the electric field |
[in] | eyfab | constant reference to the FArrayBox of the y component of the electric field |
[in] | ezfab | constant reference to the FArrayBox of the z component of the electric field |
[in] | bxfab | constant reference to the FArrayBox of the x component of the magnetic field |
[in] | byfab | constant reference to the FArrayBox of the y component of the magnetic field |
[in] | bzfab | constant reference to the FArrayBox of the z component of the magnetic field |
[in] | a_offset | offset to apply to the particle indices |
|
inlinenoexcept |
Functor call. It determines the properties of the generated pair and it sets to -1 the id of the source photon.
[in,out] | dst1 | target species 1 (either electrons or positrons) |
[in,out] | dst2 | target species 2 (either electrons or positrons) |
[in] | src | source species (photons) |
[in] | i_src | particle index of the source species |
[in] | i_dst1 | particle index of target species 1 |
[in] | i_dst2 | particle index of target species 2 |
[in] | engine | random number generator engine |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
A copy of the functor to generate pairs. It contains only pointers to the lookup tables.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |