Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions docs/source/usersguide/depletion.rst
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,21 @@ transport-depletion calculation and follow the same steps from there.
the depletion chain with at least one reaction, that reaction will not be
simulated.

When the microscopic cross section data includes both 'fission' and
'nu-fission' cross sections and no explicit ``keff`` value is provided,
:class:`~openmc.deplete.IndependentOperator` automatically estimates the
infinite multiplication factor at each depletion step::

op = openmc.deplete.IndependentOperator(materials, fluxes, micros)

The estimate is computed as the ratio of the neutron production rate to the
neutron loss rate based on the one-group reaction rates and is reported as the
eigenvalue in the depletion results, which can be retrieved with
:meth:`~openmc.deplete.Results.get_keff`. Consistent with the definition of
the multiplication factor used elsewhere in OpenMC, neutrons produced in
(n,xn) reactions are not counted as production; instead, each (n,xn) reaction
reduces the loss term by :math:`x - 1`.

.. _micros:

Loading and Generating Microscopic Cross Sections
Expand Down
14 changes: 14 additions & 0 deletions include/openmc/nuclide.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,20 @@ class Nuclide {
double collapse_rate(int MT, double temperature, span<const double> energy,
span<const double> flux) const;

//! \brief Calculate flux-averaged nu-fission cross section
//
//! Computes the one-group nu(E)*sigma_f(E) collapsed against a multigroup
//! flux, using the same integration scheme as collapse_rate but reading
//! the pre-tabulated nu-fission cross section (XS_NU_FISSION), which sums
//! over all partial fission reactions.
//!
//! \param[in] temperature Temperature in [K]
//! \param[in] energy Energy group boundaries in [eV]
//! \param[in] flux Flux in each energy group (not normalized per eV)
//! \return Flux-averaged nu-fission cross section, or 0.0 if not fissionable
double collapse_nu_fission_rate(double temperature, span<const double> energy,
span<const double> flux) const;

//! Return a ParticleType object representing this nuclide
ParticleType particle_type() const { return {Z_, A_, metastable_}; }

Expand Down
172 changes: 86 additions & 86 deletions openmc/deplete/chain.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,94 +27,94 @@
import openmc.data


# tuple of (possible MT values, secondaries)
ReactionInfo = namedtuple('ReactionInfo', ('mts', 'secondaries'))
# tuple of (possible MT values, secondaries, neutrons emitted in exit channel)
ReactionInfo = namedtuple('ReactionInfo', ('mts', 'secondaries', 'neutrons_out'))

REACTIONS = {
'(n,2nd)': ReactionInfo({11}, ('H2',)),
'(n,2n)': ReactionInfo(set(chain([16], range(875, 892))), ()),
'(n,3n)': ReactionInfo({17}, ()),
'(n,na)': ReactionInfo({22}, ('He4',)),
'(n,n3a)': ReactionInfo({23}, ('He4', 'He4', 'He4')),
'(n,2na)': ReactionInfo({24}, ('He4',)),
'(n,3na)': ReactionInfo({25}, ('He4',)),
'(n,np)': ReactionInfo({28}, ('H1',)),
'(n,n2a)': ReactionInfo({29}, ('He4', 'He4')),
'(n,2n2a)': ReactionInfo({30}, ('He4', 'He4')),
'(n,nd)': ReactionInfo({32}, ('H2',)),
'(n,nt)': ReactionInfo({33}, ('H3',)),
'(n,n3He)': ReactionInfo({34}, ('He3',)),
'(n,nd2a)': ReactionInfo({35}, ('H2', 'He4', 'He4')),
'(n,nt2a)': ReactionInfo({36}, ('H3', 'He4', 'He4')),
'(n,4n)': ReactionInfo({37}, ()),
'(n,2np)': ReactionInfo({41}, ('H1',)),
'(n,3np)': ReactionInfo({42}, ('H1',)),
'(n,n2p)': ReactionInfo({44}, ('H1', 'H1')),
'(n,npa)': ReactionInfo({45}, ('H1', 'He4')),
'(n,gamma)': ReactionInfo({102}, ()),
'(n,p)': ReactionInfo(set(chain([103], range(600, 650))), ('H1',)),
'(n,d)': ReactionInfo(set(chain([104], range(650, 700))), ('H2',)),
'(n,t)': ReactionInfo(set(chain([105], range(700, 750))), ('H3',)),
'(n,3He)': ReactionInfo(set(chain([106], range(750, 800))), ('He3',)),
'(n,a)': ReactionInfo(set(chain([107], range(800, 850))), ('He4',)),
'(n,2a)': ReactionInfo({108}, ('He4', 'He4')),
'(n,3a)': ReactionInfo({109}, ('He4', 'He4', 'He4')),
'(n,2p)': ReactionInfo({111}, ('H1', 'H1')),
'(n,pa)': ReactionInfo({112}, ('H1', 'He4')),
'(n,t2a)': ReactionInfo({113}, ('H3', 'He4', 'He4')),
'(n,d2a)': ReactionInfo({114}, ('H2', 'He4', 'He4')),
'(n,pd)': ReactionInfo({115}, ('H1', 'H2')),
'(n,pt)': ReactionInfo({116}, ('H1', 'H3')),
'(n,da)': ReactionInfo({117}, ('H2', 'He4')),
'(n,5n)': ReactionInfo({152}, ()),
'(n,6n)': ReactionInfo({153}, ()),
'(n,2nt)': ReactionInfo({154}, ('H3',)),
'(n,ta)': ReactionInfo({155}, ('H3', 'He4')),
'(n,4np)': ReactionInfo({156}, ('H1',)),
'(n,3nd)': ReactionInfo({157}, ('H2',)),
'(n,nda)': ReactionInfo({158}, ('H2', 'He4')),
'(n,2npa)': ReactionInfo({159}, ('H1', 'He4')),
'(n,7n)': ReactionInfo({160}, ()),
'(n,8n)': ReactionInfo({161}, ()),
'(n,5np)': ReactionInfo({162}, ('H1',)),
'(n,6np)': ReactionInfo({163}, ('H1',)),
'(n,7np)': ReactionInfo({164}, ('H1',)),
'(n,4na)': ReactionInfo({165}, ('He4',)),
'(n,5na)': ReactionInfo({166}, ('He4',)),
'(n,6na)': ReactionInfo({167}, ('He4',)),
'(n,7na)': ReactionInfo({168}, ('He4',)),
'(n,4nd)': ReactionInfo({169}, ('H2',)),
'(n,5nd)': ReactionInfo({170}, ('H2',)),
'(n,6nd)': ReactionInfo({171}, ('H2',)),
'(n,3nt)': ReactionInfo({172}, ('H3',)),
'(n,4nt)': ReactionInfo({173}, ('H3',)),
'(n,5nt)': ReactionInfo({174}, ('H3',)),
'(n,6nt)': ReactionInfo({175}, ('H3',)),
'(n,2n3He)': ReactionInfo({176}, ('He3',)),
'(n,3n3He)': ReactionInfo({177}, ('He3',)),
'(n,4n3He)': ReactionInfo({178}, ('He3',)),
'(n,3n2p)': ReactionInfo({179}, ('H1', 'H1')),
'(n,3n2a)': ReactionInfo({180}, ('He4', 'He4')),
'(n,3npa)': ReactionInfo({181}, ('H1', 'He4')),
'(n,dt)': ReactionInfo({182}, ('H2', 'H3')),
'(n,npd)': ReactionInfo({183}, ('H1', 'H2')),
'(n,npt)': ReactionInfo({184}, ('H1', 'H3')),
'(n,ndt)': ReactionInfo({185}, ('H2', 'H3')),
'(n,np3He)': ReactionInfo({186}, ('H1', 'He3')),
'(n,nd3He)': ReactionInfo({187}, ('H2', 'He3')),
'(n,nt3He)': ReactionInfo({188}, ('H3', 'He3')),
'(n,nta)': ReactionInfo({189}, ('H3', 'He4')),
'(n,2n2p)': ReactionInfo({190}, ('H1', 'H1')),
'(n,p3He)': ReactionInfo({191}, ('H1', 'He3')),
'(n,d3He)': ReactionInfo({192}, ('H2', 'He3')),
'(n,3Hea)': ReactionInfo({193}, ('He3', 'He4')),
'(n,4n2p)': ReactionInfo({194}, ('H1', 'H1')),
'(n,4n2a)': ReactionInfo({195}, ('He4', 'He4')),
'(n,4npa)': ReactionInfo({196}, ('H1', 'He4')),
'(n,3p)': ReactionInfo({197}, ('H1', 'H1', 'H1')),
'(n,n3p)': ReactionInfo({198}, ('H1', 'H1', 'H1')),
'(n,3n2pa)': ReactionInfo({199}, ('H1', 'H1', 'He4')),
'(n,5n2p)': ReactionInfo({200}, ('H1', 'H1')),
'(n,2nd)': ReactionInfo({11}, ('H2',), 2),
'(n,2n)': ReactionInfo(set(chain([16], range(875, 892))), (), 2),
'(n,3n)': ReactionInfo({17}, (), 3),
'(n,na)': ReactionInfo({22}, ('He4',), 1),
'(n,n3a)': ReactionInfo({23}, ('He4', 'He4', 'He4'), 1),
'(n,2na)': ReactionInfo({24}, ('He4',), 2),
'(n,3na)': ReactionInfo({25}, ('He4',), 3),
'(n,np)': ReactionInfo({28}, ('H1',), 1),
'(n,n2a)': ReactionInfo({29}, ('He4', 'He4'), 1),
'(n,2n2a)': ReactionInfo({30}, ('He4', 'He4'), 2),
'(n,nd)': ReactionInfo({32}, ('H2',), 1),
'(n,nt)': ReactionInfo({33}, ('H3',), 1),
'(n,n3He)': ReactionInfo({34}, ('He3',), 1),
'(n,nd2a)': ReactionInfo({35}, ('H2', 'He4', 'He4'), 1),
'(n,nt2a)': ReactionInfo({36}, ('H3', 'He4', 'He4'), 1),
'(n,4n)': ReactionInfo({37}, (), 4),
'(n,2np)': ReactionInfo({41}, ('H1',), 2),
'(n,3np)': ReactionInfo({42}, ('H1',), 3),
'(n,n2p)': ReactionInfo({44}, ('H1', 'H1'), 1),
'(n,npa)': ReactionInfo({45}, ('H1', 'He4'), 1),
'(n,gamma)': ReactionInfo({102}, (), 0),
'(n,p)': ReactionInfo(set(chain([103], range(600, 650))), ('H1',), 0),
'(n,d)': ReactionInfo(set(chain([104], range(650, 700))), ('H2',), 0),
'(n,t)': ReactionInfo(set(chain([105], range(700, 750))), ('H3',), 0),
'(n,3He)': ReactionInfo(set(chain([106], range(750, 800))), ('He3',), 0),
'(n,a)': ReactionInfo(set(chain([107], range(800, 850))), ('He4',), 0),
'(n,2a)': ReactionInfo({108}, ('He4', 'He4'), 0),
'(n,3a)': ReactionInfo({109}, ('He4', 'He4', 'He4'), 0),
'(n,2p)': ReactionInfo({111}, ('H1', 'H1'), 0),
'(n,pa)': ReactionInfo({112}, ('H1', 'He4'), 0),
'(n,t2a)': ReactionInfo({113}, ('H3', 'He4', 'He4'), 0),
'(n,d2a)': ReactionInfo({114}, ('H2', 'He4', 'He4'), 0),
'(n,pd)': ReactionInfo({115}, ('H1', 'H2'), 0),
'(n,pt)': ReactionInfo({116}, ('H1', 'H3'), 0),
'(n,da)': ReactionInfo({117}, ('H2', 'He4'), 0),
'(n,5n)': ReactionInfo({152}, (), 5),
'(n,6n)': ReactionInfo({153}, (), 6),
'(n,2nt)': ReactionInfo({154}, ('H3',), 2),
'(n,ta)': ReactionInfo({155}, ('H3', 'He4'), 0),
'(n,4np)': ReactionInfo({156}, ('H1',), 4),
'(n,3nd)': ReactionInfo({157}, ('H2',), 3),
'(n,nda)': ReactionInfo({158}, ('H2', 'He4'), 1),
'(n,2npa)': ReactionInfo({159}, ('H1', 'He4'), 2),
'(n,7n)': ReactionInfo({160}, (), 7),
'(n,8n)': ReactionInfo({161}, (), 8),
'(n,5np)': ReactionInfo({162}, ('H1',), 5),
'(n,6np)': ReactionInfo({163}, ('H1',), 6),
'(n,7np)': ReactionInfo({164}, ('H1',), 7),
'(n,4na)': ReactionInfo({165}, ('He4',), 4),
'(n,5na)': ReactionInfo({166}, ('He4',), 5),
'(n,6na)': ReactionInfo({167}, ('He4',), 6),
'(n,7na)': ReactionInfo({168}, ('He4',), 7),
'(n,4nd)': ReactionInfo({169}, ('H2',), 4),
'(n,5nd)': ReactionInfo({170}, ('H2',), 5),
'(n,6nd)': ReactionInfo({171}, ('H2',), 6),
'(n,3nt)': ReactionInfo({172}, ('H3',), 3),
'(n,4nt)': ReactionInfo({173}, ('H3',), 4),
'(n,5nt)': ReactionInfo({174}, ('H3',), 5),
'(n,6nt)': ReactionInfo({175}, ('H3',), 6),
'(n,2n3He)': ReactionInfo({176}, ('He3',), 2),
'(n,3n3He)': ReactionInfo({177}, ('He3',), 3),
'(n,4n3He)': ReactionInfo({178}, ('He3',), 4),
'(n,3n2p)': ReactionInfo({179}, ('H1', 'H1'), 3),
'(n,3n2a)': ReactionInfo({180}, ('He4', 'He4'), 3),
'(n,3npa)': ReactionInfo({181}, ('H1', 'He4'), 3),
'(n,dt)': ReactionInfo({182}, ('H2', 'H3'), 0),
'(n,npd)': ReactionInfo({183}, ('H1', 'H2'), 1),
'(n,npt)': ReactionInfo({184}, ('H1', 'H3'), 1),
'(n,ndt)': ReactionInfo({185}, ('H2', 'H3'), 1),
'(n,np3He)': ReactionInfo({186}, ('H1', 'He3'), 1),
'(n,nd3He)': ReactionInfo({187}, ('H2', 'He3'), 1),
'(n,nt3He)': ReactionInfo({188}, ('H3', 'He3'), 1),
'(n,nta)': ReactionInfo({189}, ('H3', 'He4'), 1),
'(n,2n2p)': ReactionInfo({190}, ('H1', 'H1'), 2),
'(n,p3He)': ReactionInfo({191}, ('H1', 'He3'), 0),
'(n,d3He)': ReactionInfo({192}, ('H2', 'He3'), 0),
'(n,3Hea)': ReactionInfo({193}, ('He3', 'He4'), 0),
'(n,4n2p)': ReactionInfo({194}, ('H1', 'H1'), 4),
'(n,4n2a)': ReactionInfo({195}, ('He4', 'He4'), 4),
'(n,4npa)': ReactionInfo({196}, ('H1', 'He4'), 4),
'(n,3p)': ReactionInfo({197}, ('H1', 'H1', 'H1'), 0),
'(n,n3p)': ReactionInfo({198}, ('H1', 'H1', 'H1'), 1),
'(n,3n2pa)': ReactionInfo({199}, ('H1', 'H1', 'He4'), 3),
'(n,5n2p)': ReactionInfo({200}, ('H1', 'H1'), 5),
}

__all__ = ["Chain", "REACTIONS"]
Expand Down
Loading
Loading