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/43e52e5bd8a0313755ae062ff22f336874e46386b2d3f70cf57daaf32100efe1.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.7/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.7/x64/lib/python3.14/site-packages/pynucastro/networks/python_network.py:496: UserWarning: Attempt to set non-positive xlim on a log-scaled axis will be ignored.
  ax.set_xlim(tmin, tmax)
_images/e690f2b279eaa42e817c671776f5691e39f55afc37c99a80cfa40ccb39133a97.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/afc2749e43671e0e04619c4f849d7ea7955782be64a36e4a0eba892715869eb3.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.7/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/91ee126f4ed880aed556dcff24282c27f878df3bd4eaaf63f590e3be98e85d56.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.