8 #ifndef WARPX_BOSCH_HALE_FUSION_CROSS_SECTION_H
9 #define WARPX_BOSCH_HALE_FUSION_CROSS_SECTION_H
30 const amrex::ParticleReal& E_kin_star,
32 const amrex::ParticleReal& m1,
33 const amrex::ParticleReal& m2 )
35 using namespace amrex::literals;
37 constexpr amrex::ParticleReal joule_to_keV = 1.e-3_prt/
PhysConst::q_e;
38 const amrex::ParticleReal E_keV = E_kin_star*joule_to_keV;
41 if (E_keV == 0._prt) {
return 0._prt;}
45 const amrex::ParticleReal m_reduced = m1 / (1._prt + m1/m2);
48 amrex::ParticleReal B_G = MathConst::pi * PhysConst::alpha
57 amrex::ParticleReal A1=0_prt, A2=0_prt, A3=0_prt, A4=0_prt, A5=0_prt, B1=0_prt, B2=0_prt, B3=0_prt, B4=0_prt;
103 const amrex::ParticleReal astrophysical_factor =
104 (A1 + E_keV*(A2 + E_keV*(A3 + E_keV*(A4 + E_keV*A5)))) /
105 (1_prt + E_keV*(B1 + E_keV*(B2 + E_keV*(B3 + E_keV*B4))));
109 constexpr amrex::ParticleReal millibarn_to_sqm = 1.e-31_prt;
110 return millibarn_to_sqm * astrophysical_factor/E_keV * std::exp(-B_G/std::sqrt(E_keV));
#define AMREX_GPU_HOST_DEVICE
NuclearFusionType
Definition: BinaryCollisionUtils.H:26
@ DeuteriumHeliumToProtonHelium
@ DeuteriumDeuteriumToProtonTritium
@ DeuteriumDeuteriumToNeutronHelium
@ DeuteriumTritiumToNeutronHelium
AMREX_GPU_HOST_DEVICE AMREX_INLINE amrex::ParticleReal BoschHaleFusionCrossSection(const amrex::ParticleReal &E_kin_star, const NuclearFusionType &fusion_type, const amrex::ParticleReal &m1, const amrex::ParticleReal &m2)
Computes the fusion cross section, using the analytical fits given in H.-S. Bosch and G....
Definition: BoschHaleFusionCrossSection.H:29
static constexpr auto c
vacuum speed of light [m/s]
Definition: constant.H:44
static constexpr auto q_e
elementary charge [C]
Definition: constant.H:50