Computing the Screened Triple-alpha rate

Computing the Screened Triple-alpha rate#

We want to evaluate the 3-\(\alpha\) rate with screening to understand how temperature sensitive it is. We’ll do this 2 different ways (but both will get the same answer).

import pynucastro as pyna

We’ll define the thermodynamics first – a composition of just He and C

temp = 1.e8
dens = 1.e6
he4 = pyna.Nucleus("he4")
c12 = pyna.Nucleus("c12")

nuclei = [he4, c12]
comp = pyna.Composition(nuclei)
comp.X[he4] = 0.9
comp.X[c12] = 0.1

fig = comp.plot()
../_images/1e5b5284634ed60ecf90b1af735ad5c4866e57e3609967f5ae79fcefd33c9f44.png

Manual method#

Here well read in this rate and compute the screening factors ourselves and then build up the full form of the rate

rl = pyna.ReacLibLibrary()
triple_alpha = rl.get_rate_by_name("a(aa,)c12")

Here’s the temperature sensitivity of just the 3-\(\alpha\) rate

fig = triple_alpha.plot(Tmin=5.e7)
../_images/9dcf3fbe992f679557eb6fd6e6e41131f391ef26020593c1d8e2a9ed5c2fa97f.png

To compute the screening, we first need to get the plasma state

plasma = pyna.make_plasma_state(temp, dens, comp.get_molar())

Now, the 3-\(\alpha\) rate requires 2 separate screening terms, first \(\alpha + \alpha\) and then \(\alpha + {}^8\mathrm{Be}\)

scn_fac1 = pyna.make_screen_factors(he4, he4)
scn1 = pyna.screening.screen5(plasma, scn_fac1)

scn_fac2 = pyna.make_screen_factors(he4, pyna.Nucleus("be8"))
scn2 = pyna.screening.screen5(plasma, scn_fac2)

scn = scn1 * scn2
scn
5.802207275136419

This shows that our our thermodynamic conditions, screening speeds up the rate by almost \(6\times\).

Now, the total rate is:

\[r = f \rho^2 [Y({}^4\mathrm{He})]^3 \frac{N_A^2 \langle \sigma v \rangle}{3!}\]

where \(f\) is the screening factor and the \(3!\) is because there are 3 identical particles appearing in the reation.

We get \(N_A^2 \langle \sigma v \rangle\) by evaluating the temperature sensitivity of the rate from ReacLib.

r = scn * dens**2 / 6.0 * comp.get_molar()[he4]**3 * triple_alpha.eval(temp)
r
2.2474377346308396e-14

This is the rate in units of \(\mathrm{cm}^{-3}~\mathrm{s}^{-1}\)

Computing it via a RateCollection#

We can build a simple RateCollection containing only this rate

rc = pyna.RateCollection(rates=[triple_alpha])
fig = rc.plot()
Ignoring fixed x limits to fulfill fixed data aspect with adjustable data limits.
../_images/ab68a6e629431ca1ebe6eefb71c47ca14f3362e6ba8da6ba5e4fb2f1344fba20.png

The evaluate_rates() method will take the thermodynamic state and screening function (optionally) and compute the value of each of the rates in the network.

rc.evaluate_rates(dens, temp, comp, screen_func=pyna.screening.screen5)
{He4 + He4 + He4 ⟶ C12 + 𝛾: 2.2474377346308393e-14}

We see that we get the same value as computing it manually.