## Modifying reaction rates during network calculation

One of the questions we often have in running a network calculation, such as described in the post about our first network calculation, is what is the effect of a particular reaction? We can easily get a good idea by varying that reaction rate by some factor and seeing the effect on the yield of some isotope of interest. This is easily done with NucNet Tools through the use of rate modification views.

We'll do this by following the steps in the post on modifying input with NucNet Tools example code. Since we'll use a network only up to and including neon, we use the examples/misc code create_zone_xml_from_text, as described in the post:

./create_zone_xml_from_text ../../data_pub/my_net.xml Lodders.txt ../../data_pub/zone.xml "abundances" "[z <= 10]"

We will now run our calculation like in the previous post but with modifications on reaction rates. The first modification will be that we will increase the (p,γ) reaction rate on all isotopes of elements with proton number less than or equal to that of oxygen by a factor of 10. The second will be that we will increase β+ decay rates (in which a positron is emitted) by a factor of 100. To do this, we create two rate modification views. The first has a nuclide xpath expression [z <= 8] to select out isotopes of elements with Z <= 8 and a reaction xpath expression [reactant = 'h1' and product = 'gamma'] to select out the (p,γ) reactions. The factor 10 is applied to all valid reactions in this particular view. When the code solves the network calculation, it will multiply the forward rate for all reactions in this view at all temperatures by a factor of 10. It will also multiply the reverse rate at all temperatures by the same factor of 10. This is so that the system would come into the same equilibrium as before, as required since the equilibrium does not depend on reaction rates, only on nuclear binding energies and partition functions.

The second view, the one of β+ reactions on all such decaying species in the network is chosen with the nuclide xpath expression [..] and the reaction xpath expression [product = 'positron']. We will increase the rates (only the forward since there is no reverse for these reactions) by a factor of 100.

We create a new props.txt file. The difference from the one in the previous post is the addition of the lines

```nuclide xpath
rate modification view
1
[z <= 8]

reaction xpath
rate modification view
1
[reactant = 'h1' and product = 'gamma']

factor
rate modification view
1
10
```

which defines modification view 1 and the lines

```nuclide xpath
rate modification view
2
[..]

reaction xpath
rate modification view
2
[product = 'positron']

factor
rate modification view
2
100
```

which defines modification view 2. Notice the 1 common to all entries in the first view and the 2 common to all entries for the second view. These are the view ids.

We can now add these properties to the input zone.xml file, as before:

./add_properties_to_zone_xml ../../data_pub/my_net.xml ../../data_pub/zone.xml 0 0 0 props.txt ../../data_pub/zone.xml

It is worth noting how the nuclide xpath property for view 2 in the resulting ../../data_pub/zone.xml file looks like [z &lt;= 8] instead of [z <= 8]. This is XML escaping. Here, the symbol < is reserved in XML (it is the opening for a tag). It gets replaced by &lt;. You'll need to remember this in case you choose to edit your zone.xml by hand.

With the new zone.xml file available, we run the calculation as before:

cd ../network

./run_single_zone ../../data_pub/my_net.xml ../../data_pub/zone.xml my_output.xml "[z <= 10]"

When the calculation starts, the code prints the reactions and their rate modification factors to the screen before evolving the abundances:

```Rate modification view 1:

Reaction                         Modification Factor
h1 + b10 -> c11 + gamma                                  1.0000e+01
h1 + b11 -> c12 + gamma                                  1.0000e+01
h1 + b8 -> c9 + gamma                                    1.0000e+01
h1 + be10 -> b11 + gamma                                 1.0000e+01
h1 + be7 -> b8 + gamma                                   1.0000e+01
h1 + be9 -> b10 + gamma                                  1.0000e+01
h1 + c11 -> n12 + gamma                                  1.0000e+01
h1 + c12 -> n13 + gamma                                  1.0000e+01
h1 + c13 -> n14 + gamma                                  1.0000e+01
h1 + c14 -> n15 + gamma                                  1.0000e+01
h1 + h2 -> he3 + gamma                                   1.0000e+01
h1 + h3 -> he4 + gamma                                   1.0000e+01
h1 + li6 -> be7 + gamma                                  1.0000e+01
h1 + n12 -> o13 + gamma                                  1.0000e+01
h1 + n13 -> o14 + gamma                                  1.0000e+01
h1 + n14 -> o15 + gamma                                  1.0000e+01
h1 + n15 -> o16 + gamma                                  1.0000e+01
n + h1 + he4 -> li6 + gamma                              1.0000e+01
n + h1 -> h2 + gamma                                     1.0000e+01

Rate modification view 2:

Reaction                         Modification Factor
b8 -> he4 + he4 + positron + neutrino_e                  1.0000e+02
c10 -> b10 + positron + neutrino_e                       1.0000e+02
c11 -> b11 + positron + neutrino_e                       1.0000e+02
c9 -> h1 + he4 + he4 + positron + neutrino_e             1.0000e+02
f17 -> o17 + positron + neutrino_e                       1.0000e+02
f18 -> o18 + positron + neutrino_e                       1.0000e+02
h1 + h1 -> h2 + positron + neutrino_e                    1.0000e+02
h1 + he3 -> he4 + positron + neutrino_e                  1.0000e+02
n11 -> c11 + positron + neutrino_e                       1.0000e+02
n12 -> c12 + positron + neutrino_e                       1.0000e+02
n13 -> c13 + positron + neutrino_e                       1.0000e+02
ne17 -> f17 + positron + neutrino_e                      1.0000e+02
ne17 -> h1 + o16 + positron + neutrino_e                 1.0000e+02
ne18 -> f18 + positron + neutrino_e                      1.0000e+02
ne19 -> f19 + positron + neutrino_e                      1.0000e+02
o13 -> h1 + c12 + positron + neutrino_e                  1.0000e+02
o13 -> n13 + positron + neutrino_e                       1.0000e+02
o14 -> n14 + positron + neutrino_e                       1.0000e+02
o15 -> n15 + positron + neutrino_e                       1.0000e+02
```

Note that two of the reactions in view 2 are not simple β+ decays but rather two body reactions with a subsequent β+ decay of the daughter, namely, h1 + h1 -> h2 + positron + neutrino_e and h1 + he3 -> he4 + positron + neutrino_e. We can eliminate those with the more correct reaction xpath expression for view 2 of [(count(reactant) = 1) and (product = 'positron')], which selects only the reactions with positrons as products but only one reactant.

When we analyze the result of this network calculation, as before, we can create the following graph. It shows the mass fraction of 4He in the present calculation (solid line) versus that in the cno calculation with unmodified rates:

The 10 times faster rates for (p,γ) reactions on C, N, and O isotopes have led to a ~10 times faster synthesis of 4He by CNO burning. Try looking at the other isotopes or using different rate modifications.

Posted by 2013-02-21
• Anonymous - 2013-05-02

Hi,

I have tried to modify the reaction rate of only one isotope in the full network, by using in the properties text file:

nuclide xpath
rate modification view
1
[(z = 26) and (a = 56)]

but it did not work... I also tried to specify something like:
[(z = 26) and (n = 30)]

and also:

[nuclide = 'fe56']

but none of them worked...
However, the xpath expression:
[z <= 28]
did work fine.

Thus, my question is, is there any way to modify the reaction rate of only one isotope? and if yes, how can one provide a convenient nuclide xpath...

Thanks!

• Bradley S. Meyer - 2013-05-03

Thanks for your question. This trick is to be sure to think of the nuclide xpath expression as selecting out a subnetwork. For example, if you would like to select the reaction fe56 + n -> fe57, you need the subnetwork of fe56, n, and fe57. Thus, you could use

```nuclide xpath
rate modification view
1
[(z = 26 and a = 56) or (z = 26 and a = 57) or (z = 0 and a = 1)]
```

In normal speaking, this corresponds to "select the nuclide view with species (z = 26 and a = 56) or with (z = 26 and a = 57) or with (z = 0 and a = 1)". If you wanted to use neutron number, since the data don't explicitly include the neutron number, you type

```nuclide xpath
rate modification view
1
[(z = 26 and a - z = 30) or (z = 26 and a - z = 31) or (z = 0 and a - z = 1)]
```

You can modify all (n,gamma) reactions on Fe isotopes with

```nuclide xpath
rate modification view
1
[(z = 26) or (z = 0 and a = 1)]
```

You could also select fe56 + n -> fe57 with the reaction xpath:

```nuclide xpath
rate modification view
1
[..]

reaction xpath
rate modification view
1
[reactant = 'fe56' and reactant = 'n' and product = 'gamma']
```

You can always practice the xpath expressions with libnucnet examples. For example, in the nucnet-tools-code/libnucnet directory (you have to make these according to the instructions in the previous post), I can run

./print_forward_and_reverse_at_t9 ../data_pub/my_net.xml 1. "[(z = 26 and a = 56) or (z = 26 and a = 57) or (z = 0 and a = 1)]" ""

This selects fe56 + n -> fe57 by the nuclide xpath. Alternatively, you could type

./print_forward_and_reverse_at_t9 ../data_pub/my_net.xml 1. "" "[reactant = 'fe56' and reactant = 'n' and product = 'gamma']"

If you type

./print_forward_and_reverse_at_t9 ../data_pub/my_net.xml 1. "" "[reactant = 'fe56' and reactant = 'n']"

you will select out two reactions, fe56 + n -> fe57 and fe56 + n -> he4 + cr53; thus, you need to be careful to be sufficiently selective.

In summary, think of the nuclide xpath as selecting a subnetwork and be careful to be sufficiently selective if you use the reaction xpath.

I hope this helps. Best wishes.

Last edit: Bradley S. Meyer 2013-05-03

Anonymous