armi.physics.neutronics.fissionProductModel.fissionProductModel module

Fission product model

All blocks have a _lumpedFissionProducts attribute that points to a LumpedFissionProductCollection. The LFP collection may be global or each block may have its own. The collection may have multiple LFPs from various parents or just one single one. This module is the shepherd of the block’s _lumpedFissionProducts attribute. All other modules can just assume there’s a LFP collection and use it as needed.

Examples

from armi.physics.neutronics.fissionProductModel import fissionProductModel fpInterface = fissionProductModel.FissionProductModel() lfp = fpInterface.getGlobalLumpedFissionProducts() lfp[‘LFP35’] lfp35 = lfp[‘LFP35’] lfp35.printDensities(0.05) lfp35.values() allFPs = [(fpY, fpNuc) for (fpNuc,fpY) in lfp35.items()] allFPs.sort() lfp35.keys()

armi.physics.neutronics.fissionProductModel.fissionProductModel.describeInterfaces(_cs)[source]

Function for exposing interface(s) to other code

class armi.physics.neutronics.fissionProductModel.fissionProductModel.FissionProductModel(r, cs)[source]

Bases: armi.interfaces.Interface

Code interface that coordinates the fission product model on the reactor.

Construct an interface.

The r and cs arguments are required, but may be None, where appropriate for the specific Interface implementation.

Parameters
  • r (Reactor) – A reactor to attach to

  • cs (Settings) – Settings object to use

Raises

RuntimeError – Interfaces derived from Interface must define their name

name = 'fissionProducts'
property _useGlobalLFPs
property _fissionProductBlockType

Set the block type that the fission products will be applied to.

Notes

Some Monte Carlo codes require all nuclides to be consistent in all materials when assemblies are shuffled. This requires that fission products be consistent across all blocks, even if fission products are not generated when the block is depleted.

interactBOL()[source]

Called at the Beginning-of-Life of a run, before any cycles start.

setAllBlockLFPs(blockType=None, setMaterialsLFP=False)[source]

Set ALL the block _lumpedFissionProduct attributes

Can set them to global or turns on independent block-level LFPs if requested

sets block._lumpedFissionProducts to something other than the global.

Parameters
  • blockType (Flags, optional) – this is the type of block that the global lumped fission product is being applied to. If this is not provided it will get the default behavior from self._fissionProductBlockType.

  • setMaterialsLFP (bool, optional) – this is a flag to tell the method whether or not to try to apply the global lumped fission product to the component and thereby material – this is only compatable with LumpedFissionProductCompatableMaterial

Examples

self.setAllBlockLFPs(blockType=’fuel’) will apply the global lumped fission product or independent LFPs to only fuel type blocks

See also

armi.materials.lumpedFissionProductCompatableMaterial.LumpedFissionProductCompatableMaterial(), armi.reactor.components.Component.setLumpedFissionProducts(), armi.physics.neutronics.fissionProductModel.fissionProductModel.FissionProductModel.setAllBlockLFPs()

getGlobalLumpedFissionProducts()[source]

Lookup the detailed fission product object associated with a xsType and burnup group.

See also

armi.physics.neutronics.isotopicDepletion.depletion.DepletionInterface.buildFissionProducts()

armi.reactor.blocks.Block.getLumpedFissionProductCollection()

same thing, but block-level compatible. Use this

setGlobalLumpedFissionProducts(lfps)[source]

Lookup the detailed fission product object associated with a xsType and burnup group.

See also

terrapower.physics.neutronics.depletion.depletion.DepletionInterface.buildFissionProducts()

armi.reactor.blocks.Block.getLumpedFissionProductCollection()

same thing, but block-level compatible. Use this

interactBOC(cycle=None)[source]

Update block groups and fg removal

Cross sections update at BOC, so we must prepare LFPs at BOC.

interactEveryNode(_cycle, _node)[source]

Called at each time node/subcycle of every cycle.

interactDistributeState()[source]

Called after this interface is copied to a different (non-master) MPI node.

_getAllFissionProductNames()[source]

Find all fission product names in the problem

Considers all LFP collections, whether they be global, block-level, or a mix of these.

sets fissionProductNames, a list of nuclide names of all the fission products

_cacheLFPDensities(blockList)[source]
updateFissionGasRemovalFractions()[source]

Synchronize fission gas removal fractions of all LFP objects with the reactor state.

The block parameter fgRemoval is adjusted by fuel performance modules and is applied here.

If the makeAllBlockLFPsIndependent setting is not activated (default), the global lump gets the flux-weighted average of all blocks. Otherwise, each block gets its own fission gas release fraction applied to its individual LFPs. For MCNP restart cases, it is recommended to activate the makeAllBlockLFPsIndependent setting.

Notes

The CrossSectionGroupManager does this for each XSG individually for lattice physics, but it’s important to keep these up to date as well for anything else that may be interested in fission product information (e.g. MCNP).

See also

armi.physics.neutronics.crossSectionGroupManager.AverageBlockCollection.getRepresentativeBlock()