8 #ifndef WARPX_QED_PAIR_GENERATION_H_
9 #define WARPX_QED_PAIR_GENERATION_H_
58 template <
typename PData>
62 using namespace amrex;
64 const amrex::ParticleReal opt_depth =
66 return (opt_depth < 0.0_rt);
123 template <
typename DstData,
typename SrcData>
126 int const i_src,
int const i_dst1,
int const i_dst2,
129 using namespace amrex;
132 amrex::ParticleReal xp, yp, zp;
133 m_get_position(i_src, xp, yp, zp);
135 amrex::ParticleReal ex = m_Ex_external_particle;
136 amrex::ParticleReal ey = m_Ey_external_particle;
137 amrex::ParticleReal ez = m_Ez_external_particle;
138 amrex::ParticleReal bx = m_Bx_external_particle;
139 amrex::ParticleReal by = m_By_external_particle;
140 amrex::ParticleReal bz = m_Bz_external_particle;
142 m_get_externalEB(i_src, ex, ey, ez, bx, by, bz);
145 m_ex_arr, m_ey_arr, m_ez_arr, m_bx_arr, m_by_arr, m_bz_arr,
146 m_ex_type, m_ey_type, m_ez_type, m_bx_type, m_by_type, m_bz_type,
147 m_dx_arr, m_xyzmin_arr, m_lo, m_n_rz_azimuthal_modes,
148 m_nox, m_galerkin_interpolation);
153 const auto& ux = src.m_rdata[
PIdx::ux][i_src];
154 const auto& uy = src.m_rdata[
PIdx::uy][i_src];
155 const auto& uz = src.m_rdata[
PIdx::uz][i_src];
156 auto& e_ux = dst1.m_rdata[
PIdx::ux][i_dst1];
157 auto& e_uy = dst1.m_rdata[
PIdx::uy][i_dst1];
158 auto& e_uz = dst1.m_rdata[
PIdx::uz][i_dst1];
159 auto& p_ux = dst2.m_rdata[
PIdx::ux][i_dst2];
160 auto& p_uy = dst2.m_rdata[
PIdx::uy][i_dst2];
161 auto& p_uz = dst2.m_rdata[
PIdx::uz][i_dst2];
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void doGatherShapeN(const amrex::ParticleReal xp, const amrex::ParticleReal yp, const amrex::ParticleReal zp, amrex::ParticleReal &Exp, amrex::ParticleReal &Eyp, amrex::ParticleReal &Ezp, amrex::ParticleReal &Bxp, amrex::ParticleReal &Byp, amrex::ParticleReal &Bzp, amrex::Array4< amrex::Real const > const &ex_arr, amrex::Array4< amrex::Real const > const &ey_arr, amrex::Array4< amrex::Real const > const &ez_arr, amrex::Array4< amrex::Real const > const &bx_arr, amrex::Array4< amrex::Real const > const &by_arr, amrex::Array4< amrex::Real const > const &bz_arr, const amrex::IndexType ex_type, const amrex::IndexType ey_type, const amrex::IndexType ez_type, const amrex::IndexType bx_type, const amrex::IndexType by_type, const amrex::IndexType bz_type, const amrex::GpuArray< amrex::Real, 3 > &dx, const amrex::GpuArray< amrex::Real, 3 > &xyzmin, const amrex::Dim3 &lo, const int n_rz_azimuthal_modes)
Field gather for a single particle.
Definition: FieldGather.H:38
Definition: BreitWheelerEngineWrapper.H:196
Filter functor for the Breit Wheeler process.
Definition: QEDPairGeneration.H:38
int m_opt_depth_runtime_comp
Definition: QEDPairGeneration.H:70
PairGenerationFilterFunc(int const opt_depth_runtime_comp)
Constructor of the PairGenerationFilterFunc functor.
Definition: QEDPairGeneration.H:46
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool operator()(const PData &ptd, int const i, amrex::RandomEngine const &) const noexcept
Functor call. This method determines if a given (photon) particle should undergo pair generation.
Definition: QEDPairGeneration.H:60
Definition: WarpXParticleContainer.H:53
constexpr std::uint64_t Invalid
i
Definition: check_interp_points_and_weights.py:174
Functor class that assigns external field values (E and B) to particles.
Definition: GetExternalFields.H:25
@ uz
Definition: NamedComponentParticleContainer.H:34
@ uy
Definition: NamedComponentParticleContainer.H:34
@ ux
Definition: NamedComponentParticleContainer.H:34