aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H')
-rw-r--r--Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H15
1 files changed, 8 insertions, 7 deletions
diff --git a/Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H b/Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H
index e66425e2d..09afe1e13 100644
--- a/Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H
+++ b/Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H
@@ -11,6 +11,7 @@
#include "Utils/ParticleUtils.H"
#include "Utils/WarpXConst.H"
+#include <AMReX_Math.H>
#include <AMReX_Random.H>
#include <AMReX_REAL.H>
@@ -65,6 +66,7 @@ namespace {
const amrex::RandomEngine& engine )
{
using namespace amrex::literals;
+ using namespace amrex::Math;
constexpr amrex::ParticleReal c_sq = PhysConst::c * PhysConst::c;
constexpr amrex::ParticleReal inv_csq = 1._prt / ( c_sq );
@@ -87,10 +89,9 @@ namespace {
const amrex::ParticleReal p2y_in = u2y_in * m2_in;
const amrex::ParticleReal p2z_in = u2z_in * m2_in;
// Square norm of the total (sum between the two particles) momenta in the lab frame
- auto constexpr pow2 = [](double const x) { return x*x; };
- const amrex::ParticleReal p_total_sq = pow2(p1x_in+p2x_in) +
- pow2(p1y_in+p2y_in) +
- pow2(p1z_in+p2z_in);
+ const amrex::ParticleReal p_total_sq = powi<2>(p1x_in+p2x_in) +
+ powi<2>(p1y_in+p2y_in) +
+ powi<2>(p1z_in+p2z_in);
// Total energy of incident macroparticles in the lab frame
const amrex::ParticleReal E_lab = (m1_in * g1_in + m2_in * g2_in) * c_sq;
@@ -103,7 +104,7 @@ namespace {
// due to possible inconsistencies in how the mass is defined in the code, it is
// probably more robust to subtract the rest masses and to add the fusion energy to the
// total kinetic energy.
- const amrex::ParticleReal E_star_f_sq = pow2(std::sqrt(E_star_sq)
+ const amrex::ParticleReal E_star_f_sq = powi<2>(std::sqrt(E_star_sq)
- E_rest_in + E_rest_out + E_fusion);
// Square of the norm of the momentum of the products in the center of mass frame
@@ -111,8 +112,8 @@ namespace {
// The expression below is specifically written in a form that avoids returning
// small negative numbers due to machine precision errors, for low-energy particles
const amrex::ParticleReal E_ratio = std::sqrt(E_star_f_sq)/((m1_out + m2_out)*c_sq);
- const amrex::ParticleReal p_star_f_sq = m1_out*m2_out*c_sq * ( pow2(E_ratio) - 1._prt )
- + pow2(m1_out - m2_out)*c_sq*0.25_prt * pow2( E_ratio - 1._prt/E_ratio );
+ const amrex::ParticleReal p_star_f_sq = m1_out*m2_out*c_sq * ( powi<2>(E_ratio) - 1._prt )
+ + powi<2>(m1_out - m2_out)*c_sq*0.25_prt * powi<2>( E_ratio - 1._prt/E_ratio );
// Compute momentum of first product in the center of mass frame, assuming isotropic
// distribution