Steady-state plasma composition examples¶
This notebook evaluates steady-state composition for DT, DD, and D-He3 cases using steady_state_plasma_composition().
All available sigmav_* inputs are populated for each case.
In [ ]:
Copied!
import numpy as np
from fusdb.relations.plasma_composition.plasma_composition import steady_state_plasma_composition
from fusdb.relations.reactions.DD import sigmav_DDn_BoschHale, sigmav_DDp_BoschHale
from fusdb.relations.reactions.DHe3 import sigmav_DHe3_BoschHale
from fusdb.relations.reactions.DT import sigmav_DT_BoschHale
from fusdb.relations.reactions.He3He3 import sigmav_He3He3_CF88
from fusdb.relations.reactions.THe3 import sigmav_THe3_D_CF88, sigmav_THe3_np_CF88
from fusdb.relations.reactions.TT import sigmav_TT_CF88
import numpy as np
from fusdb.relations.plasma_composition.plasma_composition import steady_state_plasma_composition
from fusdb.relations.reactions.DD import sigmav_DDn_BoschHale, sigmav_DDp_BoschHale
from fusdb.relations.reactions.DHe3 import sigmav_DHe3_BoschHale
from fusdb.relations.reactions.DT import sigmav_DT_BoschHale
from fusdb.relations.reactions.He3He3 import sigmav_He3He3_CF88
from fusdb.relations.reactions.THe3 import sigmav_THe3_D_CF88, sigmav_THe3_np_CF88
from fusdb.relations.reactions.TT import sigmav_TT_CF88
/home/alessmor/Scrivania/fusdb/src/fusdb/relation_util.py:301: RuntimeWarning: Could not convert relation 'Bremsstrahlung radiation' to sympy expression for target 'P_brem'. direct=ValueError: Cannot integrate bremsstrahlung profile over volume.; proxy=ValueError: Cannot integrate bremsstrahlung profile over volume. expr, symbols = build_symbolic_model(
In [2]:
Copied!
constant_profile = np.full(51, 1, dtype=float)
constant_profile = np.full(51, 1, dtype=float)
DT case¶
In [ ]:
Copied!
T_i_DT = 14 * constant_profile# keV
tau_DT = 1 # s
n_i_DT = 1e20 * constant_profile # m^-3
steady_state_DT = steady_state_plasma_composition(
n_D = 0.5 * n_i_DT,
n_T = 0.5 * n_i_DT,
n_He3 = 0.0 * n_i_DT,
n_He4 = 0.0 * n_i_DT,
sigmav_DT = sigmav_DT_BoschHale(T_i=T_i_DT),
sigmav_DDn = sigmav_DDn_BoschHale(T_i=T_i_DT),
sigmav_DDp = sigmav_DDp_BoschHale(T_i=T_i_DT),
sigmav_DHe3 = sigmav_DHe3_BoschHale(T_i=T_i_DT),
sigmav_TT = sigmav_TT_CF88(T_i=T_i_DT),
sigmav_He3He3 = sigmav_He3He3_CF88(T_i=T_i_DT),
sigmav_THe3_D = sigmav_THe3_D_CF88(T_i=T_i_DT),
sigmav_THe3_np = sigmav_THe3_np_CF88(T_i=T_i_DT),
tau_p_D = tau_DT,
tau_p_T = tau_DT,
tau_p_He3 = tau_DT,
tau_p_He4 = tau_DT,
)
n_D_DT, n_T_DT, n_He3_DT, n_He4_DT = steady_state_DT
total_density = n_D_DT + n_T_DT + n_He3_DT + n_He4_DT
f_T_avg_DT = np.mean(n_T_DT / total_density)
f_D_avg_DT = np.mean(n_D_DT / total_density)
f_He3_avg_DT = np.mean(n_He3_DT / total_density)
f_He4_avg_DT = np.mean(n_He4_DT / total_density)
print(f"Final DT density fractions:\nf_T_avg = {f_T_avg_DT:.3e}\nf_D_avg = {f_D_avg_DT:.3e}\nf_He3_avg = {f_He3_avg_DT:.3e}\nf_He4_avg = {f_He4_avg_DT:.3e}")
print(f"residual = {1-f_T_avg_DT-f_D_avg_DT-f_He3_avg_DT-f_He4_avg_DT}")
T_i_DT = 14 * constant_profile# keV
tau_DT = 1 # s
n_i_DT = 1e20 * constant_profile # m^-3
steady_state_DT = steady_state_plasma_composition(
n_D = 0.5 * n_i_DT,
n_T = 0.5 * n_i_DT,
n_He3 = 0.0 * n_i_DT,
n_He4 = 0.0 * n_i_DT,
sigmav_DT = sigmav_DT_BoschHale(T_i=T_i_DT),
sigmav_DDn = sigmav_DDn_BoschHale(T_i=T_i_DT),
sigmav_DDp = sigmav_DDp_BoschHale(T_i=T_i_DT),
sigmav_DHe3 = sigmav_DHe3_BoschHale(T_i=T_i_DT),
sigmav_TT = sigmav_TT_CF88(T_i=T_i_DT),
sigmav_He3He3 = sigmav_He3He3_CF88(T_i=T_i_DT),
sigmav_THe3_D = sigmav_THe3_D_CF88(T_i=T_i_DT),
sigmav_THe3_np = sigmav_THe3_np_CF88(T_i=T_i_DT),
tau_p_D = tau_DT,
tau_p_T = tau_DT,
tau_p_He3 = tau_DT,
tau_p_He4 = tau_DT,
)
n_D_DT, n_T_DT, n_He3_DT, n_He4_DT = steady_state_DT
total_density = n_D_DT + n_T_DT + n_He3_DT + n_He4_DT
f_T_avg_DT = np.mean(n_T_DT / total_density)
f_D_avg_DT = np.mean(n_D_DT / total_density)
f_He3_avg_DT = np.mean(n_He3_DT / total_density)
f_He4_avg_DT = np.mean(n_He4_DT / total_density)
print(f"Final DT density fractions:\nf_T_avg = {f_T_avg_DT:.3e}\nf_D_avg = {f_D_avg_DT:.3e}\nf_He3_avg = {f_He3_avg_DT:.3e}\nf_He4_avg = {f_He4_avg_DT:.3e}")
print(f"residual = {1-f_T_avg_DT-f_D_avg_DT-f_He3_avg_DT-f_He4_avg_DT}")
DD case¶
In [ ]:
Copied!
T_i_DD = 14 * constant_profile# keV
tau_DD = 1 # s
n_i_DD = 1e20 * constant_profile # m^-3
steady_state_DD = steady_state_plasma_composition(
n_D = 1 * n_i_DD,
n_T = 0.0 * n_i_DD,
n_He3 = 0.0 * n_i_DD,
n_He4 = 0.0 * n_i_DD,
sigmav_DT = sigmav_DT_BoschHale(T_i=T_i_DD),
sigmav_DDn = sigmav_DDn_BoschHale(T_i=T_i_DD),
sigmav_DDp = sigmav_DDp_BoschHale(T_i=T_i_DD),
sigmav_DHe3 = sigmav_DHe3_BoschHale(T_i=T_i_DD),
sigmav_TT = sigmav_TT_CF88(T_i=T_i_DD),
sigmav_He3He3 = sigmav_He3He3_CF88(T_i=T_i_DD),
sigmav_THe3_D = sigmav_THe3_D_CF88(T_i=T_i_DD),
sigmav_THe3_np = sigmav_THe3_np_CF88(T_i=T_i_DD),
tau_p_D = tau_DD,
tau_p_T = tau_DD,
tau_p_He3 = tau_DD,
tau_p_He4 = tau_DD,
)
n_D_DD, n_T_DD, n_He3_DD, n_He4_DD = steady_state_DD
total_density = n_D_DD + n_T_DD + n_He3_DD + n_He4_DD
f_T_avg_DD = np.mean(n_T_DD / total_density)
f_D_avg_DD = np.mean(n_D_DD / total_density)
f_He3_avg_DD = np.mean(n_He3_DD / total_density)
f_He4_avg_DD = np.mean(n_He4_DD / total_density)
print(f"Final DD density fractions:\nf_T_avg = {f_T_avg_DD:.3e}\nf_D_avg = {f_D_avg_DD:.3e}\nf_He3_avg = {f_He3_avg_DD:.3e}\nf_He4_avg = {f_He4_avg_DD:.3e}")
print(f"residual = {1-f_T_avg_DD-f_D_avg_DD-f_He3_avg_DD-f_He4_avg_DD}")
T_i_DD = 14 * constant_profile# keV
tau_DD = 1 # s
n_i_DD = 1e20 * constant_profile # m^-3
steady_state_DD = steady_state_plasma_composition(
n_D = 1 * n_i_DD,
n_T = 0.0 * n_i_DD,
n_He3 = 0.0 * n_i_DD,
n_He4 = 0.0 * n_i_DD,
sigmav_DT = sigmav_DT_BoschHale(T_i=T_i_DD),
sigmav_DDn = sigmav_DDn_BoschHale(T_i=T_i_DD),
sigmav_DDp = sigmav_DDp_BoschHale(T_i=T_i_DD),
sigmav_DHe3 = sigmav_DHe3_BoschHale(T_i=T_i_DD),
sigmav_TT = sigmav_TT_CF88(T_i=T_i_DD),
sigmav_He3He3 = sigmav_He3He3_CF88(T_i=T_i_DD),
sigmav_THe3_D = sigmav_THe3_D_CF88(T_i=T_i_DD),
sigmav_THe3_np = sigmav_THe3_np_CF88(T_i=T_i_DD),
tau_p_D = tau_DD,
tau_p_T = tau_DD,
tau_p_He3 = tau_DD,
tau_p_He4 = tau_DD,
)
n_D_DD, n_T_DD, n_He3_DD, n_He4_DD = steady_state_DD
total_density = n_D_DD + n_T_DD + n_He3_DD + n_He4_DD
f_T_avg_DD = np.mean(n_T_DD / total_density)
f_D_avg_DD = np.mean(n_D_DD / total_density)
f_He3_avg_DD = np.mean(n_He3_DD / total_density)
f_He4_avg_DD = np.mean(n_He4_DD / total_density)
print(f"Final DD density fractions:\nf_T_avg = {f_T_avg_DD:.3e}\nf_D_avg = {f_D_avg_DD:.3e}\nf_He3_avg = {f_He3_avg_DD:.3e}\nf_He4_avg = {f_He4_avg_DD:.3e}")
print(f"residual = {1-f_T_avg_DD-f_D_avg_DD-f_He3_avg_DD-f_He4_avg_DD}")
DHe3 case¶
In [ ]:
Copied!
T_i_DHe3 = 70 * constant_profile# keV
tau_DHe3 = 1 # s
n_i_DHe3 = 1e20 * constant_profile # m^-3
steady_state_DHe3 = steady_state_plasma_composition(
n_D = 0.5 * n_i_DHe3,
n_T = 0.0 * n_i_DHe3,
n_He3 = 0.5 * n_i_DHe3,
n_He4 = 0.0 * n_i_DHe3,
sigmav_DT = sigmav_DT_BoschHale(T_i=T_i_DHe3),
sigmav_DDn = sigmav_DDn_BoschHale(T_i=T_i_DHe3),
sigmav_DDp = sigmav_DDp_BoschHale(T_i=T_i_DHe3),
sigmav_DHe3 = sigmav_DHe3_BoschHale(T_i=T_i_DHe3),
sigmav_TT = sigmav_TT_CF88(T_i=T_i_DHe3),
sigmav_He3He3 = sigmav_He3He3_CF88(T_i=T_i_DHe3),
sigmav_THe3_D = sigmav_THe3_D_CF88(T_i=T_i_DHe3),
sigmav_THe3_np = sigmav_THe3_np_CF88(T_i=T_i_DHe3),
tau_p_D = tau_DHe3,
tau_p_T = tau_DHe3,
tau_p_He3 = tau_DHe3,
tau_p_He4 = tau_DHe3,
)
n_D_DHe3, n_T_DHe3, n_He3_DHe3, n_He4_DHe3 = steady_state_DHe3
total_density_DHe3 = n_D_DHe3 + n_T_DHe3 + n_He3_DHe3 + n_He4_DHe3
f_T_avg_DHe3 = np.mean(n_T_DHe3 / total_density_DHe3)
f_D_avg_DHe3 = np.mean(n_D_DHe3 / total_density_DHe3)
f_He3_avg_DHe3 = np.mean(n_He3_DHe3 / total_density_DHe3)
f_He4_avg_DHe3 = np.mean(n_He4_DHe3 / total_density_DHe3)
print(f"Final D-He3 density fractions:\nf_T_avg = {f_T_avg_DHe3:.3e}\nf_D_avg = {f_D_avg_DHe3:.3e}\nf_He3_avg = {f_He3_avg_DHe3:.3e}\nf_He4_avg = {f_He4_avg_DHe3:.3e}")
print(f"residual = {1-f_T_avg_DHe3-f_D_avg_DHe3-f_He3_avg_DHe3-f_He4_avg_DHe3}")
T_i_DHe3 = 70 * constant_profile# keV
tau_DHe3 = 1 # s
n_i_DHe3 = 1e20 * constant_profile # m^-3
steady_state_DHe3 = steady_state_plasma_composition(
n_D = 0.5 * n_i_DHe3,
n_T = 0.0 * n_i_DHe3,
n_He3 = 0.5 * n_i_DHe3,
n_He4 = 0.0 * n_i_DHe3,
sigmav_DT = sigmav_DT_BoschHale(T_i=T_i_DHe3),
sigmav_DDn = sigmav_DDn_BoschHale(T_i=T_i_DHe3),
sigmav_DDp = sigmav_DDp_BoschHale(T_i=T_i_DHe3),
sigmav_DHe3 = sigmav_DHe3_BoschHale(T_i=T_i_DHe3),
sigmav_TT = sigmav_TT_CF88(T_i=T_i_DHe3),
sigmav_He3He3 = sigmav_He3He3_CF88(T_i=T_i_DHe3),
sigmav_THe3_D = sigmav_THe3_D_CF88(T_i=T_i_DHe3),
sigmav_THe3_np = sigmav_THe3_np_CF88(T_i=T_i_DHe3),
tau_p_D = tau_DHe3,
tau_p_T = tau_DHe3,
tau_p_He3 = tau_DHe3,
tau_p_He4 = tau_DHe3,
)
n_D_DHe3, n_T_DHe3, n_He3_DHe3, n_He4_DHe3 = steady_state_DHe3
total_density_DHe3 = n_D_DHe3 + n_T_DHe3 + n_He3_DHe3 + n_He4_DHe3
f_T_avg_DHe3 = np.mean(n_T_DHe3 / total_density_DHe3)
f_D_avg_DHe3 = np.mean(n_D_DHe3 / total_density_DHe3)
f_He3_avg_DHe3 = np.mean(n_He3_DHe3 / total_density_DHe3)
f_He4_avg_DHe3 = np.mean(n_He4_DHe3 / total_density_DHe3)
print(f"Final D-He3 density fractions:\nf_T_avg = {f_T_avg_DHe3:.3e}\nf_D_avg = {f_D_avg_DHe3:.3e}\nf_He3_avg = {f_He3_avg_DHe3:.3e}\nf_He4_avg = {f_He4_avg_DHe3:.3e}")
print(f"residual = {1-f_T_avg_DHe3-f_D_avg_DHe3-f_He3_avg_DHe3-f_He4_avg_DHe3}")