diff options
Diffstat (limited to 'Source/Particles/ElementaryProcess/QEDPairGeneration.H')
-rw-r--r-- | Source/Particles/ElementaryProcess/QEDPairGeneration.H | 51 |
1 files changed, 13 insertions, 38 deletions
diff --git a/Source/Particles/ElementaryProcess/QEDPairGeneration.H b/Source/Particles/ElementaryProcess/QEDPairGeneration.H index 45e71a583..e90b2e5c3 100644 --- a/Source/Particles/ElementaryProcess/QEDPairGeneration.H +++ b/Source/Particles/ElementaryProcess/QEDPairGeneration.H @@ -106,14 +106,6 @@ public: { using namespace amrex; - constexpr ParticleReal me = PhysConst::m_e; - constexpr ParticleReal one_over_me = 1._prt/me; - - const ParticleReal w = src.m_rdata[PIdx::w][i_src]; - const ParticleReal ux = src.m_rdata[PIdx::ux][i_src]; - const ParticleReal uy = src.m_rdata[PIdx::uy][i_src]; - const ParticleReal uz = src.m_rdata[PIdx::uz][i_src]; - // gather E and B amrex::ParticleReal xp, yp, zp; m_get_position(i_src, xp, yp, zp); @@ -130,43 +122,26 @@ public: m_dx_arr, m_xyzmin_arr, m_lo, m_n_rz_azimuthal_modes, m_nox, m_galerkin_interpolation); - const auto px = ux*me; - const auto py = uy*me; - const auto pz = uz*me; - - auto e_w = 0.0_rt; - auto p_w = 0.0_rt; - auto e_px = 0.0_rt; - auto e_py = 0.0_rt; - auto e_pz = 0.0_rt; - auto p_px = 0.0_rt; - auto p_py = 0.0_rt; - auto p_pz = 0.0_rt; - //Despite the names of the variables, positrons and electrons //can be exchanged, since the physical process is completely //symmetric with respect to this exchange. - m_generate_functor.operator()<1>( - px, py, pz, + const auto& ux = src.m_rdata[PIdx::ux][i_src]; + const auto& uy = src.m_rdata[PIdx::uy][i_src]; + const auto& uz = src.m_rdata[PIdx::uz][i_src]; + auto& e_ux = dst1.m_rdata[PIdx::ux][i_dst1]; + auto& e_uy = dst1.m_rdata[PIdx::uy][i_dst1]; + auto& e_uz = dst1.m_rdata[PIdx::uz][i_dst1]; + auto& p_ux = dst2.m_rdata[PIdx::ux][i_dst2]; + auto& p_uy = dst2.m_rdata[PIdx::uy][i_dst2]; + auto& p_uz = dst2.m_rdata[PIdx::uz][i_dst2]; + m_generate_functor( + ux, uy, uz, ex, ey, ez, bx, by, bz, - w, - &e_px, &e_py, &e_pz, - &p_px, &p_py, &p_pz, - &e_w, &p_w); - - dst1.m_rdata[PIdx::w][i_dst1] = e_w; - dst1.m_rdata[PIdx::ux][i_dst1] = e_px*one_over_me; - dst1.m_rdata[PIdx::uy][i_dst1] = e_py*one_over_me; - dst1.m_rdata[PIdx::uz][i_dst1] = e_pz*one_over_me; - - dst2.m_rdata[PIdx::w][i_dst2] = p_w; - dst2.m_rdata[PIdx::ux][i_dst2] = p_px*one_over_me; - dst2.m_rdata[PIdx::uy][i_dst2] = p_py*one_over_me; - dst2.m_rdata[PIdx::uz][i_dst2] = p_pz*one_over_me; + e_ux, e_uy, e_uz, + p_ux, p_uy, p_uz); src.m_aos[i_src].id() = -1; //destroy photon after pair generation - } private: |