aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision/BinaryCollision
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/Collision/BinaryCollision')
-rw-r--r--Source/Particles/Collision/BinaryCollision/NuclearFusion/ProtonBoronFusionInitializeMomentum.H22
1 files changed, 8 insertions, 14 deletions
diff --git a/Source/Particles/Collision/BinaryCollision/NuclearFusion/ProtonBoronFusionInitializeMomentum.H b/Source/Particles/Collision/BinaryCollision/NuclearFusion/ProtonBoronFusionInitializeMomentum.H
index 2fe2abb92..4ff93b285 100644
--- a/Source/Particles/Collision/BinaryCollision/NuclearFusion/ProtonBoronFusionInitializeMomentum.H
+++ b/Source/Particles/Collision/BinaryCollision/NuclearFusion/ProtonBoronFusionInitializeMomentum.H
@@ -77,8 +77,14 @@ namespace {
// cf. JEFF-3.3 radioactive decay data library (2017)
constexpr amrex::ParticleReal E_decay = 0.0918984_prt*mev_to_joule;
- constexpr amrex::ParticleReal m_alpha = PhysConst::m_p * 3.97369_prt;
- constexpr amrex::ParticleReal m_beryllium = PhysConst::m_p * 7.94748_prt;
+ // The constexprs ma_sq and mBe_sq underflow in single precision because we use SI units,
+ // which can cause compilation to fail or generate a warning, so we're explicitly setting
+ // them as double. Note that nuclear fusion module does not currently work with single
+ // precision anyways.
+ constexpr double m_alpha = PhysConst::m_p * 3.97369_prt;
+ constexpr double m_beryllium = PhysConst::m_p * 7.94748_prt;
+ constexpr double ma_sq = m_alpha*m_alpha;
+ constexpr double mBe_sq = m_beryllium*m_beryllium;
constexpr amrex::ParticleReal c_sq = PhysConst::c * PhysConst::c;
constexpr amrex::ParticleReal inv_csq = 1._prt / ( c_sq );
// Rest energy of proton+boron
@@ -86,18 +92,6 @@ namespace {
// Rest energy of alpha+beryllium
constexpr amrex::ParticleReal E_rest_abe = (m_alpha + m_beryllium)*c_sq;
- // These constexprs underflow in single precision because we use SI units and sometimes the
- // code won't compile. Nuclear fusion module does not currently work with single precision
- // anyways so these #ifdef are just here to make sure that the code always compiles with
- // single precision.
-#ifdef AMREX_SINGLE_PRECISION_PARTICLES
- const amrex::ParticleReal ma_sq = m_alpha*m_alpha;
- const amrex::ParticleReal mBe_sq = m_beryllium*m_beryllium;
-#else
- constexpr amrex::ParticleReal ma_sq = m_alpha*m_alpha;
- constexpr amrex::ParticleReal mBe_sq = m_beryllium*m_beryllium;
-#endif
-
// Normalized momentum of colliding particles (proton and boron)
const amrex::ParticleReal u1x = soa_1.m_rdata[PIdx::ux][idx_1];
const amrex::ParticleReal u1y = soa_1.m_rdata[PIdx::uy][idx_1];