ACE Reader

Download the full notebook.

ace

ACE Module

This notebook demonstrates basic usage of the pyne.ace module.

In [1]:
import os
import matplotlib.pyplot as plt
import pyne.ace
import requests
url = "https://www-nds.iaea.org/wolfram/w180/beta3/W180.ace"
r = requests.get(url)
with open("W180.ace", "wb") as outfile:
    outfile.write(r.content)

The main class in pyne.ace is called Library. It is instantiated using the name of an ACE file, in this case one distributed with MCNP.

In [2]:
lib = pyne.ace.Library('W180.ace')

One can choose to read all tables in the file or selectively read a subset by specifying an argument to the read method.

In [3]:
lib.read('74180.21c')

After the call to read(), the Library instance will have a dictionary called tables.

In [4]:
lib.tables
Out[4]:
{'74180.21c': <ACE Continuous-E Neutron Table: 74180.21c>}
In [5]:
w180 = lib.tables['74180.21c']

Once a table is selected, we can inspect, e.g., the energy grid and the total cross section.

In [6]:
w180.energy
Out[6]:
array([1.00000e-11, 1.03125e-11, 1.06250e-11, ..., 5.00000e+01,
       5.50000e+01, 6.00000e+01])
In [7]:
w180.sigma_t
Out[7]:
array([1544.50481   , 1520.95229   , 1498.44763   , ...,    4.17220824,
          4.26476628,    4.3440783 ])

To get data on a reaction, such as fission or $(n,2n)$, there is an attribute called reactions.

In [8]:
w180.reactions
Out[8]:
OrderedDict([(2, <ACE Reaction: MT=2 (z,elastic)>),
             (5, <ACE Reaction: MT=5 >),
             (16, <ACE Reaction: MT=16 >),
             (17, <ACE Reaction: MT=17 >),
             (22, <ACE Reaction: MT=22 >),
             (24, <ACE Reaction: MT=24 >),
             (28, <ACE Reaction: MT=28 >),
             (41, <ACE Reaction: MT=41 >),
             (51, <ACE Reaction: MT=51 >),
             (52, <ACE Reaction: MT=52 >),
             (53, <ACE Reaction: MT=53 >),
             (54, <ACE Reaction: MT=54 >),
             (55, <ACE Reaction: MT=55 >),
             (56, <ACE Reaction: MT=56 >),
             (57, <ACE Reaction: MT=57 >),
             (58, <ACE Reaction: MT=58 >),
             (59, <ACE Reaction: MT=59 >),
             (60, <ACE Reaction: MT=60 >),
             (61, <ACE Reaction: MT=61 >),
             (62, <ACE Reaction: MT=62 >),
             (63, <ACE Reaction: MT=63 >),
             (91, <ACE Reaction: MT=91 >),
             (102, <ACE Reaction: MT=102 >),
             (103, <ACE Reaction: MT=103 >),
             (107, <ACE Reaction: MT=107 >),
             (203, <ACE Reaction: MT=203 >),
             (207, <ACE Reaction: MT=207 >),
             (444, <ACE Reaction: MT=444 >),
             (600, <ACE Reaction: MT=600 >),
             (601, <ACE Reaction: MT=601 >),
             (602, <ACE Reaction: MT=602 >),
             (603, <ACE Reaction: MT=603 >),
             (604, <ACE Reaction: MT=604 >),
             (605, <ACE Reaction: MT=605 >),
             (606, <ACE Reaction: MT=606 >),
             (607, <ACE Reaction: MT=607 >),
             (608, <ACE Reaction: MT=608 >),
             (609, <ACE Reaction: MT=609 >),
             (610, <ACE Reaction: MT=610 >),
             (611, <ACE Reaction: MT=611 >),
             (612, <ACE Reaction: MT=612 >),
             (613, <ACE Reaction: MT=613 >),
             (614, <ACE Reaction: MT=614 >),
             (615, <ACE Reaction: MT=615 >),
             (616, <ACE Reaction: MT=616 >),
             (617, <ACE Reaction: MT=617 >),
             (618, <ACE Reaction: MT=618 >),
             (619, <ACE Reaction: MT=619 >),
             (620, <ACE Reaction: MT=620 >),
             (621, <ACE Reaction: MT=621 >),
             (622, <ACE Reaction: MT=622 >),
             (623, <ACE Reaction: MT=623 >),
             (624, <ACE Reaction: MT=624 >),
             (649, <ACE Reaction: MT=649 >),
             (800, <ACE Reaction: MT=800 >),
             (801, <ACE Reaction: MT=801 >),
             (802, <ACE Reaction: MT=802 >),
             (803, <ACE Reaction: MT=803 >),
             (804, <ACE Reaction: MT=804 >),
             (805, <ACE Reaction: MT=805 >),
             (806, <ACE Reaction: MT=806 >),
             (807, <ACE Reaction: MT=807 >),
             (808, <ACE Reaction: MT=808 >),
             (809, <ACE Reaction: MT=809 >),
             (810, <ACE Reaction: MT=810 >),
             (811, <ACE Reaction: MT=811 >),
             (812, <ACE Reaction: MT=812 >),
             (813, <ACE Reaction: MT=813 >),
             (814, <ACE Reaction: MT=814 >),
             (815, <ACE Reaction: MT=815 >),
             (816, <ACE Reaction: MT=816 >),
             (817, <ACE Reaction: MT=817 >),
             (818, <ACE Reaction: MT=818 >),
             (819, <ACE Reaction: MT=819 >),
             (820, <ACE Reaction: MT=820 >),
             (821, <ACE Reaction: MT=821 >),
             (822, <ACE Reaction: MT=822 >),
             (823, <ACE Reaction: MT=823 >),
             (824, <ACE Reaction: MT=824 >),
             (825, <ACE Reaction: MT=825 >),
             (826, <ACE Reaction: MT=826 >),
             (827, <ACE Reaction: MT=827 >),
             (828, <ACE Reaction: MT=828 >),
             (829, <ACE Reaction: MT=829 >),
             (830, <ACE Reaction: MT=830 >),
             (831, <ACE Reaction: MT=831 >),
             (832, <ACE Reaction: MT=832 >),
             (833, <ACE Reaction: MT=833 >),
             (834, <ACE Reaction: MT=834 >),
             (849, <ACE Reaction: MT=849 >)])
In [9]:
elastic = w180.reactions[2]

An instance of a Reaction contains the reaction cross section and any angular or energy distributions that may be present.

In [10]:
elastic.sigma
Out[10]:
array([43.83981, 43.20029, 42.58963, ...,  1.9508 ,  2.0991 ,  2.2343 ])

With the energy grid (stored on the table), and the cross section (stored on the reaction), one can generate plots of the cross section.

In [11]:
plt.loglog(w180.energy, elastic.sigma)
Out[11]:
[<matplotlib.lines.Line2D at 0x7f5e13830ef0>]
In [ ]: