Skip to content

decay

Half-lives, decay constants, atomic masses and alpha branching.

decay

Half-lives, decay constants and atomic masses.

The vendored tables are ENDF/B-VIII.0 half-lives and AME2020 atomic masses, both regenerated by tools/build_decay_data.py. Nothing here reaches the network.

A depletion study's own chain file can be substituted with from_chain_xml, which matters when reproducing numbers from a run exactly: recent OpenMC takes half-lives from the chain rather than from ENDF, and the two disagree for some nuclides.

Classes:

  • UnknownNuclideError

    Raised when a nuclide is absent from the decay data tables.

  • DecayData

    Half-life and atomic mass lookups for a set of nuclides.

Functions:

  • half_life

    Half-life in seconds from the default tables, None if stable.

  • decay_constant

    Decay constant in 1/s from the default tables, zero if stable.

  • atomic_mass

    Relative atomic mass in u from the default tables.

  • is_radioactive

    Whether the nuclide is radioactive according to the default tables.

  • alpha_fraction

    Fraction of decays proceeding by alpha emission, from the default tables.

UnknownNuclideError

UnknownNuclideError(name: str, what: str)

Bases: KeyError

Raised when a nuclide is absent from the decay data tables.

DecayData

DecayData(half_lives: Mapping[str, float] | None = None, atomic_masses: Mapping[str, float] | None = None)

Half-life and atomic mass lookups for a set of nuclides.

Parameters:

  • half_lives

    (Mapping[str, float] | None, default: None ) –

    Half-lives in seconds keyed by canonical nuclide name. A nuclide present in atomic_masses but absent here is stable.

  • atomic_masses

    (Mapping[str, float] | None, default: None ) –

    Relative atomic masses in u keyed by canonical name.

Methods:

  • from_chain_xml

    Take half-lives from an OpenMC depletion chain file.

  • with_overrides

    Return a copy with some half-lives replaced.

  • knows

    Whether the tables cover this nuclide at all.

  • half_life

    Return the half-life in seconds, or None if the nuclide is stable.

  • decay_constant

    Return the decay constant in 1/s, zero for a stable nuclide.

  • atomic_mass

    Return the relative atomic mass in u.

  • is_radioactive

    Whether the nuclide has a tabulated half-life.

  • alpha_fraction

    Fraction of this nuclide's decays that proceed by alpha emission.

from_chain_xml classmethod

from_chain_xml(path: str | Path) -> 'DecayData'

Take half-lives from an OpenMC depletion chain file.

Parsed with the standard library, so this does not import OpenMC. Nuclides absent from the chain fall back to the vendored ENDF values, matching how OpenMC resolves a chain against its own data.

Parameters:

  • path
    (str | Path) –

    Path to a depletion chain XML file.

Returns:

  • 'DecayData'

    A DecayData using the chain's half-lives.

with_overrides

with_overrides(half_lives: Mapping[str, float]) -> 'DecayData'

Return a copy with some half-lives replaced.

Parameters:

  • half_lives
    (Mapping[str, float]) –

    Half-lives in seconds, keyed by any accepted nuclide spelling. A value of None marks a nuclide stable.

knows

knows(name: str) -> bool

Whether the tables cover this nuclide at all.

half_life

half_life(name: str) -> float | None

Return the half-life in seconds, or None if the nuclide is stable.

Raises:

  • UnknownNuclideError

    If the nuclide is in neither table, so "stable" would be a guess rather than a fact.

decay_constant

decay_constant(name: str) -> float

Return the decay constant in 1/s, zero for a stable nuclide.

atomic_mass

atomic_mass(name: str) -> float

Return the relative atomic mass in u.

A metastable state with no tabulated mass takes its ground state's. An isomer's excitation energy is at most a few MeV, under 1e-5 of the mass of even a light nuclide, which is far below the precision that matters for a mass denominator.

Raises:

  • UnknownNuclideError

    If neither the nuclide nor its ground state has a tabulated mass, since a guess would corrupt the mass of the whole material and so every specific activity computed from it.

is_radioactive

is_radioactive(name: str) -> bool

Whether the nuclide has a tabulated half-life.

alpha_fraction

alpha_fraction(name: str) -> float

Fraction of this nuclide's decays that proceed by alpha emission.

Returns 0.0 for a nuclide with no alpha branch, which includes every metastable state, since those decay by isomeric transition or beta. Bi-212, which branches 35.94 percent alpha, returns 0.3594.

half_life

half_life(name: str) -> float | None

Half-life in seconds from the default tables, None if stable.

decay_constant

decay_constant(name: str) -> float

Decay constant in 1/s from the default tables, zero if stable.

atomic_mass

atomic_mass(name: str) -> float

Relative atomic mass in u from the default tables.

is_radioactive

is_radioactive(name: str) -> bool

Whether the nuclide is radioactive according to the default tables.

alpha_fraction

alpha_fraction(name: str) -> float

Fraction of decays proceeding by alpha emission, from the default tables.