From b32d121e22db8385e4a4dd7258328a4f30792074 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 20 Jul 2022 23:03:40 -0500 Subject: [PATCH 1/4] Use add_params decorator to cut down on repeated docstrings for MGXS classes --- openmc/mgxs/mgxs.py | 962 +++----------------------------------------- 1 file changed, 52 insertions(+), 910 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 453c1d099d..387a98ea5f 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -147,6 +147,11 @@ def _df_column_convert_to_bin(df, current_name, new_name, values_to_bin, df.rename(columns={current_name: new_name}, inplace=True) +def add_params(cls): + cls.__doc__ += cls._params + return cls + +@add_params class MGXS: """An abstract multi-group cross section for some energy group structure within some spatial domain. @@ -157,6 +162,9 @@ class MGXS: .. note:: Users should instantiate the subclasses of this abstract class. + """ + + _params = """ Parameters ---------- domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh @@ -2148,6 +2156,7 @@ class MGXS: return 'cm^-1' if xs_type == 'macro' else 'barns' +@add_params class MatrixMGXS(MGXS): """An abstract multi-group cross section for some energy group structure within some spatial domain. This class is specifically intended for @@ -2161,92 +2170,6 @@ class MatrixMGXS(MGXS): .. note:: Users should instantiate the subclasses of this abstract class. - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'collision', '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 - 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file) and the number of mesh cells for - 'mesh' domain types. - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ @property def _dont_squeeze(self): @@ -2631,6 +2554,7 @@ class MatrixMGXS(MGXS): print(string) +@add_params class TotalXS(MGXS): r"""A total multi-group cross section. @@ -2657,98 +2581,11 @@ class TotalXS(MGXS): \sigma_t (r, E) \psi (r, E, \Omega)}{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'collision', '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. 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = 'total' @@ -2887,9 +2724,9 @@ class TransportXS(MGXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, nu=False, + def __init__(self, domain=None, domain_type=None, energy_groups=None, nu=False, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) # Use tracklength estimators for the total MGXS term, and @@ -3128,9 +2965,9 @@ class DiffusionCoefficient(TransportXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, nu=False, + def __init__(self, domain=None, domain_type=None, energy_groups=None, nu=False, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super(DiffusionCoefficient, self).__init__(domain, domain_type, groups, + super(DiffusionCoefficient, self).__init__(domain, domain_type, energy_groups, nu, by_nuclide, name, num_polar, num_azimuthal) if not nu: @@ -3194,6 +3031,7 @@ class DiffusionCoefficient(TransportXS): return self._xs_tally +@add_params class AbsorptionXS(MGXS): r"""An absorption multi-group cross section. @@ -3224,103 +3062,16 @@ class AbsorptionXS(MGXS): \sigma_a (r, E) \psi (r, E, \Omega)}{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'collision', '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. 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file) and the number of mesh cells for - 'mesh' domain types. - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = 'absorption' +@add_params class CaptureXS(MGXS): r"""A capture multi-group cross section. @@ -3354,98 +3105,11 @@ class CaptureXS(MGXS): \Omega) \right ]}{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'collision', '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. 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = 'capture' @@ -3599,10 +3263,10 @@ class FissionXS(MGXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, nu=False, + def __init__(self, domain=None, domain_type=None, energy_groups=None, nu=False, prompt=False, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._nu = False self._prompt = False @@ -3648,6 +3312,7 @@ class FissionXS(MGXS): self._rxn_type = 'prompt-nu-fission' +@add_params class KappaFissionXS(MGXS): r"""A recoverable fission energy production rate multi-group cross section. @@ -3681,98 +3346,11 @@ class KappaFissionXS(MGXS): \kappa\sigma_f (r, E) \psi (r, E, \Omega)}{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'collision', '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. 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = 'kappa-fission' @@ -3904,10 +3482,10 @@ class ScatterXS(MGXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1, nu=False): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self.nu = nu @@ -3932,6 +3510,7 @@ class ScatterXS(MGXS): self._valid_estimators = ['analog'] +@add_params class ArbitraryXS(MGXS): r"""A multi-group cross section for an arbitrary reaction type. @@ -3960,105 +3539,17 @@ class ArbitraryXS(MGXS): where :math:`\sigma_X` is the requested reaction type of interest. - Parameters - ---------- - rxn_type : str - Reaction type (e.g., '(n,2n)', '(n,Xt)', etc.) - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., '(n,2n)', '(n,Xt)', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'collision', '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. 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ - def __init__(self, rxn_type, domain=None, domain_type=None, groups=None, + def __init__(self, rxn_type, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): cv.check_value("rxn_type", rxn_type, ARBITRARY_VECTOR_TYPES) - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = rxn_type +@add_params class ArbitraryMatrixXS(MatrixMGXS): r"""A multi-group matrix cross section for an arbitrary reaction type. @@ -4094,103 +3585,13 @@ class ArbitraryMatrixXS(MatrixMGXS): where :math:`\sigma_X` is the requested reaction type of interest. - Parameters - ---------- - rxn_type : str - Reaction type (e.g., '(n,2n)', '(n,nta)', etc.). Valid names have - neutrons as a product. - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : '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. 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ - def __init__(self, rxn_type, domain=None, domain_type=None, groups=None, + def __init__(self, rxn_type, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): cv.check_value("rxn_type", rxn_type, ARBITRARY_MATRIX_TYPES) - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = rxn_type.split(" ")[0] self._estimator = 'analog' @@ -4391,10 +3792,10 @@ class ScatterMatrixXS(MatrixMGXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1, nu=False): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._formulation = 'simple' self._correction = 'P0' @@ -5352,6 +4753,7 @@ class ScatterMatrixXS(MatrixMGXS): print(string) +@add_params class MultiplicityMatrixXS(MatrixMGXS): r"""The scattering multiplicity matrix. @@ -5392,93 +4794,6 @@ class MultiplicityMatrixXS(MatrixMGXS): where :math:`\upsilon_i` is the multiplicity for the :math:`i`-th reaction. - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : '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. 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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ # Store whether or not the number density should be removed for microscopic @@ -5487,9 +4802,9 @@ class MultiplicityMatrixXS(MatrixMGXS): # for microscopic data _divide_by_density = False - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = 'multiplicity matrix' self._estimator = 'analog' @@ -5530,6 +4845,7 @@ class MultiplicityMatrixXS(MatrixMGXS): return self._xs_tally +@add_params class ScatterProbabilityMatrix(MatrixMGXS): r"""The group-to-group scattering probability matrix. @@ -5568,93 +4884,6 @@ class ScatterProbabilityMatrix(MatrixMGXS): \sigma_{s,g'} \phi \rangle} \end{aligned} - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : '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. The keys - are strings listed in the :attr:`ScatterProbabilityMatrix.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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ # Store whether or not the number density should be removed for microscopic @@ -5662,9 +4891,9 @@ class ScatterProbabilityMatrix(MatrixMGXS): # to 1.0, this density division is not necessary _divide_by_density = False - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = 'scatter' self._mgxs_type = 'scatter probability matrix' @@ -5833,10 +5062,10 @@ class NuFissionMatrixXS(MatrixMGXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1, prompt=False): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) if not prompt: self._rxn_type = 'nu-fission' @@ -5999,10 +5228,10 @@ class Chi(MGXS): # data should not be divided by the number density _divide_by_density = False - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, prompt=False, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._estimator = 'analog' self._valid_estimators = ['analog'] @@ -6401,6 +5630,7 @@ class Chi(MGXS): return '%' +@add_params class InverseVelocity(MGXS): r"""An inverse velocity multi-group cross section. @@ -6430,94 +5660,6 @@ class InverseVelocity(MGXS): \frac{\psi (r, E, \Omega)}{v (r, E)}}{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)} - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - num_polar : Integral, optional - Number of equi-width polar angle bins for angle discretization; - defaults to one bin - num_azimuthal : Integral, optional - Number of equi-width azimuthal angle bins for angle discretization; - defaults to one bin - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - num_polar : Integral - Number of equi-width polar angle bins for angle discretization - num_azimuthal : Integral - Number of equi-width azimuthal angle bins for angle discretization - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'collision', '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. The keys - are strings listed in the :attr:`InverseVelocity.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 - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file) and the number of mesh cells for - 'mesh' domain types. - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - mgxs_type : str - The name of this MGXS type, to be used when printing and - indexing in an HDF5 data store - - .. versionadded:: 0.13.1 - """ # Store whether or not the number density should be removed for microscopic @@ -6526,9 +5668,9 @@ class InverseVelocity(MGXS): # values _divide_by_density = False - def __init__(self, domain=None, domain_type=None, groups=None, + def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name='', num_polar=1, num_azimuthal=1): - super().__init__(domain, domain_type, groups, by_nuclide, name, + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, num_polar, num_azimuthal) self._rxn_type = 'inverse-velocity' @@ -7031,7 +6173,7 @@ class Current(MeshSurfaceMGXS): """ def __init__(self, domain=None, domain_type=None, - groups=None, by_nuclide=False, name=''): + energy_groups=None, by_nuclide=False, name=''): super(Current, self).__init__(domain, domain_type, - groups, by_nuclide, name) + energy_groups, by_nuclide, name) self._rxn_type = 'current' From 54ac2042fbdb1b741447d138b6045a7420149763 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 21 Jul 2022 07:07:25 -0500 Subject: [PATCH 2/4] Add ReducedAbsorptionXS class for MGXS (absorption - n2n - 2*n3n - 3*n4n) --- docs/source/pythonapi/mgxs.rst | 1 + openmc/mgxs/mgxs.py | 61 + .../mgxs_library_condense/inputs_true.dat | 358 ++-- .../mgxs_library_condense/results_true.dat | 6 + .../mgxs_library_distribcell/inputs_true.dat | 316 ++-- .../mgxs_library_distribcell/results_true.dat | 2 + .../mgxs_library_hdf5/inputs_true.dat | 358 ++-- .../mgxs_library_hdf5/results_true.dat | 3 + .../mgxs_library_mesh/inputs_true.dat | 316 ++-- .../mgxs_library_mesh/results_true.dat | 6 + .../mgxs_library_no_nuclides/inputs_true.dat | 1632 +++++++++-------- .../mgxs_library_no_nuclides/results_true.dat | 12 + .../mgxs_library_nuclides/inputs_true.dat | 1476 ++++++++------- .../mgxs_library_nuclides/results_true.dat | 2 +- 14 files changed, 2470 insertions(+), 2079 deletions(-) diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst index bf5a845992..392914b367 100644 --- a/docs/source/pythonapi/mgxs.rst +++ b/docs/source/pythonapi/mgxs.rst @@ -41,6 +41,7 @@ Multi-group Cross Sections openmc.mgxs.KappaFissionXS openmc.mgxs.MultiplicityMatrixXS openmc.mgxs.NuFissionMatrixXS + openmc.mgxs.ReducedAbsorptionXS openmc.mgxs.ScatterXS openmc.mgxs.ScatterMatrixXS openmc.mgxs.ScatterProbabilityMatrix diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 387a98ea5f..75a33eed76 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -20,6 +20,7 @@ MGXS_TYPES = ( 'transport', 'nu-transport', 'absorption', + 'reduced absorption', 'capture', 'fission', 'nu-fission', @@ -772,6 +773,8 @@ class MGXS: mgxs = TransportXS(domain, domain_type, energy_groups, nu=True) elif mgxs_type == 'absorption': mgxs = AbsorptionXS(domain, domain_type, energy_groups) + elif mgxs_type == 'reduced absorption': + mgxs = ReducedAbsorptionXS(domain, domain_type, energy_groups) elif mgxs_type == 'capture': mgxs = CaptureXS(domain, domain_type, energy_groups) elif mgxs_type == 'fission': @@ -824,6 +827,8 @@ class MGXS: elif mgxs_type in ARBITRARY_MATRIX_TYPES: mgxs = ArbitraryMatrixXS(mgxs_type, domain, domain_type, energy_groups) + else: + raise ValueError(f"Unknown MGXS type: {mgxs_type}") mgxs.by_nuclide = by_nuclide mgxs.name = name @@ -3071,6 +3076,62 @@ class AbsorptionXS(MGXS): self._rxn_type = 'absorption' +@add_params +class ReducedAbsorptionXS(MGXS): + r"""A reduced absorpiton multi-group cross section. + + The reduced absorption reaction rate is defined as the difference between + absorption and the produced of neutrons due to (n,xn) 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 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:`V` and energy group :math:`[E_g,E_{g-1}]`, the + reduced absorption cross section is calculated as: + + .. math:: + + \frac{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \left(\sigma_a (r, E) - \sigma_{n,2n}(r,E) - 2\sigma_{n,3n}(r,E) - + 3\sigma_{n,4n}(r,E) \right) \psi (r, E, \Omega)}{\int_{r \in V} dr + \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. + + """ + + def __init__(self, domain=None, domain_type=None, energy_groups=None, + by_nuclide=False, name='', num_polar=1, num_azimuthal=1): + super().__init__(domain, domain_type, energy_groups, by_nuclide, name, + num_polar, num_azimuthal) + self._rxn_type = 'reduced absorption' + + @property + def scores(self): + return ['flux', 'absorption', '(n,2n)', '(n,3n)', '(n,4n)'] + + @property + def rxn_rate_tally(self): + if self._rxn_rate_tally is None: + self._rxn_rate_tally = ( + self.tallies['absorption'] + - self.tallies['(n,2n)'] + - 2*self.tallies['(n,3n)'] + - 3*self.tallies['(n,4n)'] + ) + self._rxn_rate_tally.sparse = self.sparse + return self._rxn_rate_tally + + @add_params class CaptureXS(MGXS): r"""A capture multi-group cross section. diff --git a/tests/regression_tests/mgxs_library_condense/inputs_true.dat b/tests/regression_tests/mgxs_library_condense/inputs_true.dat index 9661cd46be..cac18ffcd2 100644 --- a/tests/regression_tests/mgxs_library_condense/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_condense/inputs_true.dat @@ -67,16 +67,16 @@ 1 - + 3 - + 0.0 20000000.0 - + 1 - + 1 2 3 4 5 6 @@ -166,19 +166,19 @@ 1 2 total - fission + (n,2n) tracklength 1 2 total - flux + (n,3n) tracklength 1 2 total - fission + (n,4n) tracklength @@ -190,207 +190,207 @@ 1 2 total - nu-fission + absorption tracklength 1 2 total - flux + fission tracklength 1 2 total - kappa-fission + flux tracklength 1 2 total - flux + fission tracklength 1 2 total - scatter + flux tracklength 1 2 total - flux - analog + nu-fission + tracklength 1 2 total - nu-scatter - analog + flux + tracklength 1 2 total - flux - analog + kappa-fission + tracklength - 1 2 5 28 + 1 2 total - scatter - analog + flux + tracklength + 1 2 + total + scatter + tracklength + + 1 2 total flux analog - - 1 2 5 28 - total - nu-scatter - analog - - 1 2 5 + 1 2 total nu-scatter analog - 1 2 5 + 1 2 total - scatter + flux analog - 1 2 + 1 2 5 30 total - flux + scatter analog - 1 2 5 + 1 2 total - nu-fission + flux analog - 1 2 5 + 1 2 5 30 total - scatter + nu-scatter analog - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - 1 2 5 total nu-scatter analog - - 1 52 + + 1 2 5 + total + scatter + analog + + + 1 2 + total + flux + analog + + + 1 2 5 total nu-fission analog - - 1 5 + + 1 2 5 total - nu-fission + scatter analog - - 1 52 - total - prompt-nu-fission - analog - - - 1 5 - total - prompt-nu-fission - analog - - + 1 2 total flux tracklength + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + + 1 2 5 + total + nu-scatter + analog + + 1 54 + total + nu-fission + analog + + + 1 5 + total + nu-fission + analog + + + 1 54 + total + prompt-nu-fission + analog + + + 1 5 + total + prompt-nu-fission + analog + + + 1 2 + total + flux + tracklength + + 1 2 total inverse-velocity tracklength - - 1 2 - total - flux - tracklength - - - 1 2 - total - prompt-nu-fission - tracklength - - - 1 2 - total - flux - analog - - - 1 2 5 - total - prompt-nu-fission - analog - - - 66 2 - total - current - analog - 1 2 total @@ -400,7 +400,7 @@ 1 2 total - total + prompt-nu-fission tracklength @@ -410,91 +410,121 @@ analog - 1 5 6 + 1 2 5 total - scatter + prompt-nu-fission analog - 1 2 + 68 2 total - flux - tracklength + current + analog 1 2 total - total + flux tracklength + 1 2 + total + total + tracklength + + 1 2 total flux analog - + + 1 5 6 + total + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + total + total + tracklength + + + 1 2 + total + flux + analog + + 1 5 6 total nu-scatter analog - + 1 2 total flux tracklength - - 1 77 2 - total - delayed-nu-fission - tracklength - - - 1 77 52 - total - delayed-nu-fission - analog - - - 1 77 5 - total - delayed-nu-fission - analog - - - 1 2 - total - nu-fission - tracklength - - - 1 77 2 - total - delayed-nu-fission - tracklength - - 1 77 + 1 79 2 total delayed-nu-fission tracklength - 1 77 + 1 79 54 + total + delayed-nu-fission + analog + + + 1 79 5 + total + delayed-nu-fission + analog + + + 1 2 + total + nu-fission + tracklength + + + 1 79 2 + total + delayed-nu-fission + tracklength + + + 1 79 + total + delayed-nu-fission + tracklength + + + 1 79 total decay-rate tracklength - + 1 2 total flux analog - - 1 77 2 5 + + 1 79 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_condense/results_true.dat b/tests/regression_tests/mgxs_library_condense/results_true.dat index 508984e54f..e0b47a78b5 100644 --- a/tests/regression_tests/mgxs_library_condense/results_true.dat +++ b/tests/regression_tests/mgxs_library_condense/results_true.dat @@ -24,6 +24,12 @@ 3 2 2 1 1 total 0.022046 0.001594 mesh 1 group in nuclide mean std. dev. x y z +0 1 1 1 1 total 0.021489 0.001396 +2 1 2 1 1 total 0.020837 0.001436 +1 2 1 1 1 total 0.021454 0.001983 +3 2 2 1 1 total 0.022036 0.001594 + mesh 1 group in nuclide mean std. dev. + x y z 0 1 1 1 1 total 0.011598 0.001508 2 1 2 1 1 total 0.010856 0.001613 1 2 1 1 1 total 0.011622 0.002259 diff --git a/tests/regression_tests/mgxs_library_distribcell/inputs_true.dat b/tests/regression_tests/mgxs_library_distribcell/inputs_true.dat index 602e04abe0..bd6abbb7cb 100644 --- a/tests/regression_tests/mgxs_library_distribcell/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_distribcell/inputs_true.dat @@ -89,10 +89,10 @@ 1 - + 3 - + 1 2 3 4 5 6 @@ -182,19 +182,19 @@ 1 2 total - fission + (n,2n) tracklength 1 2 total - flux + (n,3n) tracklength 1 2 total - fission + (n,4n) tracklength @@ -206,305 +206,335 @@ 1 2 total - nu-fission + absorption tracklength 1 2 total - flux + fission tracklength 1 2 total - kappa-fission + flux tracklength 1 2 total - flux + fission tracklength 1 2 total - scatter + flux tracklength 1 2 total - flux - analog + nu-fission + tracklength 1 2 total - nu-scatter - analog + flux + tracklength 1 2 total - flux - analog + kappa-fission + tracklength - 1 2 5 28 + 1 2 total - scatter - analog + flux + tracklength + 1 2 + total + scatter + tracklength + + 1 2 total flux analog - - 1 2 5 28 - total - nu-scatter - analog - - 1 2 5 + 1 2 total nu-scatter analog - 1 2 5 + 1 2 total - scatter + flux analog - 1 2 + 1 2 5 30 total - flux + scatter analog - 1 2 5 + 1 2 total - nu-fission + flux analog - 1 2 5 + 1 2 5 30 total - scatter + nu-scatter analog - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - 1 2 5 total nu-scatter analog - + + 1 2 5 + total + scatter + analog + + 1 2 total + flux + analog + + + 1 2 5 + total nu-fission analog - - 1 5 + + 1 2 5 total - nu-fission + scatter analog + + 1 2 + total + flux + tracklength + + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + + 1 2 + total + flux + tracklength + 1 2 total - prompt-nu-fission - analog + scatter + tracklength - 1 5 + 1 2 5 30 total - prompt-nu-fission + scatter analog - 1 2 + 1 2 5 total - flux - tracklength + nu-scatter + analog 1 2 total - inverse-velocity - tracklength + nu-fission + analog - 1 2 + 1 5 total - flux - tracklength + nu-fission + analog 1 2 total prompt-nu-fission - tracklength - - - 1 2 - total - flux analog - - 1 2 5 + + 1 5 total prompt-nu-fission analog - + 1 2 total flux tracklength + + 1 2 + total + inverse-velocity + tracklength + 1 2 total - total + flux tracklength 1 2 total - flux - analog + prompt-nu-fission + tracklength - 1 5 6 - total - scatter - analog - - 1 2 total flux - tracklength + analog + + + 1 2 5 + total + prompt-nu-fission + analog 1 2 total - total + flux tracklength + 1 2 + total + total + tracklength + + 1 2 total flux analog - + + 1 5 6 + total + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + total + total + tracklength + + + 1 2 + total + flux + analog + + 1 5 6 total nu-scatter analog - + 1 2 total flux tracklength - - 1 73 2 - total - delayed-nu-fission - tracklength - - - 1 73 2 - total - delayed-nu-fission - analog - - - 1 73 5 - total - delayed-nu-fission - analog - - - 1 2 - total - nu-fission - tracklength - - - 1 73 2 - total - delayed-nu-fission - tracklength - - 1 73 + 1 75 2 total delayed-nu-fission tracklength - 1 73 + 1 75 2 + total + delayed-nu-fission + analog + + + 1 75 5 + total + delayed-nu-fission + analog + + + 1 2 + total + nu-fission + tracklength + + + 1 75 2 + total + delayed-nu-fission + tracklength + + + 1 75 + total + delayed-nu-fission + tracklength + + + 1 75 total decay-rate tracklength - + 1 2 total flux analog - - 1 73 2 5 + + 1 75 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_distribcell/results_true.dat b/tests/regression_tests/mgxs_library_distribcell/results_true.dat index e6e4b99e42..3d362c1bd2 100644 --- a/tests/regression_tests/mgxs_library_distribcell/results_true.dat +++ b/tests/regression_tests/mgxs_library_distribcell/results_true.dat @@ -7,6 +7,8 @@ sum(distribcell) group in nuclide mean std. dev. 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...),) 1 total 0.06484 0.002514 sum(distribcell) group in nuclide mean std. dev. +0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...),) 1 total 0.064761 0.002514 + sum(distribcell) group in nuclide mean std. dev. 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...),) 1 total 0.028638 0.002713 sum(distribcell) group in nuclide mean std. dev. 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...),) 1 total 0.036203 0.001449 diff --git a/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat b/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat index 9661cd46be..cac18ffcd2 100644 --- a/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat @@ -67,16 +67,16 @@ 1 - + 3 - + 0.0 20000000.0 - + 1 - + 1 2 3 4 5 6 @@ -166,19 +166,19 @@ 1 2 total - fission + (n,2n) tracklength 1 2 total - flux + (n,3n) tracklength 1 2 total - fission + (n,4n) tracklength @@ -190,207 +190,207 @@ 1 2 total - nu-fission + absorption tracklength 1 2 total - flux + fission tracklength 1 2 total - kappa-fission + flux tracklength 1 2 total - flux + fission tracklength 1 2 total - scatter + flux tracklength 1 2 total - flux - analog + nu-fission + tracklength 1 2 total - nu-scatter - analog + flux + tracklength 1 2 total - flux - analog + kappa-fission + tracklength - 1 2 5 28 + 1 2 total - scatter - analog + flux + tracklength + 1 2 + total + scatter + tracklength + + 1 2 total flux analog - - 1 2 5 28 - total - nu-scatter - analog - - 1 2 5 + 1 2 total nu-scatter analog - 1 2 5 + 1 2 total - scatter + flux analog - 1 2 + 1 2 5 30 total - flux + scatter analog - 1 2 5 + 1 2 total - nu-fission + flux analog - 1 2 5 + 1 2 5 30 total - scatter + nu-scatter analog - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - 1 2 5 total nu-scatter analog - - 1 52 + + 1 2 5 + total + scatter + analog + + + 1 2 + total + flux + analog + + + 1 2 5 total nu-fission analog - - 1 5 + + 1 2 5 total - nu-fission + scatter analog - - 1 52 - total - prompt-nu-fission - analog - - - 1 5 - total - prompt-nu-fission - analog - - + 1 2 total flux tracklength + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + + 1 2 5 + total + nu-scatter + analog + + 1 54 + total + nu-fission + analog + + + 1 5 + total + nu-fission + analog + + + 1 54 + total + prompt-nu-fission + analog + + + 1 5 + total + prompt-nu-fission + analog + + + 1 2 + total + flux + tracklength + + 1 2 total inverse-velocity tracklength - - 1 2 - total - flux - tracklength - - - 1 2 - total - prompt-nu-fission - tracklength - - - 1 2 - total - flux - analog - - - 1 2 5 - total - prompt-nu-fission - analog - - - 66 2 - total - current - analog - 1 2 total @@ -400,7 +400,7 @@ 1 2 total - total + prompt-nu-fission tracklength @@ -410,91 +410,121 @@ analog - 1 5 6 + 1 2 5 total - scatter + prompt-nu-fission analog - 1 2 + 68 2 total - flux - tracklength + current + analog 1 2 total - total + flux tracklength + 1 2 + total + total + tracklength + + 1 2 total flux analog - + + 1 5 6 + total + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + total + total + tracklength + + + 1 2 + total + flux + analog + + 1 5 6 total nu-scatter analog - + 1 2 total flux tracklength - - 1 77 2 - total - delayed-nu-fission - tracklength - - - 1 77 52 - total - delayed-nu-fission - analog - - - 1 77 5 - total - delayed-nu-fission - analog - - - 1 2 - total - nu-fission - tracklength - - - 1 77 2 - total - delayed-nu-fission - tracklength - - 1 77 + 1 79 2 total delayed-nu-fission tracklength - 1 77 + 1 79 54 + total + delayed-nu-fission + analog + + + 1 79 5 + total + delayed-nu-fission + analog + + + 1 2 + total + nu-fission + tracklength + + + 1 79 2 + total + delayed-nu-fission + tracklength + + + 1 79 + total + delayed-nu-fission + tracklength + + + 1 79 total decay-rate tracklength - + 1 2 total flux analog - - 1 77 2 5 + + 1 79 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_hdf5/results_true.dat b/tests/regression_tests/mgxs_library_hdf5/results_true.dat index 6da73ec9bd..b075939f2b 100644 --- a/tests/regression_tests/mgxs_library_hdf5/results_true.dat +++ b/tests/regression_tests/mgxs_library_hdf5/results_true.dat @@ -10,6 +10,9 @@ domain=1 type=nu-transport domain=1 type=absorption [9.18204614e-03 9.50890834e-02] [1.02291781e-03 9.51211716e-03] +domain=1 type=reduced absorption +[9.15806809e-03 9.50890834e-02] +[1.02286279e-03 9.51211716e-03] domain=1 type=capture [6.76780024e-03 4.04282690e-02] [1.01848835e-03 8.89313901e-03] diff --git a/tests/regression_tests/mgxs_library_mesh/inputs_true.dat b/tests/regression_tests/mgxs_library_mesh/inputs_true.dat index 5cac8ecf42..ac2ff0c81e 100644 --- a/tests/regression_tests/mgxs_library_mesh/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_mesh/inputs_true.dat @@ -50,13 +50,13 @@ 1 - + 3 - + 1 - + 1 2 3 4 5 6 @@ -146,19 +146,19 @@ 1 2 total - fission + (n,2n) tracklength 1 2 total - flux + (n,3n) tracklength 1 2 total - fission + (n,4n) tracklength @@ -170,206 +170,206 @@ 1 2 total - nu-fission + absorption tracklength 1 2 total - flux + fission tracklength 1 2 total - kappa-fission + flux tracklength 1 2 total - flux + fission tracklength 1 2 total - scatter + flux tracklength 1 2 total - flux - analog + nu-fission + tracklength 1 2 total - nu-scatter - analog + flux + tracklength 1 2 total - flux - analog + kappa-fission + tracklength - 1 2 5 28 + 1 2 total - scatter - analog + flux + tracklength + 1 2 + total + scatter + tracklength + + 1 2 total flux analog - - 1 2 5 28 - total - nu-scatter - analog - - 1 2 5 + 1 2 total nu-scatter analog - 1 2 5 + 1 2 total - scatter + flux analog - 1 2 + 1 2 5 30 total - flux + scatter analog - 1 2 5 + 1 2 total - nu-fission + flux analog - 1 2 5 + 1 2 5 30 total - scatter + nu-scatter analog - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - 1 2 5 total nu-scatter analog - + + 1 2 5 + total + scatter + analog + + 1 2 total + flux + analog + + + 1 2 5 + total nu-fission analog - - 1 5 + + 1 2 5 total - nu-fission + scatter analog + + 1 2 + total + flux + tracklength + + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + + 1 2 + total + flux + tracklength + 1 2 total - prompt-nu-fission - analog + scatter + tracklength - 1 5 + 1 2 5 30 total - prompt-nu-fission + scatter analog - 1 2 + 1 2 5 total - flux - tracklength + nu-scatter + analog 1 2 total - inverse-velocity - tracklength + nu-fission + analog - 1 2 + 1 5 total - flux - tracklength + nu-fission + analog 1 2 total prompt-nu-fission - tracklength - - - 1 2 - total - flux analog - - 1 2 5 + + 1 5 total prompt-nu-fission analog - - 66 2 + + 1 2 total - current - analog + flux + tracklength + + + 1 2 + total + inverse-velocity + tracklength 1 2 @@ -380,7 +380,7 @@ 1 2 total - total + prompt-nu-fission tracklength @@ -390,91 +390,121 @@ analog - 1 5 6 + 1 2 5 total - scatter + prompt-nu-fission analog - 1 2 + 68 2 total - flux - tracklength + current + analog 1 2 total - total + flux tracklength + 1 2 + total + total + tracklength + + 1 2 total flux analog - + + 1 5 6 + total + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + total + total + tracklength + + + 1 2 + total + flux + analog + + 1 5 6 total nu-scatter analog - + 1 2 total flux tracklength - - 1 77 2 - total - delayed-nu-fission - tracklength - - - 1 77 2 - total - delayed-nu-fission - analog - - - 1 77 5 - total - delayed-nu-fission - analog - - - 1 2 - total - nu-fission - tracklength - - - 1 77 2 - total - delayed-nu-fission - tracklength - - 1 77 + 1 79 2 total delayed-nu-fission tracklength - 1 77 + 1 79 2 + total + delayed-nu-fission + analog + + + 1 79 5 + total + delayed-nu-fission + analog + + + 1 2 + total + nu-fission + tracklength + + + 1 79 2 + total + delayed-nu-fission + tracklength + + + 1 79 + total + delayed-nu-fission + tracklength + + + 1 79 total decay-rate tracklength - + 1 2 total flux analog - - 1 77 2 5 + + 1 79 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_mesh/results_true.dat b/tests/regression_tests/mgxs_library_mesh/results_true.dat index 7a6b4abe7c..390b5c453a 100644 --- a/tests/regression_tests/mgxs_library_mesh/results_true.dat +++ b/tests/regression_tests/mgxs_library_mesh/results_true.dat @@ -24,6 +24,12 @@ 3 2 2 1 1 total 0.013286 0.000621 mesh 1 group in nuclide mean std. dev. x y z +0 1 1 1 1 total 0.012881 0.000835 +2 1 2 1 1 total 0.013282 0.000552 +1 2 1 1 1 total 0.013896 0.000714 +3 2 2 1 1 total 0.013180 0.000621 + mesh 1 group in nuclide mean std. dev. + x y z 0 1 1 1 1 total 0.001231 0.000979 2 1 2 1 1 total 0.001332 0.000691 1 2 1 1 1 total 0.001346 0.000770 diff --git a/tests/regression_tests/mgxs_library_no_nuclides/inputs_true.dat b/tests/regression_tests/mgxs_library_no_nuclides/inputs_true.dat index 0d9dbf8215..59cbddec48 100644 --- a/tests/regression_tests/mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_no_nuclides/inputs_true.dat @@ -62,19 +62,19 @@ 1 - + 3 - + 0.0 20000000.0 - + 1 2 3 4 5 6 - + 2 - + 3 @@ -164,19 +164,19 @@ 1 2 total - fission + (n,2n) tracklength 1 2 total - flux + (n,3n) tracklength 1 2 total - fission + (n,4n) tracklength @@ -188,1673 +188,1763 @@ 1 2 total - nu-fission + absorption tracklength 1 2 total - flux + fission tracklength 1 2 total - kappa-fission + flux tracklength 1 2 total - flux + fission tracklength 1 2 total - scatter + flux tracklength 1 2 total - flux - analog + nu-fission + tracklength 1 2 total - nu-scatter - analog + flux + tracklength 1 2 total - flux - analog + kappa-fission + tracklength - 1 2 5 28 + 1 2 total - scatter - analog + flux + tracklength + 1 2 + total + scatter + tracklength + + 1 2 total flux analog - - 1 2 5 28 - total - nu-scatter - analog - - 1 2 5 + 1 2 total nu-scatter analog - 1 2 5 + 1 2 total - scatter + flux analog - 1 2 + 1 2 5 30 total - flux + scatter analog - 1 2 5 + 1 2 total - nu-fission + flux analog - 1 2 5 + 1 2 5 30 total - scatter + nu-scatter analog - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - - 1 2 - total - flux - tracklength - - - 1 2 - total - scatter - tracklength - - - 1 2 5 28 - total - scatter - analog - - 1 2 5 total nu-scatter analog - - 1 52 + + 1 2 5 + total + scatter + analog + + + 1 2 + total + flux + analog + + + 1 2 5 total nu-fission analog + + 1 2 5 + total + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + 1 2 + total + flux + tracklength + + + 1 2 + total + scatter + tracklength + + + 1 2 5 30 + total + scatter + analog + + + 1 2 5 + total + nu-scatter + analog + + + 1 54 + total + nu-fission + analog + + 1 5 total nu-fission analog - - 1 52 + + 1 54 total prompt-nu-fission analog - + 1 5 total prompt-nu-fission analog - - 1 2 - total - flux - tracklength - - - 1 2 - total - inverse-velocity - tracklength - - - 1 2 - total - flux - tracklength - - - 1 2 - total - prompt-nu-fission - tracklength - - - 1 2 - total - flux - analog - - 1 2 5 + 1 2 total - prompt-nu-fission - analog + flux + tracklength 1 2 total - flux + inverse-velocity tracklength 1 2 total - total + flux tracklength 1 2 total - flux - analog + prompt-nu-fission + tracklength - 1 5 6 - total - scatter - analog - - 1 2 total flux - tracklength + analog + + + 1 2 5 + total + prompt-nu-fission + analog 1 2 total - total + flux tracklength 1 2 total - flux - analog + total + tracklength - 1 5 6 - total - nu-scatter - analog - - 1 2 total flux - tracklength + analog + + + 1 5 6 + total + scatter + analog 1 2 total - (n,elastic) + flux tracklength 1 2 total - flux + total tracklength 1 2 total - (n,level) - tracklength + flux + analog - 1 2 + 1 5 6 total - flux - tracklength + nu-scatter + analog 1 2 total - (n,2n) + flux tracklength 1 2 total - flux + (n,elastic) tracklength 1 2 total - (n,na) + flux tracklength 1 2 total - flux + (n,level) tracklength 1 2 total - (n,nc) + flux tracklength 1 2 total - flux + (n,2n) tracklength 1 2 total - (n,gamma) + flux tracklength 1 2 total - flux + (n,na) tracklength 1 2 total - (n,a) + flux tracklength 1 2 total - flux + (n,nc) tracklength 1 2 total - (n,Xa) + flux tracklength 1 2 total - flux + (n,gamma) tracklength 1 2 total - heating + flux tracklength 1 2 total - flux + (n,a) tracklength 1 2 total - damage-energy + flux tracklength 1 2 total - flux + (n,Xa) tracklength 1 2 total - (n,n1) + flux tracklength 1 2 total - flux + heating tracklength 1 2 total - (n,a0) + flux tracklength + 1 2 + total + damage-energy + tracklength + + + 1 2 + total + flux + tracklength + + + 1 2 + total + (n,n1) + tracklength + + + 1 2 + total + flux + tracklength + + + 1 2 + total + (n,a0) + tracklength + + 1 2 total flux analog - + 1 2 5 total (n,nc) analog - + 1 2 total flux analog - + 1 2 5 total (n,n1) analog - + 1 2 total flux analog - + 1 2 5 total (n,2n) analog - + 1 2 total flux tracklength - - 1 106 2 - total - delayed-nu-fission - tracklength - - - 1 106 52 - total - delayed-nu-fission - analog - - - 1 106 5 - total - delayed-nu-fission - analog - - - 1 2 - total - nu-fission - tracklength - - - 1 106 2 - total - delayed-nu-fission - tracklength - - 1 106 + 1 108 2 total delayed-nu-fission tracklength - 1 106 + 1 108 54 + total + delayed-nu-fission + analog + + + 1 108 5 + total + delayed-nu-fission + analog + + + 1 2 + total + nu-fission + tracklength + + + 1 108 2 + total + delayed-nu-fission + tracklength + + + 1 108 + total + delayed-nu-fission + tracklength + + + 1 108 total decay-rate tracklength - + 1 2 total flux analog - - 1 106 2 5 + + 1 108 2 5 total delayed-nu-fission analog - - 120 2 + + 122 2 total flux tracklength - - 120 2 + + 122 2 total total tracklength - - 120 2 + + 122 2 total flux tracklength - - 120 2 + + 122 2 total total tracklength - - 120 2 + + 122 2 total flux analog - - 120 5 6 + + 122 5 6 total scatter analog - - 120 2 + + 122 2 total flux tracklength - - 120 2 + + 122 2 total total tracklength - - 120 2 + + 122 2 total flux analog - - 120 5 6 + + 122 5 6 total nu-scatter analog - - 120 2 - total - flux - tracklength - - - 120 2 - total - absorption - tracklength - - - 120 2 - total - flux - tracklength - - - 120 2 - total - absorption - tracklength - - - 120 2 - total - fission - tracklength - - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - fission + absorption tracklength - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - nu-fission + absorption tracklength - 120 2 + 122 2 + total + (n,2n) + tracklength + + + 122 2 + total + (n,3n) + tracklength + + + 122 2 + total + (n,4n) + tracklength + + + 122 2 total flux tracklength - - 120 2 + + 122 2 + total + absorption + tracklength + + + 122 2 + total + fission + tracklength + + + 122 2 + total + flux + tracklength + + + 122 2 + total + fission + tracklength + + + 122 2 + total + flux + tracklength + + + 122 2 + total + nu-fission + tracklength + + + 122 2 + total + flux + tracklength + + + 122 2 total kappa-fission tracklength - - 120 2 - total - flux - tracklength - - - 120 2 - total - scatter - tracklength - - - 120 2 - total - flux - analog - - - 120 2 - total - nu-scatter - analog - - - 120 2 - total - flux - analog - - - 120 2 5 28 - total - scatter - analog - - - 120 2 - total - flux - analog - - - 120 2 5 28 - total - nu-scatter - analog - - - 120 2 5 - total - nu-scatter - analog - - - 120 2 5 - total - scatter - analog - - 120 2 + 122 2 total flux - analog + tracklength - 120 2 5 - total - nu-fission - analog - - - 120 2 5 + 122 2 total scatter + tracklength + + + 122 2 + total + flux analog - 120 2 + 122 2 total - flux - tracklength + nu-scatter + analog - 120 2 + 122 2 total - scatter - tracklength + flux + analog - 120 2 5 28 + 122 2 5 30 total scatter analog - 120 2 + 122 2 total flux - tracklength - - - 120 2 - total - scatter - tracklength - - - 120 2 5 28 - total - scatter analog - - 120 2 5 + + 122 2 5 30 total nu-scatter analog - - 120 52 + + 122 2 5 total - nu-fission + nu-scatter + analog + + + 122 2 5 + total + scatter + analog + + + 122 2 + total + flux analog - 120 5 + 122 2 5 total nu-fission analog - 120 52 + 122 2 5 total - prompt-nu-fission + scatter analog - 120 5 - total - prompt-nu-fission - analog - - - 120 2 + 122 2 total flux tracklength - - 120 2 + + 122 2 total - inverse-velocity + scatter tracklength + + 122 2 5 30 + total + scatter + analog + - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - prompt-nu-fission + scatter tracklength - 120 2 - total - flux - analog - - - 120 2 5 - total - prompt-nu-fission - analog - - - 120 2 - total - flux - tracklength - - - 120 2 - total - total - tracklength - - - 120 2 - total - flux - analog - - - 120 5 6 + 122 2 5 30 total scatter analog + + 122 2 5 + total + nu-scatter + analog + + + 122 54 + total + nu-fission + analog + + + 122 5 + total + nu-fission + analog + + + 122 54 + total + prompt-nu-fission + analog + + + 122 5 + total + prompt-nu-fission + analog + - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - total + inverse-velocity tracklength - 120 2 + 122 2 total flux - analog + tracklength - 120 5 6 + 122 2 total - nu-scatter - analog + prompt-nu-fission + tracklength - 120 2 + 122 2 total flux - tracklength + analog - 120 2 + 122 2 5 total - (n,elastic) - tracklength + prompt-nu-fission + analog - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - (n,level) + total tracklength - 120 2 + 122 2 total flux - tracklength + analog - 120 2 + 122 5 6 total - (n,2n) - tracklength + scatter + analog - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - (n,na) + total tracklength - 120 2 + 122 2 total flux - tracklength + analog - 120 2 + 122 5 6 total - (n,nc) - tracklength + nu-scatter + analog - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - (n,gamma) + (n,elastic) tracklength - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - (n,a) + (n,level) tracklength - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - (n,Xa) + (n,2n) tracklength - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - heating + (n,na) tracklength - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - damage-energy + (n,nc) tracklength - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - (n,n1) + (n,gamma) tracklength - 120 2 + 122 2 total flux tracklength - 120 2 + 122 2 total - (n,a0) + (n,a) tracklength - 120 2 + 122 2 total flux - analog + tracklength - 120 2 5 + 122 2 total - (n,nc) - analog + (n,Xa) + tracklength - 120 2 + 122 2 total flux - analog + tracklength - 120 2 5 + 122 2 total - (n,n1) - analog + heating + tracklength - 120 2 + 122 2 total flux - analog + tracklength - 120 2 5 + 122 2 total - (n,2n) - analog + damage-energy + tracklength - 120 2 + 122 2 total flux tracklength - 120 106 2 + 122 2 total - delayed-nu-fission + (n,n1) tracklength - 120 106 52 + 122 2 total - delayed-nu-fission - analog + flux + tracklength - 120 106 5 + 122 2 total - delayed-nu-fission - analog + (n,a0) + tracklength - 120 2 + 122 2 total - nu-fission - tracklength + flux + analog - 120 106 2 + 122 2 5 total - delayed-nu-fission - tracklength + (n,nc) + analog - 120 106 + 122 2 total - delayed-nu-fission - tracklength + flux + analog - 120 106 + 122 2 5 total - decay-rate - tracklength + (n,n1) + analog - 120 2 + 122 2 total flux analog - 120 106 2 5 + 122 2 5 total - delayed-nu-fission + (n,2n) analog - 239 2 + 122 2 total flux tracklength - 239 2 + 122 108 2 total - total + delayed-nu-fission tracklength - 239 2 + 122 108 54 total - flux - tracklength + delayed-nu-fission + analog - 239 2 + 122 108 5 total - total - tracklength + delayed-nu-fission + analog - 239 2 + 122 2 total - flux - analog + nu-fission + tracklength - 239 5 6 + 122 108 2 total - scatter - analog + delayed-nu-fission + tracklength - 239 2 + 122 108 total - flux + delayed-nu-fission tracklength - 239 2 + 122 108 total - total + decay-rate tracklength - 239 2 + 122 2 total flux analog - 239 5 6 + 122 108 2 5 total - nu-scatter + delayed-nu-fission analog - 239 2 + 243 2 total flux tracklength - 239 2 + 243 2 total - absorption + total tracklength - 239 2 + 243 2 total flux tracklength - 239 2 + 243 2 + total + total + tracklength + + + 243 2 + total + flux + analog + + + 243 5 6 + total + scatter + analog + + + 243 2 + total + flux + tracklength + + + 243 2 + total + total + tracklength + + + 243 2 + total + flux + analog + + + 243 5 6 + total + nu-scatter + analog + + + 243 2 + total + flux + tracklength + + + 243 2 total absorption tracklength - - 239 2 - total - fission - tracklength - - - 239 2 - total - flux - tracklength - - - 239 2 - total - fission - tracklength - - - 239 2 - total - flux - tracklength - - - 239 2 - total - nu-fission - tracklength - - - 239 2 - total - flux - tracklength - - - 239 2 - total - kappa-fission - tracklength - - - 239 2 - total - flux - tracklength - - 239 2 + 243 2 total - scatter + flux tracklength - 239 2 + 243 2 total - flux - analog + absorption + tracklength - 239 2 + 243 2 total - nu-scatter - analog + (n,2n) + tracklength - 239 2 + 243 2 total - flux - analog + (n,3n) + tracklength - 239 2 5 28 + 243 2 total - scatter - analog + (n,4n) + tracklength - 239 2 + 243 2 total flux - analog + tracklength - 239 2 5 28 + 243 2 total - nu-scatter - analog + absorption + tracklength - 239 2 5 + 243 2 total - nu-scatter - analog + fission + tracklength - 239 2 5 - total - scatter - analog - - - 239 2 + 243 2 total flux - analog + tracklength + + + 243 2 + total + fission + tracklength - 239 2 5 + 243 2 total - nu-fission - analog + flux + tracklength - 239 2 5 + 243 2 total - scatter - analog + nu-fission + tracklength - 239 2 + 243 2 total flux tracklength - 239 2 + 243 2 total - scatter + kappa-fission tracklength - 239 2 5 28 - total - scatter - analog - - - 239 2 + 243 2 total flux tracklength - - 239 2 + + 243 2 total scatter tracklength - - 239 2 5 28 + + 243 2 total - scatter + flux analog - - 239 2 5 + + 243 2 total nu-scatter analog - - 239 52 + + 243 2 total - nu-fission + flux + analog + + + 243 2 5 30 + total + scatter analog - 239 5 + 243 2 + total + flux + analog + + + 243 2 5 30 + total + nu-scatter + analog + + + 243 2 5 + total + nu-scatter + analog + + + 243 2 5 + total + scatter + analog + + + 243 2 + total + flux + analog + + + 243 2 5 total nu-fission analog - - 239 52 - total - prompt-nu-fission - analog - - - 239 5 - total - prompt-nu-fission - analog - - - 239 2 - total - flux - tracklength - - - 239 2 - total - inverse-velocity - tracklength - - - 239 2 - total - flux - tracklength - - 239 2 + 243 2 5 total - prompt-nu-fission - tracklength + scatter + analog - 239 2 - total - flux - analog - - - 239 2 5 - total - prompt-nu-fission - analog - - - 239 2 + 243 2 total flux tracklength - - 239 2 + + 243 2 total - total + scatter + tracklength + + + 243 2 5 30 + total + scatter + analog + + + 243 2 + total + flux tracklength - 239 2 + 243 2 total - flux - analog + scatter + tracklength - 239 5 6 + 243 2 5 30 total scatter analog - 239 2 - total - flux - tracklength - - - 239 2 - total - total - tracklength - - - 239 2 - total - flux - analog - - - 239 5 6 + 243 2 5 total nu-scatter analog + + 243 54 + total + nu-fission + analog + + + 243 5 + total + nu-fission + analog + + + 243 54 + total + prompt-nu-fission + analog + - 239 2 + 243 5 + total + prompt-nu-fission + analog + + + 243 2 total flux tracklength - - 239 2 + + 243 2 + total + inverse-velocity + tracklength + + + 243 2 + total + flux + tracklength + + + 243 2 + total + prompt-nu-fission + tracklength + + + 243 2 + total + flux + analog + + + 243 2 5 + total + prompt-nu-fission + analog + + + 243 2 + total + flux + tracklength + + + 243 2 + total + total + tracklength + + + 243 2 + total + flux + analog + + + 243 5 6 + total + scatter + analog + + + 243 2 + total + flux + tracklength + + + 243 2 + total + total + tracklength + + + 243 2 + total + flux + analog + + + 243 5 6 + total + nu-scatter + analog + + + 243 2 + total + flux + tracklength + + + 243 2 total (n,elastic) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,level) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,2n) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,na) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,nc) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,gamma) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,a) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,Xa) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total heating tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total damage-energy tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,n1) tracklength - - 239 2 + + 243 2 total flux tracklength - - 239 2 + + 243 2 total (n,a0) tracklength - - 239 2 + + 243 2 total flux analog - - 239 2 5 + + 243 2 5 total (n,nc) analog - - 239 2 + + 243 2 total flux analog - - 239 2 5 + + 243 2 5 total (n,n1) analog - - 239 2 + + 243 2 total flux analog - - 239 2 5 + + 243 2 5 total (n,2n) analog - - 239 2 + + 243 2 total flux tracklength - - 239 106 2 + + 243 108 2 total delayed-nu-fission tracklength - - 239 106 52 + + 243 108 54 total delayed-nu-fission analog - - 239 106 5 + + 243 108 5 total delayed-nu-fission analog - - 239 2 + + 243 2 total nu-fission tracklength - - 239 106 2 + + 243 108 2 total delayed-nu-fission tracklength - - 239 106 + + 243 108 total delayed-nu-fission tracklength - - 239 106 + + 243 108 total decay-rate tracklength - - 239 2 + + 243 2 total flux analog - - 239 106 2 5 + + 243 108 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_no_nuclides/results_true.dat b/tests/regression_tests/mgxs_library_no_nuclides/results_true.dat index 32ae7f4cf2..dfbd183d44 100644 --- a/tests/regression_tests/mgxs_library_no_nuclides/results_true.dat +++ b/tests/regression_tests/mgxs_library_no_nuclides/results_true.dat @@ -14,6 +14,10 @@ absorption material group in nuclide mean std. dev. 1 1 1 total 0.027335 0.002038 0 1 2 total 0.263007 0.029616 +reduced absorption + material group in nuclide mean std. dev. +1 1 1 total 0.027278 0.002038 +0 1 2 total 0.263007 0.029616 capture material group in nuclide mean std. dev. 1 1 1 total 0.019722 0.001980 @@ -316,6 +320,10 @@ absorption material group in nuclide mean std. dev. 1 2 1 total 0.001395 0.000129 0 2 2 total 0.005202 0.000498 +reduced absorption + material group in nuclide mean std. dev. +1 2 1 total 0.001390 0.000129 +0 2 2 total 0.005202 0.000498 capture material group in nuclide mean std. dev. 1 2 1 total 0.001395 0.000129 @@ -618,6 +626,10 @@ absorption material group in nuclide mean std. dev. 1 3 1 total 0.000715 0.000032 0 3 2 total 0.031290 0.001882 +reduced absorption + material group in nuclide mean std. dev. +1 3 1 total 0.000715 0.000032 +0 3 2 total 0.031290 0.001882 capture material group in nuclide mean std. dev. 1 3 1 total 0.000715 0.000032 diff --git a/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat b/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat index f29a41f3d7..e45fe389ef 100644 --- a/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat @@ -62,16 +62,16 @@ 1 - + 3 - + 0.0 20000000.0 - + 2 - + 3 @@ -161,19 +161,19 @@ 1 2 U234 U235 U238 O16 - fission + (n,2n) tracklength 1 2 - total - flux + U234 U235 U238 O16 + (n,3n) tracklength 1 2 U234 U235 U238 O16 - fission + (n,4n) tracklength @@ -185,1493 +185,1583 @@ 1 2 U234 U235 U238 O16 - nu-fission + absorption tracklength + 1 2 + U234 U235 U238 O16 + fission + tracklength + + 1 2 total flux tracklength - + + 1 2 + U234 U235 U238 O16 + fission + tracklength + + + 1 2 + total + flux + tracklength + + + 1 2 + U234 U235 U238 O16 + nu-fission + tracklength + + + 1 2 + total + flux + tracklength + + 1 2 U234 U235 U238 O16 kappa-fission tracklength - - 1 2 - total - flux - tracklength - - - 1 2 - U234 U235 U238 O16 - scatter - tracklength - - - 1 2 - total - flux - analog - - - 1 2 - U234 U235 U238 O16 - nu-scatter - analog - - - 1 2 - total - flux - analog - - 1 2 5 28 - U234 U235 U238 O16 - scatter - analog + 1 2 + total + flux + tracklength + 1 2 + U234 U235 U238 O16 + scatter + tracklength + + 1 2 total flux analog - - 1 2 5 28 - U234 U235 U238 O16 - nu-scatter - analog - - 1 2 5 + 1 2 U234 U235 U238 O16 nu-scatter analog - 1 2 5 - U234 U235 U238 O16 - scatter + 1 2 + total + flux analog - 1 2 - total - flux + 1 2 5 30 + U234 U235 U238 O16 + scatter analog - 1 2 5 - U234 U235 U238 O16 - nu-fission + 1 2 + total + flux analog - 1 2 5 + 1 2 5 30 U234 U235 U238 O16 - scatter + nu-scatter analog - 1 2 - total - flux - tracklength - - - 1 2 - U234 U235 U238 O16 - scatter - tracklength - - - 1 2 5 28 - U234 U235 U238 O16 - scatter - analog - - - 1 2 - total - flux - tracklength - - - 1 2 - U234 U235 U238 O16 - scatter - tracklength - - - 1 2 5 28 - U234 U235 U238 O16 - scatter - analog - - 1 2 5 U234 U235 U238 O16 nu-scatter analog - - 1 52 + + 1 2 5 + U234 U235 U238 O16 + scatter + analog + + + 1 2 + total + flux + analog + + + 1 2 5 U234 U235 U238 O16 nu-fission analog - - 1 5 + + 1 2 5 U234 U235 U238 O16 - nu-fission + scatter analog - - 1 52 - U234 U235 U238 O16 - prompt-nu-fission - analog - - - 1 5 - U234 U235 U238 O16 - prompt-nu-fission - analog - - + 1 2 total flux tracklength + + 1 2 + U234 U235 U238 O16 + scatter + tracklength + + + 1 2 5 30 + U234 U235 U238 O16 + scatter + analog + + + 1 2 + total + flux + tracklength + + + 1 2 + U234 U235 U238 O16 + scatter + tracklength + + + 1 2 5 30 + U234 U235 U238 O16 + scatter + analog + + + 1 2 5 + U234 U235 U238 O16 + nu-scatter + analog + + 1 54 + U234 U235 U238 O16 + nu-fission + analog + + + 1 5 + U234 U235 U238 O16 + nu-fission + analog + + + 1 54 + U234 U235 U238 O16 + prompt-nu-fission + analog + + + 1 5 + U234 U235 U238 O16 + prompt-nu-fission + analog + + + 1 2 + total + flux + tracklength + + 1 2 U234 U235 U238 O16 inverse-velocity tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 prompt-nu-fission tracklength - + 1 2 total flux analog - + 1 2 5 U234 U235 U238 O16 prompt-nu-fission analog - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 total tracklength - + 1 2 total flux analog - + 1 5 6 U234 U235 U238 O16 scatter analog - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 total tracklength - + 1 2 total flux analog - + 1 5 6 U234 U235 U238 O16 nu-scatter analog - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,elastic) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,level) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,2n) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,na) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,nc) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,gamma) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,a) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,Xa) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 heating tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 damage-energy tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,n1) tracklength - + 1 2 total flux tracklength - + 1 2 U234 U235 U238 O16 (n,a0) tracklength - + 1 2 total flux analog - + 1 2 5 U234 U235 U238 O16 (n,nc) analog - + 1 2 total flux analog - + 1 2 5 U234 U235 U238 O16 (n,n1) analog - + 1 2 total flux analog - + 1 2 5 U234 U235 U238 O16 (n,2n) analog - - 104 2 + + 106 2 total flux tracklength - - 104 2 + + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 total tracklength - - 104 2 + + 106 2 total flux tracklength - - 104 2 + + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 total tracklength - - 104 2 + + 106 2 total flux analog - - 104 5 6 + + 106 5 6 Zr90 Zr91 Zr92 Zr94 Zr96 scatter analog - - 104 2 + + 106 2 total flux tracklength - - 104 2 + + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 total tracklength - - 104 2 + + 106 2 total flux analog - - 104 5 6 + + 106 5 6 Zr90 Zr91 Zr92 Zr94 Zr96 nu-scatter analog - - 104 2 - total - flux - tracklength - - - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - absorption - tracklength - - - 104 2 - total - flux - tracklength - - - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - absorption - tracklength - - - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - fission - tracklength - - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - fission + absorption tracklength - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission + absorption tracklength - 104 2 + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,2n) + tracklength + + + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,3n) + tracklength + + + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,4n) + tracklength + + + 106 2 total flux tracklength - - 104 2 + + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + absorption + tracklength + + + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + fission + tracklength + + + 106 2 + total + flux + tracklength + + + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + fission + tracklength + + + 106 2 + total + flux + tracklength + + + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + tracklength + + + 106 2 + total + flux + tracklength + + + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 kappa-fission tracklength - - 104 2 - total - flux - tracklength - - - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - tracklength - - - 104 2 - total - flux - analog - - - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - 104 2 - total - flux - analog - - - 104 2 5 28 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - - 104 2 - total - flux - analog - - - 104 2 5 28 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - 104 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - 104 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - 104 2 + 106 2 total flux - analog + tracklength - 104 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - analog - - - 104 2 5 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 scatter + tracklength + + + 106 2 + total + flux analog - 104 2 - total - flux - tracklength + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-scatter + analog - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - tracklength + 106 2 + total + flux + analog - 104 2 5 28 + 106 2 5 30 Zr90 Zr91 Zr92 Zr94 Zr96 scatter analog - 104 2 + 106 2 total flux - tracklength - - - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - tracklength - - - 104 2 5 28 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter analog - - 104 2 5 + + 106 2 5 30 Zr90 Zr91 Zr92 Zr94 Zr96 nu-scatter analog - - 104 52 + + 106 2 5 Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission + nu-scatter + analog + + + 106 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + analog + + + 106 2 + total + flux analog - 104 5 + 106 2 5 Zr90 Zr91 Zr92 Zr94 Zr96 nu-fission analog - 104 52 + 106 2 5 Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission + scatter analog - 104 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - analog - - - 104 2 + 106 2 total flux tracklength - - 104 2 + + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - inverse-velocity + scatter tracklength + + 106 2 5 30 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + analog + - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission + scatter tracklength - 104 2 - total - flux - analog - - - 104 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - analog - - - 104 2 - total - flux - tracklength - - - 104 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - total - tracklength - - - 104 2 - total - flux - analog - - - 104 5 6 + 106 2 5 30 Zr90 Zr91 Zr92 Zr94 Zr96 scatter analog + + 106 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-scatter + analog + + + 106 54 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog + + + 106 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog + + + 106 54 + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog + + + 106 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog + - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - total + inverse-velocity tracklength - 104 2 + 106 2 total flux - analog + tracklength - 104 5 6 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog + prompt-nu-fission + tracklength - 104 2 + 106 2 total flux - tracklength + analog - 104 2 + 106 2 5 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,elastic) - tracklength + prompt-nu-fission + analog - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,level) + total tracklength - 104 2 + 106 2 total flux - tracklength + analog - 104 2 + 106 5 6 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,2n) - tracklength + scatter + analog - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,na) + total tracklength - 104 2 + 106 2 total flux - tracklength + analog - 104 2 + 106 5 6 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,nc) - tracklength + nu-scatter + analog - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,gamma) + (n,elastic) tracklength - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,a) + (n,level) tracklength - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,Xa) + (n,2n) tracklength - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - heating + (n,na) tracklength - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - damage-energy + (n,nc) tracklength - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,n1) + (n,gamma) tracklength - 104 2 + 106 2 total flux tracklength - 104 2 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,a0) + (n,a) tracklength - 104 2 + 106 2 total flux - analog + tracklength - 104 2 5 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,nc) - analog + (n,Xa) + tracklength - 104 2 + 106 2 total flux - analog + tracklength - 104 2 5 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,n1) - analog + heating + tracklength - 104 2 + 106 2 total flux - analog + tracklength - 104 2 5 + 106 2 Zr90 Zr91 Zr92 Zr94 Zr96 - (n,2n) - analog + damage-energy + tracklength - 207 2 + 106 2 total flux tracklength - 207 2 - H1 O16 B10 B11 - total + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,n1) tracklength - 207 2 + 106 2 total flux tracklength - 207 2 - H1 O16 B10 B11 - total + 106 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,a0) tracklength - 207 2 + 106 2 total flux analog - 207 5 6 - H1 O16 B10 B11 - scatter + 106 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,nc) analog - 207 2 + 106 2 total flux - tracklength + analog - 207 2 - H1 O16 B10 B11 - total - tracklength + 106 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,n1) + analog - 207 2 + 106 2 total flux analog - 207 5 6 - H1 O16 B10 B11 - nu-scatter + 106 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,2n) analog - 207 2 + 211 2 total flux tracklength - 207 2 + 211 2 H1 O16 B10 B11 - absorption + total tracklength - 207 2 + 211 2 total flux tracklength - 207 2 + 211 2 + H1 O16 B10 B11 + total + tracklength + + + 211 2 + total + flux + analog + + + 211 5 6 + H1 O16 B10 B11 + scatter + analog + + + 211 2 + total + flux + tracklength + + + 211 2 + H1 O16 B10 B11 + total + tracklength + + + 211 2 + total + flux + analog + + + 211 5 6 + H1 O16 B10 B11 + nu-scatter + analog + + + 211 2 + total + flux + tracklength + + + 211 2 H1 O16 B10 B11 absorption tracklength - - 207 2 - H1 O16 B10 B11 - fission - tracklength - - - 207 2 - total - flux - tracklength - - - 207 2 - H1 O16 B10 B11 - fission - tracklength - - - 207 2 - total - flux - tracklength - - - 207 2 - H1 O16 B10 B11 - nu-fission - tracklength - - - 207 2 - total - flux - tracklength - - - 207 2 - H1 O16 B10 B11 - kappa-fission - tracklength - - - 207 2 - total - flux - tracklength - - 207 2 - H1 O16 B10 B11 - scatter + 211 2 + total + flux tracklength - 207 2 - total - flux - analog + 211 2 + H1 O16 B10 B11 + absorption + tracklength - 207 2 + 211 2 H1 O16 B10 B11 - nu-scatter - analog + (n,2n) + tracklength - 207 2 - total - flux - analog + 211 2 + H1 O16 B10 B11 + (n,3n) + tracklength - 207 2 5 28 + 211 2 H1 O16 B10 B11 - scatter - analog + (n,4n) + tracklength - 207 2 + 211 2 total flux - analog + tracklength - 207 2 5 28 + 211 2 H1 O16 B10 B11 - nu-scatter - analog + absorption + tracklength - 207 2 5 + 211 2 H1 O16 B10 B11 - nu-scatter - analog + fission + tracklength - 207 2 5 - H1 O16 B10 B11 - scatter - analog - - - 207 2 + 211 2 total flux - analog + tracklength + + + 211 2 + H1 O16 B10 B11 + fission + tracklength - 207 2 5 - H1 O16 B10 B11 - nu-fission - analog + 211 2 + total + flux + tracklength - 207 2 5 + 211 2 H1 O16 B10 B11 - scatter - analog + nu-fission + tracklength - 207 2 + 211 2 total flux tracklength - 207 2 + 211 2 H1 O16 B10 B11 - scatter + kappa-fission tracklength - 207 2 5 28 - H1 O16 B10 B11 - scatter - analog - - - 207 2 + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 scatter tracklength - - 207 2 5 28 - H1 O16 B10 B11 - scatter + + 211 2 + total + flux analog - - 207 2 5 + + 211 2 H1 O16 B10 B11 nu-scatter analog + + 211 2 + total + flux + analog + - 207 52 + 211 2 5 30 H1 O16 B10 B11 - nu-fission + scatter analog - 207 5 + 211 2 + total + flux + analog + + + 211 2 5 30 + H1 O16 B10 B11 + nu-scatter + analog + + + 211 2 5 + H1 O16 B10 B11 + nu-scatter + analog + + + 211 2 5 + H1 O16 B10 B11 + scatter + analog + + + 211 2 + total + flux + analog + + + 211 2 5 H1 O16 B10 B11 nu-fission analog - - 207 52 - H1 O16 B10 B11 - prompt-nu-fission - analog - - - 207 5 - H1 O16 B10 B11 - prompt-nu-fission - analog - - - 207 2 - total - flux - tracklength - - - 207 2 - H1 O16 B10 B11 - inverse-velocity - tracklength - - - 207 2 - total - flux - tracklength - - 207 2 + 211 2 5 H1 O16 B10 B11 - prompt-nu-fission - tracklength + scatter + analog - 207 2 - total - flux - analog - - - 207 2 5 - H1 O16 B10 B11 - prompt-nu-fission - analog - - - 207 2 + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 - total + scatter + tracklength + + + 211 2 5 30 + H1 O16 B10 B11 + scatter + analog + + + 211 2 + total + flux tracklength - 207 2 - total - flux - analog + 211 2 + H1 O16 B10 B11 + scatter + tracklength - 207 5 6 + 211 2 5 30 H1 O16 B10 B11 scatter analog - 207 2 - total - flux - tracklength - - - 207 2 - H1 O16 B10 B11 - total - tracklength - - - 207 2 - total - flux - analog - - - 207 5 6 + 211 2 5 H1 O16 B10 B11 nu-scatter analog + + 211 54 + H1 O16 B10 B11 + nu-fission + analog + + + 211 5 + H1 O16 B10 B11 + nu-fission + analog + + + 211 54 + H1 O16 B10 B11 + prompt-nu-fission + analog + - 207 2 + 211 5 + H1 O16 B10 B11 + prompt-nu-fission + analog + + + 211 2 total flux tracklength - - 207 2 + + 211 2 + H1 O16 B10 B11 + inverse-velocity + tracklength + + + 211 2 + total + flux + tracklength + + + 211 2 + H1 O16 B10 B11 + prompt-nu-fission + tracklength + + + 211 2 + total + flux + analog + + + 211 2 5 + H1 O16 B10 B11 + prompt-nu-fission + analog + + + 211 2 + total + flux + tracklength + + + 211 2 + H1 O16 B10 B11 + total + tracklength + + + 211 2 + total + flux + analog + + + 211 5 6 + H1 O16 B10 B11 + scatter + analog + + + 211 2 + total + flux + tracklength + + + 211 2 + H1 O16 B10 B11 + total + tracklength + + + 211 2 + total + flux + analog + + + 211 5 6 + H1 O16 B10 B11 + nu-scatter + analog + + + 211 2 + total + flux + tracklength + + + 211 2 H1 O16 B10 B11 (n,elastic) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,level) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,2n) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,na) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,nc) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,gamma) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,a) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,Xa) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 heating tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 damage-energy tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,n1) tracklength - - 207 2 + + 211 2 total flux tracklength - - 207 2 + + 211 2 H1 O16 B10 B11 (n,a0) tracklength - - 207 2 + + 211 2 total flux analog - - 207 2 5 + + 211 2 5 H1 O16 B10 B11 (n,nc) analog - - 207 2 + + 211 2 total flux analog - - 207 2 5 + + 211 2 5 H1 O16 B10 B11 (n,n1) analog - - 207 2 + + 211 2 total flux analog - - 207 2 5 + + 211 2 5 H1 O16 B10 B11 (n,2n) analog diff --git a/tests/regression_tests/mgxs_library_nuclides/results_true.dat b/tests/regression_tests/mgxs_library_nuclides/results_true.dat index c0084547b1..7825aba3fe 100644 --- a/tests/regression_tests/mgxs_library_nuclides/results_true.dat +++ b/tests/regression_tests/mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -d36f8abb1131212063470d622dbedeae31602da71006389421bd5dba712c94fe96acbc8ded833cb237687fb1071c1a6c3e0ec67b18ce7cf0f7720451b86d993a \ No newline at end of file +93ad567f1b36461a68d4ead0ff5cfa4a2003b05cf5241a232544545001a94a33fc7b99f21af277ea3a24861d38aac3a9ac36c8b1706c4b3b33caec589df2c90c \ No newline at end of file From 18bf88bab068ed7eae14220cdf494cf4886c0940 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 8 Aug 2022 10:22:46 -0500 Subject: [PATCH 3/4] Fix typos in mgxs.py spotted by @mkreher13 --- openmc/mgxs/mgxs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 75a33eed76..f9798c24a4 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -3078,10 +3078,10 @@ class AbsorptionXS(MGXS): @add_params class ReducedAbsorptionXS(MGXS): - r"""A reduced absorpiton multi-group cross section. + r"""A reduced absorption multi-group cross section. The reduced absorption reaction rate is defined as the difference between - absorption and the produced of neutrons due to (n,xn) reactions. + absorption and the production of neutrons due to (n,xn) reactions. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated From 0ba14b2cf08297e1cf190aac3f939e43fa286001 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 8 Aug 2022 12:20:11 -0500 Subject: [PATCH 4/4] Fix use of energy groups in MicroXS.from_model --- openmc/deplete/microxs.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/openmc/deplete/microxs.py b/openmc/deplete/microxs.py index c4094970f9..982d0a55f8 100644 --- a/openmc/deplete/microxs.py +++ b/openmc/deplete/microxs.py @@ -76,12 +76,14 @@ class MicroXS(DataFrame): dilute_initial) model.materials = diluted_materials - for rxn in reactions: - if rxn == 'fission': - xs[rxn] = FissionXS(domain=reaction_domain, groups=groups, by_nuclide=True) + for rx in reactions: + if rx == 'fission': + xs[rx] = FissionXS(domain=reaction_domain, + energy_groups=groups, by_nuclide=True) else: - xs[rxn] = ArbitraryXS(rxn, domain=reaction_domain, groups=groups, by_nuclide=True) - tallies += xs[rxn].tallies.values() + xs[rx] = ArbitraryXS(rx, domain=reaction_domain, + energy_groups=groups, by_nuclide=True) + tallies += xs[rx].tallies.values() model.tallies = tallies @@ -90,8 +92,8 @@ class MicroXS(DataFrame): statepoint_path = model.run(cwd=temp_dir) with StatePoint(statepoint_path) as sp: - for rxn in xs: - xs[rxn].load_from_statepoint(sp) + for rx in xs: + xs[rx].load_from_statepoint(sp) # Build the DataFrame series = {}