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
88
89 real BG, A[5], B[4];
90 real E_min, E_max;
91 E = E / (1.e3 * CONST_E); // Convert to keV
92
93 switch(reaction) {
94
95 case DT_He4n:
96 if(E <= 530) {
97 BG = 34.3827;
98 A[0] = 6.927e4;
99 A[1] = 7.454e8;
100 A[2] = 2.050e6;
101 A[3] = 5.2002e4;
102 A[4] = 0.0;
103 B[0] = 6.38e1;
104 B[1] = -9.95e-1;
105 B[2] = 6.981e-5;
106 B[3] = 1.728e-4;
107 }
108 else {
109 BG = 34.3827;
110 A[0] = -1.4714e6;
111 A[1] = 0.0;
112 A[2] = 0.0;
113 A[3] = 0.0;
114 A[4] = 0.0;
115 B[0] = -8.4127e-3;
116 B[1] = 4.7983e-6;
117 B[2] = -1.0748e-9;
118 B[3] = 8.5184e-14;
119 }
120 E_min = 0.5;
121 E_max = 4700;
122 break;
123
124 case DHe3_He4p:
125 if(E <= 900) {
126 BG = 68.7508;
127 A[0] = 5.7501e6;
128 A[1] = 2.5226e3;
129 A[2] = 4.5566e1;
130 A[3] = 0.0;
131 A[4] = 0.0;
132 B[0] = -3.1995e-3;
133 B[1] = -8.5530e-6;
134 B[2] = 5.9014e-8;
135 B[3] = 0.0;
136 }
137 else {
138 BG = 68.7508;
139 A[0] = -8.3993e5;
140 A[1] = 0.0;
141 A[2] = 0.0;
142 A[3] = 0.0;
143 A[4] = 0.0;
144 B[0] = -2.6830e-3;
145 B[1] = 1.1633e-6;
146 B[2] = -2.1332e-10;
147 B[3] = 1.4250e-14;
148 }
149 E_min = 0.3;
150 E_max = 4800;
151 break;
152
153 case DD_Tp:
154 BG = 31.3970;
155 A[0] = 5.5576e4;
156 A[1] = 2.1054e2;
157 A[2] = -3.2638e-2;
158 A[3] = 1.4987e-6;
159 A[4] = 1.8181e-10;
160 B[0] = 0.0;
161 B[1] = 0.0;
162 B[2] = 0.0;
163 B[3] = 0.0;
164 E_min = 0.5;
165 E_max = 5000;
166 break;
167
168 case DD_He3n:
169 BG = 31.3970;
170 A[0] = 5.3701e4;
171 A[1] = 3.3027e2;
172 A[2] = -1.2706e-1;
173 A[3] = 2.9327e-5;
174 A[4] = -2.5151e-9;
175 B[0] = 0.0;
176 B[1] = 0.0;
177 B[2] = 0.0;
178 B[3] = 0.0;
179 E_min = 0.5;
180 E_max = 4900;
181 break;
182
183 default:
184 return -1;
185 }
186
187 if(E <= E_min) {
188 return 0;
189 }
190
191 /* Cap energy for astrophysical S-factor */
192 real E2 = E;
193 if(E2 > E_max) {
194 E2 = E_max;
195 }
196
197 real S = (A[0] + E2*(A[1] + E2*(A[2] + E2*(A[3] + E2*A[4]))))
198 / (1 + E2*(B[0] + E2*(B[1] + E2*(B[2]+E2*B[3]))));
199
200 /* Check for underflow */
201 if(BG / sqrt(E2) > 700) {
202 return 0;
203 }
204
205 real sigma = S / (E * exp(BG / sqrt(E))) * 1e-31;
206
207 return sigma;
208}
209
219
220 real BG, MRC2, C1, C2, C3, C4, C5, C6, C7;
221
222 switch(reaction) {
223
224 case DT_He4n:
225 BG = 34.3827;
226 MRC2 = 1124656;
227 C1 = 1.17302E-9;
228 C2 = 1.51361E-2;
229 C3 = 7.51886E-2;
230 C4 = 4.60643E-3;
231 C5 = 1.35000E-2;
232 C6 = -1.06750E-4;
233 C7 = 1.36600E-5;
234 break;
235
236 case DHe3_He4p:
237 BG = 68.7508;
238 MRC2 = 1124572;
239 C1 = 5.51036E-10;
240 C2 = 6.41918E-3;
241 C3 = -2.02896E-3;
242 C4 = -1.91080E-5;
243 C5 = 1.35776E-4;
244 C6 = 0.0;
245 C7 = 0.0;
246 break;
247
248 case DD_Tp:
249 BG = 31.3970;
250 MRC2 = 937814;
251 C1 = 5.65718E-12;
252 C2 = 3.41267E-3;
253 C3 = 1.99167E-3;
254 C4 = 0.0;
255 C5 = 1.05060E-5;
256 C6 = 0.0;
257 C7 = 0.0;
258 break;
259
260 case DD_He3n:
261 BG = 31.3970;
262 MRC2 = 937814;
263 C1 = 5.43360E-12;
264 C2 = 5.85778E-3;
265 C3 = 7.68222E-3;
266 C4 = 0.0;
267 C5 = -2.96400E-6;
268 C6 = 0.0;
269 C7 = 0.0;
270 break;
271
272 default:
273 return -1;
274 }
275
276 real theta = Ti / (1 - Ti*(C2 + Ti*(C4 + Ti*C6))
277 / (1 + Ti*(C3 + Ti*(C5 + Ti*C7))));
278
279 real xi = pow((BG*BG / (4*theta)), 1.0/3.0);
280
281 real sigmav = C1 * theta * sqrt(xi / (MRC2 * Ti*Ti*Ti))
282 * exp(-3*xi) * 1.e-6;
283
284 return sigmav;
285}
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:218
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:87
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:32
Header file for math.c.