|
| PhotonEmissionTransformFunc (QuantumSynchrotronGetOpticalDepth opt_depth_functor, int opt_depth_runtime_comp, QuantumSynchrotronPhotonEmission emission_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 PhotonEmissionTransformFunc functor. More...
|
|
template<typename DstData , typename SrcData > |
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | operator() (DstData &dst, SrcData &src, int i_src, int i_dst, amrex::RandomEngine const &engine) const noexcept |
| Functor call. It determines the properties of the generated photon and updates the momentum of the source particle. More...
|
|
Transform functor for the QED photon emission process.
PhotonEmissionTransformFunc::PhotonEmissionTransformFunc |
( |
QuantumSynchrotronGetOpticalDepth |
opt_depth_functor, |
|
|
int |
opt_depth_runtime_comp, |
|
|
QuantumSynchrotronPhotonEmission |
emission_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 PhotonEmissionTransformFunc functor.
A QuantumSynchrotronGeneratePhotonAndUpdateMomentum 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.
Also a QuantumSynchrotronGetOpticalDepth has to be passed, since the optical depth has to be re-initialized after each photon emission.
- Parameters
-
[in] | opt_depth_functor | functor to re-initialize the optical depth of the source particles |
[in] | opt_depth_runtime_comp | index of the optical depth component of the source species |
[in] | emission_functor | functor to generate photons and update momentum of the source particles |
[in] | a_pti | particle iterator to iterate over electrons or positrons undergoing QED photon emission 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 |