diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst index a25a89c09c..bf5a845992 100644 --- a/docs/source/pythonapi/mgxs.rst +++ b/docs/source/pythonapi/mgxs.rst @@ -30,6 +30,7 @@ Multi-group Cross Sections :template: myclassinherit.rst openmc.mgxs.MGXS + openmc.mgxs.MatrixMGXS openmc.mgxs.AbsorptionXS openmc.mgxs.CaptureXS openmc.mgxs.Chi @@ -45,6 +46,9 @@ Multi-group Cross Sections openmc.mgxs.ScatterProbabilityMatrix openmc.mgxs.TotalXS openmc.mgxs.TransportXS + openmc.mgxs.ArbitraryXS + openmc.mgxs.ArbitraryMatrixXS + openmc.mgxs.MeshSurfaceMGXS Multi-delayed-group Cross Sections ---------------------------------- @@ -55,6 +59,7 @@ Multi-delayed-group Cross Sections :template: myclassinherit.rst openmc.mgxs.MDGXS + openmc.mgxs.MatrixMDGXS openmc.mgxs.ChiDelayed openmc.mgxs.DelayedNuFissionXS openmc.mgxs.DelayedNuFissionMatrixXS diff --git a/include/openmc/constants.h b/include/openmc/constants.h index e75d8c03ca..24d60b92c4 100644 --- a/include/openmc/constants.h +++ b/include/openmc/constants.h @@ -199,7 +199,7 @@ enum ReactionType { N_3N3HE = 177, N_4N3HE = 178, N_3N2P = 179, - N_3N3A = 180, + N_3N2A = 180, N_3NPA = 181, N_DT = 182, N_NPD = 183, diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 276218df06..474967167e 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -56,7 +56,7 @@ REACTION_NAME = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', 301: 'heating', 444: 'damage-energy', 649: '(n,pc)', 699: '(n,dc)', 749: '(n,tc)', 799: '(n,3Hec)', 849: '(n,ac)', 891: '(n,2nc)', 901: 'heating-local'} -REACTION_NAME.update({i: '(n,n{})'.format(i - 50) for i in range(50, 91)}) +REACTION_NAME.update({i: '(n,n{})'.format(i - 50) for i in range(51, 91)}) REACTION_NAME.update({i: '(n,p{})'.format(i - 600) for i in range(600, 649)}) REACTION_NAME.update({i: '(n,d{})'.format(i - 650) for i in range(650, 699)}) REACTION_NAME.update({i: '(n,t{})'.format(i - 700) for i in range(700, 749)}) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index e2ba0bc6a1..5c70720334 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -277,7 +277,9 @@ class Library: @mgxs_types.setter def mgxs_types(self, mgxs_types): - all_mgxs_types = openmc.mgxs.MGXS_TYPES + openmc.mgxs.MDGXS_TYPES + all_mgxs_types = openmc.mgxs.MGXS_TYPES + openmc.mgxs.MDGXS_TYPES + \ + openmc.mgxs.ARBITRARY_VECTOR_TYPES + \ + openmc.mgxs.ARBITRARY_MATRIX_TYPES if mgxs_types == 'all': self._mgxs_types = all_mgxs_types else: @@ -612,8 +614,10 @@ class Library: ---------- domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh or Integral The material, cell, or universe object of interest (or its ID) - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission', 'prompt-nu-fission matrix', 'delayed-nu-fission', 'delayed-nu-fission matrix', 'chi-delayed', 'beta'} - The type of multi-group cross section object to return + mgxs_type : str + The type of multi-group cross section object to return; allowable + values are those MGXS to the Library and present in the + mgxs_types attribute. Returns ------- @@ -912,7 +916,7 @@ class Library: return pickle.load(f) def get_xsdata(self, domain, xsdata_name, nuclide='total', xs_type='macro', - subdomain=None): + subdomain=None, apply_domain_chi=False): """Generates an openmc.XSdata object describing a multi-group cross section dataset for writing to an openmc.MGXSLibrary object. @@ -939,6 +943,15 @@ class Library: mesh cell of interest in the openmc.RegularMesh object. Note: this parameter currently only supports subdomains within a mesh, and not the subdomains of a distribcell. + apply_domain_chi : bool + This parameter sets whether (True) or not (False) the + domain-averaged values of chi, chi-prompt, and chi-delayed are to + be applied to each of the nuclide-dependent fission energy spectra + of a domain. In effect, if this is True, then every nuclide in the + domain receives the same flux-weighted Chi. This is useful for + downstream multigroup solvers that precompute a material-specific + chi before the transport solve provides group-wise fluxes. Defaults + to False. Returns ------- @@ -1046,18 +1059,30 @@ class Library: if 'chi' in self.mgxs_types: mymgxs = self.get_mgxs(domain, 'chi') - xsdata.set_chi_mgxs(mymgxs, xs_type=xs_type, nuclide=[nuclide], + if apply_domain_chi and nuclide != "total": + nuc = "sum" + else: + nuc = nuclide + xsdata.set_chi_mgxs(mymgxs, xs_type=xs_type, nuclide=[nuc], subdomain=subdomain) if 'chi-prompt' in self.mgxs_types: mymgxs = self.get_mgxs(domain, 'chi-prompt') + if apply_domain_chi and nuclide != "total": + nuc = "sum" + else: + nuc = nuclide xsdata.set_chi_prompt_mgxs(mymgxs, xs_type=xs_type, - nuclide=[nuclide], subdomain=subdomain) + nuclide=[nuc], subdomain=subdomain) if 'chi-delayed' in self.mgxs_types: mymgxs = self.get_mgxs(domain, 'chi-delayed') + if apply_domain_chi and nuclide != "total": + nuc = "sum" + else: + nuc = nuclide xsdata.set_chi_delayed_mgxs(mymgxs, xs_type=xs_type, - nuclide=[nuclide], subdomain=subdomain) + nuclide=[nuc], subdomain=subdomain) if 'nu-fission' in self.mgxs_types: mymgxs = self.get_mgxs(domain, 'nu-fission') @@ -1196,7 +1221,8 @@ class Library: return xsdata - def create_mg_library(self, xs_type='macro', xsdata_names=None): + def create_mg_library(self, xs_type='macro', xsdata_names=None, + apply_domain_chi=False): """Creates an openmc.MGXSLibrary object to contain the MGXS data for the Multi-Group mode of OpenMC. @@ -1213,6 +1239,15 @@ class Library: xsdata_names : Iterable of str List of names to apply to the "xsdata" entries in the resultant mgxs data file. Defaults to 'set1', 'set2', ... + apply_domain_chi : bool + This parameter sets whether (True) or not (False) the + domain-averaged values of chi, chi-prompt, and chi-delayed are to + be applied to each of the nuclide-dependent fission energy spectra + of a domain. In effect, if this is True, then every nuclide in the + domain receives the same flux-weighted Chi. This is useful for + downstream multigroup solvers that precompute a material-specific + chi before the transport solve provides group-wise fluxes. Defaults + to False. Returns ------- @@ -1284,13 +1319,15 @@ class Library: xsdata_name = xsdata_names[i] xsdata = self.get_xsdata(domain, xsdata_name, - nuclide=nuclide, xs_type=xs_type) + nuclide=nuclide, xs_type=xs_type, + apply_domain_chi=apply_domain_chi) mgxs_file.add_xsdata(xsdata) return mgxs_file - def create_mg_mode(self, xsdata_names=None, bc=['reflective'] * 6): + def create_mg_mode(self, xsdata_names=None, bc=['reflective'] * 6, + apply_domain_chi=False): """Creates an openmc.MGXSLibrary object to contain the MGXS data for the Multi-Group mode of OpenMC as well as the associated openmc.Materials and openmc.Geometry objects. @@ -1314,6 +1351,15 @@ class Library: (if applying to a 3D mesh) provided in the following order: [x min, x max, y min, y max, z min, z max]. 2-D cells do not contain the z min and z max entries. + apply_domain_chi : bool + This parameter sets whether (True) or not (False) the + domain-averaged values of chi, chi-prompt, and chi-delayed are to + be applied to each of the nuclide-dependent fission energy spectra + of a domain. In effect, if this is True, then every nuclide in the + domain receives the same flux-weighted Chi. This is useful for + downstream multigroup solvers that precompute a material-specific + chi before the transport solve provides group-wise fluxes. Defaults + to False. Returns ------- @@ -1354,7 +1400,8 @@ class Library: cv.check_length("domains", self.domains, 1, 1) # Get the MGXS File Data - mgxs_file = self.create_mg_library('macro', xsdata_names) + mgxs_file = self.create_mg_library('macro', xsdata_names, + apply_domain_chi=apply_domain_chi) # Now move on the creating the geometry and assigning materials if self.domain_type == 'mesh': @@ -1415,7 +1462,7 @@ class Library: if not isinstance(cell.fill, openmc.Material): warn('If the library domain includes a lattice or universe cell ' 'in conjunction with a consituent cell of that lattice/universe, ' - 'the multi-group simulation will fail') + 'the multi-group simulation will fail') if cell.id == domain.id: cell.fill = material diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 0fc6716f35..0f1bf56a12 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -8,6 +8,7 @@ import h5py import numpy as np import openmc +from openmc.data import REACTION_MT, REACTION_NAME, FISSION_MTS import openmc.checkvalue as cv from ..tallies import ESTIMATOR_TYPES from . import EnergyGroups @@ -42,6 +43,22 @@ MGXS_TYPES = ( 'nu-diffusion-coefficient' ) +# Some scores from REACTION_MT are not supported, or are simply overkill to +# support and test (like inelastic levels), remoev those from consideration +_BAD_SCORES = ["(n,misc)", "(n,absorption)", "(n,total)", "fission"] +_BAD_SCORES += [REACTION_NAME[mt] for mt in FISSION_MTS] +ARBITRARY_VECTOR_TYPES = tuple(k for k in REACTION_MT.keys() + if k not in _BAD_SCORES) +ARBITRARY_MATRIX_TYPES = [] +for rxn in ARBITRARY_VECTOR_TYPES: + # Preclude the fission channels from being treated as a matrix + if rxn not in [REACTION_NAME[mt] for mt in FISSION_MTS]: + split_rxn = rxn.strip("()").split(",") + if len(split_rxn) > 1 and "n" in split_rxn[1]: + # Then there is a neutron product, so it can also be a matrix + ARBITRARY_MATRIX_TYPES.append(rxn + " matrix") +ARBITRARY_MATRIX_TYPES = tuple(ARBITRARY_MATRIX_TYPES) + # Supported domain types DOMAIN_TYPES = ( 'cell', @@ -698,8 +715,13 @@ class MGXS: Parameters ---------- - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', 'chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission', 'prompt-nu-fission matrix', 'current', 'diffusion-coefficient', 'nu-diffusion-coefficient'} - The type of multi-group cross section object to return + mgxs_type : str or Integral + The type of multi-group cross section object to return; valid + values are members of MGXS_TYPES, or the reaction types that are + the keys of REACTION_MT. Note that if a reaction type from + REACTION_MT is used, it can be appended with ' matrix' to obtain + a multigroup matrix (from incoming to outgoing energy groups) for + reactions with a neutron in an outgoing channel. domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} @@ -727,7 +749,9 @@ class MGXS: """ - cv.check_value('mgxs_type', mgxs_type, MGXS_TYPES) + cv.check_value( + "mgxs_type", mgxs_type, + MGXS_TYPES + ARBITRARY_VECTOR_TYPES + ARBITRARY_MATRIX_TYPES) if mgxs_type == 'total': mgxs = TotalXS(domain, domain_type, energy_groups) @@ -782,6 +806,13 @@ class MGXS: mgxs = DiffusionCoefficient(domain, domain_type, energy_groups) elif mgxs_type == 'nu-diffusion-coefficient': mgxs = DiffusionCoefficient(domain, domain_type, energy_groups, nu=True) + elif mgxs_type in ARBITRARY_VECTOR_TYPES: + # Then it is a reaction not covered by the above that is + # supported by the ArbitraryXS Class + mgxs = ArbitraryXS(mgxs_type, domain, domain_type, energy_groups) + elif mgxs_type in ARBITRARY_MATRIX_TYPES: + mgxs = ArbitraryMatrixXS(mgxs_type, domain, domain_type, + energy_groups) mgxs.by_nuclide = by_nuclide mgxs.name = name @@ -1139,6 +1170,119 @@ class MGXS: return xs + def get_flux(self, groups='all', subdomains='all', + order_groups='increasing', value='mean', + squeeze=True, **kwargs): + r"""Returns an array of the fluxes used to weight the MGXS. + + This method constructs a 2D NumPy array for the requested + weighting flux for one or more subdomains (1st dimension), and + energy groups (2nd dimension). + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest. Defaults to 'all'. + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. + value : {'mean', 'std_dev', 'rel_err'} + A string for the type of value to return. Defaults to 'mean'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array to be returned. Defaults to True. + + Returns + ------- + numpy.ndarray + A NumPy array of the flux indexed in the order + each group and subdomain is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the data is available from tally + data, or, when this is used on an MGXS type without a flux score. + + """ + + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if not isinstance(subdomains, str): + cv.check_iterable_type('subdomains', subdomains, Integral, + max_depth=3) + + filters.append(_DOMAIN_TO_FILTER[self.domain_type]) + subdomain_bins = [] + for subdomain in subdomains: + subdomain_bins.append(subdomain) + filter_bins.append(tuple(subdomain_bins)) + + # Construct list of energy group bounds tuples for all requested groups + if not isinstance(groups, str): + cv.check_iterable_type('groups', groups, Integral) + filters.append(openmc.EnergyFilter) + energy_bins = [] + for group in groups: + energy_bins.append( + (self.energy_groups.get_group_bounds(group),)) + filter_bins.append(tuple(energy_bins)) + + # Determine which flux to obtain + # Step through in order of usefulness + for key in ['flux', 'flux (tracklength)', 'flux (analog)']: + if key in self.tally_keys: + tally = self.tallies[key] + break + else: + msg = "MGXS of Type {} do not have an explicit weighting flux!" + raise ValueError(msg.format(self.__name__)) + + flux = tally.get_values(filters=filters, filter_bins=filter_bins, + nuclides=['total'], value=value) + + # Eliminate the trivial score dimension + flux = np.squeeze(flux, axis=len(flux.shape) - 1) + # Eliminate the trivial nuclide dimension + flux = np.squeeze(flux, axis=len(flux.shape) - 1) + flux = np.nan_to_num(flux) + + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + + # Reshape tally data array with separate axes for domain and energy + # Accomodate the polar and azimuthal bins if needed + num_subdomains = int(flux.shape[0] / (num_groups * self.num_polar * + self.num_azimuthal)) + if self.num_polar > 1 or self.num_azimuthal > 1: + new_shape = (self.num_polar, self.num_azimuthal, num_subdomains, + num_groups) + else: + new_shape = (num_subdomains, num_groups) + new_shape += flux.shape[1:] + flux = np.reshape(flux, new_shape) + + # Reverse data if user requested increasing energy groups since + # tally data is stored in order of increasing energies + if order_groups == 'increasing': + flux = flux[..., ::-1] + + if squeeze: + # We want to squeeze out everything but the polar, azimuthal, + # and energy group data. + flux = self._squeeze_xs(flux) + + return flux + def get_condensed_xs(self, coarse_groups): """Construct an energy-condensed version of this cross section. @@ -3850,6 +3994,265 @@ class ScatterXS(MGXS): self._valid_estimators = ['analog'] +class ArbitraryXS(MGXS): + r"""A multi-group cross section for an arbitrary reaction type. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group total cross sections for multi-group neutronics calculations. + At a minimum, one needs to set the :attr:`ArbitraryXS.energy_groups` and + :attr:`ArbitraryXS.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`ArbitraryXS.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:`ArbitraryXS.xs_tally` property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + requested cross section is calculated as: + + .. math:: + + \frac{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \sigma_X (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)} + + 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 + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, rxn_type, domain=None, domain_type=None, 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, + num_polar, num_azimuthal) + self._rxn_type = rxn_type + + +class ArbitraryMatrixXS(MatrixMGXS): + r"""A multi-group matrix cross section for an arbitrary reaction type. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ArbitraryMatrixXS.energy_groups` and + :attr:`ArbitraryMatrixXS.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`ArbitraryMatrixXS.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:`ArbitraryMatrixXS.xs_tally` property. + + For a spatial domain :math:`V`, incoming energy group + :math:`[E_{g'},E_{g'-1}]`, and outgoing energy group :math:`[E_g,E_{g-1}]`, + the fission production is calculated as: + + .. math:: + + \begin{aligned} + \langle \sigma_{X,g'\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{E_g}^{E_{g-1}} dE + \; \chi(E) \sigma_X (r, E') \psi(r, E', \Omega')\\ + \langle \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ + \sigma_{X,g'\rightarrow g} &= \frac{\langle \sigma_{X,g'\rightarrow + g} \phi \rangle}{\langle \phi \rangle} + \end{aligned} + + 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 + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, rxn_type, domain=None, domain_type=None, 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, + num_polar, num_azimuthal) + self._rxn_type = rxn_type.split(" ")[0] + self._estimator = 'analog' + self._valid_estimators = ['analog'] + + class ScatterMatrixXS(MatrixMGXS): r"""A scattering matrix multi-group cross section with the cosine of the change-in-angle represented as one or more Legendre moments or a histogram. diff --git a/src/reaction.cpp b/src/reaction.cpp index a5406fdb4a..3e4d3b9818 100644 --- a/src/reaction.cpp +++ b/src/reaction.cpp @@ -243,7 +243,7 @@ std::unordered_map REACTION_NAME_MAP { {N_3N3HE, "(n,3n3He)"}, {N_4N3HE, "(n,4n3He)"}, {N_3N2P, "(n,3n2p)"}, - {N_3N3A, "(n,3n3a)"}, + {N_3N2A, "(n,3n2a)"}, {N_3NPA, "(n,3npa)"}, {N_DT, "(n,dt)"}, {N_NPD, "(n,npd)"}, 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 e629fa115e..0d9dbf8215 100644 --- a/tests/regression_tests/mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_no_nuclides/inputs_true.dat @@ -68,13 +68,13 @@ 0.0 20000000.0 - + 1 2 3 4 5 6 - + 2 - + 3 @@ -438,883 +438,1423 @@ tracklength - 1 73 2 + 1 2 total - delayed-nu-fission + (n,elastic) tracklength - 1 73 52 + 1 2 total - delayed-nu-fission - analog + flux + tracklength - 1 73 5 + 1 2 total - delayed-nu-fission - analog + (n,level) + tracklength 1 2 total - nu-fission + flux tracklength - 1 73 2 + 1 2 total - delayed-nu-fission + (n,2n) tracklength - 1 73 + 1 2 total - delayed-nu-fission + flux tracklength - 1 73 + 1 2 total - decay-rate + (n,na) tracklength 1 2 total flux - analog + tracklength - 1 73 2 5 + 1 2 total - delayed-nu-fission - analog + (n,nc) + tracklength - 87 2 + 1 2 total flux tracklength - 87 2 + 1 2 total - total + (n,gamma) tracklength - 87 2 + 1 2 total flux tracklength - 87 2 + 1 2 total - total + (n,a) tracklength - 87 2 + 1 2 total flux - analog + tracklength - 87 5 6 + 1 2 total - scatter - analog + (n,Xa) + tracklength - 87 2 + 1 2 total flux tracklength - 87 2 + 1 2 total - total + heating tracklength - 87 2 + 1 2 total flux - analog + tracklength - 87 5 6 + 1 2 total - nu-scatter - analog + damage-energy + tracklength - 87 2 + 1 2 total flux tracklength - 87 2 + 1 2 total - absorption + (n,n1) tracklength - 87 2 + 1 2 total flux tracklength - 87 2 + 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 + total + delayed-nu-fission + tracklength + + + 1 106 + total + decay-rate + tracklength + + + 1 2 + total + flux + analog + + + 1 106 2 5 + total + delayed-nu-fission + analog + + + 120 2 + total + flux + tracklength + + + 120 2 + total + total + tracklength + + + 120 2 + total + flux + tracklength + + + 120 2 + total + total + tracklength + + + 120 2 + total + flux + analog + + + 120 5 6 + total + scatter + analog + + + 120 2 + total + flux + tracklength + + + 120 2 + total + total + tracklength + + + 120 2 + total + flux + analog + + + 120 5 6 + total + nu-scatter + analog + + + 120 2 + total + flux + tracklength + + + 120 2 total absorption tracklength - - 87 2 - total - fission - tracklength - - - 87 2 - total - flux - tracklength - - - 87 2 - total - fission - tracklength - - - 87 2 - total - flux - tracklength - - - 87 2 - total - nu-fission - tracklength - - - 87 2 - total - flux - tracklength - - - 87 2 - total - kappa-fission - tracklength - - - 87 2 - total - flux - tracklength - - - 87 2 - total - scatter - tracklength - - - 87 2 - total - flux - analog - - - 87 2 - total - nu-scatter - analog - - - 87 2 - total - flux - analog - - - 87 2 5 28 - total - scatter - analog - - - 87 2 - total - flux - analog - - - 87 2 5 28 - total - nu-scatter - analog - - - 87 2 5 - total - nu-scatter - analog - - - 87 2 5 - total - scatter - analog - - - 87 2 - total - flux - analog - - - 87 2 5 - total - nu-fission - analog - - - 87 2 5 - total - scatter - analog - - - 87 2 - total - flux - tracklength - - - 87 2 - total - scatter - tracklength - - - 87 2 5 28 - total - scatter - analog - - - 87 2 - total - flux - tracklength - - - 87 2 - total - scatter - tracklength - - - 87 2 5 28 - total - scatter - analog - - - 87 2 5 - total - nu-scatter - analog - - - 87 52 - total - nu-fission - analog - - 87 5 + 120 2 total - nu-fission - analog + flux + tracklength - 87 52 + 120 2 total - prompt-nu-fission - analog + absorption + tracklength - 87 5 + 120 2 total - prompt-nu-fission - analog + fission + tracklength - 87 2 + 120 2 total flux tracklength - 87 2 + 120 2 total - inverse-velocity + fission tracklength - 87 2 + 120 2 total flux tracklength - 87 2 + 120 2 total - prompt-nu-fission + nu-fission tracklength - 87 2 + 120 2 total flux - analog + tracklength - 87 2 5 + 120 2 total - prompt-nu-fission - analog + kappa-fission + tracklength - 87 2 + 120 2 total flux tracklength - 87 2 + 120 2 total - total + scatter tracklength - 87 2 + 120 2 total flux analog - 87 5 6 + 120 2 + total + nu-scatter + analog + + + 120 2 + total + flux + analog + + + 120 2 5 28 total scatter analog - - 87 2 - total - flux - tracklength - - - 87 2 - total - total - tracklength - - 87 2 + 120 2 total flux analog - 87 5 6 + 120 2 5 28 total nu-scatter analog - 87 2 + 120 2 5 total - flux - tracklength + nu-scatter + analog - 87 73 2 - total - delayed-nu-fission - tracklength - - - 87 73 52 - total - delayed-nu-fission - analog - - - 87 73 5 - total - delayed-nu-fission - analog - - - 87 2 - total - nu-fission - tracklength - - - 87 73 2 - total - delayed-nu-fission - tracklength - - - 87 73 - total - delayed-nu-fission - tracklength - - - 87 73 - total - decay-rate - tracklength - - - 87 2 - total - flux - analog - - - 87 73 2 5 - total - delayed-nu-fission - analog - - - 173 2 - total - flux - tracklength - - - 173 2 - total - total - tracklength - - - 173 2 - total - flux - tracklength - - - 173 2 - total - total - tracklength - - - 173 2 - total - flux - analog - - - 173 5 6 + 120 2 5 total scatter analog + + 120 2 + total + flux + analog + + + 120 2 5 + total + nu-fission + analog + + + 120 2 5 + total + scatter + analog + + + 120 2 + total + flux + tracklength + + + 120 2 + total + scatter + tracklength + + + 120 2 5 28 + total + scatter + analog + + + 120 2 + total + flux + tracklength + + + 120 2 + total + scatter + tracklength + + + 120 2 5 28 + total + scatter + analog + + + 120 2 5 + total + nu-scatter + analog + + + 120 52 + total + nu-fission + analog + + + 120 5 + total + nu-fission + analog + + + 120 52 + total + prompt-nu-fission + analog + + + 120 5 + total + prompt-nu-fission + analog + - 173 2 + 120 2 total flux tracklength - 173 2 + 120 2 total - total + inverse-velocity tracklength - 173 2 + 120 2 total flux - analog + tracklength - 173 5 6 + 120 2 total - nu-scatter - analog + prompt-nu-fission + tracklength - 173 2 + 120 2 total flux - tracklength + analog - 173 2 + 120 2 5 total - absorption - tracklength + prompt-nu-fission + analog - 173 2 + 120 2 total flux tracklength - 173 2 + 120 2 total - absorption + total tracklength - 173 2 - total - fission - tracklength - - - 173 2 + 120 2 total flux - tracklength + analog + + + 120 5 6 + total + scatter + analog - 173 2 + 120 2 total - fission + flux tracklength - 173 2 + 120 2 total - flux + total tracklength - 173 2 - total - nu-fission - tracklength - - - 173 2 + 120 2 total flux - tracklength + analog + + + 120 5 6 + total + nu-scatter + analog - 173 2 + 120 2 total - kappa-fission + flux tracklength - 173 2 + 120 2 total - flux + (n,elastic) tracklength - 173 2 + 120 2 total - scatter + flux tracklength - 173 2 + 120 2 total - flux - analog + (n,level) + tracklength - 173 2 + 120 2 total - nu-scatter - analog + flux + tracklength - 173 2 + 120 2 total - flux - analog + (n,2n) + tracklength - 173 2 5 28 + 120 2 total - scatter - analog + flux + tracklength - 173 2 + 120 2 total - flux - analog + (n,na) + tracklength - 173 2 5 28 - total - nu-scatter - analog - - - 173 2 5 - total - nu-scatter - analog - - - 173 2 5 - total - scatter - analog - - - 173 2 + 120 2 total flux - analog + tracklength + + + 120 2 + total + (n,nc) + tracklength + + + 120 2 + total + flux + tracklength + + + 120 2 + total + (n,gamma) + tracklength - 173 2 5 + 120 2 total - nu-fission - analog + flux + tracklength - 173 2 5 + 120 2 total - scatter - analog + (n,a) + tracklength - 173 2 + 120 2 total flux tracklength - 173 2 + 120 2 total - scatter + (n,Xa) tracklength - 173 2 5 28 - total - scatter - analog - - - 173 2 + 120 2 total flux tracklength + + 120 2 + total + heating + tracklength + - 173 2 + 120 2 total - scatter + flux tracklength - 173 2 5 28 + 120 2 total - scatter - analog + damage-energy + tracklength - 173 2 5 + 120 2 total - nu-scatter - analog + flux + tracklength - 173 52 + 120 2 total - nu-fission - analog + (n,n1) + tracklength - 173 5 + 120 2 total - nu-fission - analog + flux + tracklength - 173 52 + 120 2 total - prompt-nu-fission - analog + (n,a0) + tracklength - 173 5 + 120 2 total - prompt-nu-fission + flux analog - 173 2 + 120 2 5 total - flux - tracklength + (n,nc) + analog - 173 2 + 120 2 total - inverse-velocity - tracklength + flux + analog - 173 2 + 120 2 5 total - flux - tracklength + (n,n1) + analog - 173 2 - total - prompt-nu-fission - tracklength - - - 173 2 + 120 2 total flux analog + + 120 2 5 + total + (n,2n) + analog + - 173 2 5 - total - prompt-nu-fission - analog - - - 173 2 + 120 2 total flux tracklength + + 120 106 2 + total + delayed-nu-fission + tracklength + - 173 2 + 120 106 52 total - total - tracklength + delayed-nu-fission + analog - 173 2 + 120 106 5 total - flux + delayed-nu-fission analog - 173 5 6 - total - scatter - analog - - - 173 2 - total - flux - tracklength - - - 173 2 - total - total - tracklength - - - 173 2 - total - flux - analog - - - 173 5 6 - total - nu-scatter - analog - - - 173 2 - total - flux - tracklength - - - 173 73 2 - total - delayed-nu-fission - tracklength - - - 173 73 52 - total - delayed-nu-fission - analog - - - 173 73 5 - total - delayed-nu-fission - analog - - - 173 2 + 120 2 total nu-fission tracklength - - 173 73 2 + + 120 106 2 total delayed-nu-fission tracklength - - 173 73 + + 120 106 total delayed-nu-fission tracklength - - 173 73 + + 120 106 total decay-rate tracklength - - 173 2 + + 120 2 total flux analog + + 120 106 2 5 + total + delayed-nu-fission + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + total + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + total + tracklength + + + 239 2 + total + flux + analog + + + 239 5 6 + total + scatter + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + total + tracklength + - 173 73 2 5 + 239 2 + total + flux + analog + + + 239 5 6 + total + nu-scatter + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + absorption + tracklength + + + 239 2 + total + flux + tracklength + + + 239 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 + total + scatter + tracklength + + + 239 2 + total + flux + analog + + + 239 2 + total + nu-scatter + analog + + + 239 2 + total + flux + analog + + + 239 2 5 28 + total + scatter + analog + + + 239 2 + total + flux + analog + + + 239 2 5 28 + total + nu-scatter + analog + + + 239 2 5 + total + nu-scatter + analog + + + 239 2 5 + total + scatter + analog + + + 239 2 + total + flux + analog + + + 239 2 5 + total + nu-fission + analog + + + 239 2 5 + total + scatter + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + scatter + tracklength + + + 239 2 5 28 + total + scatter + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + scatter + tracklength + + + 239 2 5 28 + total + scatter + analog + + + 239 2 5 + total + nu-scatter + analog + + + 239 52 + total + nu-fission + analog + + + 239 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 + total + prompt-nu-fission + tracklength + + + 239 2 + total + flux + analog + + + 239 2 5 + total + prompt-nu-fission + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + total + tracklength + + + 239 2 + total + flux + analog + + + 239 5 6 + total + scatter + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + total + tracklength + + + 239 2 + total + flux + analog + + + 239 5 6 + total + nu-scatter + analog + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,elastic) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,level) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,2n) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,na) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,nc) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,gamma) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,a) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,Xa) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + heating + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + damage-energy + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,n1) + tracklength + + + 239 2 + total + flux + tracklength + + + 239 2 + total + (n,a0) + tracklength + + + 239 2 + total + flux + analog + + + 239 2 5 + total + (n,nc) + analog + + + 239 2 + total + flux + analog + + + 239 2 5 + total + (n,n1) + analog + + + 239 2 + total + flux + analog + + + 239 2 5 + total + (n,2n) + analog + + + 239 2 + total + flux + tracklength + + + 239 106 2 + total + delayed-nu-fission + tracklength + + + 239 106 52 + total + delayed-nu-fission + analog + + + 239 106 5 + total + delayed-nu-fission + analog + + + 239 2 + total + nu-fission + tracklength + + + 239 106 2 + total + delayed-nu-fission + tracklength + + + 239 106 + total + delayed-nu-fission + tracklength + + + 239 106 + total + decay-rate + tracklength + + + 239 2 + total + flux + analog + + + 239 106 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 4dfb7f68a4..398c3e783d 100644 --- a/tests/regression_tests/mgxs_library_no_nuclides/results_true.dat +++ b/tests/regression_tests/mgxs_library_no_nuclides/results_true.dat @@ -1,33 +1,44 @@ +total material group in nuclide mean std. dev. 1 1 1 total 0.414825 0.022793 0 1 2 total 0.660170 0.047519 +transport material group in nuclide mean std. dev. 1 1 1 total 0.363092 0.023838 0 1 2 total 0.644851 0.047675 +nu-transport material group in nuclide mean std. dev. 1 1 1 total 0.363092 0.023838 0 1 2 total 0.644851 0.047675 +absorption material group in nuclide mean std. dev. 1 1 1 total 0.027408 0.002692 0 1 2 total 0.264511 0.023367 +capture material group in nuclide mean std. dev. 1 1 1 total 0.019845 0.002643 0 1 2 total 0.071719 0.025208 +fission material group in nuclide mean std. dev. 1 1 1 total 0.007563 0.000508 0 1 2 total 0.192791 0.017106 +nu-fission material group in nuclide mean std. dev. 1 1 1 total 0.019432 0.001323 0 1 2 total 0.469775 0.041682 +kappa-fission material group in nuclide mean std. dev. 1 1 1 total 1.474570e+06 9.923536e+04 0 1 2 total 3.728689e+07 3.308375e+06 +scatter material group in nuclide mean std. dev. 1 1 1 total 0.387418 0.020626 0 1 2 total 0.395659 0.025125 +nu-scatter material group in nuclide mean std. dev. 1 1 1 total 0.385188 0.026946 0 1 2 total 0.412389 0.015425 +scatter matrix material group in group out legendre nuclide mean std. dev. 12 1 1 1 P0 total 0.384199 0.027001 13 1 1 1 P1 total 0.051870 0.006983 @@ -45,6 +56,7 @@ 1 1 2 2 P1 total 0.016482 0.004502 2 1 2 2 P2 total 0.006371 0.010551 3 1 2 2 P3 total -0.010499 0.010438 +nu-scatter matrix material group in group out legendre nuclide mean std. dev. 12 1 1 1 P0 total 0.384199 0.027001 13 1 1 1 P1 total 0.051870 0.006983 @@ -62,21 +74,25 @@ 1 1 2 2 P1 total 0.016482 0.004502 2 1 2 2 P2 total 0.006371 0.010551 3 1 2 2 P3 total -0.010499 0.010438 +multiplicity matrix material group in group out nuclide mean std. dev. 3 1 1 1 total 1.0 0.078516 2 1 1 2 total 1.0 0.687184 1 1 2 1 total 1.0 1.414214 0 1 2 2 total 1.0 0.041130 +nu-fission matrix material group in group out nuclide mean std. dev. 3 1 1 1 total 0.020142 0.003149 2 1 1 2 total 0.000000 0.000000 1 1 2 1 total 0.454366 0.027426 0 1 2 2 total 0.000000 0.000000 +scatter probability matrix material group in group out nuclide mean std. dev. 3 1 1 1 total 0.997433 0.078224 2 1 1 2 total 0.002567 0.001256 1 1 2 1 total 0.002242 0.002243 0 1 2 2 total 0.997758 0.041053 +consistent scatter matrix material group in group out legendre nuclide mean std. dev. 12 1 1 1 P0 total 0.386423 0.036629 13 1 1 1 P1 total 0.052170 0.007767 @@ -94,6 +110,7 @@ 1 1 2 2 P1 total 0.015813 0.004443 2 1 2 2 P2 total 0.006113 0.010131 3 1 2 2 P3 total -0.010073 0.010037 +consistent nu-scatter matrix material group in group out legendre nuclide mean std. dev. 12 1 1 1 P0 total 0.386423 0.047563 13 1 1 1 P1 total 0.052170 0.008781 @@ -111,33 +128,107 @@ 1 1 2 2 P1 total 0.015813 0.004491 2 1 2 2 P2 total 0.006113 0.010134 3 1 2 2 P3 total -0.010073 0.010045 +chi material group out nuclide mean std. dev. 1 1 1 total 1.0 0.046071 0 1 2 total 0.0 0.000000 +chi-prompt material group out nuclide mean std. dev. 1 1 1 total 1.0 0.051471 0 1 2 total 0.0 0.000000 +inverse-velocity material group in nuclide mean std. dev. 1 1 1 total 5.709324e-08 4.687938e-09 0 1 2 total 2.855739e-06 2.442164e-07 +prompt-nu-fission material group in nuclide mean std. dev. 1 1 1 total 0.019239 0.001310 0 1 2 total 0.466719 0.041411 +prompt-nu-fission matrix material group in group out nuclide mean std. dev. 3 1 1 1 total 0.020142 0.003149 2 1 1 2 total 0.000000 0.000000 1 1 2 1 total 0.445819 0.028675 0 1 2 2 total 0.000000 0.000000 +diffusion-coefficient material group in legendre nuclide mean std. dev. 2 1 1 P0 total 10.942878 12.704137 3 1 1 P1 total 0.918041 0.075837 0 1 2 P0 total 1.370855 0.292448 1 1 2 P1 total 0.516916 0.050251 +nu-diffusion-coefficient material group in legendre nuclide mean std. dev. 2 1 1 P0 total 10.942878 12.704137 3 1 1 P1 total 0.918041 0.075837 0 1 2 P0 total 1.370855 0.292448 1 1 2 P1 total 0.516916 0.050251 +(n,elastic) + material group in nuclide mean std. dev. +1 1 1 total 0.358207 0.019662 +0 1 2 total 0.395659 0.025125 +(n,level) + material group in nuclide mean std. dev. +1 1 1 total 0.000619 0.000049 +0 1 2 total 0.000000 0.000000 +(n,2n) + material group in nuclide mean std. dev. +1 1 1 total 0.000121 0.000054 +0 1 2 total 0.000000 0.000000 +(n,na) + material group in nuclide mean std. dev. +1 1 1 total 9.209364e-11 9.154237e-11 +0 1 2 total 0.000000e+00 0.000000e+00 +(n,nc) + material group in nuclide mean std. dev. +1 1 1 total 0.009458 0.000768 +0 1 2 total 0.000000 0.000000 +(n,gamma) + material group in nuclide mean std. dev. +1 1 1 total 0.019727 0.002262 +0 1 2 total 0.071719 0.006262 +(n,a) + material group in nuclide mean std. dev. +1 1 1 total 0.000124 0.000023 +0 1 2 total 0.000000 0.000000 +(n,Xa) + material group in nuclide mean std. dev. +1 1 1 total 0.000124 0.000023 +0 1 2 total 0.000000 0.000000 +heating + material group in nuclide mean std. dev. +1 1 1 total 1.287977e+06 8.806399e+04 +0 1 2 total 3.222710e+07 2.903396e+06 +damage-energy + material group in nuclide mean std. dev. +1 1 1 total 2471.829371 114.012620 +0 1 2 total 1357.269536 120.427363 +(n,n1) + material group in nuclide mean std. dev. +1 1 1 total 0.011877 0.000507 +0 1 2 total 0.000000 0.000000 +(n,a0) + material group in nuclide mean std. dev. +1 1 1 total 0.000115 0.000024 +0 1 2 total 0.000000 0.000000 +(n,nc) matrix + material group in group out nuclide mean std. dev. +3 1 1 1 total 0.010878 0.001184 +2 1 1 2 total 0.000000 0.000000 +1 1 2 1 total 0.000000 0.000000 +0 1 2 2 total 0.000000 0.000000 +(n,n1) matrix + material group in group out nuclide mean std. dev. +3 1 1 1 total 0.011043 0.000937 +2 1 1 2 total 0.000000 0.000000 +1 1 2 1 total 0.000000 0.000000 +0 1 2 2 total 0.000000 0.000000 +(n,2n) matrix + material group in group out nuclide mean std. dev. +3 1 1 1 total 0.0 0.0 +2 1 1 2 total 0.0 0.0 +1 1 2 1 total 0.0 0.0 +0 1 2 2 total 0.0 0.0 +delayed-nu-fission material delayedgroup group in nuclide mean std. dev. 1 1 1 1 total 0.000004 2.897486e-07 3 1 2 1 total 0.000027 1.850037e-06 @@ -151,6 +242,7 @@ 6 1 4 2 total 0.001182 1.048679e-04 8 1 5 2 total 0.000485 4.299445e-05 10 1 6 2 total 0.000203 1.801022e-05 +chi-delayed material delayedgroup group out nuclide mean std. dev. 1 1 1 1 total 0.0 0.000000 3 1 2 1 total 1.0 0.869128 @@ -164,6 +256,7 @@ 6 1 4 2 total 0.0 0.000000 8 1 5 2 total 0.0 0.000000 10 1 6 2 total 0.0 0.000000 +beta material delayedgroup group in nuclide mean std. dev. 1 1 1 1 total 0.000222 0.000018 3 1 2 1 total 0.001388 0.000115 @@ -177,6 +270,7 @@ 6 1 4 2 total 0.002516 0.000273 8 1 5 2 total 0.001031 0.000112 10 1 6 2 total 0.000432 0.000047 +decay-rate material delayedgroup nuclide mean std. dev. 0 1 1 total 0.013355 0.001272 1 1 2 total 0.032600 0.003048 @@ -184,6 +278,7 @@ 3 1 4 total 0.305910 0.027728 4 1 5 total 0.861934 0.075425 5 1 6 total 2.895065 0.253942 +delayed-nu-fission matrix material delayedgroup group in group out nuclide mean std. dev. 3 1 1 1 1 total 0.000000 0.000000 7 1 2 1 1 total 0.000000 0.000000 @@ -209,36 +304,47 @@ 12 1 4 2 2 total 0.000000 0.000000 16 1 5 2 2 total 0.000000 0.000000 20 1 6 2 2 total 0.000000 0.000000 +total material group in nuclide mean std. dev. 1 2 1 total 0.313738 0.015582 0 2 2 total 0.300821 0.028052 +transport material group in nuclide mean std. dev. 1 2 1 total 0.275508 0.017742 0 2 2 total 0.312035 0.032384 +nu-transport material group in nuclide mean std. dev. 1 2 1 total 0.275508 0.017742 0 2 2 total 0.312035 0.032384 +absorption material group in nuclide mean std. dev. 1 2 1 total 0.001575 0.000323 0 2 2 total 0.005400 0.000618 +capture material group in nuclide mean std. dev. 1 2 1 total 0.001575 0.000323 0 2 2 total 0.005400 0.000618 +fission material group in nuclide mean std. dev. 1 2 1 total 0.0 0.0 0 2 2 total 0.0 0.0 +nu-fission material group in nuclide mean std. dev. 1 2 1 total 0.0 0.0 0 2 2 total 0.0 0.0 +kappa-fission material group in nuclide mean std. dev. 1 2 1 total 0.0 0.0 0 2 2 total 0.0 0.0 +scatter material group in nuclide mean std. dev. 1 2 1 total 0.312163 0.015322 0 2 2 total 0.295421 0.027446 +nu-scatter material group in nuclide mean std. dev. 1 2 1 total 0.310121 0.033788 0 2 2 total 0.296264 0.043792 +scatter matrix material group in group out legendre nuclide mean std. dev. 12 2 1 1 P0 total 0.310121 0.033788 13 2 1 1 P1 total 0.038230 0.008484 @@ -256,6 +362,7 @@ 1 2 2 2 P1 total -0.011214 0.016180 2 2 2 2 P2 total 0.008837 0.011504 3 2 2 2 P3 total -0.003270 0.007329 +nu-scatter matrix material group in group out legendre nuclide mean std. dev. 12 2 1 1 P0 total 0.310121 0.033788 13 2 1 1 P1 total 0.038230 0.008484 @@ -273,21 +380,25 @@ 1 2 2 2 P1 total -0.011214 0.016180 2 2 2 2 P2 total 0.008837 0.011504 3 2 2 2 P3 total -0.003270 0.007329 +multiplicity matrix material group in group out nuclide mean std. dev. 3 2 1 1 total 1.0 0.108779 2 2 1 2 total 0.0 0.000000 1 2 2 1 total 0.0 0.000000 0 2 2 2 total 1.0 0.142427 +nu-fission matrix material group in group out nuclide mean std. dev. 3 2 1 1 total 0.0 0.0 2 2 1 2 total 0.0 0.0 1 2 2 1 total 0.0 0.0 0 2 2 2 total 0.0 0.0 +scatter probability matrix material group in group out nuclide mean std. dev. 3 2 1 1 total 1.0 0.108779 2 2 1 2 total 0.0 0.000000 1 2 2 1 total 0.0 0.000000 0 2 2 2 total 1.0 0.142427 +consistent scatter matrix material group in group out legendre nuclide mean std. dev. 12 2 1 1 P0 total 0.312163 0.037253 13 2 1 1 P1 total 0.038481 0.008743 @@ -305,6 +416,7 @@ 1 2 2 2 P1 total -0.011182 0.016162 2 2 2 2 P2 total 0.008811 0.011495 3 2 2 2 P3 total -0.003261 0.007313 +consistent nu-scatter matrix material group in group out legendre nuclide mean std. dev. 12 2 1 1 P0 total 0.312163 0.050407 13 2 1 1 P1 total 0.038481 0.009693 @@ -322,33 +434,107 @@ 1 2 2 2 P1 total -0.011182 0.016240 2 2 2 2 P2 total 0.008811 0.011563 3 2 2 2 P3 total -0.003261 0.007328 +chi material group out nuclide mean std. dev. 1 2 1 total 0.0 0.0 0 2 2 total 0.0 0.0 +chi-prompt material group out nuclide mean std. dev. 1 2 1 total 0.0 0.0 0 2 2 total 0.0 0.0 +inverse-velocity material group in nuclide mean std. dev. 1 2 1 total 5.995979e-08 4.553085e-09 0 2 2 total 2.985490e-06 3.417020e-07 +prompt-nu-fission material group in nuclide mean std. dev. 1 2 1 total 0.0 0.0 0 2 2 total 0.0 0.0 +prompt-nu-fission matrix material group in group out nuclide mean std. dev. 3 2 1 1 total 0.0 0.0 2 2 1 2 total 0.0 0.0 1 2 2 1 total 0.0 0.0 0 2 2 2 total 0.0 0.0 +diffusion-coefficient material group in legendre nuclide mean std. dev. 2 2 1 P0 total 92.158584 948.055013 3 2 1 P1 total 1.209886 0.097583 0 2 2 P0 total 73.145434 834.775399 1 2 2 P1 total 1.068256 0.148711 +nu-diffusion-coefficient material group in legendre nuclide mean std. dev. 2 2 1 P0 total 92.158584 948.055013 3 2 1 P1 total 1.209886 0.097583 0 2 2 P0 total 73.145434 834.775399 1 2 2 P1 total 1.068256 0.148711 +(n,elastic) + material group in nuclide mean std. dev. +1 2 1 total 0.301031 0.014977 +0 2 2 total 0.295421 0.027446 +(n,level) + material group in nuclide mean std. dev. +1 2 1 total 0.0 0.0 +0 2 2 total 0.0 0.0 +(n,2n) + material group in nuclide mean std. dev. +1 2 1 total 0.000005 0.000005 +0 2 2 total 0.000000 0.000000 +(n,na) + material group in nuclide mean std. dev. +1 2 1 total 1.259778e-09 1.152715e-09 +0 2 2 total 0.000000e+00 0.000000e+00 +(n,nc) + material group in nuclide mean std. dev. +1 2 1 total 0.002607 0.000356 +0 2 2 total 0.000000 0.000000 +(n,gamma) + material group in nuclide mean std. dev. +1 2 1 total 0.001569 0.000322 +0 2 2 total 0.005400 0.000618 +(n,a) + material group in nuclide mean std. dev. +1 2 1 total 1.032353e-06 1.308817e-07 +0 2 2 total 2.735898e-07 2.541726e-08 +(n,Xa) + material group in nuclide mean std. dev. +1 2 1 total 1.033613e-06 1.318182e-07 +0 2 2 total 2.735898e-07 2.541726e-08 +heating + material group in nuclide mean std. dev. +1 2 1 total 2819.023866 149.123603 +0 2 2 total 2.414215 0.196172 +damage-energy + material group in nuclide mean std. dev. +1 2 1 total 1712.186983 87.224250 +0 2 2 total 0.294202 0.032716 +(n,n1) + material group in nuclide mean std. dev. +1 2 1 total 0.003108 0.000252 +0 2 2 total 0.000000 0.000000 +(n,a0) + material group in nuclide mean std. dev. +1 2 1 total 8.426133e-07 7.088213e-08 +0 2 2 total 2.733143e-07 2.539166e-08 +(n,nc) matrix + material group in group out nuclide mean std. dev. +3 2 1 1 total 0.001782 0.000845 +2 2 1 2 total 0.000000 0.000000 +1 2 2 1 total 0.000000 0.000000 +0 2 2 2 total 0.000000 0.000000 +(n,n1) matrix + material group in group out nuclide mean std. dev. +3 2 1 1 total 0.002228 0.000725 +2 2 1 2 total 0.000000 0.000000 +1 2 2 1 total 0.000000 0.000000 +0 2 2 2 total 0.000000 0.000000 +(n,2n) matrix + material group in group out nuclide mean std. dev. +3 2 1 1 total 0.0 0.0 +2 2 1 2 total 0.0 0.0 +1 2 2 1 total 0.0 0.0 +0 2 2 2 total 0.0 0.0 +delayed-nu-fission material delayedgroup group in nuclide mean std. dev. 1 2 1 1 total 0.0 0.0 3 2 2 1 total 0.0 0.0 @@ -362,6 +548,7 @@ 6 2 4 2 total 0.0 0.0 8 2 5 2 total 0.0 0.0 10 2 6 2 total 0.0 0.0 +chi-delayed material delayedgroup group out nuclide mean std. dev. 1 2 1 1 total 0.0 0.0 3 2 2 1 total 0.0 0.0 @@ -375,6 +562,7 @@ 6 2 4 2 total 0.0 0.0 8 2 5 2 total 0.0 0.0 10 2 6 2 total 0.0 0.0 +beta material delayedgroup group in nuclide mean std. dev. 1 2 1 1 total 0.0 0.0 3 2 2 1 total 0.0 0.0 @@ -388,6 +576,7 @@ 6 2 4 2 total 0.0 0.0 8 2 5 2 total 0.0 0.0 10 2 6 2 total 0.0 0.0 +decay-rate material delayedgroup nuclide mean std. dev. 0 2 1 total 0.0 0.0 1 2 2 total 0.0 0.0 @@ -395,6 +584,7 @@ 3 2 4 total 0.0 0.0 4 2 5 total 0.0 0.0 5 2 6 total 0.0 0.0 +delayed-nu-fission matrix material delayedgroup group in group out nuclide mean std. dev. 3 2 1 1 1 total 0.0 0.0 7 2 2 1 1 total 0.0 0.0 @@ -420,36 +610,47 @@ 12 2 4 2 2 total 0.0 0.0 16 2 5 2 2 total 0.0 0.0 20 2 6 2 2 total 0.0 0.0 +total material group in nuclide mean std. dev. 1 3 1 total 0.664572 0.031215 0 3 2 total 2.052384 0.224343 +transport material group in nuclide mean std. dev. 1 3 1 total 0.283323 0.035206 0 3 2 total 1.499740 0.230902 +nu-transport material group in nuclide mean std. dev. 1 3 1 total 0.283323 0.035206 0 3 2 total 1.499740 0.230902 +absorption material group in nuclide mean std. dev. 1 3 1 total 0.000690 0.000044 0 3 2 total 0.031687 0.003747 +capture material group in nuclide mean std. dev. 1 3 1 total 0.000690 0.000044 0 3 2 total 0.031687 0.003747 +fission material group in nuclide mean std. dev. 1 3 1 total 0.0 0.0 0 3 2 total 0.0 0.0 +nu-fission material group in nuclide mean std. dev. 1 3 1 total 0.0 0.0 0 3 2 total 0.0 0.0 +kappa-fission material group in nuclide mean std. dev. 1 3 1 total 0.0 0.0 0 3 2 total 0.0 0.0 +scatter material group in nuclide mean std. dev. 1 3 1 total 0.663882 0.031173 0 3 2 total 2.020697 0.220604 +nu-scatter material group in nuclide mean std. dev. 1 3 1 total 0.671269 0.026186 0 3 2 total 2.035388 0.258060 +scatter matrix material group in group out legendre nuclide mean std. dev. 12 3 1 1 P0 total 0.639901 0.024709 13 3 1 1 P1 total 0.381167 0.016243 @@ -467,6 +668,7 @@ 1 3 2 2 P1 total 0.509940 0.051236 2 3 2 2 P2 total 0.111175 0.013020 3 3 2 2 P3 total 0.024988 0.008312 +nu-scatter matrix material group in group out legendre nuclide mean std. dev. 12 3 1 1 P0 total 0.639901 0.024709 13 3 1 1 P1 total 0.381167 0.016243 @@ -484,21 +686,25 @@ 1 3 2 2 P1 total 0.509940 0.051236 2 3 2 2 P2 total 0.111175 0.013020 3 3 2 2 P3 total 0.024988 0.008312 +multiplicity matrix material group in group out nuclide mean std. dev. 3 3 1 1 total 1.0 0.038609 2 3 1 2 total 1.0 0.067667 1 3 2 1 total 1.0 1.414214 0 3 2 2 total 1.0 0.135929 +nu-fission matrix material group in group out nuclide mean std. dev. 3 3 1 1 total 0.0 0.0 2 3 1 2 total 0.0 0.0 1 3 2 1 total 0.0 0.0 0 3 2 2 total 0.0 0.0 +scatter probability matrix material group in group out nuclide mean std. dev. 3 3 1 1 total 0.953271 0.036018 2 3 1 2 total 0.046729 0.002547 1 3 2 1 total 0.000218 0.000219 0 3 2 2 total 0.999782 0.135885 +consistent scatter matrix material group in group out legendre nuclide mean std. dev. 12 3 1 1 P0 total 0.632859 0.038142 13 3 1 1 P1 total 0.376973 0.023715 @@ -516,6 +722,7 @@ 1 3 2 2 P1 total 0.506260 0.079140 2 3 2 2 P2 total 0.110372 0.018488 3 3 2 2 P3 total 0.024808 0.008771 +consistent nu-scatter matrix material group in group out legendre nuclide mean std. dev. 12 3 1 1 P0 total 0.632859 0.045297 13 3 1 1 P1 total 0.376973 0.027825 @@ -533,33 +740,107 @@ 1 3 2 2 P1 total 0.506260 0.104875 2 3 2 2 P2 total 0.110372 0.023809 3 3 2 2 P3 total 0.024808 0.009397 +chi material group out nuclide mean std. dev. 1 3 1 total 0.0 0.0 0 3 2 total 0.0 0.0 +chi-prompt material group out nuclide mean std. dev. 1 3 1 total 0.0 0.0 0 3 2 total 0.0 0.0 +inverse-velocity material group in nuclide mean std. dev. 1 3 1 total 6.022078e-08 3.780437e-09 0 3 2 total 3.044955e-06 3.600077e-07 +prompt-nu-fission material group in nuclide mean std. dev. 1 3 1 total 0.0 0.0 0 3 2 total 0.0 0.0 +prompt-nu-fission matrix material group in group out nuclide mean std. dev. 3 3 1 1 total 0.0 0.0 2 3 1 2 total 0.0 0.0 1 3 2 1 total 0.0 0.0 0 3 2 2 total 0.0 0.0 +diffusion-coefficient material group in legendre nuclide mean std. dev. 2 3 1 P0 total 13.561252 21.988396 3 3 1 P1 total 1.176515 0.154807 0 3 2 P0 total -2.459765 6.393743 1 3 2 P1 total 0.222261 0.040518 +nu-diffusion-coefficient material group in legendre nuclide mean std. dev. 2 3 1 P0 total 13.561252 21.988396 3 3 1 P1 total 1.176515 0.154807 0 3 2 P0 total -2.459765 6.393743 1 3 2 P1 total 0.222261 0.040518 +(n,elastic) + material group in nuclide mean std. dev. +1 3 1 total 0.663837 0.031175 +0 3 2 total 2.020697 0.220604 +(n,level) + material group in nuclide mean std. dev. +1 3 1 total 0.000045 0.000027 +0 3 2 total 0.000000 0.000000 +(n,2n) + material group in nuclide mean std. dev. +1 3 1 total 0.0 0.0 +0 3 2 total 0.0 0.0 +(n,na) + material group in nuclide mean std. dev. +1 3 1 total 6.743945e-11 6.604830e-11 +0 3 2 total 0.000000e+00 0.000000e+00 +(n,nc) + material group in nuclide mean std. dev. +1 3 1 total 0.0 0.0 +0 3 2 total 0.0 0.0 +(n,gamma) + material group in nuclide mean std. dev. +1 3 1 total 0.000219 0.000014 +0 3 2 total 0.011034 0.001305 +(n,a) + material group in nuclide mean std. dev. +1 3 1 total 0.000471 0.000031 +0 3 2 total 0.020653 0.002442 +(n,Xa) + material group in nuclide mean std. dev. +1 3 1 total 0.000472 0.000031 +0 3 2 total 0.020653 0.002442 +heating + material group in nuclide mean std. dev. +1 3 1 total 86854.045343 3785.266424 +0 3 2 total 61907.411870 6000.898789 +damage-energy + material group in nuclide mean std. dev. +1 3 1 total 1186.090822 44.862980 +0 3 2 total 337.187426 39.868517 +(n,n1) + material group in nuclide mean std. dev. +1 3 1 total 0.000001 6.118682e-07 +0 3 2 total 0.000000 0.000000e+00 +(n,a0) + material group in nuclide mean std. dev. +1 3 1 total 0.000084 0.000012 +0 3 2 total 0.001299 0.000154 +(n,nc) matrix + material group in group out nuclide mean std. dev. +3 3 1 1 total 0.0 0.0 +2 3 1 2 total 0.0 0.0 +1 3 2 1 total 0.0 0.0 +0 3 2 2 total 0.0 0.0 +(n,n1) matrix + material group in group out nuclide mean std. dev. +3 3 1 1 total 0.0 0.0 +2 3 1 2 total 0.0 0.0 +1 3 2 1 total 0.0 0.0 +0 3 2 2 total 0.0 0.0 +(n,2n) matrix + material group in group out nuclide mean std. dev. +3 3 1 1 total 0.0 0.0 +2 3 1 2 total 0.0 0.0 +1 3 2 1 total 0.0 0.0 +0 3 2 2 total 0.0 0.0 +delayed-nu-fission material delayedgroup group in nuclide mean std. dev. 1 3 1 1 total 0.0 0.0 3 3 2 1 total 0.0 0.0 @@ -573,6 +854,7 @@ 6 3 4 2 total 0.0 0.0 8 3 5 2 total 0.0 0.0 10 3 6 2 total 0.0 0.0 +chi-delayed material delayedgroup group out nuclide mean std. dev. 1 3 1 1 total 0.0 0.0 3 3 2 1 total 0.0 0.0 @@ -586,6 +868,7 @@ 6 3 4 2 total 0.0 0.0 8 3 5 2 total 0.0 0.0 10 3 6 2 total 0.0 0.0 +beta material delayedgroup group in nuclide mean std. dev. 1 3 1 1 total 0.0 0.0 3 3 2 1 total 0.0 0.0 @@ -599,6 +882,7 @@ 6 3 4 2 total 0.0 0.0 8 3 5 2 total 0.0 0.0 10 3 6 2 total 0.0 0.0 +decay-rate material delayedgroup nuclide mean std. dev. 0 3 1 total 0.0 0.0 1 3 2 total 0.0 0.0 @@ -606,6 +890,7 @@ 3 3 4 total 0.0 0.0 4 3 5 total 0.0 0.0 5 3 6 total 0.0 0.0 +delayed-nu-fission matrix material delayedgroup group in group out nuclide mean std. dev. 3 3 1 1 1 total 0.0 0.0 7 3 2 1 1 total 0.0 0.0 diff --git a/tests/regression_tests/mgxs_library_no_nuclides/test.py b/tests/regression_tests/mgxs_library_no_nuclides/test.py index f005c095ec..af14a5dc8f 100644 --- a/tests/regression_tests/mgxs_library_no_nuclides/test.py +++ b/tests/regression_tests/mgxs_library_no_nuclides/test.py @@ -19,9 +19,17 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib = openmc.mgxs.Library(self._model.geometry) self.mgxs_lib.by_nuclide = False - # Test all relevant MGXS types + # Test relevant MGXS types relevant_MGXS_TYPES = [item for item in openmc.mgxs.MGXS_TYPES if item != 'current'] + # Add in a subset of openmc.mgxs.ARBITRARY_VECTOR_TYPES and + # openmc.mgxs.ARBITRARY_MATRIX_TYPES so we can see the code works, + # but not use too much resources + relevant_MGXS_TYPES += [ + "(n,elastic)", "(n,level)", "(n,2n)", "(n,na)", "(n,nc)", + "(n,gamma)", "(n,a)", "(n,Xa)", "heating", "damage-energy", + "(n,n1)", "(n,a0)", "(n,nc) matrix", "(n,n1) matrix", + "(n,2n) matrix"] self.mgxs_lib.mgxs_types = tuple(relevant_MGXS_TYPES) + \ openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups @@ -48,7 +56,7 @@ class MGXSTestHarness(PyAPITestHarness): for mgxs_type in self.mgxs_lib.mgxs_types: mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) df = mgxs.get_pandas_dataframe() - outstr += df.to_string() + '\n' + outstr += mgxs_type + '\n' + df.to_string() + '\n' # Hash the results if necessary if hash_output: diff --git a/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat b/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat index dc63ef0cbf..f29a41f3d7 100644 --- a/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_nuclides/inputs_true.dat @@ -68,10 +68,10 @@ 0.0 20000000.0 - + 2 - + 3 @@ -429,711 +429,1251 @@ analog - 71 2 + 1 2 total flux tracklength - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - total + 1 2 + U234 U235 U238 O16 + (n,elastic) tracklength - 71 2 + 1 2 total flux tracklength - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - total + 1 2 + U234 U235 U238 O16 + (n,level) tracklength - 71 2 + 1 2 total flux - analog + tracklength - 71 5 6 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog + 1 2 + U234 U235 U238 O16 + (n,2n) + tracklength - 71 2 + 1 2 total flux tracklength - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - total + 1 2 + U234 U235 U238 O16 + (n,na) tracklength - 71 2 + 1 2 total flux - analog + tracklength - 71 5 6 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog + 1 2 + U234 U235 U238 O16 + (n,nc) + tracklength - 71 2 + 1 2 total flux tracklength - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - absorption + 1 2 + U234 U235 U238 O16 + (n,gamma) tracklength - 71 2 + 1 2 total flux tracklength - 71 2 + 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 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + total + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + total + tracklength + + + 104 2 + total + flux + analog + + + 104 5 6 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + analog + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + total + tracklength + + + 104 2 + total + flux + analog + + + 104 5 6 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-scatter + analog + + + 104 2 + total + flux + tracklength + + + 104 2 Zr90 Zr91 Zr92 Zr94 Zr96 absorption tracklength - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - fission - tracklength - - - 71 2 - total - flux - tracklength - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - fission - tracklength - - - 71 2 - total - flux - tracklength - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - tracklength - - - 71 2 - total - flux - tracklength - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - kappa-fission - tracklength - - - 71 2 - total - flux - tracklength - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - tracklength - - - 71 2 - total - flux - analog - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - 71 2 - total - flux - analog - - - 71 2 5 28 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - - 71 2 - total - flux - analog - - - 71 2 5 28 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - 71 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - 71 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - - 71 2 - total - flux - analog - - - 71 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - analog - - - 71 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - - 71 2 - total - flux - tracklength - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - tracklength - - - 71 2 5 28 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - - 71 2 - total - flux - tracklength - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - tracklength - - - 71 2 5 28 - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - - 71 2 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - 71 52 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - analog - - 71 5 - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - analog + 104 2 + total + flux + tracklength - 71 52 + 104 2 Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - analog + absorption + tracklength - 71 5 + 104 2 Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - analog + fission + tracklength - 71 2 + 104 2 total flux tracklength - 71 2 + 104 2 Zr90 Zr91 Zr92 Zr94 Zr96 - inverse-velocity + fission tracklength - 71 2 + 104 2 total flux tracklength - 71 2 + 104 2 Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission + nu-fission tracklength - 71 2 + 104 2 total flux - analog + tracklength - 71 2 5 + 104 2 Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - analog + kappa-fission + tracklength - 71 2 + 104 2 total flux tracklength - 71 2 + 104 2 Zr90 Zr91 Zr92 Zr94 Zr96 - total + scatter tracklength - 71 2 + 104 2 total flux analog - 71 5 6 + 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 - - 71 2 - total - flux - tracklength - - - 71 2 - Zr90 Zr91 Zr92 Zr94 Zr96 - total - tracklength - - 71 2 + 104 2 total flux analog - 71 5 6 + 104 2 5 28 Zr90 Zr91 Zr92 Zr94 Zr96 nu-scatter analog - 141 2 - total - flux - tracklength + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-scatter + analog - 141 2 - H1 O16 B10 B11 - total - tracklength + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + analog - 141 2 + 104 2 total flux - tracklength + analog - 141 2 - H1 O16 B10 B11 - total - tracklength + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog - 141 2 - total - flux + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter analog - 141 5 6 - H1 O16 B10 B11 - scatter - analog - - - 141 2 + 104 2 total flux tracklength + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + tracklength + - 141 2 - H1 O16 B10 B11 - total - tracklength - - - 141 2 - total - flux + 104 2 5 28 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter analog + + 104 2 + total + flux + tracklength + - 141 5 6 - H1 O16 B10 B11 + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + tracklength + + + 104 2 5 28 + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + analog + + + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 nu-scatter analog - - 141 2 - total - flux - tracklength - - - 141 2 - H1 O16 B10 B11 - absorption - tracklength - - 141 2 - total - flux - tracklength + 104 52 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog - 141 2 - H1 O16 B10 B11 - absorption - tracklength + 104 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog - 141 2 - H1 O16 B10 B11 - fission - tracklength + 104 52 + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog - 141 2 - total - flux - tracklength + 104 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog - 141 2 - H1 O16 B10 B11 - fission + 104 2 + total + flux tracklength - 141 2 - total - flux + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + inverse-velocity tracklength - 141 2 - H1 O16 B10 B11 - nu-fission + 104 2 + total + flux tracklength - 141 2 - total - flux + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission tracklength - 141 2 - H1 O16 B10 B11 - kappa-fission - tracklength - - - 141 2 + 104 2 total flux - tracklength + analog + + + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog - 141 2 - H1 O16 B10 B11 - scatter + 104 2 + total + flux tracklength - 141 2 - total - flux - analog + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + total + tracklength - 141 2 - H1 O16 B10 B11 - nu-scatter + 104 2 + total + flux analog - 141 2 - total - flux - analog - - - 141 2 5 28 - H1 O16 B10 B11 + 104 5 6 + Zr90 Zr91 Zr92 Zr94 Zr96 scatter analog + + 104 2 + total + flux + tracklength + - 141 2 + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + total + tracklength + + + 104 2 total flux analog - - 141 2 5 28 - H1 O16 B10 B11 - nu-scatter - analog - - 141 2 5 - H1 O16 B10 B11 + 104 5 6 + Zr90 Zr91 Zr92 Zr94 Zr96 nu-scatter analog - 141 2 5 - H1 O16 B10 B11 - scatter - analog - - - 141 2 + 104 2 total flux - analog + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,elastic) + tracklength - 141 2 5 - H1 O16 B10 B11 - nu-fission - analog + 104 2 + total + flux + tracklength - 141 2 5 - H1 O16 B10 B11 - scatter - analog + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,level) + tracklength - 141 2 + 104 2 total flux tracklength - 141 2 - H1 O16 B10 B11 - scatter + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,2n) tracklength - 141 2 5 28 - H1 O16 B10 B11 - scatter - analog - - - 141 2 + 104 2 total flux tracklength + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,na) + tracklength + - 141 2 - H1 O16 B10 B11 - scatter + 104 2 + total + flux tracklength - 141 2 5 28 + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,nc) + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,gamma) + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,a) + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,Xa) + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + heating + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + damage-energy + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,n1) + tracklength + + + 104 2 + total + flux + tracklength + + + 104 2 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,a0) + tracklength + + + 104 2 + total + flux + analog + + + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,nc) + analog + + + 104 2 + total + flux + analog + + + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,n1) + analog + + + 104 2 + total + flux + analog + + + 104 2 5 + Zr90 Zr91 Zr92 Zr94 Zr96 + (n,2n) + analog + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + total + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + total + tracklength + + + 207 2 + total + flux + analog + + + 207 5 6 H1 O16 B10 B11 scatter analog - - 141 2 5 + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + total + tracklength + + + 207 2 + total + flux + analog + + + 207 5 6 H1 O16 B10 B11 nu-scatter analog - - 141 52 - H1 O16 B10 B11 - nu-fission - analog - - - 141 5 - H1 O16 B10 B11 - nu-fission - analog - - - 141 52 - H1 O16 B10 B11 - prompt-nu-fission - analog - - - 141 5 - H1 O16 B10 B11 - prompt-nu-fission - analog - - - 141 2 + + 207 2 total flux tracklength - - 141 2 + + 207 2 + H1 O16 B10 B11 + absorption + tracklength + + + 207 2 + total + flux + tracklength + + + 207 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 + tracklength + + + 207 2 + total + flux + analog + + + 207 2 + H1 O16 B10 B11 + nu-scatter + analog + + + 207 2 + total + flux + analog + + + 207 2 5 28 + H1 O16 B10 B11 + scatter + analog + + + 207 2 + total + flux + analog + + + 207 2 5 28 + H1 O16 B10 B11 + nu-scatter + analog + + + 207 2 5 + H1 O16 B10 B11 + nu-scatter + analog + + + 207 2 5 + H1 O16 B10 B11 + scatter + analog + + + 207 2 + total + flux + analog + + + 207 2 5 + H1 O16 B10 B11 + nu-fission + analog + + + 207 2 5 + H1 O16 B10 B11 + scatter + analog + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + scatter + tracklength + + + 207 2 5 28 + H1 O16 B10 B11 + scatter + analog + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + scatter + tracklength + + + 207 2 5 28 + H1 O16 B10 B11 + scatter + analog + + + 207 2 5 + H1 O16 B10 B11 + nu-scatter + analog + + + 207 52 + H1 O16 B10 B11 + nu-fission + analog + + + 207 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 - - 141 2 + + 207 2 total flux tracklength - - 141 2 + + 207 2 H1 O16 B10 B11 prompt-nu-fission tracklength - - 141 2 + + 207 2 total flux analog - - 141 2 5 + + 207 2 5 H1 O16 B10 B11 prompt-nu-fission analog - - 141 2 + + 207 2 total flux tracklength - - 141 2 + + 207 2 H1 O16 B10 B11 total tracklength - - 141 2 + + 207 2 total flux analog - - 141 5 6 + + 207 5 6 H1 O16 B10 B11 scatter analog - - 141 2 + + 207 2 total flux tracklength - - 141 2 + + 207 2 H1 O16 B10 B11 total tracklength - - 141 2 + + 207 2 total flux analog - - 141 5 6 + + 207 5 6 H1 O16 B10 B11 nu-scatter analog + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,elastic) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,level) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,2n) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,na) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,nc) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,gamma) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,a) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,Xa) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + heating + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + damage-energy + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,n1) + tracklength + + + 207 2 + total + flux + tracklength + + + 207 2 + H1 O16 B10 B11 + (n,a0) + tracklength + + + 207 2 + total + flux + analog + + + 207 2 5 + H1 O16 B10 B11 + (n,nc) + analog + + + 207 2 + total + flux + analog + + + 207 2 5 + H1 O16 B10 B11 + (n,n1) + analog + + + 207 2 + total + flux + analog + + + 207 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 1a93a03188..a2be43e800 100644 --- a/tests/regression_tests/mgxs_library_nuclides/results_true.dat +++ b/tests/regression_tests/mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -14f7fb2e399a4ad124b25b88dda5104d43cca9192aa1c17261da40bcc0e4394e56781f42f79c90107d0ff6b3e901f034bed09b037670e60b9ac4009b3805e17d \ No newline at end of file +a9999488e2aa2ad0f1d694afedb71fbb56f1d0c8e8abdb6616698505a9d85302bf90586866fdb58eac96f76712a2dfbc884cc03087df7b5d148fb29d14dd2bbb \ No newline at end of file diff --git a/tests/regression_tests/mgxs_library_nuclides/test.py b/tests/regression_tests/mgxs_library_nuclides/test.py index 87a65723c5..8a7673565e 100644 --- a/tests/regression_tests/mgxs_library_nuclides/test.py +++ b/tests/regression_tests/mgxs_library_nuclides/test.py @@ -18,9 +18,17 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib = openmc.mgxs.Library(self._model.geometry) self.mgxs_lib.by_nuclide = True - # Test relevant all MGXS types + # Test relevant MGXS types relevant_MGXS_TYPES = [item for item in openmc.mgxs.MGXS_TYPES if item != 'current'] + # Add in a subset of openmc.mgxs.ARBITRARY_VECTOR_TYPES and + # openmc.mgxs.ARBITRARY_MATRIX_TYPES so we can see the code works, + # but not use too much resources + relevant_MGXS_TYPES += [ + "(n,elastic)", "(n,level)", "(n,2n)", "(n,na)", "(n,nc)", + "(n,gamma)", "(n,a)", "(n,Xa)", "heating", "damage-energy", + "(n,n1)", "(n,a0)", "(n,nc) matrix", "(n,n1) matrix", + "(n,2n) matrix"] self.mgxs_lib.mgxs_types = tuple(relevant_MGXS_TYPES) self.mgxs_lib.energy_groups = energy_groups self.mgxs_lib.legendre_order = 3