\(\renewcommand\AA{\text{Å}}\)
Neutron activation¶
periodictable.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.
Example:
>>> 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 half-life 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
2.053
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.
The neutron activation table, activation.dat,[1] contains details about the individual isotopes, with interaction cross sections taken from from IAEA-273[2].
Activation can be run from the command line using:
$ python -m periodictable.activation FORMULA
where FORMULA is the chemical formula for the material.
- 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.
- property epithermal_reduction_factor¶
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
formulas.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 alternativeIAEA1987_isotopic_abundance()
.
- decay_time(target)¶
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.
- periodictable.activation.IAEA1987_isotopic_abundance(iso)¶
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.
- periodictable.activation.NIST2001_isotopic_abundance(iso)¶
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.demo()¶
- 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.
- periodictable.activation.sorted_activity(activity_pair)¶
Interator over activity pairs sorted by isotope then daughter product.