pynucastro.rates.aprox_family_rates module

pynucastro.rates.aprox_family_rates module#

Functions to help construct rate approximations used in the aprox13, aprox19, aprox21 family of reaction networks

pynucastro.rates.aprox_family_rates.make_CO_approx_rates(all_rates, root_nuclei, return_obsolete_rate_names=False)[source]#

We want to model a sequence like:

N - Z
^
|                      X
|                 ... . .
|            ...     .   .
|       ...         .     .
|    S ............E ..... F
|
+------------------------------> Z

This comes up in a few cases:

  • C + C: S = C12, E = Ne20, F = Ng24, X = Na23

  • C + O: S = C12 + O16, E = Mg24, F = Si28, X = Al27

  • O + O: S = O16, E = Si28, F = S32, X = P31

We start with 5 rates (+ their inverses):

  • λ1 = S(S,p)X

  • λ2 = S(S,α)E

  • λ3 = X(p,α)E

  • λ4 = X(p,γ)F

  • λ5 = E(α,γ)F

and we want to combine these into 3 effective rates (and their inverses) by eliminating X assuming equilibrium.

The resulting effective rates are:

  • S(S,p)X(p,γ)F

  • S(S,α)E + S(S,p)X(p,α)E

  • E(α,γ)F + E(α,p)X(p,γ)F

Parameters:
  • all_rates (list(Rate)) – the collection of rates that we will use for finding λ1 through λ5 and their inverses. This could be via Library.get_rates or RateCollection.get_rates.

  • root_nuclei (str) – the identity of nucleus A in this approximation. This can be “C”, “CO” or “O”

  • return_obsolete_rate_names (bool) – Do we return a list of rates names that can be removed if we use these approximate rates?

Returns:

  • approximate_rates (list(ApproximateRate)) – A list of the approximated rates

  • obsolete_rates (list(str), optional) – A list of the rate names, in the form “A(x,y)B” that are obsoleted by the new approximate rates.