armi.physics.neutronics.fissionProductModel.fissionProductModel module
This module contains the implementation of the FissionProductModel
interface.
This FissionProductModel
class implements the management of fission products within
the reactor core and can be extended to support more general applications. Currently, the
fission product model supports explicit modeling of fission products in each of the
blocks/components, independent management of lumped fission products for each
blocks/components within the core, or global management of lumped fission products
where the fission products between all blocks/components are shared and are modified
together.
Within the framework, there is a coupling between the management of the fission products through this model to neutronics evaluations of flux and depletion calculations.
When using a Monte Carlo solver, such as MCNP (i.e., there is an interface that is attached to the operator that has a name of “mcnp”), the fission products will always be treated independently and fission products (either explicit or lumped) will be added to all blocks/components in the core. The reason for this is that Monte Carlo solvers, like MCNP, may implement their own coupling between flux and depletion evaluations and having the initialization of these fission products in each block/component independently will allow that solver to manage the inventory over time.
When determining which fission product model to use (either explicit or lumped) it is important to consider which cross section data is available to the flux and/or depletion solvers, and what level of fidelity is required for the analysis. This is where decisions as a developer/user need to be made, and the implementation of this specific model may not be, in general, accurate for any reactor system. It is dependent on which plugins are implemented and the requirements of the individual flux/depletion solver.
Lumped fission products are generally useful for fast reactor applications, especially
in fuel cycle calculations or scoping evaluations where the tracking of the detailed
nuclide inventory would not have substantial impacts on core reactivity predictions.
This is typically done by collapsing all fission products into lumped nuclides, like
LFP35
, LFP38
, LFP39
, LFP40
, and LFP41
. This is the implementation
in the framework, which is discussed a bit more in the fpModel
setting. These
lumped fission products are separated into different bins that represent the fission
product yields from U-235, U-238, Pu-239, Pu-240, and Pu-241/Am-241, respectively. The
exact binning of which fission events from which target nuclides is specified by the
burn-chain.yaml
file, which can be modified by a user/developer. When selecting this
modeling option, the blocks/components will have these LFP
nuclides in the number
density dictionaries. The key thing here is that these lumped nuclides do not exist
in nature and therefore do not have nuclear data directly available in cross section
evaluations, like ENDF/B. If the user wishes to consider these nuclides in the flux/depletion
evaluations, then cross sections for these LFP
nuclides will need to be prepared. Generally
speaking, the the crossSectionGroupManager
and the latticePhysicsInterface
could be
used to implement this for cross section generation codes, like NJOY, CASMO, MC2-3, Serpent,
etc.
Warning
The lumped fission product model and the burn-chain.yaml
data may not be directly
applicable to light water reactor systems, especially if there are strong reactivity
impacts with fission products like Xe
and Sm
that need to be tracked independently.
A user/developer may update the referenceFissionProducts.dat
data file to exclude
these important nuclides from the lumped fission product models if need be, but this
would also require updating the burn-chain.yaml
file as well as updating the
nuclideFlags
specification within the reactor blueprints input.
A further simplified option for lumped fission product treatment that is available is to
treat all fission products explicitly as Mo-99
. This is not guaranteed to be an accurate
treatment of the fission products from a reactivity/depletion perspective, but it is
available for quick scoping evaluations and model building.
Finally, the explicit fission product modeling aims to include as many nuclides on the
blocks/components as the user wishes to consider, but the nuclides that are modeled
must be compatible with the plugins that are implemented for the application. When using this
option, the user should look to set the fpModelLibrary
setting.
If this setting is not set, then it is expected that the user will need to manually add all nuclides to the
nuclideFlags
section of the reactor core blueprints.If the
fpModelLibrary
is selected then this will automatically add to thenuclideFlags
input usingisotopicOptions.autoUpdateNuclideFlags()
and this class will initialize all added nuclides to have zero number densities.
Warning
The explicit fission product model is being implemented with the vision of using
generating multi-group cross sections for nuclides that are added with the
fpModelLibrary
setting with follow-on depletion calculations that will be managed by
a detailed depletion solver, like ORIGEN. There are many caveats to how this model
is initialized and may not be an out-of-the-box general solution.
- 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:
Interface
Coordinates the fission product model on the reactor.
- name: Optional[str] = 'fissionProducts'
The name of the interface. This is undefined for the base class, and must be overridden by any concrete class that extends this one.
- setAllComponentFissionProducts()[source]
Initialize all nuclides for each
DEPLETABLE
component in the core.Notes
This should be called when explicit fission product modeling is enabled to ensure that all isotopes are initialized on the depletable components within the reactor data model so that there is some density as a starting point.
When explicit fission products are enabled and the user has not already included all fission products in the blueprints (in
nuclideFlags
), thefpModelLibrary
setting is used to autofill all the nuclides in a given library into theblueprints.allNuclidesInProblem
list. All nuclides that were not manually initialized by the user are added to theDEPLETABLE
components throughout every block in the core.The
DEPLETABLE
flag is based on the user adding this explicitly in the blueprints, or is based on the user setting a nuclide toburn: true
in the blueprintnuclideFlags
.
- setAllBlockLFPs()[source]
Sets all the block lumped fission products attributes.
See also
armi.reactor.components.Component.setLumpedFissionProducts
- 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
armi.reactor.blocks.Block.getLumpedFissionProductCollection
same thing, but block-level compatible. Use this