armi.nuclearDataIO.cccc.dlayxs module

Module to read DLAYXS files, which contain delayed neutron precursor data, including decay constants and emission spectra.

Similar to ISOTXS files, DLAYXS files are often created by a lattice physics code such as MC2 and used as input to a global flux solver such as DIF3D.

This module implements reading and writing of the DLAYXS, consistent with [CCCC-IV].

class armi.nuclearDataIO.cccc.dlayxs.DelayedNeutronData(numEnergyGroups, numPrecursorGroups)[source]

Bases: object

Container of information about delayed neutron precursors.

This info should be enough to perform point kinetics problems and to compute the delayed neutron fraction.

This object represents data related to either one nuclide (as read from a data library) or an average over many nuclides (as computed after a delayed-neutron fraction calculation).

For a problem with P precursor groups and G energy groups, delayed neutron precursor information includes:

precursorDecayConstants

This is P-length list of decay constants in (1/s) that characterize the decay rates of the delayed neutron precursors. When a precursor decays, it emits a delayed neutron.

Type

array

delayEmissionSpectrum

fraction of delayed neutrons emitted into each neutron energy group from each precursor family This is a PxG matrix The emission spectrum from the first precursor group is delayEmissionSpectrum[0,:]. Aka delayed-chi

delayNeutronsPerFissionarray

the multigroup number of delayed neutrons released per decay for each precursor group Note that this is equivalent to the number of delayed neutron precursors produced per fission in each family and energy group. Structure is identical to delayEmissionSpectrum. Aka delayed-nubar.

Type

array

armi.nuclearDataIO.cccc.dlayxs.compare(lib1, lib2)[source]

Compare two XSLibraries, and return True if equal, or False if not.

armi.nuclearDataIO.cccc.dlayxs.readBinary(fileName)[source]

Read a binary DLAYXS file into an Dlayxs object.

armi.nuclearDataIO.cccc.dlayxs.readAscii(fileName)[source]

Read an ASCII DLAYXS file into an Dlayxs object.

armi.nuclearDataIO.cccc.dlayxs._read(fileName, fileMode)[source]
armi.nuclearDataIO.cccc.dlayxs.writeBinary(delay, fileName)[source]

Write the DLAYXS data from an Dlayxs object to a binary file.

armi.nuclearDataIO.cccc.dlayxs.writeAscii(delay, fileName)[source]

Write the DLAYXS data from an Dlayxs object to an ASCII file.

armi.nuclearDataIO.cccc.dlayxs._write(delay, fileName, fileMode)[source]
armi.nuclearDataIO.cccc.dlayxs._readWrite(delay, fileName, fileMode)[source]
class armi.nuclearDataIO.cccc.dlayxs.Dlayxs(*args, **kwargs)[source]

Bases: collections.OrderedDict

Contains DLAYXS file information according to CCCC specification.

This object contains nuclide-dependent delayed neutron data. Each nuclide is represented with its own DelayedNeutronData object.

Keys are nuclideBases objects. It’s an ordered dictionary to maintain order of file that was read in.

Module that use delayed neutron data should expect a DelayedNeutronData object as input. If you want an average over all nuclides, then you need to produce it using the properly-computed average contributions of each nuclide.

nuclideFamily

There are a number of delayed neutron “families”, which in the ideal case would be numFamilies = numNuclides * numPrecursorGroups. Since some nuclides do not have their own data (like Pu242), the nuclide shares data with other nuclides. This mapping is done via the nuclideFamilies attribute.

Type

dict

numPrecursorGroups

number of delayed neutron precursor groups, each with independent decay constants and emission spectra

Type

int

neutronEnergyUpperBounds

upper bounds in eV

Type

array

nuclideContributionFractions

Fractions of beta due to each nuclide. Needed for making composition-dependent averages of delayed neutron data. This is dependent on beta-effective at some reactor state. Must therefore be computed during beta calculation

Type

dict

See also

armi.physics.safety.perturbationTheory.PerturbationTheoryInterface.calculateBeta

computes nuclide contributions

property G

Number of energy groups.

generateAverageDelayedNeutronConstants()[source]

Use externally-computed nuclideContributionFractions to produce an average DelayedNeutronData obj

Solves typical averaging equation but weights already sum to 1.0 so we can skip normalization at the end.

Notes

Long ago, the DLAYXS file had the same constants for each nuclide (!?) and this method simply took the first. Later, it was updated to take an importance- and abundance-weighted average of the values on the DLAYXS library.

A paper by Tuttle (1974) discusses some averaging but they end up saying that kinetics problems are mostly insensitive to the group constants (“errors of a few percent”). But in TWRs, we switch from U235 to Pu239 and the difference may be important. We can try weighting by nuclide effective delayed neutron fractions beta_eff_nuclide/beta.

_checkContributions()[source]
class armi.nuclearDataIO.cccc.dlayxs._DlayxsIO(fileName, fileMode, dlayxs)[source]

Bases: armi.nuclearDataIO.cccc.cccc.Stream

Create an instance of a Stream.

Parameters
  • fileName (str) – name of the file to be read

  • fileMode (str) – the file mode, i.e. ‘w’ for writing ASCII, ‘r’ for reading ASCII, ‘wb’ for writing binary, and ‘rb’ for reading binary.

readWrite()[source]

This method should be implemented on any sub-classes to specify the order of records.

_rwFileID()[source]
_rwFileControl()[source]
_rwSpectra(numNuclides)[source]

Read or write precursor decay constants and emission spectra, as well as energy group structure for each family

nkfam is the number of families to which fission in a given nuclide contributes delayed neutron precursors

_rwYield()[source]

Read or write delayed neutron precursor yield data (3D record)

Also reads the family numbers, which represent the family number of the k-th yield vector in delayNeutronsPerFission