Neutron activation


Calculate expected neutron activation from time spent in beam line.

Notation information for activation product:

m, m1, m2: indicate metastable states. Decay may be to the ground state or to another nuclide.

+: indicates radioactive daughter production already included in daughter listing several parent t1/2’s required to acheive calculated daughter activity. All activity assigned at end of irradiation. In most cases the added activity to the daughter is small.

*: indicates radioactive daughter production NOT calculated, approximately secular equilibrium

s: indicates radioactive daughter of this nuclide in secular equilibrium after several daughter t1/2’s

t: indicates transient equilibrium via beta decay. Accumulation of that nuclide during irradiation is separately calculated.

Reaction = b indicates production via decay from an activation produced parent

Accounts for burnup and 2n, g production.

This is only a gross estimate. Many effects are not taken into account, such as self-shielding in the sample and secondary activation from the decay products.


>>> from periodictable import activation
>>> env = activation.ActivationEnvironment(fluence=1e5, Cd_ratio=70, fast_ratio=50, location="BT-2")
>>> sample = activation.Sample("Co30Fe70", 10)
>>> sample.calculate_activation(env, exposure=10, rest_times=[0, 1, 24, 360])
>>> sample.show_table()
                                      ----------------- activity (uCi) ------------------
isotope  product  reaction T1/2 (hrs)        0 hrs        1 hrs       24 hrs      360 hrs
-------- -------- -------- ---------- ------------ ------------ ------------ ------------
Co-59    Co-60         act    5.272 y     0.000496     0.000496    0.0004958    0.0004933
Co-59    Co-60m+       act     10.5 m        1.664       0.0317          ---          ---
-------- -------- -------- ---------- ------------ ------------ ------------ ------------
                                total        1.665      0.03221    0.0005084     0.000505
-------- -------- -------- ---------- ------------ ------------ ------------ ------------

>>> print("%.3f"%sample.decay_time(0.001)) # number of hours to reach 1 nCi

The default rest times used above show the sample activity at the end of neutron activation and after 1 hour, 1 day, and 15 days.

Activation cross sections are mostly from IAEA-273[#IAEA1987]. See activation.dat in the package directory for details on individual isotopes.

Activation can be run from the command line using:

$ python -m periodictable.activation FORMULA

where FORMULA is the chemical formula for the material.

..[#IAEA1987] IAEA (1987) Handbook on Nuclear Activation Data. TR 273 (International Atomic Energy Agency, Vienna, Austria, 1987).

class periodictable.activation.ActivationEnvironment(fluence=100000.0, Cd_ratio=0.0, fast_ratio=0.0, location='')

Bases: object

Neutron activation environment.

The activation environment provides details of the neutron flux at the sample position.

fluence : float | n/cm^2/s

Thermal neutron fluence on sample. For COLD neutrons enter equivalent thermal neutron fluence.

Cd_ratio : float

Neutron cadmium ratio. Use 0 to suppress epithermal contribution.

fast_ratio : float

Thermal/fast ratio needed for fast reactions. Use 0 to suppress fast contribution.

Used as a multiplier times the resonance cross section to add to the thermal cross section for all thermal induced reactions.

class periodictable.activation.ActivationResult(**kw)

Bases: object

class periodictable.activation.Sample(formula, mass, name=None)

Bases: object

Sample properties.

formula : chemical formula

Chemical formula. Any format accepted by periodictable.formula() can be used, including formula string.

mass : float | g

Sample mass.

name : string

Name of the sample (defaults to formula).
calculate_activation(environment, exposure=1, rest_times=(0, 1, 24, 360), abundance=<function NIST2001_isotopic_abundance>)

Calculate sample activation after exposure to a neutron flux.

environment is the exposure environment.

exposure is the exposure time in hours (default is 1 h).

rest_times is the list of deactivation times in hours (default is [0, 1, 24, 360]).

abundance is a function that returns the relative abundance of an isotope. By default it uses NIST2001_isotopic_abundance(), and there is the alternative IAEA273_isotopic_abundance().


After determining the activation, compute the number of hours required to achieve a total activation level after decay.

show_table(cutoff=0.0001, format='%.4g')

Tabulate the daughter products.

cutoff=1 : float | uCi

The minimum activation value to show.

format=”%.1f” : string

The number format to use for the activation.

Isotopic abundance in % from the IAEA, as provided in the activation.dat table.

Note: this will return an abundance of 0 if there is no neutron activation for the isotope even though for isotopes such as H[1], the natural abundance may in fact be rather large.

IAEA 273: Handbook on Nuclear Activation Data, 1987.


Isotopic abundance in % from the periodic table package.

Böhlke, et al. Isotopic Compositions of the Elements, 2001. J. Phys. Chem. Ref. Data, Vol. 34, No. 1, 2005

periodictable.activation.activity(isotope, mass, env, exposure, rest_times)

Compute isotope specific daughter products after the given exposure time and rest period.

periodictable.activation.find_root(x, f, df, max=20, tol=1e-10)

Find zero of a function.

Returns when \(|f(x)| < tol\) or when max iterations have been reached, so check that \(|f(x)|\) is small enough for your purposes.

Returns x, f(x).

periodictable.activation.init(table, reload=False)

Add neutron activation levels to each isotope.


Interator over activity pairs sorted by isotope then daughter product.