From 96351c9b1cbc5b14cf6f671f240f367df48159fc Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 1 Jun 2016 15:40:35 -0500 Subject: [PATCH] Improve documentation of MGXS classes --- docs/source/_templates/myclassinherit.rst | 8 + docs/source/pythonapi/index.rst | 5 +- docs/source/usersguide/input.rst | 3 +- openmc/mgxs/mgxs.py | 505 +++++++++++++++++++--- 4 files changed, 455 insertions(+), 66 deletions(-) create mode 100644 docs/source/_templates/myclassinherit.rst diff --git a/docs/source/_templates/myclassinherit.rst b/docs/source/_templates/myclassinherit.rst new file mode 100644 index 000000000..ed93a2966 --- /dev/null +++ b/docs/source/_templates/myclassinherit.rst @@ -0,0 +1,8 @@ +{{ fullname }} +{{ underline }} + +.. currentmodule:: {{ module }} + +.. autoclass:: {{ objname }} + :members: + :inherited-members: diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index bf35e7587..4b1d8cca7 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -271,14 +271,17 @@ Multi-group Cross Sections .. autosummary:: :toctree: generated :nosignatures: - :template: myclass.rst + :template: myclassinherit.rst openmc.mgxs.MGXS openmc.mgxs.AbsorptionXS openmc.mgxs.CaptureXS openmc.mgxs.Chi openmc.mgxs.FissionXS + openmc.mgxs.KappaFissionXS + openmc.mgxs.MultiplicityMatrixXS openmc.mgxs.NuFissionXS + openmc.mgxs.NuFissionMatrixXS openmc.mgxs.NuScatterXS openmc.mgxs.NuScatterMatrixXS openmc.mgxs.ScatterXS diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 5a902479e..d7c8a239a 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1598,7 +1598,8 @@ The ```` element accepts the following sub-elements: |Score | Description | +======================+===================================================+ |absorption |Total absorption rate. This accounts for all | - | |reactions which do not produce secondary neutrons. | + | |reactions which do not produce secondary neutrons | + | |as well as fission. | +----------------------+---------------------------------------------------+ |elastic |Elastic scattering reaction rate. | +----------------------+---------------------------------------------------+ diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e0974d473..5104dc192 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -46,9 +46,9 @@ DOMAIN_TYPES = ['cell', # Supported domain classes # TODO: Implement Mesh domains -_DOMAINS = [openmc.Cell, +_DOMAINS = (openmc.Cell, openmc.Universe, - openmc.Material] + openmc.Material) class MGXS(object): @@ -364,7 +364,7 @@ class MGXS(object): @domain.setter def domain(self, domain): - cv.check_type('domain', domain, tuple(_DOMAINS)) + cv.check_type('domain', domain, _DOMAINS) self._domain = domain # Assign a domain type @@ -1934,11 +1934,30 @@ class MatrixMGXS(MGXS): class TotalXS(MGXS): - """A total multi-group cross section. + r"""A total multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group total cross sections for multi-group neutronics calculations. At + a minimum, one needs to set the :attr:`TotalXS.energy_groups` and + :attr:`TotalXS.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`TotalXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`TotalXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + total cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \sigma_t (r, E) \psi (r, E, \Omega)}{\int_{r \in D} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. Parameters ---------- @@ -1946,7 +1965,7 @@ class TotalXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -1981,7 +2000,9 @@ class TotalXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`TotalXS.tally_keys` property and values + are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2022,11 +2043,39 @@ class TotalXS(MGXS): class TransportXS(MGXS): - """A transport-corrected total multi-group cross section. + r"""A transport-corrected total multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`TransportXS.energy_groups` and + :attr:`TransportXS.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`TransportXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`TransportXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + transport-corrected total cross section is calculated as: + + .. math:: + + \langle \sigma_t \phi \rangle &= \int_{r \in D} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \sigma_t (r, E) \psi + (r, E, \Omega) \\ + \langle \sigma_{s1} \phi \rangle &= \int_{r \in D} dr + \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \int_{4\pi} + d\Omega' \int_0^\infty dE' \int_{-1}^1 d\mu \; \mu \sigma_s + (r, E' \rightarrow E, \Omega' \cdot \Omega) + \phi (r, E', \Omega) \\ + \langle \phi \rangle &= \int_{r \in D} dr \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ + \sigma_{tr} &= \frac{\langle \sigma_t \phi \rangle - \langle \sigma_{s1} + \phi \rangle}{\langle \phi \rangle} Parameters ---------- @@ -2034,7 +2083,7 @@ class TransportXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2069,7 +2118,9 @@ class TransportXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`TransportXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2135,12 +2186,26 @@ class TransportXS(MGXS): class NuTransportXS(TransportXS): - """A transport-corrected total multi-group cross section which + r"""A transport-corrected total multi-group cross section which accounts for neutron multiplicity in scattering reactions. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`NuTransportXS.energy_groups` and + :attr:`NuTransportXS.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`NuTransportXS.tallies` property, which can then + be appended to a :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`NuTransportXS.xs_tally` property. + + The calculation of the transport-corrected cross section is the same as that + for :class:`TransportXS` except that the scattering multiplicity is + accounted for. Parameters ---------- @@ -2148,7 +2213,7 @@ class NuTransportXS(TransportXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2183,7 +2248,9 @@ class NuTransportXS(TransportXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`NuTransportXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2232,11 +2299,34 @@ class NuTransportXS(TransportXS): class AbsorptionXS(MGXS): - """An absorption multi-group cross section. + r"""An absorption multi-group cross section. + + Absorption is defined as all reactions that do not produce secondary + neutrons (disappearance) plus fission reactions. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group absorption cross sections for multi-group neutronics + calculations. At a minimum, one needs to set the + :attr:`AbsorptionXS.energy_groups` and :attr:`AbsorptionXS.domain` + properties. Tallies for the flux and appropriate reaction rates over the + specified domain are generated automatically via the + :attr:`AbsorptionXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`AbsorptionXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + absorption cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \sigma_a (r, E) \psi (r, E, \Omega)}{\int_{r \in D} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. Parameters ---------- @@ -2244,7 +2334,7 @@ class AbsorptionXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2279,7 +2369,9 @@ class AbsorptionXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`AbsorptionXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2320,16 +2412,37 @@ class AbsorptionXS(MGXS): class CaptureXS(MGXS): - """A capture multi-group cross section. + r"""A capture multi-group cross section. The neutron capture reaction rate is defined as the difference between OpenMC's 'absorption' and 'fission' reaction rate score types. This includes not only radiative capture, but all forms of neutron disappearance aside - from fission (e.g., MT > 100). + from fission (i.e., MT > 100). This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group capture cross sections for multi-group neutronics + calculations. At a minimum, one needs to set the + :attr:`CaptureXS.energy_groups` and :attr:`CaptureXS.domain` + properties. Tallies for the flux and appropriate reaction rates over the + specified domain are generated automatically via the + :attr:`CaptureXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`CaptureXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + capture cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \left [ \sigma_a (r, E) \psi (r, E, \Omega) - \sigma_f (r, E) \psi (r, E, + \Omega) \right ]}{\int_{r \in D} dr \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. Parameters ---------- @@ -2337,7 +2450,7 @@ class CaptureXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2372,7 +2485,9 @@ class CaptureXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`CaptureXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2425,11 +2540,31 @@ class CaptureXS(MGXS): class FissionXS(MGXS): - """A fission multi-group cross section. + r"""A fission multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group fission cross sections for multi-group neutronics + calculations. At a minimum, one needs to set the + :attr:`FissionXS.energy_groups` and :attr:`FissionXS.domain` + properties. Tallies for the flux and appropriate reaction rates over the + specified domain are generated automatically via the + :attr:`FissionXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`FissionXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + fission cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \sigma_f (r, E) \psi (r, E, \Omega)}{\int_{r \in D} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. Parameters ---------- @@ -2437,7 +2572,7 @@ class FissionXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2472,7 +2607,9 @@ class FissionXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`FissionXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2513,11 +2650,32 @@ class FissionXS(MGXS): class NuFissionXS(MGXS): - """A fission production multi-group cross section. + r"""A fission neutron production multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group fission neutron production cross sections for multi-group + neutronics calculations. At a minimum, one needs to set the + :attr:`NuFissionXS.energy_groups` and :attr:`NuFissionXS.domain` + properties. Tallies for the flux and appropriate reaction rates over the + specified domain are generated automatically via the + :attr:`NuFissionXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`NuFissionXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + fission neutron production cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \nu\sigma_f (r, E) \psi (r, E, \Omega)}{\int_{r \in D} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. + Parameters ---------- @@ -2525,7 +2683,7 @@ class NuFissionXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2560,7 +2718,9 @@ class NuFissionXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`NuFissionXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2601,11 +2761,37 @@ class NuFissionXS(MGXS): class KappaFissionXS(MGXS): - """A recoverable fission energy production rate multi-group cross section. + r"""A recoverable fission energy production rate multi-group cross section. + + The recoverable energy per fission, :math:`\kappa`, is defined as the + fission product kinetic energy, prompt and delayed neutron kinetic energies, + prompt and delayed :math:`\gamma`-ray total energies, and the total energy + released by the delayed :math:`\beta` particles. The neutrino energy does + not contribute to this response. The prompt and delayed :math:`\gamma`-rays + are assumed to deposit their energy locally. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`KappaFissionXS.energy_groups` and + :attr:`KappaFissionXS.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`KappaFissionXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`KappaFissionXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + recoverable fission energy production rate cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \kappa\sigma_f (r, E) \psi (r, E, \Omega)}{\int_{r \in D} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. Parameters ---------- @@ -2613,7 +2799,7 @@ class KappaFissionXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2648,7 +2834,9 @@ class KappaFissionXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`KappaFissionXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2689,11 +2877,34 @@ class KappaFissionXS(MGXS): class ScatterXS(MGXS): - """A scatter multi-group cross section. + r"""A scattering multi-group cross section. + + The scattering cross section is defined as the difference between the total + and absorption cross sections. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ScatterXS.energy_groups` and + :attr:`ScatterXS.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`ScatterXS.tallies` property, which can + then be appended to a :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`ScatterXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + scattering cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \left [ \sigma_t (r, E) \psi (r, E, \Omega) - \sigma_a (r, E) \psi (r, E, + \Omega) \right ]}{\int_{r \in D} dr \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. Parameters ---------- @@ -2701,7 +2912,7 @@ class ScatterXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2736,7 +2947,9 @@ class ScatterXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`ScatterXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2777,11 +2990,35 @@ class ScatterXS(MGXS): class NuScatterXS(MGXS): - """A nu-scatter multi-group cross section. + r"""A scattering neutron production multi-group cross section. + + The neutron production from scattering is defined as the average number of + neutrons produced from all neutron-producing reactions except for fission. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`NuScatterXS.energy_groups` and + :attr:`NuScatterXS.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`NuScatterXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`NuScatterXS.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + scattering neutron production cross section is calculated as: + + .. math:: + + \frac{\int_{r \in D} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \sum_i \upsilon_i \sigma_i (r, E) \psi (r, E, \Omega)}{\int_{r \in D} dr + \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. + + where :math:`\upsilon_i` is the multiplicity of the :math:`i`-th reaction. Parameters ---------- @@ -2789,7 +3026,7 @@ class NuScatterXS(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2824,7 +3061,9 @@ class NuScatterXS(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`NuScatterXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -2869,12 +3108,47 @@ class NuScatterXS(MGXS): class ScatterMatrixXS(MatrixMGXS): - """A scattering matrix multi-group cross section for one or more Legendre + r"""A scattering matrix multi-group cross section for one or more Legendre moments. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ScatterMatrixXS.energy_groups` and + :attr:`ScatterMatrixXS.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`ScatterMatrixXS.tallies` property, which can + then be appended to a :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`ScatterMatrixXS.xs_tally` property. + + For a spatial domain :math:`D`, incoming energy group + :math:`[E_{g'},E_{g'-1}]`, and outgoing energy group :math:`[E_g,E_{g-1}]`, + the scattering moments are calculated as: + + .. math:: + + \langle \sigma_{s,\ell,g'\rightarrow g} \phi \rangle &= \int_{r \in D} dr + \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; P_\ell (\Omega \cdot \Omega') \sigma_s (r, E' + \rightarrow E, \Omega' \cdot \Omega) \psi(r, E', \Omega')\\ + \langle \phi \rangle &= \int_{r \in D} dr \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ + \sigma_{s,\ell,g'\rightarrow g} &= \frac{\langle + \sigma_{s,\ell,g'\rightarrow g} \phi \rangle}{\langle \phi \rangle} + + If the order is zero and a :math:`P_0` transport-correction is applied + (default), the scattering matrix elements are: + + .. math:: + + \sigma_{s,g'\rightarrow g} = \frac{\langle \sigma_{s,0,g'\rightarrow g} + \phi \rangle - \delta_{gg'} \sum_{g''} \langle \sigma_{s,1,g''\rightarrow + g} \phi \rangle}{\langle \phi \rangle} + Parameters ---------- @@ -2882,7 +3156,7 @@ class ScatterMatrixXS(MatrixMGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -2895,7 +3169,7 @@ class ScatterMatrixXS(MatrixMGXS): correction : 'P0' or None Apply the P0 correction to scattering matrices if set to 'P0' legendre_order : int - The highest legendre moment in the scattering matrix (default is 0) + The highest Legendre moment in the scattering matrix (default is 0) name : str, optional Name of the multi-group cross section rxn_type : str @@ -2921,7 +3195,9 @@ class ScatterMatrixXS(MatrixMGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`ScatterMatrixXS.tally_keys` property + and values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -3507,7 +3783,21 @@ class NuScatterMatrixXS(ScatterMatrixXS): This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`NuScatterMatrixXS.energy_groups` and + :attr:`NuScatterMatrixXS.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`NuScatterMatrixXS.tallies` property, which can + then be appended to a :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`NuScatterMatrixXS.xs_tally` property. + + The calculation of the scattering-production matrix is the same as that for + :class:`ScatterMatrixXS` except that the scattering multiplicity is + accounted for. Parameters ---------- @@ -3515,7 +3805,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -3554,7 +3844,9 @@ class NuScatterMatrixXS(ScatterMatrixXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`NuScatterMatrixXS.tally_keys` property + and values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -3596,11 +3888,42 @@ class NuScatterMatrixXS(ScatterMatrixXS): class MultiplicityMatrixXS(MatrixMGXS): - """The scattering multiplicity matrix. + r"""The scattering multiplicity matrix. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`MultiplicityMatrixXS.energy_groups` and + :attr:`MultiplicityMatrixXS.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`MultiplicityMatrixXS.tallies` property, which + can then be appended to a :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`MultiplicityMatrixXS.xs_tally` + property. + + For a spatial domain :math:`D`, incoming energy group + :math:`[E_{g'},E_{g'-1}]`, and outgoing energy group :math:`[E_g,E_{g-1}]`, + the multiplicity is calculated as: + + .. math:: + + \langle \upsilon \sigma_{s,g'\rightarrow g} \phi \rangle &= \int_{r \in + D} dr \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \sum_i \upsilon_i \sigma_i (r, E' \rightarrow + E, \Omega' \cdot \Omega) \psi(r, E', \Omega') \\ + \langle \sigma_{s,g'\rightarrow g} \phi \rangle &= \int_{r \in + D} dr \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \sum_i \upsilon_i \sigma_i (r, E' \rightarrow + E, \Omega' \cdot \Omega) \psi(r, E', \Omega') \\ + \upsilon_{g'\rightarrow g} &= \frac{\langle \upsilon + \sigma_{s,g'\rightarrow g} \rangle}{\langle \sigma_{s,g'\rightarrow g} + \rangle} + + where :math:`\upsilon_i` is the multiplicity for the :math:`i`-th reaction. Parameters ---------- @@ -3608,7 +3931,7 @@ class MultiplicityMatrixXS(MatrixMGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -3643,7 +3966,9 @@ class MultiplicityMatrixXS(MatrixMGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`MultiplicityMatrixXS.tally_keys` + property and values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -3717,11 +4042,35 @@ class MultiplicityMatrixXS(MatrixMGXS): class NuFissionMatrixXS(MatrixMGXS): - """A fission production matrix multi-group cross section. + r"""A fission production matrix multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`NuFissionMatrixXS.energy_groups` and + :attr:`NuFissionMatrixXS.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`NuFissionMatrixXS.tallies` property, which can + then be appended to a :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`NuFissionMatrixXS.xs_tally` property. + + For a spatial domain :math:`D`, incoming energy group + :math:`[E_{g'},E_{g'-1}]`, and outgoing energy group :math:`[E_g,E_{g-1}]`, + the fission production is calculated as: + + .. math:: + + \langle \nu\sigma_{f,g'\rightarrow g} \phi \rangle &= \int_{r \in D} dr + \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{E_g}^{E_{g-1}} dE + \; \chi(E) \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ + \langle \phi \rangle &= \int_{r \in D} dr \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ + \nu\sigma_{f,g'\rightarrow g} &= \frac{\langle \nu\sigma_{f,g'\rightarrow + g} \phi \rangle}{\langle \phi \rangle} Parameters ---------- @@ -3729,7 +4078,7 @@ class NuFissionMatrixXS(MatrixMGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -3764,7 +4113,9 @@ class NuFissionMatrixXS(MatrixMGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`NuFissionMatrixXS.tally_keys` + property and values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -3806,11 +4157,35 @@ class NuFissionMatrixXS(MatrixMGXS): class Chi(MGXS): - """The fission spectrum. + r"""The fission spectrum. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`Chi.energy_groups` and + :attr:`Chi.domain` properties. Tallies for the flux and appropriate reaction + rates over the specified domain are generated automatically via the + :attr:`Chi.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`Chi.xs_tally` property. + + For a spatial domain :math:`D` and energy group :math:`[E_g,E_{g-1}]`, the + fission spectrum is calculated as: + + .. math:: + + \langle \nu\sigma_{f,\rightarrow g} \phi \rangle &= \int_{r \in D} dr + \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) + \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ + \langle \nu\sigma_f \phi \rangle &= \int_{r \in D} dr \int_{4\pi} + d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f (r, + E') \psi(r, E', \Omega') \\ + \chi_g &= \frac{\langle \nu\sigma_{f,\rightarrow g} \phi \rangle}{\langle + \nu\sigma_f \phi \rangle} Parameters ---------- @@ -3818,7 +4193,7 @@ class Chi(MGXS): The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups + groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation by_nuclide : bool If true, computes cross sections for each nuclide in domain @@ -3853,7 +4228,9 @@ class Chi(MGXS): estimator : {'tracklength', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`Chi.tally_keys` property and values are + instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None