me 533 introduction to icf assignment 2 solutions problem 1
TRANSCRIPT
ME 533 Introduction to ICF
Assignment 2 solutions
Problem 1
From lecture notes
�̇�𝒊𝒏
�̇�𝒐𝒖𝒕=
𝜺𝒏𝟏𝒏𝟐 < 𝝈𝒗 >
𝑪𝑩𝒁𝒆𝒇𝒇𝒏𝒆𝟐√𝑻
with 𝒏𝒆 = 𝒁𝟏𝒏𝟏 + 𝒁𝟐𝒏𝟐 and 𝒁𝒆𝒇𝒇 =𝒁𝟏
𝟐𝒏𝟏𝟐+𝒁𝟐
𝟐𝒏𝟐𝟐
𝒏𝒆
See attached python notebook.
1) DD plasma 𝑻∗ = 𝟒𝟖 𝒌𝒆𝑽
3) p-𝑩𝟏𝟏 𝒑𝒍𝒂𝒔𝒎𝒂 (does not ignite at any T)
Problem 2.
Ion number density evolution equation is different for a single
ion species plasma (DD)
No. of reactions per unit time per unit volume = < 𝜎𝑣 > 𝑛𝑖2
⇒𝒅𝒏𝒊
𝒅𝒕= −𝟐𝒏𝑫
𝟐 < 𝝈𝒗 >
i.e a factor of 4 compared to a 50-50 mix of 2 ion species
plasma
Following the solution in lecture notes we find
𝒏𝑫(𝒕) =𝒏𝑫(𝟎)
𝟏+𝟐𝒏𝑫(𝟎)<𝝈𝒗>(𝑹𝟎−𝑹𝒃(𝒕)
𝒄𝒔) where 𝑐𝑠 = √
2𝑘𝐵𝑇
<𝑚𝑖>, is
isothermal sound speed.
So, number of reactions 𝑵𝒓 = ∫ 𝒏𝑫𝟐 < 𝝈𝒗 > 𝑽𝒃𝒅𝒕
𝒕𝒃
𝟎
Changing variable from 𝒕 → 𝑹 ̂ & 𝒅𝒕 →−𝑹𝟎
𝒄𝒔𝒅𝑹 ̂ and substituting
𝒏𝑫(𝑹 ̂)&𝑽𝒃 = (𝟒𝝅
𝟑)𝑹 ̂ 𝟑𝑹𝟎
𝟑
We get,
𝑵𝒓 =𝟐 𝒏𝑫(𝟎)𝟐 < 𝝈𝒗 >
𝒏𝑫(𝟎)
𝑹𝟎
𝒄𝒔∫
𝑹 ̂ 𝟑𝒅𝑹 ̂
(𝟏 + 𝟐𝒏𝑫(𝟎) < 𝝈𝒗 > (𝑹𝟎 − 𝑹𝒃(𝒕)
𝒄𝒔))𝟐
𝟏
𝟎
Burn fraction 𝜽 =𝟐𝑵𝒓
𝑵𝑫(𝟎)=
𝟐𝑵𝒓
𝒏𝑫(𝟎)𝑽𝟎 , substitute 𝑵𝒓 and define
𝝃 =𝟐 𝒏𝑫(𝟎) < 𝝈𝒗 >
𝟏
𝑹𝟎
𝒄𝒔=
𝟐 < 𝝈𝒗 > 𝝆𝑫(𝟎)
𝟏
𝑹𝟎
𝒄𝒔
As in lecture notes 𝛉 ≈𝛏
𝟒+𝛏
Energy output 𝑬𝒇 =𝜺𝒇𝜽
𝟐𝑵𝑫(𝟎)=
𝜺𝒇𝜽𝑴𝒕𝒐𝒕
𝟐<𝒎𝒊>
See attached Mathematica notebook for calculations.
𝑻𝒎𝒂𝒙 = 𝟏𝟎𝟎 keV
𝜽 =𝝆𝑹
𝟓𝟒.𝟓+𝝆𝑹
𝑬𝒇 = 𝟎. 𝟑𝟓 𝑴𝒕𝒐𝒕𝒌𝒈 𝝆𝑹
𝟓𝟒. 𝟓 + 𝝆𝑹 𝑻𝑱
3) p-𝑩𝟏𝟏 𝒑𝒍𝒂𝒔𝒎𝒂
𝑻𝒎𝒂𝒙 = 𝟐𝟗𝟓 keV
𝜽 =𝝆𝑹
𝟕𝟏.𝟒𝟑+𝝆𝑹
𝑬𝒇 = 𝟎. 𝟎𝟕 𝑴𝒕𝒐𝒕𝒌𝒈 𝝆𝑹
𝟕𝟏. 𝟒𝟑 + 𝝆𝑹 𝑻𝑱
In [8]: import numpy as npimport pint%pylab inlineureg = pint.UnitRegistry()ureg.enable_contexts('boltzmann')ureg.default_format = '~P'ureg.default_system = 'cgs'
DefinitionsIn [21]: def sigmav_dt(t_kev_input):
""" Get the fusion cross section for D+T. Taken from H.-S. Bosch and G.M. Hale, Nuclear Fusion 4,611(1992)
sigvdt: D + T -> a(3.5 MeV) + n(14.1 MeV)
Parameters ---------- t_kev_input: float Temperature in keV
Returns ------- svdt: float sigma v or fusion cross section in (cm^3/s) """
if not isinstance(t_kev_input, np.ndarray): t_kev_input = np.array(t_kev_input)
t_kev=t_kev_input.copy() #We .copy() here because we don't want to alter original array (Python by default passes by reference with assignments) t_kev[t_kev < 200.0e-3] = 0.0
cdtn = np.array( [1.17302e-9, 1.51361e-2, 7.51886e-2, 4.60643e-3, 1.35000e-2, -1.06750e-4, 1.36600e-5], dtype=np.float64)
t_kev[t_kev >= 500.0] = 500.0
bgdtn = np.float64(34.3827) edtn = np.float64(1124656.0)
znum = t_kev * (cdtn[1] + t_kev * (cdtn[3] + t_kev * cdtn[5])) zden = 1. + t_kev * (cdtn[2] + t_kev * (cdtn[4] + t_kev * cdtn[6])) theta = t_kev / (1. - znum / zden) xi = (bgdtn ** 2 / (4. * theta)) ** (1. / 3.) svdt = cdtn[0] * theta * np.sqrt(xi / (edtn * t_kev ** 3)) * np.exp(-3
Populating the interactive namespace from numpy and matplotlib
. * xi)
return svdt
def sigmav_ddn(t_kev): """ Get the fusion cross section for D+D neutrons. Taken from H.-S. Bosch and G.M. Hale, Nuclear Fusion 4,611(1992)
sigvddn: D + D -> H(0.82 MeV) + n(2.45 MeV)
Parameters ---------- t_kev: float Temperature in keV
Returns ------- svdt: float sigma v or fusion cross section in (cm^3/s) """
if not isinstance(t_kev, np.ndarray): t_kev = np.array(t_kev)
t_kev[t_kev < 200.0e-3] = 0.0
cddn = np.array( [5.43360e-12, 5.85778e-3, 7.68222e-3, 0.0, -2.96400e-6, 0.0, 0.0], dtype=np.float64)
t_kev[t_kev >= 500.0] = 500.0
bgddn = np.float64(31.3970) eddn = np.float64(937814.0)
znum = t_kev * (cddn[1] + t_kev * (cddn[3] + t_kev * cddn[5])) zden = 1. + t_kev * (cddn[2] + t_kev * (cddn[4] + t_kev * cddn[6])) theta = t_kev / (1. - znum / zden) xi = (bgddn ** 2 / (4. * theta)) ** (1. / 3.) svddn = cddn[0] * theta * np.sqrt(xi / (eddn * t_kev ** 3)) * np.exp(-3. * xi)
return svddn
def sigmav_ddp(t_kev): """ Get the fusion cross section for D+D protons. Taken from H.-S. Bosch and G.M. Hale, Nuclear Fusion 4,611(1992)
sigvddp: D + D -> T(1.10 MeV) + p(3.02 MeV)
Parameters
---------- t_kev: float Temperature in keV
Returns ------- svdt: float sigma v or fusion cross section in (cm^3/s) """
if not isinstance(t_kev, np.ndarray): t_kev = np.array(t_kev)
t_kev[t_kev < 200.0e-3] = 0.0
cddp = np.array( [5.65718e-12, 3.41267e-3, 1.99167e-3, 0.0, 1.05060e-5, 0.0, 0.0], dtype=np.float64)
bgddp = np.float64(31.3970) eddp = np.float64(937814.0)
znum = t_kev * (cddp[1] + t_kev * (cddp[3] + t_kev * cddp[5])) zden = 1. + t_kev * (cddp[2] + t_kev * (cddp[4] + t_kev * cddp[6])) theta = t_kev / (1. - znum / zden) xi = (bgddp ** 2 / (4. * theta)) ** (1. / 3.) svddp = cddp[0] * theta * np.sqrt(xi / (eddp * t_kev ** 3)) * np.exp(-3. * xi)
return svddp
def sigmav_dhe3(t_kev): """ Get the fusion cross section for D + He3 protons. Taken from H.-S. Bosch and G.M. Hale, Nuclear Fusion 4,611(1992)
sigvdhe3: D + H -> a(3.5 MeV) + p(14.7 MeV)
Parameters ---------- t_kev: float Temperature in keV
Returns ------- svdt: float sigma v or fusion cross section in (cm^3/s) """
if not isinstance(t_kev, np.ndarray): t_kev = np.array(t_kev)
t_kev[t_kev < 200.0e-3] = 0.0
cdhe3 = np.array(
[ 5.51036e-10, 6.41918e-3, -2.02896e-3, -1.91080e-5, 1.35776e-4, 0.0, 0.0 ], dtype=np.float64)
bgdhe3 = np.float64(68.7508) edhe3 = np.float64(1124572.0)
znum = t_kev * (cdhe3[1] + t_kev * (cdhe3[3] + t_kev * cdhe3[5])) zden = 1. + t_kev * (cdhe3[2] + t_kev * (cdhe3[4] + t_kev * cdhe3[6])) theta = t_kev / (1. - znum / zden) xi = (bgdhe3 ** 2 / (4. * theta)) ** (1. / 3.) svdhe3 = cdhe3[0] * theta * np.sqrt(xi / (edhe3 * t_kev ** 3)) * np.exp(-3. * xi)
return svdhe3
def sigmav_pb11(t_kev): """ Get the fusion cross section for p + b11 protons. Taken from Nevins, W. M., and R. Swain. "The thermonuclear fusion rate coefficient for p-11B reactions." Nuclear fusion 40.4 (2000): 865.
Parameters ---------- t_kev: float Temperature in keV
Returns ------- svdt: float sigma v or fusion cross section in (m^3/s) """
if not isinstance(t_kev, np.ndarray): t_kev = np.array(t_kev)
cdhe3 = np.array( [ 4.4467e-14,-5.9357e-2,2.0165e-1,1.0404e-3,2.7621e-3,-9.1653e-6,9.8305e-7 ], dtype=np.float64) t_kev[t_kev >= 500.0] = 500.0 t_kev[t_kev < 50.0] = 50.0 bgdhe3 = np.sqrt(22.589*1000) edhe3 = np.float64(859526)
znum = t_kev * (cdhe3[1] + t_kev * (cdhe3[3] + t_kev * cdhe3[5])) zden = 1. + t_kev * (cdhe3[2] + t_kev * (cdhe3[4] + t_kev * cdhe3[6])) theta = t_kev / (1. - znum / zden) xi = (bgdhe3 ** 2 / (4. * theta)) ** (1. / 3.) svpb11 = cdhe3[0] * theta * np.sqrt(xi / (edhe3 * t_kev ** 3)) * np.exp(-3. * xi)
return svpb11
In [10]: n = 10**20 * ureg('1/cc')
cb = 2**0.5 * ureg.elementary_charge**6 / (3 * np.pi**2.5 * ureg.vacuum_permittivity**3 * ureg.speed_of_light**3 * ureg.electron_mass**1.5 * ureg.planck_constant)def brem_loss(zeff,n,t): return cb*n**2*zeff*t**0.5
DTIn [16]: reaction = 'DT'
zeff = 1
e_deposited = 3.5*ureg('MeV')particle_fraction_coeff = 1/4t = np.linspace(start=0,stop=200,num=2000)*ureg('keV')
sigmav = sigmav_dt(t.to('keV').m) * ureg('cm^3/s')power_dep = (particle_fraction_coeff * sigmav * e_deposited * n**2).to('GW/cc')power_loss = brem_loss(zeff,n,t).to('GW/cc')tstar = t[np.where(power_dep > power_loss)][0]
fig, (ax1,ax2) = plt.subplots(ncols=2,figsize=(20,10))
ax1.plot(t,power_dep/power_loss)ax1.set_xlim(xmin=0,xmax=2*tstar.to('keV').m)ax1.set_ylim(ymin=0,ymax=5)ax1.hlines(xmin=0,xmax=tstar.to('keV').m,y=1,color='grey',linestyle='--')ax1.vlines(ymin=0,ymax=1,x=tstar.to('keV').m,color='grey',linestyle='--')ax1.set_xlabel('Temperature (keV)',fontsize=22)ax1.set_ylabel('Power Deposited/Lost',fontsize=22)ax2.plot(t,power_dep/power_loss)ax2.set_xlabel('Temperature (keV)',fontsize=22)ax2.set_ylabel('Power Deposited/Lost',fontsize=22)
C:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:37: RuntimeWarning: divide by zero encountered in true_divideC:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:38: RuntimeWarning: invalid value encountered in multiplyC:\Users\varch\Anaconda3\lib\site-packages\pint\quantity.py:1193: RuntimeWarning: invalid value encountered in greater
DDIn [12]: reaction = 'DD'
zeff = 1
e_deposited_he3n = 0.81927*ureg('MeV')e_deposited_tp = 4.03*ureg('MeV')particle_fraction_coeff = 1t = np.linspace(start=0,stop=200,num=2000)*ureg('keV')
sigmav_he3n = 0.5*sigmav_ddn(t.to('keV').m) * ureg('cm^3/s')sigmav_tp = 0.5*sigmav_ddp(t.to('keV').m) * ureg('cm^3/s')
power_dep = (particle_fraction_coeff * sigmav_he3n * e_deposited_he3n * n**2).to('GW/cc') + (particle_fraction_coeff * sigmav_tp * e_deposited_tp * n**2).to('GW/cc')power_loss = brem_loss(zeff,n,t).to('GW/cc')tstar = t[np.where(power_dep > power_loss)][0]
fig, (ax1,ax2) = plt.subplots(ncols=2,figsize=(20,10))ax1.plot(t,power_dep/power_loss)ax1.set_xlim(xmin=0,xmax=2*tstar.to('keV').m)ax1.set_ylim(ymin=0,ymax=5)ax1.hlines(xmin=0,xmax=tstar.to('keV').m,y=1,color='grey',linestyle='--')ax1.vlines(ymin=0,ymax=1,x=tstar.to('keV').m,color='grey',linestyle='--')
return op(self._magnitude, other._magnitude)C:\Users\varch\Anaconda3\lib\site-packages\pint\quantity.py:1377: UnitStrippedWarning: The unit of the quantity is stripped. warnings.warn("The unit of the quantity is stripped.", UnitStrippedWarning)
Out[16]: Text(0,0.5,'Power Deposited/Lost')
ax1.set_xlabel('Temperature (keV)',fontsize=22)ax1.set_ylabel('Power Deposited/Lost',fontsize=22)ax2.plot(t,power_dep/power_loss)ax2.set_xlabel('Temperature (keV)',fontsize=22)ax2.set_ylabel('Power Deposited/Lost',fontsize=22)
D-He3In [18]: reaction = 'DHe3'
zeff = 0.5*(1**2 + 2**2)
e_deposited = 18.35*ureg('MeV')particle_fraction_coeff = 1/4t = np.linspace(start=0,stop=200,num=2000)*ureg('keV')
sigmav = sigmav_dhe3(t.to('keV').m) * ureg('cm^3/s')power_dep = (particle_fraction_coeff * sigmav * e_deposited * n**2).to('GW
C:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:78: RuntimeWarning: divide by zero encountered in true_divideC:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:79: RuntimeWarning: invalid value encountered in multiplyC:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:117: RuntimeWarning: divide by zero encountered in true_divideC:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:118: RuntimeWarning: invalid value encountered in multiplyC:\Users\varch\Anaconda3\lib\site-packages\pint\quantity.py:1193: RuntimeWarning: invalid value encountered in greater return op(self._magnitude, other._magnitude)C:\Users\varch\Anaconda3\lib\site-packages\pint\quantity.py:1377: UnitStrippedWarning: The unit of the quantity is stripped. warnings.warn("The unit of the quantity is stripped.", UnitStrippedWarning)
Out[12]: Text(0,0.5,'Power Deposited/Lost')
/cc')power_loss = brem_loss(zeff,n,t).to('GW/cc')tstar = t[np.where(power_dep > power_loss)][0]
fig, (ax1,ax2) = plt.subplots(ncols=2,figsize=(20,10))ax1.plot(t,power_dep/power_loss)ax1.set_xlim(xmin=0,xmax=2*tstar.to('keV').m)ax1.set_ylim(ymin=0,ymax=5)ax1.hlines(xmin=0,xmax=tstar.to('keV').m,y=1,color='grey',linestyle='--')ax1.vlines(ymin=0,ymax=1,x=tstar.to('keV').m,color='grey',linestyle='--')ax1.set_xlabel('Temperature (keV)',fontsize=22)ax1.set_ylabel('Power Deposited/Lost',fontsize=22)ax2.plot(t,power_dep/power_loss)ax2.set_xlabel('Temperature (keV)',fontsize=22)ax2.set_ylabel('Power Deposited/Lost',fontsize=22)
p-B11In [20]: reaction = 'pb11'
zeff = 0.5*(1**2 + 5**2)
C:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:159: RuntimeWarning: divide by zero encountered in true_divideC:\Users\varch\Anaconda3\lib\site-packages\ipykernel_launcher.py:160: RuntimeWarning: invalid value encountered in multiplyC:\Users\varch\Anaconda3\lib\site-packages\pint\quantity.py:1193: RuntimeWarning: invalid value encountered in greater return op(self._magnitude, other._magnitude)C:\Users\varch\Anaconda3\lib\site-packages\pint\quantity.py:1377: UnitStrippedWarning: The unit of the quantity is stripped. warnings.warn("The unit of the quantity is stripped.", UnitStrippedWarning)
Out[18]: Text(0,0.5,'Power Deposited/Lost')
e_deposited = 8.68*ureg('MeV')particle_fraction_coeff = 1/4t = np.linspace(start=50,stop=500,num=2000)*ureg('keV')
sigmav = sigmav_pb11(t.to('keV').m) * ureg('m^3/s')power_dep = (particle_fraction_coeff * sigmav * e_deposited * n**2).to('GW/cc')power_loss = brem_loss(zeff,n,t).to('GW/cc')fig, (ax1,ax2) = plt.subplots(ncols=2,figsize=(20,10))try: tstar = t[np.where(power_dep > power_loss)][0]
except: tstar = t[(power_dep/power_loss).argmax()]
ax1.plot(t,power_dep/power_loss)ax1.set_xlim(xmin=0,xmax=2*tstar.to('keV').m)ax1.set_ylim(ymin=0,ymax=5)ax1.hlines(xmin=0,xmax=tstar.to('keV').m,y=1,color='grey',linestyle='--')ax1.vlines(ymin=0,ymax=1,x=tstar.to('keV').m,color='grey',linestyle='--')ax1.set_xlabel('Temperature (keV)',fontsize=22)ax1.set_ylabel('Power Deposited/Lost',fontsize=22)ax2.plot(t,power_dep/power_loss)ax2.set_xlabel('Temperature (keV)',fontsize=22)ax2.set_ylabel('Power Deposited/Lost',fontsize=22)
C:\Users\varch\Anaconda3\lib\site-packages\pint\quantity.py:1377: UnitStrippedWarning: The unit of the quantity is stripped. warnings.warn("The unit of the quantity is stripped.", UnitStrippedWarning)
Out[20]: Text(0,0.5,'Power Deposited/Lost')
In[226]:= (* reactivity constanst from Atzeni,d=dueterium, t=tritium,
h=helium3,n=neutron,p=proton,b=boron,a=alpha particle *)
In[227]:= C0ddpt = 6.2696;
C1ddpt = 3.7212 * 10^-16;
C3ddpt = 1.9917 * 10^-3;
C2ddpt = 3.4127 * 10^-3;
C4ddpt = 0;
C5ddpt = 0.010506 * 10^-3;
C6ddpt = 0;
C7ddpt = 0;
In[235]:= C0ddnh = 6.2696;
C1ddnh = 3.5741 * 10^-16;
C3ddnh = 7.6822 * 10^-3;
C2ddnh = 5.8577 * 10^-3;
C4ddnh = 0;
C5ddnh = -0.002964 * 10^-3;
C6ddnh = 0;
C7ddnh = 0;
In[243]:=
C0hdpa = 10.572;
C1hdpa = 151.16 * 10^-16;
C3hdpa = -2.029 * 10^-3;
C2hdpa = 6.4192 * 10^-3;
C4hdpa = -0.019108 * 10^-3;
C5hdpa = 0.13578 * 10^-3;
C6hdpa = 0;
C7hdpa = 0;
In[251]:=
C0bp3a = 17.708;
C1bp3a = 6382 * 10^-16;
C3bp3a = 201.65 * 10^-3;
C2bp3a = -59.357 * 10^-3;
C4bp3a = 1.0404 * 10^-3;
C5bp3a = 2.7621 * 10^-3;
C6bp3a = -0.0091653 * 10^-3;
C7bp3a = 0.00098305 * 10^-3;
In[259]:= C0tdna = 6.661;
C1tdna = 643.41 * 10^-16;
C3tdna = 75.189 * 10^-3;
C2tdna = 15.136 * 10^-3;
C4tdna = 4.6064 * 10^-3;
C5tdna = 13.5 * 10^-3;
C6tdna = -0.10675 * 10^-3;
C7tdna = 0.01366 * 10^-3;
In[267]:= bhfr[T_, c0_, c1_, c2_, c3_, c4_, c5_, c6_, c7_] :=
T-1/2 * c1 * 1 -c2 * T + c4 * T2 + c6 * T3
1 + c3 * T + c5 * T2 + c7 * T3^(-5 / 6) *
c0
T1/3^2 *
Exp-3 * 1 -c2 * T + c4 * T2 + c6 * T3
1 + c3 * T + c5 * T2 + c7 * T3^1 3 *
c0
T1/3
(* <Sigmav>Sqrt[T] function from Atzeni *)
In[268]:=
In[269]:= (* reactivity
In[269]:= bhfr1[T_, c0_, c1_, c2_, c3_, c4_, c5_, c6_, c7_] :=
c1 * 1 -c2 * T + c4 * T2 + c6 * T3
1 + c3 * T + c5 * T2 + c7 * T3
-5/6
*c0
T1/3
2
* ⅇ-3*1-
c2*T+c4*T2+c6*T3
1+c3*T+c5*T2+c7*T313
*c0
T13
In[270]:=
In[271]:= bhfrpb[T_, c0_, c1_, c2_, c3_, c4_, c5_, c6_, c7_] :=
T-1/2 * c1 * 1 -c2 * T + c4 * T2 + c6 * T3
1 + c3 * T + c5 * T2 + c7 * T3^(-5 / 6) *
c0
T1/3^2 *
Exp-3 * 1 -c2 * T + c4 * T2 + c6 * T3
1 + c3 * T + c5 * T2 + c7 * T3^1 3 *
c0
T1/3 + 5.41 * 10^-15 *
T-3/2 * Exp-148. T (* SigmavSqrt[T] function for p-B11 from Atzeni *)
In[272]:= Plot[{bhfr[T, C0ddnh, C1ddnh, C2ddnh, C3ddnh, C4ddnh, C5ddnh, 0, 0],
bhfr[T, C0ddpt, C1ddpt, C2ddpt, C3ddpt, C4ddpt, C5ddpt, 0, 0]}, {T, 1, 300},
PlotLegends → {"DD->nHe", "DD->pT"}, AxesLabel → {"T(kev)", "<sigv>/Sqrt[T]"}]
Out[272]=
50 100 150 200 250 300T(kev)
1.×10-18
2.×10-18
3.×10-18
4.×10-18
<sigv>/Sqrt[T]
DD->nHe
DD->pT
2 hom2.nb
In[273]:= Plot[{bhfr[i, C0hdpa, C1hdpa, C2hdpa, C3hdpa, C4hdpa, C5hdpa, C6hdpa, C7hdpa]},
{i, 1, 300}, PlotLegends → {"HD->pHe4"}, AxesLabel → {"T(kev)", "<sigv>/Sqrt[T]"}]
Out[273]=
50 100 150 200 250 300T(kev)
5.×10-18
1.×10-17
1.5×10-17
2.×10-17
<sigv>/Sqrt[T]
HD->pHe4
In[274]:= Plot[bhfrpb[T, C0bp3a, C1bp3a, C2bp3a, C3bp3a, C4bp3a, C5bp3a, C6bp3a, C7bp3a],
{T, 0, 400}, PlotLegends → {"pB11->3He4"}, AxesLabel → {"T(kev)", "<sigv>/Sqrt[T]"}]
Out[274]=
100 200 300 400T(kev)
5.×10-18
1.×10-17
1.5×10-17
2.×10-17
<sigv>/Sqrt[T]
pB11->3He4
In[275]:= Plot[bhfr[T, C0tdna, C1tdna, C2tdna, C3tdna, C4tdna, C5tdna, C6tdna, C7tdna],
{T, 1, 100}, PlotLegends → {"DT->nHe4"}, AxesLabel → {"T (kev)", "<sigv>/Sqrt[T]"}]
Out[275]=
20 40 60 80 100T (kev)
2.×10-17
4.×10-17
6.×10-17
8.×10-17
1.×10-16
1.2×10-16
<sigv>/Sqrt[T]
DT->nHe4
In[276]:= hdpa = Table[{i, bhfr[i, C0hdpa, C1hdpa, C2hdpa, C3hdpa, C4hdpa, C5hdpa, C6hdpa, C7hdpa]},
{i, 1, 300, 0.25}];
In[277]:= tdna = Table[{i, bhfr[i, C0tdna, C1tdna, C2tdna, C3tdna, C4tdna, C5tdna, C6tdna, C7tdna]},
{i, 1, 300, 0.25}];
In[278]:= ddnh = Table[{i, bhfr[i, C0ddnh, C1ddnh, C2ddnh, C3ddnh, C4ddnh, C5ddnh, C6ddnh, C7ddnh]},
{i, 1, 300, 0.25}];
hom2.nb 3
In[279]:= ddpt = Table[{i, bhfr[i, C0ddpt, C1ddpt, C2ddpt, C3ddpt, C4ddpt, C5ddpt, C6ddpt, C7ddpt]},
{i, 1, 300, 0.25}];
In[280]:= bp3a = Table[{i, bhfrpb[i, C0bp3a, C1bp3a, C2bp3a, C3bp3a, C4bp3a, C5bp3a, C6bp3a, C7bp3a]},
{i, 1, 300, 0.25}];
In[281]:= Tmaxtdna = tdna[[Flatten@Position[tdna[[ ;; , 2]], Max[tdna[[ ;; , 2]]]] // First, 1]]
Out[281]= 38.75
In[282]:= sigtdnamax = Sqrt[Tmaxtdna] *
bhfr[Tmaxtdna, C0tdna, C1tdna, C2tdna, C3tdna, C4tdna, C5tdna, C6tdna, C7tdna]
Out[282]= 7.87648 × 10-16
In[283]:= (*Tmaxhdpa=hdpa[[Flatten@Position[hdpa[[;;,2]],Max[hdpa[[;;,2]]]]//First,1]]*)
In[284]:= Tmaxhdpa = 100; (*Chosen when <sigmav> starts becoming flat *)
In[285]:=
In[286]:= sighdpamax =
Sqrt[Tmaxhdpa] * bhfr[Tmaxhdpa, C0hdpa, C1hdpa, C2hdpa, C3hdpa, C4hdpa, C5hdpa, 0, 0]
Out[286]= 1.71859 × 10-16
In[287]:= Tmaxddnh = ddnh[[Flatten@Position[ddnh[[ ;; , 2]], Max[ddnh[[ ;; , 2]]]] // First, 1]]
Out[287]= 300.
In[288]:=
In[289]:=
In[290]:= Tmaxddpt = ddpt[[Flatten@Position[ddpt[[ ;; , 2]], Max[ddpt[[ ;; , 2]]]] // First, 1]]
Out[290]= 217.5
In[291]:= sigddnhmax =
Sqrt[Tmaxddpt] * bhfr[Tmaxddpt, C0ddnh, C1ddnh, C2ddnh, C3ddnh, C4ddnh, C5ddnh, 0, 0]
Out[291]= 5.84935 × 10-17
In[292]:= sigddptmax =
Sqrt[Tmaxddpt] * bhfr[Tmaxddpt, C0ddpt, C1ddpt, C2ddpt, C3ddpt, C4ddpt, C5ddpt, 0, 0]
Out[292]= 4.23796 × 10-17
In[293]:= Tmaxbp3a = bp3a[[Flatten@Position[bp3a[[ ;; , 2]], Max[bp3a[[ ;; , 2]]]] // First, 1]]
Out[293]= 295.5
In[294]:= sigbp3amax = Sqrt[Tmaxbp3a] *
bhfrpb[Tmaxbp3a, C0bp3a, C1bp3a, C2bp3a, C3bp3a, C4bp3a, C5bp3a, C6bp3a, C7bp3a]
Out[294]= 3.50386 × 10-16
In[295]:= ionmass[nn_, np_] := 1.008664 * nn + 1.007276 * np
In[296]:= (*Average ion mass calculations*)
4 hom2.nb
In[297]:= aimdd = 0.5 * ionmass[1, 1] + ionmass[1, 1]
Out[297]= 2.01594
In[298]:= aimtd = 0.5 * ionmass[2, 1] + ionmass[1, 1]
Out[298]= 2.52027
In[299]:= aimdh = 0.5 * ionmass[1, 1] + ionmass[1, 2]
Out[299]= 2.51958
In[300]:= aimbp = 0.5 * ionmass[0, 1] + ionmass[6, 5]
Out[300]= 6.04782
In[301]:=
In[302]:= twokb = 2.8^2 * 10^14 * 2.5 * 1.007276
Out[302]= 1.97426 × 1015
In[303]:= ss[aveionmass_, Tmax_] := Sqrttwokb * Tmax aveionmass(*Sound speed*)
In[304]:= sstdna = ss[aimtd, Tmaxtdna]
Out[304]= 1.74227 × 108
In[305]:= ssddnh = ss[aimdd, Tmaxddpt]
Out[305]= 4.61523 × 108
In[306]:= sstdna = ss[aimtd, Tmaxtdna]
Out[306]= 1.74227 × 108
In[307]:= ssddpt = ss[aimdd, Tmaxddpt]
Out[307]= 4.61523 × 108
In[308]:= ssbp3a = ss[aimbp, Tmaxbp3a]
Out[308]= 3.10586 × 108
In[309]:= sshdpa = ss[aimdh, Tmaxhdpa]
Out[309]= 2.79923 × 108
In[310]:= (*zeta function from notes for 2-species plasma, check solution for 1 species plasma
In[310]:= zetatdna = sigtdnamax sstdna * 2 * aimtd * 1.66054 * 10^-24
Out[310]= 0.540121
In[311]:= zetaddnh = 4 * sigddnhmax ssddnh * 2 * aimdd * 1.66054 * 10^-24
Out[311]= 0.0757212
In[312]:= zetaddpt = 4 * sigddptmax ssddpt * 2 * aimdd * 1.66054 * 10^-24
Out[312]= 0.0548614
hom2.nb 5
In[313]:= zetaTotal = zetaddnh + zetaddpt(* DD plasma*)
Out[313]= 0.130583
In[314]:= zetahdpa = sighdpamax sshdpa * 2 * aimdh * 1.66054 * 10^-24
Out[314]= 0.0733714
In[315]:= zetabp3a = sigbp3amax ssbp3a * 2 * aimbp * 1.66054 * 10^-24
Out[315]= 0.0561677
In[316]:= 0
1 x3
1 + A * 1 - x1^2ⅆx
Out[316]= ConditionalExpressionA 6 + A 9 + 2 A - 6 1 + A2 Log[1 + A]
2 A4, Re[A] > -1 || A ∉ Reals
In[317]:= (*Coefficient for fusion energy in TJ *)
In[318]:= Energy[avgmass_, energypr_] := energypr * 1.6 * 10^-25 2 * avgmass * 1.66054 * 10^-24
In[319]:= Energyhdpa = Energy[aimdh, 18.35]
Out[319]= 0.350872
In[320]:= Energybp3a = Energy[aimbp, 8.68]
Out[320]= 0.0691451
In[321]:= Energytdna = Energy[aimtd, 17.6]
Out[321]= 0.336439
In[322]:= Energydd = 0.5 * Energy[aimdd, 7.3]
Out[322]= 0.087228
6 hom2.nb