armi.nucDirectory.transmutations module

This module contains the definition of Transmutation and Decay classes.

Inheritance diagram of Transmutation, DecayMode

The mappings between active nuclides during transmutation and decay are described in a burn-chain.yaml file pointed to by the burnChainFileName setting. This file contains one entry per nuclide that can transmute or decay that look similar to the example below:

U238:
- nuSF: 2.0000
- transmutation:
    branch: 1.0
    products:
    - NP237
    type: n2n
- transmutation:
    branch: 1.0
    products:
    - LFP38
    type: fission
- transmutation:
    branch: 1.0
    products:
    - NP239
    - PU239
    type: nGamma
- decay:
    branch: 5.45000e-07
    halfLifeInSeconds: 1.4099935680e+17
    products:
    - LFP38
    type: sf

This example defines 3 transmutations (an (n,2n) reaction, an (n,fission) reaction, an (n,gamma)`` reaction), and a spontaneous fission decay reaction with a very low branching ratio. Valid reaction type values are listed in Transmutation and DecayMode.

The branch entry determines the fraction of the products of a given reaction that will end up in a particular product. The branches must never sum up to anything other than 1.0.

The products entry is a list, but only one entry will be the actual product. The list defines a preference order. For example, if NP239 is being tracked as an active nuclide in the problem it will be the product of the nGamma reaction above. Otherwise, U238 will transmute directly to the alternate product, PU239.

Warning

If you track very short-lived decays explicitly then the burn matrix becomes very ill-conditioned and numerical solver issues can result. Specialized matrix exponential solvers (e.g. CRAM [1]) are required to get adequate solutions in these cases [2].

The example above also defines a nuSF item, which is how many neutrons are emitted per spontaneous fission. This is used for intrinsic source term calculations.

[1] Pusa, Maria, and Jaakko Leppanen. “Computing the matrix exponential in burnup calculations.”

Nuclear science and engineering 164.2 (2010): 140-150.

[2] Moler, Cleve, and Charles Van Loan. “Nineteen dubious ways to compute the exponential of a matrix.”

SIAM review 20.4 (1978): 801-836.

class armi.nucDirectory.transmutations.Transmutable(parent, dataDict)[source]

Bases: object

Transmutable base class.

Variables
  • ~Transmutable.parent (NuclideBase) – The parent nuclide in this reaction.

  • ~Transmutable.type (str) – The type name of reaction (e.g. n2n, fission, etc.)

  • ~Transmutable.productNuclides (list) – The names of potential product nuclides of this reaction, in order of preference. Multiple options exist to allow the library to specify a transmutation to one nuclide if the user is modeling that nuclide, and other ones as fallbacks in case the user is not tracking the preferred product. Only one of these products will be created.

  • ~Transmutable.productParticle (str) – The outgoing particle of this reaction. Could be HE4 for n,alpha, etc. Default is None.

  • ~Transmutable.branch (float) – The fraction of the time that this transmutation occurs. Should be between 0 and 1. Less than 1 when a decay or reaction can branch between multiple productNuclides. Do not make this >1 to get more than one product because it scales the reaction cross section which will double-deplete the parent.

Notes

These are used to link two NuclideBase objects through transmutation or decay.

getPreferredProduct(libraryNucNames)[source]

Get the index of the most preferred transmutation product/decay daughter.

Notes

The ARMI burn chain is not a full burn chain. It short circuits shorter half-lives, and uses lumped nuclides as catch-all objects for things that just sit around. Consequently, the “preferred” product/daughter may not be actual physical product/daughter.

class armi.nucDirectory.transmutations.Transmutation(parent, dataDict)[source]

Bases: armi.nucDirectory.transmutations.Transmutable

A transmutation from one nuclide to another.

Notes

The supported transmutation types include:

  • \(n,2n\)

  • \(n,fission\)

  • \(n,\gamma\) (nGamma)

  • \(n,\alpha\) (nalph)

  • \(n,p\) (proton) (np)

  • \(n,d\) (deuteron) (nd)

  • \(n,t\) (triton) (nt)

class armi.nucDirectory.transmutations.DecayMode(parent, dataDict)[source]

Bases: armi.nucDirectory.transmutations.Transmutable

Defines a decay from one nuclide to another.

Notes

The supported decay types are also all transmutations, and include:

  • \(\beta^-\) (bmd)

  • \(\beta^+\) (bpd)

  • \(\alpha\) (ad)

  • Electron capture (ec)

  • Spontaneous fission (sf)

Of note, the following are not supported:

  • Internal conversion

  • Gamma decay