me 533 introduction to icf assignment 2 solutions problem 1

22
ME 533 Introduction to ICF Assignment 2 solutions Problem 1 From lecture notes ̇ ̇ = < > with = + and = + See attached python notebook. 1) DD plasma =

Upload: others

Post on 08-Apr-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

ME 533 Introduction to ICF

Assignment 2 solutions

Problem 1

From lecture notes

�̇�𝒊𝒏

�̇�𝒐𝒖𝒕=

𝜺𝒏𝟏𝒏𝟐 < 𝝈𝒗 >

𝑪𝑩𝒁𝒆𝒇𝒇𝒏𝒆𝟐√𝑻

with 𝒏𝒆 = 𝒁𝟏𝒏𝟏 + 𝒁𝟐𝒏𝟐 and 𝒁𝒆𝒇𝒇 =𝒁𝟏

𝟐𝒏𝟏𝟐+𝒁𝟐

𝟐𝒏𝟐𝟐

𝒏𝒆

See attached python notebook.

1) DD plasma 𝑻∗ = 𝟒𝟖 𝒌𝒆𝑽

2) D-He3 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.

1) DD plasma

𝑻𝒎𝒂𝒙 = 𝟐𝟏𝟕. 𝟓 keV

𝜽 =𝝆𝑹

𝟑𝟎.𝟔𝟑+𝝆𝑹

𝑬𝒇 = 𝟎. 𝟎𝟖𝟕 𝑴𝒕𝒐𝒕𝒌𝒈 𝝆𝑹

𝟑𝟎. 𝟔𝟑 + 𝝆𝑹 𝑻𝑱

2) He-D plasma

𝑻𝒎𝒂𝒙 = 𝟏𝟎𝟎 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