Skip to content

DD

fusdb.relations.reactions.DD

DD reactivity and reaction-rate relations.

sigmav_DDn_BoschHale

sigmav_DDn_BoschHale(T_i: float64 | NDArray[float64]) -> Any

Return DDn reactivity from the Bosch-Hale parametrization.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDn reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@relation(
    name='DDn reactivity BoschHale',
    tags=('fusion_power',),
    outputs='sigmav_DDn',
)
def sigmav_DDn_BoschHale(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDn reactivity from the Bosch-Hale parametrization.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDn reactivity in m^3/s.
    """
    # Define the DDn branch coefficients.
    coefficients = (((31.3970**2) / 4.0) ** (1.0 / 3.0), 5.65718e-12, 3.41e-03, 1.99e-03, 0, 1.05e-05, 0, 0)

    # Compute the corrected fit variables for the Bosch-Hale form.
    theta = T_i / (
        1
        - (
            (coefficients[2] * T_i + coefficients[4] * T_i**2 + coefficients[6] * T_i**3)
            / (1 + coefficients[3] * T_i + coefficients[5] * T_i**2 + coefficients[7] * T_i**3)
        )
    )
    eta = coefficients[0] / (theta ** (1.0 / 3.0))

    # Evaluate the DDn branch reactivity and convert to m^3/s.
    sigmav = coefficients[1] * theta * np.sqrt(eta / (937814.0 * (T_i**3.0))) * np.exp(-3.0 * eta)
    return sigmav * 1e-6  # type: ignore[no-any-return]

sigmav_DDp_BoschHale

sigmav_DDp_BoschHale(T_i: float64 | NDArray[float64]) -> Any

Return DDp reactivity from the Bosch-Hale parametrization.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDp reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
@relation(
    name='DDp reactivity BoschHale',
    tags=('fusion_power',),
    outputs='sigmav_DDp',
)
def sigmav_DDp_BoschHale(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDp reactivity from the Bosch-Hale parametrization.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDp reactivity in m^3/s.
    """
    # Define the DDp branch coefficients.
    coefficients = (((31.3970**2) / 4.0) ** (1.0 / 3.0), 5.43360e-12, 5.86e-03, 7.68e-03, 0, -2.96e-06, 0, 0)

    # Compute the corrected fit variables for the Bosch-Hale form.
    theta = T_i / (
        1
        - (
            (coefficients[2] * T_i + coefficients[4] * T_i**2 + coefficients[6] * T_i**3)
            / (1 + coefficients[3] * T_i + coefficients[5] * T_i**2 + coefficients[7] * T_i**3)
        )
    )
    eta = coefficients[0] / (theta ** (1.0 / 3.0))

    # Evaluate the DDp branch reactivity and convert to m^3/s.
    sigmav = coefficients[1] * theta * np.sqrt(eta / (937814.0 * (T_i**3.0))) * np.exp(-3.0 * eta)
    return sigmav * 1e-6  # type: ignore[no-any-return]

sigmav_DD_BoschHale

sigmav_DD_BoschHale(T_i: float64 | NDArray[float64]) -> Any

Return total DD reactivity from the Bosch-Hale parametrization.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The total DD reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
@relation(
    name='DD reactivity BoschHale',
    tags=('fusion_power',),
    outputs='sigmav_DD',
)
def sigmav_DD_BoschHale(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return total DD reactivity from the Bosch-Hale parametrization.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The total DD reactivity in m^3/s.
    """
    # Sum the two implemented DD branches.
    return sigmav_DDn_BoschHale.func(T_i=T_i) + sigmav_DDp_BoschHale.func(T_i=T_i)

sigmav_DDn_Hively

sigmav_DDn_Hively(T_i: float64 | NDArray[float64]) -> Any

Return DDn reactivity from the Hively parametrization.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDn reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
@relation(
    name='DDn reactivity Hively',
    tags=('fusion_power',),
    outputs='sigmav_DDn',
)
def sigmav_DDn_Hively(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDn reactivity from the Hively parametrization.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDn reactivity in m^3/s.
    """
    # Define the DDn Hively coefficients.
    coefficients = (-15.993842, -35.017640, -1.3689787e-2, 2.7089621e-4, -2.9441547e-6, 1.2841202e-8)

    # Evaluate the fitted exponent and convert to m^3/s.
    exponent = (
        coefficients[0] / T_i**0.3725
        + coefficients[1]
        + coefficients[2] * T_i
        + coefficients[3] * T_i**2.0
        + coefficients[4] * T_i**3.0
        + coefficients[5] * T_i**4.0
    )
    return np.exp(exponent) * 1e-6  # type: ignore[no-any-return]

sigmav_DDp_Hively

sigmav_DDp_Hively(T_i: float64 | NDArray[float64]) -> Any

Return DDp reactivity from the Hively parametrization.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDp reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
@relation(
    name='DDp reactivity Hively',
    tags=('fusion_power',),
    outputs='sigmav_DDp',
)
def sigmav_DDp_Hively(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDp reactivity from the Hively parametrization.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDp reactivity in m^3/s.
    """
    # Define the DDp Hively coefficients.
    coefficients = (-15.511891, -35.318711, -1.2904737e-2, 2.6797766e-4, -2.9198685e-6, 1.2748415e-8)

    # Evaluate the fitted exponent and convert to m^3/s.
    exponent = (
        coefficients[0] / T_i**0.3735
        + coefficients[1]
        + coefficients[2] * T_i
        + coefficients[3] * T_i**2.0
        + coefficients[4] * T_i**3.0
        + coefficients[5] * T_i**4.0
    )
    return np.exp(exponent) * 1e-6  # type: ignore[no-any-return]

sigmav_DD_Hively

sigmav_DD_Hively(T_i: float64 | NDArray[float64]) -> Any

Return total DD reactivity from the Hively parametrization.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The total DD reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
@relation(
    name='DD reactivity Hively',
    tags=('fusion_power',),
    outputs='sigmav_DD',
)
def sigmav_DD_Hively(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return total DD reactivity from the Hively parametrization.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The total DD reactivity in m^3/s.
    """
    # Sum the two Hively DD branches.
    return sigmav_DDn_Hively.func(T_i=T_i) + sigmav_DDp_Hively.func(T_i=T_i)

sigmav_DD_NRL

sigmav_DD_NRL(T_i: float64 | NDArray[float64], *, interpolation_kind: str = 'pchip') -> Any

Return total DD reactivity from the NRL tabulated rates.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required
interpolation_kind str

Interpolation scheme for the tabulated data.

'pchip'

Returns:

Type Description
Any

The total DD reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
@relation(
    name='DD reactivity NRL',
    tags=('fusion_power',),
    outputs='sigmav_DD',
)
def sigmav_DD_NRL(
    T_i: float64 | NDArray[np.float64],
    *,
    interpolation_kind: str = "pchip",
) -> Any:
    """Return total DD reactivity from the NRL tabulated rates.

    Args:
        T_i: Ion temperature profile in keV.
        interpolation_kind: Interpolation scheme for the tabulated data.

    Returns:
        The total DD reactivity in m^3/s.
    """
    # Interpolate the tabulated total DD reactivity data.
    return reactivity_from_reactivity_table(
        "DD_total_reactivity_NRL.yaml",
        T_i,
        interpolation_kind=interpolation_kind,
    )

sigmav_DDn_ENDFB_VIII0

sigmav_DDn_ENDFB_VIII0(T_i: float64 | NDArray[float64]) -> Any

Return DDn reactivity from ENDF/B-VIII.0 cross sections.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDn reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
@relation(
    name='DDn reactivity ENDFB-VIII0',
    tags=('fusion_power',),
    outputs='sigmav_DDn',
)
def sigmav_DDn_ENDFB_VIII0(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDn reactivity from ENDF/B-VIII.0 cross sections.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDn reactivity in m^3/s.
    """
    # Integrate the DDn ENDF/B-VIII.0 cross-section table over a Maxwellian.
    return reactivity_from_xsection_table("DDn_xsection_ENDFB-VIII0.yaml", T_i)

sigmav_DDp_ENDFB_VIII0

sigmav_DDp_ENDFB_VIII0(T_i: float64 | NDArray[float64]) -> Any

Return DDp reactivity from ENDF/B-VIII.0 cross sections.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDp reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
@relation(
    name='DDp reactivity ENDFB-VIII0',
    tags=('fusion_power',),
    outputs='sigmav_DDp',
)
def sigmav_DDp_ENDFB_VIII0(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDp reactivity from ENDF/B-VIII.0 cross sections.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDp reactivity in m^3/s.
    """
    # Integrate the DDp ENDF/B-VIII.0 cross-section table over a Maxwellian.
    return reactivity_from_xsection_table("DDp_xsection_ENDFB-VIII0.yaml", T_i)

sigmav_DD_ENDFB_VIII0

sigmav_DD_ENDFB_VIII0(T_i: float64 | NDArray[float64]) -> Any

Return total DD reactivity from ENDF/B-VIII.0 cross sections.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The total DD reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
@relation(
    name='DD reactivity ENDFB-VIII0',
    tags=('fusion_power',),
    outputs='sigmav_DD',
)
def sigmav_DD_ENDFB_VIII0(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return total DD reactivity from ENDF/B-VIII.0 cross sections.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The total DD reactivity in m^3/s.
    """
    # Sum the two ENDF/B-VIII.0 DD branches.
    return sigmav_DDn_ENDFB_VIII0.func(T_i=T_i) + sigmav_DDp_ENDFB_VIII0.func(T_i=T_i)

sigmav_DDn_ENDFB_VIII1

sigmav_DDn_ENDFB_VIII1(T_i: float64 | NDArray[float64]) -> Any

Return DDn reactivity from ENDF/B-VIII.1 cross sections.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDn reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
@relation(
    name='DDn reactivity ENDFB-VIII1',
    tags=('fusion_power',),
    outputs='sigmav_DDn',
)
def sigmav_DDn_ENDFB_VIII1(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDn reactivity from ENDF/B-VIII.1 cross sections.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDn reactivity in m^3/s.
    """
    # Integrate the DDn ENDF/B-VIII.1 cross-section table over a Maxwellian.
    return reactivity_from_xsection_table("DDn_xsection_ENDFB-VIII1.yaml", T_i)

sigmav_DDp_ENDFB_VIII1

sigmav_DDp_ENDFB_VIII1(T_i: float64 | NDArray[float64]) -> Any

Return DDp reactivity from ENDF/B-VIII.1 cross sections.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The DDp reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
@relation(
    name='DDp reactivity ENDFB-VIII1',
    tags=('fusion_power',),
    outputs='sigmav_DDp',
)
def sigmav_DDp_ENDFB_VIII1(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return DDp reactivity from ENDF/B-VIII.1 cross sections.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The DDp reactivity in m^3/s.
    """
    # Integrate the DDp ENDF/B-VIII.1 cross-section table over a Maxwellian.
    return reactivity_from_xsection_table("DDp_xsection_ENDFB-VIII1.yaml", T_i)

sigmav_DD_ENDFB_VIII1

sigmav_DD_ENDFB_VIII1(T_i: float64 | NDArray[float64]) -> Any

Return total DD reactivity from ENDF/B-VIII.1 cross sections.

Parameters:

Name Type Description Default
T_i float64 | NDArray[float64]

Ion temperature profile in keV.

required

Returns:

Type Description
Any

The total DD reactivity in m^3/s.

Source code in src/fusdb/relations/reactions/DD.py
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
@relation(
    name='DD reactivity ENDFB-VIII1',
    tags=('fusion_power',),
    outputs='sigmav_DD',
)
def sigmav_DD_ENDFB_VIII1(
    T_i: float64 | NDArray[np.float64],
) -> Any:
    """Return total DD reactivity from ENDF/B-VIII.1 cross sections.

    Args:
        T_i: Ion temperature profile in keV.

    Returns:
        The total DD reactivity in m^3/s.
    """
    # Sum the two ENDF/B-VIII.1 DD branches.
    return sigmav_DDn_ENDFB_VIII1.func(T_i=T_i) + sigmav_DDp_ENDFB_VIII1.func(T_i=T_i)

reaction_rate_ddn

reaction_rate_ddn(n_D: float, sigmav_DDn: float, V_p: float, rho: float) -> Any

Return the volume-integrated DDn reaction rate.

Parameters:

Name Type Description Default
n_D float

Deuterium density profile.

required
sigmav_DDn float

DDn reactivity profile.

required
V_p float

Plasma volume.

required

Returns:

Type Description
Any

The total DDn reaction rate in 1/s.

Source code in src/fusdb/relations/reactions/DD.py
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
@relation(
    name='DD (He3+n) reaction rate',
    tags=('fusion_power',),
    outputs='Rr_DDn',
)
def reaction_rate_ddn(n_D: float, sigmav_DDn: float, V_p: float, rho: float) -> Any:
    """Return the volume-integrated DDn reaction rate.

    Args:
        n_D: Deuterium density profile.
        sigmav_DDn: DDn reactivity profile.
        V_p: Plasma volume.

    Returns:
        The total DDn reaction rate in 1/s.
    """
    # Form the local DDn reaction-rate density.
    integrand = 0.5 * (n_D**2) * sigmav_DDn

    # Integrate the profile over the plasma volume.
    return V_p * trapezoid(integrand, x=rho)

reaction_rate_ddp

reaction_rate_ddp(n_D: float, sigmav_DDp: float, V_p: float, rho: float) -> Any

Return the volume-integrated DDp reaction rate.

Parameters:

Name Type Description Default
n_D float

Deuterium density profile.

required
sigmav_DDp float

DDp reactivity profile.

required
V_p float

Plasma volume.

required

Returns:

Type Description
Any

The total DDp reaction rate in 1/s.

Source code in src/fusdb/relations/reactions/DD.py
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
@relation(
    name='DD (T+p) reaction rate',
    tags=('fusion_power',),
    outputs='Rr_DDp',
)
def reaction_rate_ddp(n_D: float, sigmav_DDp: float, V_p: float, rho: float) -> Any:
    """Return the volume-integrated DDp reaction rate.

    Args:
        n_D: Deuterium density profile.
        sigmav_DDp: DDp reactivity profile.
        V_p: Plasma volume.

    Returns:
        The total DDp reaction rate in 1/s.
    """
    # Form the local DDp reaction-rate density.
    integrand = 0.5 * (n_D**2) * sigmav_DDp

    # Integrate the profile over the plasma volume.
    return V_p * trapezoid(integrand, x=rho)