ASCOT5
Loading...
Searching...
No Matches
boschhale.c
Go to the documentation of this file.
1
8#include "ascot5.h"
9#include <math.h>
10#include "consts.h"
11#include "boschhale.h"
12
29 Reaction reaction, real* m1, real* q1, real* m2, real* q2,
30 real* mprod1, real* qprod1, real* mprod2, real* qprod2, real* Q) {
31 switch(reaction) {
32 case DT_He4n:
33 *m1 = 3.344e-27; // D
34 *q1 = CONST_E;
35 *m2 = 5.008e-27; // T
36 *q2 = CONST_E;
37 *mprod1 = 6.645e-27; // He4
38 *qprod1 = 2*CONST_E;
39 *mprod2 = 1.675e-27; // n
40 *qprod2 = 0.0;
41 *Q = 17.6e6*CONST_E;
42 break;
43 case DHe3_He4p:
44 *m1 = 3.344e-27; // D
45 *q1 = CONST_E;
46 *m2 = 5.008e-27; // He3
47 *q2 = 2*CONST_E;
48 *mprod1 = 6.645e-27; // He4
49 *qprod1 = 2*CONST_E;
50 *mprod2 = 1.673e-27; // p
51 *qprod2 = CONST_E;
52 *Q = 18.3e6*CONST_E;
53 break;
54 case DD_Tp:
55 *m1 = 3.344e-27; // D
56 *q1 = CONST_E;
57 *m2 = 3.344e-27; // D
58 *q2 = CONST_E;
59 *mprod1 = 5.008e-27; // T
60 *qprod1 = CONST_E;
61 *mprod2 = 1.673e-27; // p
62 *qprod2 = CONST_E;
63 *Q = 4.03e6*CONST_E;
64 break;
65 case DD_He3n:
66 *m1 = 3.344e-27; // D
67 *q1 = CONST_E;
68 *m2 = 3.344e-27; // D
69 *q2 = CONST_E;
70 *mprod1 = 5.008e-27; // He3
71 *qprod1 = 2*CONST_E;
72 *mprod2 = 1.675e-27; // n
73 *qprod2 = 0.0;
74 *Q = 3.27e6*CONST_E;
75 break;
76 }
77}
78
90
91 real BG, A[5], B[4];
92 real E_min, E_max;
93 E = E / (1.e3 * CONST_E); // Convert to keV
94
95 switch(reaction) {
96
97 case DT_He4n:
98 if(E <= 550) {
99 BG = 34.3827;
100 A[0] = 6.927e4;
101 A[1] = 7.454e8;
102 A[2] = 2.050e6;
103 A[3] = 5.2002e4;
104 A[4] = 0.0;
105 B[0] = 6.38e1;
106 B[1] = -9.95e-1;
107 B[2] = 6.981e-5;
108 B[3] = 1.728e-4;
109 }
110 else {
111 BG = 34.3827;
112 A[0] = -1.4714e6;
113 A[1] = 0.0;
114 A[2] = 0.0;
115 A[3] = 0.0;
116 A[4] = 0.0;
117 B[0] = -8.4127e-3;
118 B[1] = 4.7983e-6;
119 B[2] = -1.0748e-9;
120 B[3] = 8.5184e-14;
121 }
122 E_min = 0.5;
123 E_max = 4700;
124 break;
125
126 case DHe3_He4p:
127 if(E <= 900) {
128 BG = 68.7508;
129 A[0] = 5.7501e6;
130 A[1] = 2.5226e3;
131 A[2] = 4.5566e1;
132 A[3] = 0.0;
133 A[4] = 0.0;
134 B[0] = -3.1995e-3;
135 B[1] = -8.5530e-6;
136 B[2] = 5.9014e-8;
137 B[3] = 0.0;
138 }
139 else {
140 BG = 68.7508;
141 A[0] = -8.3993e5;
142 A[1] = 0.0;
143 A[2] = 0.0;
144 A[3] = 0.0;
145 A[4] = 0.0;
146 B[0] = -2.6830e-3;
147 B[1] = 1.1633e-6;
148 B[2] = -2.1332e-10;
149 B[3] = 1.4250e-14;
150 }
151 E_min = 0.3;
152 E_max = 4800;
153 break;
154
155 case DD_Tp:
156 BG = 31.3970;
157 A[0] = 5.5576e4;
158 A[1] = 2.1054e2;
159 A[2] = -3.2638e-2;
160 A[3] = 1.4987e-6;
161 A[4] = 1.8181e-10;
162 B[0] = 0.0;
163 B[1] = 0.0;
164 B[2] = 0.0;
165 B[3] = 0.0;
166 E_min = 0.5;
167 E_max = 5000;
168 break;
169
170 case DD_He3n:
171 BG = 31.3970;
172 A[0] = 5.3701e4;
173 A[1] = 3.3027e2;
174 A[2] = -1.2706e-1;
175 A[3] = 2.9327e-5;
176 A[4] = -2.5151e-9;
177 B[0] = 0.0;
178 B[1] = 0.0;
179 B[2] = 0.0;
180 B[3] = 0.0;
181 E_min = 0.5;
182 E_max = 4900;
183 break;
184
185 default:
186 return -1;
187 }
188
189 if(E <= E_min) {
190 return 0;
191 }
192
193 /* Cap energy for astrophysical S-factor */
194 real E2 = E;
195 if(E2 > E_max) {
196 E2 = E_max;
197 }
198
199 real S = (A[0] + E2*(A[1] + E2*(A[2] + E2*(A[3] + E2*A[4]))))
200 / (1 + E2*(B[0] + E2*(B[1] + E2*(B[2]+E2*B[3]))));
201
202 /* Check for underflow */
203 if(BG / sqrt(E2) > 700) {
204 return 0;
205 }
206
207 /* "With E in keV, the sigma is given in millibarns", hence 1e-31 */
208 real sigma = S / (E * exp(BG / sqrt(E))) * 1e-31;
209
210 return sigma;
211}
212
226
227 real BG, MRC2, C1, C2, C3, C4, C5, C6, C7;
228
229 switch(reaction) {
230
231 case DT_He4n:
232 BG = 34.3827;
233 MRC2 = 1124656;
234 C1 = 1.17302E-9;
235 C2 = 1.51361E-2;
236 C3 = 7.51886E-2;
237 C4 = 4.60643E-3;
238 C5 = 1.35000E-2;
239 C6 = -1.06750E-4;
240 C7 = 1.36600E-5;
241 break;
242
243 case DHe3_He4p:
244 BG = 68.7508;
245 MRC2 = 1124572;
246 C1 = 5.51036E-10;
247 C2 = 6.41918E-3;
248 C3 = -2.02896E-3;
249 C4 = -1.91080E-5;
250 C5 = 1.35776E-4;
251 C6 = 0.0;
252 C7 = 0.0;
253 break;
254
255 case DD_Tp:
256 BG = 31.3970;
257 MRC2 = 937814;
258 C1 = 5.65718E-12;
259 C2 = 3.41267E-3;
260 C3 = 1.99167E-3;
261 C4 = 0.0;
262 C5 = 1.05060E-5;
263 C6 = 0.0;
264 C7 = 0.0;
265 break;
266
267 case DD_He3n:
268 BG = 31.3970;
269 MRC2 = 937814;
270 C1 = 5.43360E-12;
271 C2 = 5.85778E-3;
272 C3 = 7.68222E-3;
273 C4 = 0.0;
274 C5 = -2.96400E-6;
275 C6 = 0.0;
276 C7 = 0.0;
277 break;
278
279 default:
280 return -1;
281 }
282
283 real theta = Ti / (1 - Ti*(C2 + Ti*(C4 + Ti*C6))
284 / (1 + Ti*(C3 + Ti*(C5 + Ti*C7))));
285
286 real xi = pow((BG*BG / (4*theta)), 1.0/3.0);
287
288 real sigmav = C1 * theta * sqrt(xi / (MRC2 * Ti*Ti*Ti))
289 * exp(-3*xi) * 1.e-6;
290
291 return sigmav;
292}
Main header file for ASCOT5.
double real
Definition ascot5.h:85
real boschhale_sigmav(Reaction reaction, real Ti)
Estimate reactivity for a given fusion reaction.
Definition boschhale.c:225
void boschhale_reaction(Reaction reaction, real *m1, real *q1, real *m2, real *q2, real *mprod1, real *qprod1, real *mprod2, real *qprod2, real *Q)
Get masses and charges of particles participating in the reaction and the released energy.
Definition boschhale.c:28
real boschhale_sigma(Reaction reaction, real E)
Estimate cross-section for a given fusion reaction.
Definition boschhale.c:89
Header file for boschdale.c.
Reaction
Available reactions.
Definition boschhale.h:13
Header file containing physical and mathematical constants.
#define CONST_E
Elementary charge [C].
Definition consts.h:35
Header file for math.c.