Adding Rates from the Literature

Adding Rates from the Literature#

New rate measurements that appear in papers can take a while (years) before they are picked up by one of the major libraries (ReacLib or StarLib).

If these rates are given in ReacLib fit format or as a tabulation (temperature, rate), then it is very easy to add these to pynucastro and use them in your networks.

Rates in ReacLib format#

If a paper provides a rate in ReacLib format, it is straightforward to add the rate following the model in alternate_rates, but subclassing ReacLibRate. Then you just need to pass the reactants, products, and SingleSet objects into the constructor. An example is, for a hypothetical process \(A(B,\gamma)C\) would be:

class NewRate(ReacLibRate):

   def __init__(self):

       reactants = ["A", "B"]
       products = ["C"]

       labelprops = "newrate"

       sets = []
       sets.append(SingleSet([a0, a1, a2, a3, a4, a5, a6],
                             labelprops=labelprops))

       super().__init__(reactants=reactants,
                        products=products,
                        sets=sets,
                        label="newrate")

Where sets can contain as many SingleSet objects as needed to describe the rate.

Tabulated Rates#

For rates that are given in terms of \((T, \lambda)\) pairs, we can subclass TemperatureTabularRate.

Important

The data must be given as natural logs, e.g., \((\ln(T_9), \ln(\lambda)\).

For example, for a hypothetical process \(A(B,\gamma)C\) we could do:

class NewRate(TemperatureTabularRate):

   def __init__(self):

       reactants = ["A", "B"]
       products = ["C"]

       labelprops = "newrate"

       T9 = np.array([1, 2, 3, 4])
       rate = np.array([1.e-20, 1.e-15, 1.e-10, 1.e-5])

       super().__init__(np.log(T9), np.log(rate),
                        reactants=reactants,
                        products=products,
                        label="newrate")

where the rate data is provided in the NumPy arrays T9 and rate.