WarpX
Toggle main menu visibility
Loading...
Searching...
No Matches
Source
Particles
Collision
BinaryCollision
NuclearFusion
BoschHaleFusionCrossSection.H
Go to the documentation of this file.
1
/* Copyright 2022 Remi Lehe
2
*
3
* This file is part of WarpX.
4
*
5
* License: BSD-3-Clause-LBNL
6
*/
7
8
#ifndef WARPX_BOSCH_HALE_FUSION_CROSS_SECTION_H
9
#define WARPX_BOSCH_HALE_FUSION_CROSS_SECTION_H
10
11
#include "
Particles/Collision/BinaryCollision/BinaryCollisionUtils.H
"
12
#include "
Utils/WarpXConst.H
"
13
14
#include <
AMReX_REAL.H
>
15
16
#include <cmath>
17
28
AMREX_GPU_HOST_DEVICE
AMREX_INLINE
29
amrex::ParticleReal
BoschHaleFusionCrossSection
(
30
const
amrex::ParticleReal
& E_kin_star,
31
const
NuclearFusionType
& fusion_type,
32
const
amrex::ParticleReal
& m1,
33
const
amrex::ParticleReal
& m2 )
34
{
35
using namespace
amrex::literals
;
36
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;
39
40
// The Bosch-Hale fusion cross-section parameterization is only valid above a
41
// lower energy threshold: 0.3 keV for He3(d,p)He4 and 0.5 keV for all other
42
// reactions. Since the fusion cross section is negligible below these thresholds,
43
// return zero. See H.-S. Bosch and G.M. Hale 1992 Nucl. Fusion 32 611, Table IV.
44
const
amrex::ParticleReal
E_cutoff_keV =
45
(fusion_type ==
NuclearFusionType::DeuteriumHeliumToProtonHelium
) ? 0.3_prt : 0.5_prt;
46
if
(E_keV < E_cutoff_keV) {
return
0._prt;}
47
48
// Compute the Gamow constant B_G (in keV^{1/2})
49
// (See Eq. 3 in H.-S. Bosch and G.M. Hale 1992 Nucl. Fusion 32 611)
50
const
amrex::ParticleReal
m_reduced = m1 / (1._prt + m1/m2);
51
// The formula for `B_G` below assumes that both reactants have Z=1
52
// When one of the reactants is helium (Z=2), this formula is corrected further below.
53
amrex::ParticleReal
B_G =
MathConst::pi
*
PhysConst::alpha
54
* std::sqrt( 2._prt*m_reduced*
PhysConst::c2
* joule_to_keV );
55
if
(fusion_type ==
NuclearFusionType::DeuteriumHeliumToProtonHelium
) {
56
// Take into account the fact that Z=2 for one of the reactant (helium) in this case
57
B_G *= 2;
58
}
59
60
// Compute astrophysical_factor
61
// (See Eq. 9 and Table IV in H.-S. Bosch and G.M. Hale 1992 Nucl. Fusion 32 611)
62
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;
63
if
(fusion_type ==
NuclearFusionType::DeuteriumTritiumToNeutronHelium
) {
64
A1 = 6.927e4_prt;
65
A2 = 7.454e8_prt;
66
A3 = 2.050e6_prt;
67
A4 = 5.2002e4_prt;
68
A5 = 0_prt;
69
B1 = 6.38e1_prt;
70
B2 = -9.95e-1_prt;
71
B3 = 6.981e-5_prt;
72
B4 = 1.728e-4_prt;
73
}
74
else
if
(fusion_type ==
NuclearFusionType::DeuteriumDeuteriumToProtonTritium
) {
75
A1 = 5.5576e4_prt;
76
A2 = 2.1054e2_prt;
77
A3 = -3.2638e-2_prt;
78
A4 = 1.4987e-6_prt;
79
A5 = 1.8181e-10_prt;
80
B1 = 0_prt;
81
B2 = 0_prt;
82
B3 = 0_prt;
83
B4 = 0_prt;
84
}
85
else
if
(fusion_type ==
NuclearFusionType::DeuteriumDeuteriumToNeutronHelium
) {
86
A1 = 5.3701e4_prt;
87
A2 = 3.3027e2_prt;
88
A3 = -1.2706e-1_prt;
89
A4 = 2.9327e-5_prt;
90
A5 = -2.5151e-9_prt;
91
B1 = 0_prt;
92
B2 = 0_prt;
93
B3 = 0_prt;
94
B4 = 0_prt;
95
}
96
else
if
(fusion_type ==
NuclearFusionType::DeuteriumHeliumToProtonHelium
) {
97
A1 = 5.7501e6_prt;
98
A2 = 2.5226e3_prt;
99
A3 = 4.5566e1_prt;
100
A4 = 0_prt;
101
A5 = 0_prt;
102
B1 = -3.1995e-3_prt;
103
B2 = -8.5530e-6_prt;
104
B3 = 5.9014e-8_prt;
105
B4 = 0_prt;
106
}
107
108
const
amrex::ParticleReal
astrophysical_factor =
109
(A1 + E_keV*(A2 + E_keV*(A3 + E_keV*(A4 + E_keV*A5)))) /
110
(1_prt + E_keV*(B1 + E_keV*(B2 + E_keV*(B3 + E_keV*B4))));
111
112
// Compute cross-section in SI units
113
// (See Eq. 8 in H.-S. Bosch and G.M. Hale 1992 Nucl. Fusion 32 611)
114
constexpr
amrex::ParticleReal
millibarn_to_sqm = 1.e-31_prt;
115
return
millibarn_to_sqm * astrophysical_factor/E_keV * std::exp(-B_G/std::sqrt(E_keV));
116
}
117
118
#endif
// WARPX_BOSCH_HALE_FUSION_CROSS_SECTION_H
AMREX_INLINE
#define AMREX_INLINE
AMREX_GPU_HOST_DEVICE
#define AMREX_GPU_HOST_DEVICE
AMReX_REAL.H
BinaryCollisionUtils.H
NuclearFusionType
NuclearFusionType
Definition
BinaryCollisionUtils.H:31
NuclearFusionType::DeuteriumHeliumToProtonHelium
@ DeuteriumHeliumToProtonHelium
Definition
BinaryCollisionUtils.H:35
NuclearFusionType::DeuteriumDeuteriumToProtonTritium
@ DeuteriumDeuteriumToProtonTritium
Definition
BinaryCollisionUtils.H:33
NuclearFusionType::DeuteriumDeuteriumToNeutronHelium
@ DeuteriumDeuteriumToNeutronHelium
Definition
BinaryCollisionUtils.H:34
NuclearFusionType::DeuteriumTritiumToNeutronHelium
@ DeuteriumTritiumToNeutronHelium
Definition
BinaryCollisionUtils.H:32
BoschHaleFusionCrossSection
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
WarpXConst.H
amrex::ParticleReal
amrex_particle_real ParticleReal
ablastr::constant::SI::alpha
constexpr auto alpha
fine-structure constant = mu0/(4*pi)*q_e*q_e*c/hbar [dimensionless]
Definition
constant.H:184
ablastr::constant::SI::c2
constexpr auto c2
square of the vacuum speed of light [m^2/s^2]
Definition
constant.H:221
ablastr::constant::SI::q_e
constexpr auto q_e
elementary charge [C]
Definition
constant.H:169
ablastr::constant::math::pi
constexpr auto pi
ratio of a circle's circumference to its diameter
Definition
constant.H:29
amrex::literals
Generated by
1.17.0