Inert Nuclei

Inert Nuclei#

In many simulation codes, the reaction network determines the composition that is carried in each zone, and advected through the domain. Sometimes we need a particular nucleus to describe the composition in a region that does not burn–pynucastro allows a network to contain inert nuclei for this purpose.

An inert nucleus is part of the network but its evolution equation is set to 0.

As an example, consider a network that can describe simple He burning in an accreted layer on a neutron star. We want the 3-\(\alpha\) region, but we also want a heavy, iron-group nucleus to represent the underlying neutron star.

import pynucastro as pyna

First we’ll create a library with just the rates we want evolved (just 3-\(\alpha\) for this example).

rl = pyna.ReacLibLibrary()
three_alpha = rl.get_rate_by_name("a(aa,g)c12")
lib = pyna.Library(rates=[three_alpha])

Now we’ll create the network, and explicitly pass in the list of inert nuclei. We’ll use \({}^{56}\mathrm{Fe}\)

net = pyna.PythonNetwork(libraries=lib, inert_nuclei=["fe56"])
net.summary()
Network summary
---------------
  explicitly carried nuclei: 3
  approximated-out nuclei: 0
  inert nuclei (included in carried): 1

  total number of rates: 1

  rates explicitly connecting nuclei: 1
  hidden rates: 0

  reaclib rates: 1
  tabular rates: 0
  approximate rates: 0
  derived rates: 0
  modified rates: 0
  custom rates: 0

We can look at the evolution equation for iron

ydot = net.full_ydot_string(pyna.Nucleus("fe56"))
print(ydot)
dYdt[jfe56] = 0.0

This shows that, even though iron is part of the network, it won’t react.