Carbon burning products

Carbon burning products#

O/Ne white dwarfs have small amounts of Na, Mg, and other nuclei which are the products of carbon burning.

These will be the seed nuclei for the Urca process in our O/Ne white dwarfs.

Let’s do a one-zone C/O burn to see what these end products are.

import pynucastro as pyna

The major C burning processes are:

\[\begin{split}\begin{split}{}^{12}\mathrm{C} + {}^{12}\mathrm{C} \rightarrow \begin{cases} {}^{20}\mathrm{Ne} + \alpha \\ {}^{23}\mathrm{Na} + p \\ {}^{23}\mathrm{Mg} + n \end{cases} \end{split}\end{split}\]

We’ll include some other Ne, Na, and Mg isotopes as well.

net = pyna.network_helper(["p", "he4", "n",
                           "c12", "o16",
                           "ne20", "ne21", "ne22",
                           "na21", "na22", "na23",
                           "mg23", "mg24", "mg25",
                           "al27", "si28"])
fig = net.plot(rotated=True)
_images/80fee497d1d725f343ed7f1573ba5ae58ce3b3e7675caa1deef1c757a692fe00.png

We’ll assume conditions where we expect C burning to occur. Our results will be very sensitive to temperature.

comp = pyna.Composition(net.unique_nuclei)
comp.X[pyna.Nucleus("c12")] = 0.5
comp.X[pyna.Nucleus("o16")] = 0.5
rho = 1.e8
T = 1.e9

Now we can burn, assuming that the thermodynamic conditions are fixed.

tmax = 1.e5
sol = net.integrate_network(tmax, rho, T, comp.get_molar_array(), atol=1.e-10)
/opt/hostedtoolcache/Python/3.14.5/x64/lib/python3.14/site-packages/pynucastro/rates/derived_rate.py:125: UserWarning: C12 partition function is not supported by tables: set log_pf = 0.0 by default
  warnings.warn(UserWarning(f'{nuc} partition function is not supported by tables: set log_pf = 0.0 by default'))
fig = sol.plot_evolution(three_level_style=True, ymin=1.e-6)
/opt/hostedtoolcache/Python/3.14.5/x64/lib/python3.14/site-packages/pynucastro/networks/python_network.py:412: UserWarning: Attempt to set non-positive xlim on a log-scaled axis will be ignored.
  ax.set_xlim(tmin, tmax)
_images/7ce9abb88fc70286e1aa3e5b23c3346402ab33201a587317d1a75de91a2456d0.png

We can access the mass fractions at the final time (the -1 in the temporal index)

X = sol.X[:, -1]
X
array([3.38751224e-22, 1.65082670e-17, 3.96382795e-12, 2.97792196e-02,
       2.74934547e-01, 5.67725355e-01, 3.32497954e-04, 1.19597671e-04,
       4.82001646e-09, 9.41848870e-06, 6.51458531e-03, 1.63783991e-09,
       1.11145073e-01, 2.66979319e-03, 1.14896355e-04, 6.65500990e-03])

We can visualize the fractions of the final composition:

comp = pyna.Composition(net.unique_nuclei)
comp.set_array(X)
fig = comp.plot(trace_threshold=5.e-3)
_images/5bc0f4c4aa776f5d35059ad05fb7a789a86cb2db9f444b8956958cde50b30237.png

Now we see that the major products after \({}^{20}\mathrm{Ne}\) are \({}^{24}\mathrm{Mg}\) and then the two Urca nuclei we will focus on: \({}^{23}\mathrm{Na}\) and \({}^{25}\mathrm{Mg}\).

Important

Our O/Ne WD should have traces abundances of \({}^{23}\mathrm{Na}\), \({}^{24}\mathrm{Mg}\), and \({}^{25}\mathrm{Mg}\).

fig = net.plot(rho=rho, T=T, comp=comp, rotated=True,
               color_nodes_by_abundance=True,
               use_net_rate=True)
/opt/hostedtoolcache/Python/3.14.5/x64/lib/python3.14/site-packages/pynucastro/rates/derived_rate.py:125: UserWarning: C12 partition function is not supported by tables: set log_pf = 0.0 by default
  warnings.warn(UserWarning(f'{nuc} partition function is not supported by tables: set log_pf = 0.0 by default'))
_images/4577513af676a918f96db4dea37d62a83ce5ca1254797a6543c6de9ba69d4d39.png

We see that \({}^{23}\mathrm{Na}\) is primarily made by \({}^{12}\mathrm{C} + {}^{12}\mathrm{C}\) while \({}^{25}\mathrm{Mg}\) is made via \((n,\gamma)\) and \((\alpha, n)\) reactions.