diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index a1ce6b2b1..0a4feff1d 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -296,6 +296,7 @@ Multi-group Cross Sections openmc.mgxs.NuFissionMatrixXS openmc.mgxs.ScatterXS openmc.mgxs.ScatterMatrixXS + openmc.mgxs.ScatterProbabilityMatrix openmc.mgxs.TotalXS openmc.mgxs.TransportXS diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 0a9a94828..7ebe6cb8c 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -1089,8 +1089,8 @@ class Library(object): using_multiplicity = True # multiplicity will fall back to using scatter and nu-scatter - elif ((('scatter matrix' in self.mgxs_types) and - ('nu-scatter matrix' in self.mgxs_types))): + elif 'scatter matrix' in self.mgxs_types and \ + 'nu-scatter matrix' in self.mgxs_types: scatt_mgxs = self.get_mgxs(domain, 'scatter matrix') nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') xsdata.set_multiplicity_matrix_mgxs(nuscatt_mgxs, scatt_mgxs, @@ -1099,17 +1099,38 @@ class Library(object): subdomain=subdomain) using_multiplicity = True + # multiplicity will fall back to using scatter and nu-scatter + elif 'consistent scatter matrix' in self.mgxs_types and \ + 'consistent nu-scatter matrix' in self.mgxs_types: + scatt_mgxs = self.get_mgxs(domain, 'consistent scatter matrix') + nuscatt_mgxs = \ + self.get_mgxs(domain, 'consistent nu-scatter matrix') + xsdata.set_multiplicity_matrix_mgxs(nuscatt_mgxs, scatt_mgxs, + xs_type=xs_type, + nuclide=[nuclide], + subdomain=subdomain) + using_multiplicity = True + else: using_multiplicity = False if using_multiplicity: - nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') + if 'nu-scatter matrix' in self.mgxs_types: + nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') + else: + nuscatt_mgxs = \ + self.get_mgxs(domain, 'consistent nu-scatter matrix') xsdata.set_scatter_matrix_mgxs(nuscatt_mgxs, xs_type=xs_type, nuclide=[nuclide], subdomain=subdomain) else: - if 'nu-scatter matrix' in self.mgxs_types: - nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') + if 'nu-scatter matrix' in self.mgxs_types or \ + 'consistent nu-scatter matrix' in self.mgxs_types: + if 'nu-scatter matrix' in self.mgxs_types: + nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') + else: + nuscatt_mgxs = \ + self.get_mgxs(domain, 'consistent nu-scatter matrix') xsdata.set_scatter_matrix_mgxs(nuscatt_mgxs, xs_type=xs_type, nuclide=[nuclide], subdomain=subdomain) @@ -1409,13 +1430,15 @@ class Library(object): error_flag = True warn('An "absorption" MGXS type is required but not provided.') # Ensure nu-scattering matrix is required - if 'nu-scatter matrix' not in self.mgxs_types: + if 'nu-scatter matrix' not in self.mgxs_types and \ + 'consistent nu-scatter matrix' not in self.mgxs_types: error_flag = True warn('A "nu-scatter matrix" MGXS type is required but not provided.') else: # Ok, now see the status of scatter and/or multiplicity - if ((('scatter matrix' not in self.mgxs_types) and - ('multiplicity matrix' not in self.mgxs_types))): + if 'scatter matrix' not in self.mgxs_types or \ + 'consistent scatter matrix' not in self.mgxs_types and \ + 'multiplicity matrix' not in self.mgxs_types: # We dont have data needed for multiplicity matrix, therefore # we need total, and not transport. if 'total' not in self.mgxs_types: @@ -1424,14 +1447,12 @@ class Library(object): 'scattering matrix is not provided.') # Total or transport can be present, but if using # self.correction=="P0", then we should use transport. - if (((self.correction == "P0") and - ('nu-transport' not in self.mgxs_types))): + if self.correction == "P0" and 'nu-transport' not in self.mgxs_types: error_flag = True warn('A "nu-transport" MGXS type is required since a "P0" ' 'correction is applied, but a "nu-transport" MGXS is ' 'not provided.') - elif (((self.correction is None) and - ('total' not in self.mgxs_types))): + elif self.correction is None and 'total' not in self.mgxs_types: error_flag = True warn('A "total" MGXS type is required, but not provided.') diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 05cba829b..65a452a15 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -32,6 +32,9 @@ MGXS_TYPES = ['total', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', + 'scatter probability matrix', + 'consistent scatter matrix', + 'consistent nu-scatter matrix', 'chi', 'chi-prompt', 'inverse-velocity', @@ -121,7 +124,7 @@ class MGXS(object): post-processing to compute spatially-homogenized and energy-integrated multi-group cross sections for multi-group neutronics calculations. - NOTE: Users should instantiate the subclasses of this abstract class. + .. note:: Users should instantiate the subclasses of this abstract class. Parameters ---------- @@ -478,12 +481,18 @@ class MGXS(object): else: domain_filter = filter_type(self.domain.id) + if isinstance(self.estimator, str): + estimators = [self.estimator] * len(self.scores) + else: + estimators = self.estimator + # Create each Tally needed to compute the multi group cross section - tally_metadata = zip(self.scores, self.tally_keys, self.filters) - for score, key, filters in tally_metadata: + tally_metadata = \ + zip(self.scores, self.tally_keys, self.filters, estimators) + for score, key, filters, estimator in tally_metadata: self._tallies[key] = openmc.Tally(name=self.name) self._tallies[key].scores = [score] - self._tallies[key].estimator = self.estimator + self._tallies[key].estimator = estimator self._tallies[key].filters = [domain_filter] # If a tally trigger was specified, add it to each tally @@ -725,6 +734,14 @@ class MGXS(object): mgxs = ScatterMatrixXS(domain, domain_type, energy_groups, nu=True) elif mgxs_type == 'multiplicity matrix': mgxs = MultiplicityMatrixXS(domain, domain_type, energy_groups) + elif mgxs_type == 'scatter probability matrix': + mgxs = ScatterProbabilityMatrix(domain, domain_type, energy_groups) + elif mgxs_type == 'consistent scatter matrix': + mgxs = ScatterMatrixXS(domain, domain_type, energy_groups) + mgxs.formulation = 'consistent' + elif mgxs_type == 'consistent nu-scatter matrix': + mgxs = ScatterMatrixXS(domain, domain_type, energy_groups, nu=True) + mgxs.formulation = 'consistent' elif mgxs_type == 'nu-fission matrix': mgxs = NuFissionMatrixXS(domain, domain_type, energy_groups) elif mgxs_type == 'chi': @@ -880,7 +897,7 @@ class MGXS(object): This method is needed to compute cross section data from tallies in an OpenMC StatePoint object. - NOTE: The statepoint must first be linked with an OpenMC Summary object. + .. note:: The statepoint must be linked with an OpenMC Summary object. Parameters ---------- @@ -1628,7 +1645,7 @@ class MGXS(object): nuclides and cross section type. Two datasets for the mean and standard deviation are stored for each subdomain entry in the HDF5 file. - NOTE: This requires the h5py Python package. + .. note:: This requires the h5py Python package. Parameters ---------- @@ -1971,7 +1988,7 @@ class MatrixMGXS(MGXS): post-processing to compute spatially-homogenized and energy-integrated multi-group cross sections for multi-group neutronics calculations. - NOTE: Users should instantiate the subclasses of this abstract class. + .. note:: Users should instantiate the subclasses of this abstract class. Parameters ---------- @@ -2695,11 +2712,10 @@ class TransportXS(MGXS): super(TransportXS, self).__init__(domain, domain_type, groups, by_nuclide, name, num_polar, num_azimuthal) - if not nu: - self._rxn_type = 'transport' - else: - self._rxn_type = 'nu-transport' - self._estimator = 'analog' + + # Use tracklength estimators for the total MGXS term, and + # analog estimators for the transport correction term + self._estimator = ['tracklength', 'tracklength', 'analog', 'analog'] self._valid_estimators = ['analog'] self.nu = nu @@ -2711,23 +2727,21 @@ class TransportXS(MGXS): @property def scores(self): if not self.nu: - return ['flux', 'total', 'scatter-1'] + return ['flux', 'total', 'flux', 'scatter-1'] else: - return ['flux', 'total', 'nu-scatter-1'] + return ['flux', 'total', 'flux', 'nu-scatter-1'] @property def tally_keys(self): - if not self.nu: - return super(TransportXS, self).tally_keys - else: - return ['flux', 'total', 'scatter-1'] + return ['flux (tracklength)', 'total', 'flux (analog)', 'scatter-1'] @property def filters(self): group_edges = self.energy_groups.group_edges energy_filter = openmc.EnergyFilter(group_edges) energyout_filter = openmc.EnergyoutFilter(group_edges) - filters = [[energy_filter], [energy_filter], [energyout_filter]] + filters = [[energy_filter], [energy_filter], + [energy_filter], [energyout_filter]] return self._add_angle_filters(filters) @@ -2746,6 +2760,32 @@ class TransportXS(MGXS): return self._rxn_rate_tally + @property + def xs_tally(self): + if self._xs_tally is None: + if self.tallies is None: + msg = 'Unable to get xs_tally since tallies have ' \ + 'not been loaded from a statepoint' + raise ValueError(msg) + + # Switch EnergyoutFilter to EnergyFilter. + old_filt = self.tallies['scatter-1'].filters[-1] + new_filt = openmc.EnergyFilter(old_filt.bins) + new_filt.stride = old_filt.stride + self.tallies['scatter-1'].filters[-1] = new_filt + + # Compute total cross section + total_xs = self.tallies['total'] / self.tallies['flux (tracklength)'] + + # Compute transport correction term + trans_corr = self.tallies['scatter-1'] / self.tallies['flux (analog)'] + + # Compute the transport-corrected total cross section + self._xs_tally = total_xs - trans_corr + self._compute_xs() + + return self._xs_tally + @property def nu(self): return self._nu @@ -2754,6 +2794,10 @@ class TransportXS(MGXS): def nu(self, nu): cv.check_type('nu', nu, bool) self._nu = nu + if not nu: + self._rxn_type = 'transport' + else: + self._rxn_type = 'nu-transport' class AbsorptionXS(MGXS): @@ -3160,15 +3204,9 @@ class FissionXS(MGXS): super(FissionXS, self).__init__(domain, domain_type, groups, by_nuclide, name, num_polar, num_azimuthal) - if not prompt: - if not nu: - self._rxn_type = 'fission' - else: - self._rxn_type = 'nu-fission' - self.nu = nu - else: - self._rxn_type = 'prompt-nu-fission' - self.nu = True + self._nu = False + self._prompt = False + self.nu = nu self.prompt = prompt def __deepcopy__(self, memo): @@ -3189,11 +3227,25 @@ class FissionXS(MGXS): def nu(self, nu): cv.check_type('nu', nu, bool) self._nu = nu + if not self.prompt: + if not self.nu: + self._rxn_type = 'fission' + else: + self._rxn_type = 'nu-fission' + else: + self._rxn_type = 'prompt-nu-fission' @prompt.setter def prompt(self, prompt): cv.check_type('prompt', prompt, bool) self._prompt = prompt + if not self.prompt: + if not self.nu: + self._rxn_type = 'fission' + else: + self._rxn_type = 'nu-fission' + else: + self._rxn_type = 'prompt-nu-fission' class KappaFissionXS(MGXS): @@ -3364,9 +3416,6 @@ class ScatterXS(MGXS): The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation - nu : bool - If True, the cross section data will include neutron multiplication; - defaults to False by_nuclide : bool If true, computes cross sections for each nuclide in domain name : str, optional @@ -3378,6 +3427,9 @@ class ScatterXS(MGXS): num_azimuthal : Integral, optional Number of equi-width azimuthal angle bins for angle discretization; defaults to one bin + nu : bool + If True, the cross section data will include neutron multiplication; + defaults to False Attributes ---------- @@ -3447,19 +3499,12 @@ class ScatterXS(MGXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, nu=False, - by_nuclide=False, name='', num_polar=1, num_azimuthal=1): + def __init__(self, domain=None, domain_type=None, groups=None, + by_nuclide=False, name='', num_polar=1, + num_azimuthal=1, nu=False): super(ScatterXS, self).__init__(domain, domain_type, - groups, by_nuclide, name, num_polar, - num_azimuthal) - if not nu: - self._rxn_type = 'scatter' - else: - self._rxn_type = 'nu-scatter' - # Only analog estimators are valid so change from the defaults - # to reflect this - self._estimator = 'analog' - self._valid_estimators = ['analog'] + groups, by_nuclide, name, + num_polar, num_azimuthal) self.nu = nu def __deepcopy__(self, memo): @@ -3475,7 +3520,12 @@ class ScatterXS(MGXS): def nu(self, nu): cv.check_type('nu', nu, bool) self._nu = nu - + if not nu: + self._rxn_type = 'scatter' + else: + self._rxn_type = 'nu-scatter' + self._estimator = 'analog' + self._valid_estimators = ['analog'] class ScatterMatrixXS(MatrixMGXS): r"""A scattering matrix multi-group cross section with the cosine of the @@ -3522,6 +3572,36 @@ class ScatterMatrixXS(MatrixMGXS): To incorporate the effect of neutron multiplication from (n,xn) reactions in the above relation, the `nu` parameter can be set to `True`. + An alternative form of the scattering matrix is computed when the + `formulation` property is set to 'consistent' rather than the default + of 'simple'. This formulation computes the scattering matrix multi-group + cross section as the product of the scatter cross section and + group-to-group scattering probabilities. + + Unlike the default 'simple' formulation, the 'consistent' formulation + is computed from the groupwise scattering cross section which uses a + tracklength estimator. This ensures that reaction rate balance is exactly + preserved with a :class:`TotalXS` computed using a tracklength estimator. + + For a scattering probability matrix :math:`P_{s,\ell,g'\rightarrow g}` and + scattering cross section :math:`\sigma_s (r, E)` for incoming energy group + :math:`[E_{g'},E_{g'-1}]` and outgoing energy group :math:`[E_g,E_{g-1}]`, + the Legendre scattering moments are calculated as: + + .. math:: + + \sigma_{s,\ell,g'\rightarrow g} = \sigma_s (r, E) \times + P_{s,\ell,g'\rightarrow g} + + To incorporate the effect of neutron multiplication from (n,xn) reactions + in the 'consistent' scattering matrix, the `nu` parameter can be set to `True` + such that the Legendre scattering moments are calculated as: + + .. math:: + + \sigma_{s,\ell,g'\rightarrow g} = \upsilon_{g'\rightarrow g} \times + \sigma_s (r, E) \times P_{s,\ell,g'\rightarrow g} + Parameters ---------- domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh @@ -3530,9 +3610,6 @@ class ScatterMatrixXS(MatrixMGXS): The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation - nu : bool - If True, the cross section data will include neutron multiplication; - defaults to False by_nuclide : bool If true, computes cross sections for each nuclide in domain name : str, optional @@ -3544,9 +3621,22 @@ class ScatterMatrixXS(MatrixMGXS): num_azimuthal : Integral, optional Number of equi-width azimuthal angle bins for angle discretization; defaults to one bin + nu : bool + If True, the cross section data will include neutron multiplication; + defaults to False Attributes ---------- + formulation : 'simple' or 'consistent' + The calculation approach to use ('simple' by default). The 'simple' + formulation simply divides the group-to-group scattering rates by + the groupwise flux, each computed from analog tally estimators. The + 'consistent' formulation multiplies the groupwise scattering rates + by the group-to-group scatter probability matrix, the former computed + from tracklength tallies and the latter computed from analog tallies. + The 'consistent' formulation is designed to better conserve reaction + rate balance with the total and absorption cross sections computed + using tracklength tally estimators. correction : 'P0' or None Apply the P0 correction to scattering matrices if set to 'P0'; this is used only if :attr:`ScatterMatrixXS.scatter_format` is 'legendre' @@ -3626,17 +3716,13 @@ class ScatterMatrixXS(MatrixMGXS): """ - def __init__(self, domain=None, domain_type=None, groups=None, nu=False, - by_nuclide=False, name='', num_polar=1, num_azimuthal=1): + def __init__(self, domain=None, domain_type=None, groups=None, + by_nuclide=False, name='', num_polar=1, + num_azimuthal=1, nu=False): super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name, - num_azimuthal) - if not nu: - self._rxn_type = 'scatter' - self._hdf5_key = 'scatter matrix' - else: - self._rxn_type = 'nu-scatter' - self._hdf5_key = 'nu-scatter matrix' + num_polar, num_azimuthal) + self._formulation = 'simple' self._correction = 'P0' self._scatter_format = 'legendre' self._legendre_order = 0 @@ -3647,6 +3733,7 @@ class ScatterMatrixXS(MatrixMGXS): def __deepcopy__(self, memo): clone = super(ScatterMatrixXS, self).__deepcopy__(memo) + clone._formulation = self.formulation clone._correction = self.correction clone._scatter_format = self.scatter_format clone._legendre_order = self.legendre_order @@ -3671,8 +3758,8 @@ class ScatterMatrixXS(MatrixMGXS): return (1, 2) @property - def nu(self): - return self._nu + def formulation(self): + return self._formulation @property def correction(self): @@ -3691,35 +3778,130 @@ class ScatterMatrixXS(MatrixMGXS): return self._histogram_bins @property - def scores(self): - scores = ['flux'] + def nu(self): + return self._nu - if self.scatter_format == 'legendre': + @property + def scores(self): + + if self.formulation == 'simple': + scores = ['flux'] + + if self.scatter_format == 'legendre': + if self.legendre_order == 0: + scores.append('{}-0'.format(self.rxn_type)) + if self.correction: + scores.append('{}-1'.format(self.rxn_type)) + else: + scores.append('{}-P{}'.format(self.rxn_type, self.legendre_order)) + elif self.scatter_format == 'histogram': + scores += [self.rxn_type] + + else: + # Add scores for groupwise scattering cross section + scores = ['flux', 'scatter'] + + # Add scores for group-to-group scattering probability matrix + if self.scatter_format == 'legendre': + if self.legendre_order == 0: + scores.append('scatter-0') + else: + scores.append('scatter-P{}'.format(self.legendre_order)) + elif self.scatter_format == 'histogram': + scores.append('scatter-0') + + # Add scores for multiplicity matrix + if self.nu: + scores.extend(['nu-scatter-0', 'scatter-0']) + + # Add scores for transport correction if self.correction == 'P0' and self.legendre_order == 0: - scores += ['{}-0'.format(self.rxn_type), - '{}-1'.format(self.rxn_type)] - else: - scores += ['{}-P{}'.format(self.rxn_type, self.legendre_order)] - elif self.scatter_format == 'histogram': - scores += [self.rxn_type] + scores.extend(['{}-1'.format(self.rxn_type), 'flux']) return scores @property - def filters(self): - group_edges = self.energy_groups.group_edges - energy = openmc.EnergyFilter(group_edges) - energyout = openmc.EnergyoutFilter(group_edges) + def tally_keys(self): + if self.formulation == 'simple': + return super(ScatterMatrixXS, self).tally_keys + else: + # Add keys for groupwise scattering cross section + tally_keys = ['flux (tracklength)', 'scatter'] - if self.scatter_format == 'legendre': + # Add keys for group-to-group scattering probability matrix + tally_keys.append('scatter-P{}'.format(self.legendre_order)) + + # Add keys for multiplicity matrix + if self.nu: + tally_keys.extend(['nu-scatter-0', 'scatter-0']) + + # Add keys for transport correction if self.correction == 'P0' and self.legendre_order == 0: - filters = [[energy], [energy, energyout], [energyout]] - else: - filters = [[energy], [energy, energyout]] - elif self.scatter_format == 'histogram': - bins = np.linspace(-1., 1., num=self.histogram_bins + 1, - endpoint=True) - filters = [[energy], [energy, energyout, openmc.MuFilter(bins)]] + tally_keys.extend(['{}-1'.format(self.rxn_type), 'flux (analog)']) + + return tally_keys + + @property + def estimator(self): + if self.formulation == 'simple': + return self._estimator + else: + # Add estimators for groupwise scattering cross section + estimators = ['tracklength', 'tracklength'] + + # Add estimators for group-to-group scattering probabilities + estimators.append('analog') + + # Add estimators for multiplicity matrix + if self.nu: + estimators.extend(['analog', 'analog']) + + # Add estimators for transport correction + if self.correction == 'P0' and self.legendre_order == 0: + estimators.extend(['analog', 'analog']) + + return estimators + + @property + def filters(self): + if self.formulation == 'simple': + group_edges = self.energy_groups.group_edges + energy = openmc.EnergyFilter(group_edges) + energyout = openmc.EnergyoutFilter(group_edges) + + if self.scatter_format == 'legendre': + if self.correction == 'P0' and self.legendre_order == 0: + filters = [[energy], [energy, energyout], [energyout]] + else: + filters = [[energy], [energy, energyout]] + elif self.scatter_format == 'histogram': + bins = np.linspace(-1., 1., num=self.histogram_bins + 1, + endpoint=True) + filters = [[energy], [energy, energyout, openmc.MuFilter(bins)]] + + else: + group_edges = self.energy_groups.group_edges + energy = openmc.EnergyFilter(group_edges) + energyout = openmc.EnergyoutFilter(group_edges) + + # Groupwise scattering cross section + filters = [[energy], [energy]] + + # Group-to-group scattering probability matrix + if self.scatter_format == 'legendre': + filters.append([energy, energyout]) + elif self.scatter_format == 'histogram': + bins = np.linspace(-1., 1., num=self.histogram_bins + 1, + endpoint=True) + filters.append([energy, energyout, openmc.MuFilter(bins)]) + + # Multiplicity matrix + if self.nu: + filters.extend([[energy, energyout], [energy, energyout]]) + + # Add filters for transport correction + if self.correction == 'P0' and self.legendre_order == 0: + filters.extend([[energyout], [energy]]) return self._add_angle_filters(filters) @@ -3727,34 +3909,148 @@ class ScatterMatrixXS(MatrixMGXS): def rxn_rate_tally(self): if self._rxn_rate_tally is None: - if self.scatter_format == 'legendre': - # If using P0 correction subtract scatter-1 from the diagonal - if self.correction == 'P0' and self.legendre_order == 0: - scatter_p0 = self.tallies['{}-0'.format(self.rxn_type)] - scatter_p1 = self.tallies['{}-1'.format(self.rxn_type)] - energy_filter = scatter_p0.find_filter(openmc.EnergyFilter) - energy_filter = copy.deepcopy(energy_filter) - scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) - self._rxn_rate_tally = scatter_p0 - scatter_p1 - # Extract scattering moment reaction rate Tally - else: - tally_key = '{}-P{}'.format(self.rxn_type, - self.legendre_order) - self._rxn_rate_tally = self.tallies[tally_key] - elif self.scatter_format == 'histogram': - # Extract scattering rate distribution tally - self._rxn_rate_tally = self.tallies[self.rxn_type] + if self.formulation == 'simple': + if self.scatter_format == 'legendre': + # If using P0 correction subtract scatter-1 from the diagonal + if self.correction == 'P0' and self.legendre_order == 0: + scatter_p0 = self.tallies['{}-0'.format(self.rxn_type)] + scatter_p1 = self.tallies['{}-1'.format(self.rxn_type)] + energy_filter = scatter_p0.find_filter(openmc.EnergyFilter) + energy_filter = copy.deepcopy(energy_filter) + scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) + self._rxn_rate_tally = scatter_p0 - scatter_p1 - self._rxn_rate_tally.sparse = self.sparse + # Extract scattering moment reaction rate Tally + elif self.legendre_order == 0: + tally_key = '{}-{}'.format(self.rxn_type, + self.legendre_order) + self._rxn_rate_tally = self.tallies[tally_key] + else: + tally_key = '{}-P{}'.format(self.rxn_type, + self.legendre_order) + self._rxn_rate_tally = self.tallies[tally_key] + elif self.scatter_format == 'histogram': + # Extract scattering rate distribution tally + self._rxn_rate_tally = self.tallies[self.rxn_type] + + self._rxn_rate_tally.sparse = self.sparse + + else: + msg = 'The reaction rate tally is poorly defined' \ + ' for the consistent formulation' + raise NotImplementedError(msg) return self._rxn_rate_tally + @property + def xs_tally(self): + if self._xs_tally is None: + if self.tallies is None: + msg = 'Unable to get xs_tally since tallies have ' \ + 'not been loaded from a statepoint' + raise ValueError(msg) + + # Use super class method + if self.formulation == 'simple': + self._xs_tally = MGXS.xs_tally.fget(self) + + else: + # Compute groupwise scattering cross section + self._xs_tally = self.tallies['scatter'] / \ + self.tallies['flux (tracklength)'] + + # Compute scattering probability matrix + energyout_bins = [self.energy_groups.get_group_bounds(i) + for i in range(self.num_groups, 0, -1)] + tally_key = 'scatter-P{}'.format(self.legendre_order) + + # Compute normalization factor summed across outgoing energies + norm = self.tallies[tally_key].get_slice(scores=['scatter-0']) + norm = norm.summation( + filter_type=openmc.EnergyoutFilter, filter_bins=energyout_bins) + + # Remove the AggregateFilter summed across energyout bins + norm._filters = norm._filters[:2] + + # Compute normalization factor summed across outgoing mu bins + if self.scatter_format == 'histogram': + + # (Re-)append the MuFilter which was removed above + mu_bins = np.linspace( + -1., 1., num=self.histogram_bins + 1, endpoint=True) + norm._filters.append(openmc.MuFilter(mu_bins)) + + # Sum across all mu bins + mu_bins = [(mu_bins[i], mu_bins[i+1]) for + i in range(self.histogram_bins)] + norm = norm.summation( + filter_type=openmc.MuFilter, filter_bins=mu_bins) + + # Remove the AggregateFilter summed across mu bins + norm._filters = norm._filters[:2] + + # Multiply by the group-to-group probability matrix + self._xs_tally *= (self.tallies[tally_key] / norm) + + # Multiply by the multiplicity matrix + if self.nu: + numer = self.tallies['nu-scatter-0'] + denom = self.tallies['scatter-0'] + self._xs_tally *= (numer / denom) + + # If using P0 correction subtract scatter-1 from the diagonal + if self.correction == 'P0' and self.legendre_order == 0: + flux = self.tallies['flux (analog)'] + scatter_p1 = self.tallies['{}-1'.format(self.rxn_type)] + + energy_filter = flux.find_filter(openmc.EnergyFilter) + energy_filter = copy.deepcopy(energy_filter) + scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) + self._xs_tally -= (scatter_p1 / flux) + + self._compute_xs() + + return self._xs_tally + @nu.setter def nu(self, nu): cv.check_type('nu', nu, bool) self._nu = nu + if self.formulation == 'simple': + if not nu: + self._rxn_type = 'scatter' + self._hdf5_key = 'scatter matrix' + else: + self._rxn_type = 'nu-scatter' + self._hdf5_key = 'nu-scatter matrix' + else: + if not nu: + self._rxn_type = 'scatter' + self._hdf5_key = 'consistent scatter matrix' + else: + self._rxn_type = 'nu-scatter' + self._hdf5_key = 'consistent nu-scatter matrix' + + @formulation.setter + def formulation(self, formulation): + cv.check_value('formulation', formulation, ('simple', 'consistent')) + self._formulation = formulation + + if self.formulation == 'simple': + self._valid_estimators = ['analog'] + if not self.nu: + self._hdf5_key = 'scatter matrix' + else: + self._hdf5_key = 'nu-scatter matrix' + else: + self._valid_estimators = ['tracklength'] + if not self.nu: + self._hdf5_key = 'consistent scatter matrix' + else: + self._hdf5_key = 'consistent nu-scatter matrix' + @correction.setter def correction(self, correction): cv.check_value('correction', correction, ('P0', None)) @@ -3813,7 +4109,7 @@ class ScatterMatrixXS(MatrixMGXS): This method is needed to compute cross section data from tallies in an OpenMC StatePoint object. - NOTE: The statepoint must first be linked with an OpenMC Summary object. + .. note:: The statepoint must be linked with an OpenMC Summary object. Parameters ---------- @@ -3838,13 +4134,12 @@ class ScatterMatrixXS(MatrixMGXS): if self.scatter_format == 'legendre': # Expand scores to match the format in the statepoint # e.g., "scatter-P2" -> "scatter-0", "scatter-1", "scatter-2" - if self.correction != 'P0' or self.legendre_order != 0: - tally_key = '{}-P{}'.format(self.rxn_type, self.legendre_order) - self.tallies[tally_key].scores = \ - [self.rxn_type + '-{}'.format(i) - for i in range(self.legendre_order + 1)] - elif self.scatter_format == 'histogram': - self.tallies[self.rxn_type].scores = [self.rxn_type] + for tally_key, tally in self.tallies.items(): + if 'scatter-P' in tally.scores[0]: + score_prefix = tally.scores[0].split('P')[0] + self.tallies[tally_key].scores = \ + [score_prefix + '{}'.format(i) + for i in range(self.legendre_order + 1)] super(ScatterMatrixXS, self).load_from_statepoint(statepoint) @@ -3935,9 +4230,10 @@ class ScatterMatrixXS(MatrixMGXS): (3rd dimension), nuclides (4th dimension), and moments/histograms (5th dimension). - NOTE: The scattering moments are not multiplied by the :math:`(2l+1)/2` - prefactor in the expansion of the scattering source into Legendre - moments in the neutron transport equation. + .. note:: The scattering moments are not multiplied by the + :math:`(2\ell+1)/2` prefactor in the expansion of the + scattering source into Legendre moments in the neutron + transport equation. Parameters ---------- @@ -4525,6 +4821,179 @@ class MultiplicityMatrixXS(MatrixMGXS): return self._xs_tally +class ScatterProbabilityMatrix(MatrixMGXS): + r"""The group-to-group scattering probability matrix. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ScatterProbabilityMatrix.energy_groups` + and :attr:`ScatterProbabilityMatrix.domain` properties. Tallies for the + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`ScatterProbabilityMatrix.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:`ScatterProbabilityMatrix.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 group-to-group scattering probabilities are calculated as: + + .. math:: + + \langle \sigma_{s,g'\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} d\Omega + \int_{E_g}^{E_{g-1}} dE \; \sigma_{s} (r, E' \rightarrow E, \Omega' + \cdot \Omega) \psi(r, E', \Omega')\\ + \langle \sigma_{s,0,g'} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} d\Omega + \int_{0}^{\infty} dE \; \sigma_s (r, E' + \rightarrow E, \Omega' \cdot \Omega) \psi(r, E', \Omega')\\ + P_{s,g'\rightarrow g} &= \frac{\langle + \sigma_{s,g'\rightarrow g} \phi \rangle}{\langle + \sigma_{s,g'} \phi \rangle} + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + 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 : Material or Cell or Universe or Mesh + 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 + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, groups=None, + by_nuclide=False, name='', num_polar=1, num_azimuthal=1): + super(ScatterProbabilityMatrix, self).__init__( + domain, domain_type, groups, by_nuclide, + name, num_polar, num_azimuthal) + + self._rxn_type = 'scatter' + self._hdf5_key = 'scatter probability matrix' + self._estimator = 'analog' + self._valid_estimators = ['analog'] + + @property + def scores(self): + return [self.rxn_type] + + @property + def filters(self): + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy = openmc.EnergyFilter(group_edges) + energyout = openmc.EnergyoutFilter(group_edges) + filters = [[energy, energyout]] + return self._add_angle_filters(filters) + + @property + def rxn_rate_tally(self): + if self._rxn_rate_tally is None: + self._rxn_rate_tally = self.tallies[self.rxn_type] + self._rxn_rate_tally.sparse = self.sparse + return self._rxn_rate_tally + + @property + def xs_tally(self): + + if self._xs_tally is None: + energyout_bins = [self.energy_groups.get_group_bounds(i) + for i in range(self.num_groups, 0, -1)] + norm = self.rxn_rate_tally.get_slice(scores=[self.rxn_type]) + norm = norm.summation( + filter_type=openmc.EnergyoutFilter, filter_bins=energyout_bins) + + # Remove the AggregateFilter summed across energyout bins + norm._filters = norm._filters[:2] + + # Compute the group-to-group probabilities + self._xs_tally = self.tallies[self.rxn_type] / norm + super(ScatterProbabilityMatrix, self)._compute_xs() + + return self._xs_tally + + class NuFissionMatrixXS(MatrixMGXS): r"""A fission production matrix multi-group cross section. @@ -4556,11 +5025,6 @@ class NuFissionMatrixXS(MatrixMGXS): \nu\sigma_{f,g'\rightarrow g} &= \frac{\langle \nu\sigma_{f,g'\rightarrow g} \phi \rangle}{\langle \phi \rangle} - This class can also be used to gather a prompt-nu-fission cross section - (which only includes the contributions from prompt neutrons). This is - accomplished by setting the :attr:`NuFissionMatrixXS.prompt` attribute to - `True`. - Parameters ---------- domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh @@ -4569,9 +5033,6 @@ class NuFissionMatrixXS(MatrixMGXS): The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation - prompt : bool - If true, computes cross sections which only includes prompt neutrons; - defaults to False which includes prompt and delayed in total by_nuclide : bool If true, computes cross sections for each nuclide in domain name : str, optional @@ -4583,6 +5044,9 @@ class NuFissionMatrixXS(MatrixMGXS): num_azimuthal : Integral, optional Number of equi-width azimuthal angle bins for angle discretization; defaults to one bin + prompt : bool + If true, computes cross sections which only includes prompt neutrons; + defaults to False which includes prompt and delayed in total Attributes ---------- @@ -4653,8 +5117,8 @@ class NuFissionMatrixXS(MatrixMGXS): """ def __init__(self, domain=None, domain_type=None, groups=None, - prompt=False, by_nuclide=False, name='', num_polar=1, - num_azimuthal=1): + by_nuclide=False, name='', num_polar=1, + num_azimuthal=1, prompt=False): super(NuFissionMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name, num_polar, num_azimuthal) @@ -4891,6 +5355,12 @@ class Chi(MGXS): def prompt(self, prompt): cv.check_type('prompt', prompt, bool) self._prompt = prompt + if not self.prompt: + self._rxn_type = 'nu-fission' + self._hdf5_key = 'chi' + else: + self._rxn_type = 'prompt-nu-fission' + self._hdf5_key = 'chi-prompt' def get_homogenized_mgxs(self, other_mgxs): """Construct a homogenized mgxs with other MGXS objects. diff --git a/openmc/statepoint.py b/openmc/statepoint.py index c5cd6030c..3eec9a20e 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -1,4 +1,3 @@ -import sys import re import os import warnings diff --git a/openmc/tallies.py b/openmc/tallies.py index a71d1c1c5..0bf87de10 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2,12 +2,10 @@ from __future__ import division from collections import Iterable, MutableSequence import copy +import re from functools import partial -import os -import pickle import itertools from numbers import Integral, Real -import sys import warnings from xml.etree import ElementTree as ET @@ -1013,8 +1011,51 @@ class Tally(object): # Sparsify merged tally if both tallies are sparse merged_tally.sparse = self.sparse and other.sparse + # Consolidate scatter and flux Legendre moment scores + merged_tally._consolidate_moment_scores() + return merged_tally + def _consolidate_moment_scores(self): + """Remove redundant scattering and flux moment scores from a Tally.""" + + # Define regex for scatter, nu-scatter and flux moment scores + regex = [(r'^((?!nu-)scatter-\d)', r'^((?!nu-)scatter-(P|p)\d)'), + (r'nu-scatter-\d', r'nu-scatter-(P|p)\d'), + (r'flux-\d', r'flux-(P|p)\d')] + + # Find all non-scattering and non-flux moment scores + scores = [x for x in self.scores if + re.search(r'^((?!scatter-).)*$', x)] + scores = [x for x in scores if + re.search(r'^((?!flux-).)*$', x)] + + for regex_n, regex_pn in regex: + + # Use regex to find score-(P)n scores + score_n = [x for x in self.scores if re.search(regex_n, x)] + score_pn = [x for x in self.scores if re.search(regex_pn, x)] + + # Consolidate moment scores + if len(score_pn) > 0: + + # Only keep the highest score-PN score + high_pn = sorted([x.lower() for x in score_pn])[-1] + pn = int(high_pn.split('-')[-1].replace('p', '')) + + # Only keep the score-N scores with N > PN + score_n = sorted([x.lower() for x in score_n]) + score_n = [x for x in score_n if (int(x.split('-')[1]) > pn)] + + # Append highest score-PN and any higher score-N scores + scores.extend([high_pn] + score_n) + else: + scores.extend(score_n) + + # Override Tally's scores with consolidated list of scores + self.scores = scores + + def to_xml_element(self): """Return XML representation of the tally diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index ad6526fc1..79c7ea049 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -69,56 +69,56 @@ total flux - analog + tracklength total total - analog + tracklength + + + total + flux + analog + + total scatter-1 analog - - - - total - flux - analog - total - total - analog + flux + tracklength - + total - nu-scatter-1 - analog + total + tracklength total flux - tracklength + analog - + total - absorption - tracklength + nu-scatter-1 + analog @@ -138,14 +138,14 @@ total - fission + flux tracklength total - flux + absorption tracklength @@ -166,7 +166,7 @@ total - nu-fission + fission tracklength @@ -180,7 +180,7 @@ total - kappa-fission + nu-fission tracklength @@ -194,7 +194,7 @@ total - scatter + kappa-fission tracklength @@ -202,14 +202,14 @@ total flux - analog + tracklength total - nu-scatter - analog + scatter + tracklength @@ -221,9 +221,8 @@ - total - scatter-P3 + nu-scatter analog @@ -238,15 +237,14 @@ total - nu-scatter-P3 + scatter-P3 analog - total - nu-scatter + flux analog @@ -254,14 +252,15 @@ total - scatter + nu-scatter-P3 analog + total - flux + nu-scatter analog @@ -269,18 +268,19 @@ total - nu-fission + scatter analog - + total - nu-fission + flux analog + total nu-fission @@ -288,32 +288,34 @@ - + + total - prompt-nu-fission + scatter analog - - - total - prompt-nu-fission - analog - - total flux tracklength - + total - inverse-velocity + scatter tracklength + + + + + total + scatter-P3 + analog + @@ -325,14 +327,15 @@ total - prompt-nu-fission + scatter tracklength + total - flux + scatter-P3 analog @@ -340,17 +343,96 @@ total - prompt-nu-fission + nu-scatter-0 analog + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + total flux tracklength - + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -358,7 +440,7 @@ delayed-nu-fission tracklength - + @@ -366,7 +448,7 @@ delayed-nu-fission analog - + @@ -374,14 +456,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -389,7 +471,7 @@ delayed-nu-fission tracklength - + @@ -397,7 +479,7 @@ delayed-nu-fission tracklength - + @@ -405,14 +487,14 @@ decay-rate tracklength - + total flux analog - + @@ -421,95 +503,18 @@ delayed-nu-fission analog - - - - total - flux - tracklength - - - - - total - total - tracklength - - - - - total - flux - analog - - - - - total - total - analog - - - - - total - scatter-1 - analog - - - - - total - flux - analog - - - - - total - total - analog - - - - - total - nu-scatter-1 - analog - - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - flux - tracklength - total - absorption + flux tracklength total - fission + total tracklength @@ -523,7 +528,7 @@ total - fission + total tracklength @@ -531,14 +536,14 @@ total flux - tracklength + analog - + total - nu-fission - tracklength + scatter-1 + analog @@ -551,7 +556,7 @@ total - kappa-fission + total tracklength @@ -559,37 +564,128 @@ total flux - tracklength + analog - + total - scatter - tracklength + nu-scatter-1 + analog total flux - analog + tracklength total - nu-scatter - analog + absorption + tracklength total flux - analog + tracklength + + + total + absorption + tracklength + + + + + total + fission + tracklength + + + + + total + flux + tracklength + + + + + total + fission + tracklength + + + + + total + flux + tracklength + + + + + total + nu-fission + tracklength + + + + + total + flux + tracklength + + + + + total + kappa-fission + tracklength + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + total + flux + analog + + + + + total + nu-scatter + analog + + + + + total + flux + analog + + @@ -597,14 +693,14 @@ scatter-P3 analog - + total flux analog - + @@ -612,116 +708,184 @@ nu-scatter-P3 analog - - - - - total - nu-scatter - analog - - - - - - total - scatter - analog - - - - - total - flux - analog - - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - - - - total - prompt-nu-fission - analog - - - - - total - prompt-nu-fission - analog - - - - - total - flux - tracklength - - - - - total - inverse-velocity - tracklength - - - - - total - flux - tracklength - - - - - total - prompt-nu-fission - tracklength - - - - - total - flux - analog - total - prompt-nu-fission + nu-scatter analog + + + + total + scatter + analog + + + + + total + flux + analog + + + + + + total + nu-fission + analog + + + + + + total + scatter + analog + + total flux tracklength - + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + + total + nu-scatter-0 + analog + + + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -729,7 +893,7 @@ delayed-nu-fission tracklength - + @@ -737,7 +901,7 @@ delayed-nu-fission analog - + @@ -745,14 +909,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -760,7 +924,7 @@ delayed-nu-fission tracklength - + @@ -768,7 +932,7 @@ delayed-nu-fission tracklength - + @@ -776,14 +940,14 @@ decay-rate tracklength - + total flux analog - + @@ -792,268 +956,109 @@ delayed-nu-fission analog - + total flux tracklength - + total total tracklength - + + + + total + flux + tracklength + + + + + total + total + tracklength + + total flux analog - - - - total - total - analog - - + total scatter-1 analog - + + + + total + flux + tracklength + + + + + total + total + tracklength + + total flux analog - - - - total - total - analog - - + total nu-scatter-1 analog - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - fission - tracklength - - - - - total - flux - tracklength - - - - - total - fission - tracklength - - - - - total - flux - tracklength - - - - - total - nu-fission - tracklength - - - - - total - flux - tracklength - - - - - total - kappa-fission - tracklength - - - - - total - flux - tracklength - - - - - total - scatter - tracklength - - - - - total - flux - analog - - - - - total - nu-scatter - analog - - - - - total - flux - analog - - - - - - total - scatter-P3 - analog - - - - - total - flux - analog - - - - - - total - nu-scatter-P3 - analog - - - - - - total - nu-scatter - analog - - - - - - total - scatter - analog - - - - - total - flux - analog - - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - + total - nu-fission - analog + flux + tracklength - + total - prompt-nu-fission - analog + absorption + tracklength - + total - prompt-nu-fission - analog + flux + tracklength total - flux + absorption tracklength total - inverse-velocity + fission tracklength @@ -1067,7 +1072,7 @@ total - prompt-nu-fission + fission tracklength @@ -1075,15 +1080,14 @@ total flux - analog + tracklength - total - prompt-nu-fission - analog + nu-fission + tracklength @@ -1094,58 +1098,53 @@ - total - delayed-nu-fission + kappa-fission tracklength - - + total - delayed-nu-fission - analog + flux + tracklength - - + total - delayed-nu-fission - analog + scatter + tracklength total - nu-fission - tracklength + flux + analog - total - delayed-nu-fission - tracklength + nu-scatter + analog - total - delayed-nu-fission - tracklength + flux + analog - + total - decay-rate - tracklength + scatter-P3 + analog @@ -1155,6 +1154,253 @@ analog + + + + total + nu-scatter-P3 + analog + + + + + + total + nu-scatter + analog + + + + + + total + scatter + analog + + + + + total + flux + analog + + + + + + total + nu-fission + analog + + + + + + total + scatter + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + + total + nu-scatter-0 + analog + + + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + delayed-nu-fission + analog + + + + + + total + delayed-nu-fission + analog + + + + + total + nu-fission + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + decay-rate + tracklength + + + + + total + flux + analog + + diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 7ae1c8186..f69814444 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,9 +1,9 @@ material group in nuclide mean std. dev. 0 10000 1 total 0.453624 0.021053 - material group in nuclide mean std. dev. -0 10000 1 total 0.400852 0.022858 - material group in nuclide mean std. dev. -0 10000 1 total 0.400852 0.022858 + material group in nuclide mean std. dev. +0 10000 1 total 0.4074 0.021863 + material group in nuclide mean std. dev. +0 10000 1 total 0.4074 0.021863 material group in nuclide mean std. dev. 0 10000 1 total 0.064903 0.004313 material group in nuclide mean std. dev. @@ -32,6 +32,18 @@ 0 10000 1 1 total 1.0 0.066111 material group in group out nuclide mean std. dev. 0 10000 1 1 total 0.085835 0.005592 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.0 0.066111 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 0.388721 0.031279 +1 10000 1 1 total P1 0.046155 0.006407 +2 10000 1 1 total P2 0.017957 0.003039 +3 10000 1 1 total P3 0.006618 0.002480 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 0.388721 0.040482 +1 10000 1 1 total P1 0.046155 0.007097 +2 10000 1 1 total P2 0.017957 0.003262 +3 10000 1 1 total P3 0.006618 0.002518 material group out nuclide mean std. dev. 0 10000 1 total 1.0 0.046071 material group out nuclide mean std. dev. @@ -80,9 +92,9 @@ material group in nuclide mean std. dev. 0 10001 1 total 0.311594 0.013793 material group in nuclide mean std. dev. -0 10001 1 total 0.279255 0.029189 +0 10001 1 total 0.280977 0.015683 material group in nuclide mean std. dev. -0 10001 1 total 0.279255 0.029189 +0 10001 1 total 0.280977 0.015683 material group in nuclide mean std. dev. 0 10001 1 total 0.00221 0.000286 material group in nuclide mean std. dev. @@ -111,6 +123,18 @@ 0 10001 1 1 total 1.0 0.095039 material group in group out nuclide mean std. dev. 0 10001 1 1 total 0.0 0.0 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.0 0.095039 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 0.309384 0.032376 +1 10001 1 1 total P1 0.030756 0.007617 +2 10001 1 1 total P2 0.018997 0.004420 +3 10001 1 1 total P3 0.006263 0.003364 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 0.309384 0.043735 +1 10001 1 1 total P1 0.030756 0.008159 +2 10001 1 1 total P2 0.018997 0.004775 +3 10001 1 1 total P3 0.006263 0.003417 material group out nuclide mean std. dev. 0 10001 1 total 0.0 0.0 material group out nuclide mean std. dev. @@ -159,9 +183,9 @@ material group in nuclide mean std. dev. 0 10002 1 total 0.904999 0.043964 material group in nuclide mean std. dev. -0 10002 1 total 0.499184 0.040914 +0 10002 1 total 0.494581 0.046763 material group in nuclide mean std. dev. -0 10002 1 total 0.499184 0.040914 +0 10002 1 total 0.494581 0.046763 material group in nuclide mean std. dev. 0 10002 1 total 0.00606 0.000555 material group in nuclide mean std. dev. @@ -190,6 +214,18 @@ 0 10002 1 1 total 1.0 0.056867 material group in group out nuclide mean std. dev. 0 10002 1 1 total 0.0 0.0 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.0 0.056867 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 0.898938 0.067118 +1 10002 1 1 total P1 0.408384 0.028127 +2 10002 1 1 total P2 0.142591 0.010824 +3 10002 1 1 total P3 0.008696 0.003588 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 0.898938 0.084369 +1 10002 1 1 total P1 0.408384 0.036475 +2 10002 1 1 total P2 0.142591 0.013525 +3 10002 1 1 total P3 0.008696 0.003622 material group out nuclide mean std. dev. 0 10002 1 total 0.0 0.0 material group out nuclide mean std. dev. diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index 9103a4b96..79862b8bc 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -96,56 +96,56 @@ total flux - analog + tracklength total total - analog + tracklength + + + total + flux + analog + + total scatter-1 analog - - - - total - flux - analog - total - total - analog + flux + tracklength - + total - nu-scatter-1 - analog + total + tracklength total flux - tracklength + analog - + total - absorption - tracklength + nu-scatter-1 + analog @@ -165,14 +165,14 @@ total - fission + flux tracklength total - flux + absorption tracklength @@ -193,7 +193,7 @@ total - nu-fission + fission tracklength @@ -207,7 +207,7 @@ total - kappa-fission + nu-fission tracklength @@ -221,7 +221,7 @@ total - scatter + kappa-fission tracklength @@ -229,14 +229,14 @@ total flux - analog + tracklength total - nu-scatter - analog + scatter + tracklength @@ -248,9 +248,8 @@ - total - scatter-P3 + nu-scatter analog @@ -265,15 +264,14 @@ total - nu-scatter-P3 + scatter-P3 analog - total - nu-scatter + flux analog @@ -281,14 +279,15 @@ total - scatter + nu-scatter-P3 analog + total - flux + nu-scatter analog @@ -296,18 +295,19 @@ total - nu-fission + scatter analog total - nu-fission + flux analog + total nu-fission @@ -316,31 +316,33 @@ + total - prompt-nu-fission + scatter analog - - - total - prompt-nu-fission - analog - - total flux tracklength - + total - inverse-velocity + scatter tracklength + + + + + total + scatter-P3 + analog + @@ -352,14 +354,15 @@ total - prompt-nu-fission + scatter tracklength + total - flux + scatter-P3 analog @@ -367,17 +370,96 @@ total - prompt-nu-fission + nu-scatter-0 analog + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + total flux tracklength - + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -385,7 +467,7 @@ delayed-nu-fission tracklength - + @@ -393,7 +475,7 @@ delayed-nu-fission analog - + @@ -401,14 +483,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -416,7 +498,7 @@ delayed-nu-fission tracklength - + @@ -424,7 +506,7 @@ delayed-nu-fission tracklength - + @@ -432,14 +514,14 @@ decay-rate tracklength - + total flux analog - + diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index d6ed76bc5..e9277c975 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,9 +1,9 @@ sum(distribcell) group in nuclide mean std. dev. 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 total 0.457353 0.010474 sum(distribcell) group in nuclide mean std. dev. -0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 total 0.405649 0.015784 +0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 total 0.410174 0.011573 sum(distribcell) group in nuclide mean std. dev. -0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 total 0.405641 0.015787 +0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 total 0.410166 0.011577 sum(distribcell) group in nuclide mean std. dev. 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 total 0.066556 0.00251 sum(distribcell) group in nuclide mean std. dev. @@ -32,6 +32,18 @@ 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total 1.000834 0.037242 sum(distribcell) group in group out nuclide mean std. dev. 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total 0.094516 0.0059 + sum(distribcell) group in group out nuclide mean std. dev. +0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total 1.0 0.037213 + sum(distribcell) group in group out nuclide moment mean std. dev. +0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P0 0.390797 0.016955 +1 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P1 0.047641 0.005091 +2 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P2 0.015866 0.003708 +3 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P3 0.005430 0.003170 + sum(distribcell) group in group out nuclide moment mean std. dev. +0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P0 0.391123 0.022356 +1 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P1 0.047680 0.005395 +2 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P2 0.015880 0.003758 +3 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total P3 0.005435 0.003179 sum(distribcell) group out nuclide mean std. dev. 0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 total 1.0 0.080455 sum(distribcell) group out nuclide mean std. dev. diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index ad6526fc1..79c7ea049 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -69,56 +69,56 @@ total flux - analog + tracklength total total - analog + tracklength + + + total + flux + analog + + total scatter-1 analog - - - - total - flux - analog - total - total - analog + flux + tracklength - + total - nu-scatter-1 - analog + total + tracklength total flux - tracklength + analog - + total - absorption - tracklength + nu-scatter-1 + analog @@ -138,14 +138,14 @@ total - fission + flux tracklength total - flux + absorption tracklength @@ -166,7 +166,7 @@ total - nu-fission + fission tracklength @@ -180,7 +180,7 @@ total - kappa-fission + nu-fission tracklength @@ -194,7 +194,7 @@ total - scatter + kappa-fission tracklength @@ -202,14 +202,14 @@ total flux - analog + tracklength total - nu-scatter - analog + scatter + tracklength @@ -221,9 +221,8 @@ - total - scatter-P3 + nu-scatter analog @@ -238,15 +237,14 @@ total - nu-scatter-P3 + scatter-P3 analog - total - nu-scatter + flux analog @@ -254,14 +252,15 @@ total - scatter + nu-scatter-P3 analog + total - flux + nu-scatter analog @@ -269,18 +268,19 @@ total - nu-fission + scatter analog - + total - nu-fission + flux analog + total nu-fission @@ -288,32 +288,34 @@ - + + total - prompt-nu-fission + scatter analog - - - total - prompt-nu-fission - analog - - total flux tracklength - + total - inverse-velocity + scatter tracklength + + + + + total + scatter-P3 + analog + @@ -325,14 +327,15 @@ total - prompt-nu-fission + scatter tracklength + total - flux + scatter-P3 analog @@ -340,17 +343,96 @@ total - prompt-nu-fission + nu-scatter-0 analog + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + total flux tracklength - + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -358,7 +440,7 @@ delayed-nu-fission tracklength - + @@ -366,7 +448,7 @@ delayed-nu-fission analog - + @@ -374,14 +456,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -389,7 +471,7 @@ delayed-nu-fission tracklength - + @@ -397,7 +479,7 @@ delayed-nu-fission tracklength - + @@ -405,14 +487,14 @@ decay-rate tracklength - + total flux analog - + @@ -421,95 +503,18 @@ delayed-nu-fission analog - - - - total - flux - tracklength - - - - - total - total - tracklength - - - - - total - flux - analog - - - - - total - total - analog - - - - - total - scatter-1 - analog - - - - - total - flux - analog - - - - - total - total - analog - - - - - total - nu-scatter-1 - analog - - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - flux - tracklength - total - absorption + flux tracklength total - fission + total tracklength @@ -523,7 +528,7 @@ total - fission + total tracklength @@ -531,14 +536,14 @@ total flux - tracklength + analog - + total - nu-fission - tracklength + scatter-1 + analog @@ -551,7 +556,7 @@ total - kappa-fission + total tracklength @@ -559,37 +564,128 @@ total flux - tracklength + analog - + total - scatter - tracklength + nu-scatter-1 + analog total flux - analog + tracklength total - nu-scatter - analog + absorption + tracklength total flux - analog + tracklength + + + total + absorption + tracklength + + + + + total + fission + tracklength + + + + + total + flux + tracklength + + + + + total + fission + tracklength + + + + + total + flux + tracklength + + + + + total + nu-fission + tracklength + + + + + total + flux + tracklength + + + + + total + kappa-fission + tracklength + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + total + flux + analog + + + + + total + nu-scatter + analog + + + + + total + flux + analog + + @@ -597,14 +693,14 @@ scatter-P3 analog - + total flux analog - + @@ -612,116 +708,184 @@ nu-scatter-P3 analog - - - - - total - nu-scatter - analog - - - - - - total - scatter - analog - - - - - total - flux - analog - - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - - - - total - prompt-nu-fission - analog - - - - - total - prompt-nu-fission - analog - - - - - total - flux - tracklength - - - - - total - inverse-velocity - tracklength - - - - - total - flux - tracklength - - - - - total - prompt-nu-fission - tracklength - - - - - total - flux - analog - total - prompt-nu-fission + nu-scatter analog + + + + total + scatter + analog + + + + + total + flux + analog + + + + + + total + nu-fission + analog + + + + + + total + scatter + analog + + total flux tracklength - + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + + total + nu-scatter-0 + analog + + + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -729,7 +893,7 @@ delayed-nu-fission tracklength - + @@ -737,7 +901,7 @@ delayed-nu-fission analog - + @@ -745,14 +909,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -760,7 +924,7 @@ delayed-nu-fission tracklength - + @@ -768,7 +932,7 @@ delayed-nu-fission tracklength - + @@ -776,14 +940,14 @@ decay-rate tracklength - + total flux analog - + @@ -792,268 +956,109 @@ delayed-nu-fission analog - + total flux tracklength - + total total tracklength - + + + + total + flux + tracklength + + + + + total + total + tracklength + + total flux analog - - - - total - total - analog - - + total scatter-1 analog - + + + + total + flux + tracklength + + + + + total + total + tracklength + + total flux analog - - - - total - total - analog - - + total nu-scatter-1 analog - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - fission - tracklength - - - - - total - flux - tracklength - - - - - total - fission - tracklength - - - - - total - flux - tracklength - - - - - total - nu-fission - tracklength - - - - - total - flux - tracklength - - - - - total - kappa-fission - tracklength - - - - - total - flux - tracklength - - - - - total - scatter - tracklength - - - - - total - flux - analog - - - - - total - nu-scatter - analog - - - - - total - flux - analog - - - - - - total - scatter-P3 - analog - - - - - total - flux - analog - - - - - - total - nu-scatter-P3 - analog - - - - - - total - nu-scatter - analog - - - - - - total - scatter - analog - - - - - total - flux - analog - - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - + total - nu-fission - analog + flux + tracklength - + total - prompt-nu-fission - analog + absorption + tracklength - + total - prompt-nu-fission - analog + flux + tracklength total - flux + absorption tracklength total - inverse-velocity + fission tracklength @@ -1067,7 +1072,7 @@ total - prompt-nu-fission + fission tracklength @@ -1075,15 +1080,14 @@ total flux - analog + tracklength - total - prompt-nu-fission - analog + nu-fission + tracklength @@ -1094,58 +1098,53 @@ - total - delayed-nu-fission + kappa-fission tracklength - - + total - delayed-nu-fission - analog + flux + tracklength - - + total - delayed-nu-fission - analog + scatter + tracklength total - nu-fission - tracklength + flux + analog - total - delayed-nu-fission - tracklength + nu-scatter + analog - total - delayed-nu-fission - tracklength + flux + analog - + total - decay-rate - tracklength + scatter-P3 + analog @@ -1155,6 +1154,253 @@ analog + + + + total + nu-scatter-P3 + analog + + + + + + total + nu-scatter + analog + + + + + + total + scatter + analog + + + + + total + flux + analog + + + + + + total + nu-fission + analog + + + + + + total + scatter + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + + total + nu-scatter-0 + analog + + + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + delayed-nu-fission + analog + + + + + + total + delayed-nu-fission + analog + + + + + total + nu-fission + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + decay-rate + tracklength + + + + + total + flux + analog + + diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index c67c7c1f0..f3426cd40 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -2,11 +2,11 @@ domain=10000 type=total [4.14825464e-01 6.60169863e-01] [2.27929105e-02 4.75188999e-02] domain=10000 type=transport -[3.56859612e-01 6.47647614e-01] -[2.54935937e-02 2.37037335e-02] +[3.63092031e-01 6.44850709e-01] +[2.38384843e-02 4.76746408e-02] domain=10000 type=nu-transport -[3.56859612e-01 6.47647614e-01] -[2.54935937e-02 2.37037335e-02] +[3.63092031e-01 6.44850709e-01] +[2.38384843e-02 4.76746408e-02] domain=10000 type=absorption [2.74078431e-02 2.64510714e-01] [2.69249666e-03 2.33670618e-02] @@ -60,6 +60,33 @@ domain=10000 type=nu-fission matrix [4.54366342e-01 0.00000000e+00]] [[3.14909051e-03 0.00000000e+00] [2.74255162e-02 0.00000000e+00]] +domain=10000 type=scatter probability matrix +[[9.97432606e-01 2.56739409e-03] + [2.24215247e-03 9.97757848e-01]] +[[7.82243018e-02 1.25560869e-03] + [2.24310192e-03 4.10531468e-02]] +domain=10000 type=consistent scatter matrix +[[[3.86422967e-01 5.21704775e-02 2.01849914e-02 9.53256688e-03] + [9.94653712e-04 -2.08433942e-04 -1.03964400e-04 2.35646553e-04]] + + [[8.87128136e-04 -7.36559899e-04 4.73756321e-04 -1.64539748e-04] + [3.94772020e-01 1.58130798e-02 6.11300510e-03 -1.00731826e-02]]] +[[[3.66286904e-02 7.76748968e-03 3.13767806e-03 2.32683668e-03] + [4.89318749e-04 1.50458419e-04 1.85500930e-04 1.29783344e-04]] + + [[8.89289900e-04 7.38354757e-04 4.74910776e-04 1.64940700e-04] + [2.98710064e-02 4.44330993e-03 1.01307463e-02 1.00367467e-02]]] +domain=10000 type=consistent nu-scatter matrix +[[[3.86422967e-01 5.21704775e-02 2.01849914e-02 9.53256688e-03] + [9.94653712e-04 -2.08433942e-04 -1.03964400e-04 2.35646553e-04]] + + [[8.87128136e-04 -7.36559899e-04 4.73756321e-04 -1.64539748e-04] + [3.94772020e-01 1.58130798e-02 6.11300510e-03 -1.00731826e-02]]] +[[[4.75627021e-02 8.78140568e-03 3.51522200e-03 2.44425169e-03] + [8.40606499e-04 2.07733706e-04 1.98782933e-04 2.07523215e-04]] + + [[1.53780011e-03 1.27679627e-03 8.21237084e-04 2.85222881e-04] + [3.39988352e-02 4.49065920e-03 1.01338659e-02 1.00452944e-02]]] domain=10000 type=chi [1.00000000e+00 0.00000000e+00] [4.60705493e-02 0.00000000e+00] @@ -168,11 +195,11 @@ domain=10001 type=total [3.13737666e-01 3.00821380e-01] [1.55819223e-02 2.80524816e-02] domain=10001 type=transport -[2.73227852e-01 3.12374814e-01] -[3.31153641e-02 4.96058281e-02] +[2.75508079e-01 3.12035015e-01] +[1.77418855e-02 3.23843473e-02] domain=10001 type=nu-transport -[2.73227852e-01 3.12374814e-01] -[3.31153641e-02 4.96058281e-02] +[2.75508079e-01 3.12035015e-01] +[1.77418855e-02 3.23843473e-02] domain=10001 type=absorption [1.57499139e-03 5.40037826e-03] [3.22547919e-04 6.18139027e-04] @@ -226,6 +253,33 @@ domain=10001 type=nu-fission matrix [0.00000000e+00 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] +domain=10001 type=scatter probability matrix +[[1.00000000e+00 0.00000000e+00] + [0.00000000e+00 1.00000000e+00]] +[[1.08778697e-01 0.00000000e+00] + [0.00000000e+00 1.42427173e-01]] +domain=10001 type=consistent scatter matrix +[[[3.12162675e-01 3.84813069e-02 2.08815337e-02 8.01673640e-03] + [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] + + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [2.95421002e-01 -1.11817183e-02 8.81141444e-03 -3.26075959e-03]]] +[[[3.72534018e-02 8.74305413e-03 4.83468235e-03 3.77642682e-03] + [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] + + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [5.02358893e-02 1.61616720e-02 1.14951123e-02 7.31312479e-03]]] +domain=10001 type=consistent nu-scatter matrix +[[[3.12162675e-01 3.84813069e-02 2.08815337e-02 8.01673640e-03] + [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] + + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [2.95421002e-01 -1.11817183e-02 8.81141444e-03 -3.26075959e-03]]] +[[[5.04070427e-02 9.69345877e-03 5.34169555e-03 3.87580585e-03] + [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] + + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [6.55288678e-02 1.62399493e-02 1.15634161e-02 7.32785650e-03]]] domain=10001 type=chi [0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00] @@ -334,11 +388,11 @@ domain=10002 type=total [6.64572195e-01 2.05238389e+00] [3.12147473e-02 2.24342891e-01] domain=10002 type=transport -[2.90565237e-01 1.51643790e+00] -[2.38518529e-02 2.35197252e-01] +[2.83322749e-01 1.49973953e+00] +[3.52061127e-02 2.30902118e-01] domain=10002 type=nu-transport -[2.90565237e-01 1.51643790e+00] -[2.38518529e-02 2.35197252e-01] +[2.83322749e-01 1.49973953e+00] +[3.52061127e-02 2.30902118e-01] domain=10002 type=absorption [6.90399495e-04 3.16872549e-02] [4.41475663e-05 3.74655831e-03] @@ -392,6 +446,33 @@ domain=10002 type=nu-fission matrix [0.00000000e+00 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] +domain=10002 type=scatter probability matrix +[[9.53271028e-01 4.67289720e-02] + [2.17817469e-04 9.99782183e-01]] +[[3.60184962e-02 2.54736726e-03] + [2.18820864e-04 1.35884974e-01]] +domain=10002 type=consistent scatter matrix +[[[6.32859281e-01 3.76972649e-01 1.50714804e-01 9.04734705e-03] + [3.10225138e-02 8.66134326e-03 -2.53964096e-03 -3.74315061e-03]] + + [[4.40143026e-04 3.97073448e-04 3.17256062e-04 2.12303394e-04] + [2.02025649e+00 5.06259696e-01 1.10372136e-01 2.48080660e-02]]] +[[[3.81421848e-02 2.37145043e-02 1.06635009e-02 3.86848985e-03] + [2.23201039e-03 9.99377011e-04 1.00968851e-03 8.26439590e-04]] + + [[4.44773843e-04 4.01251123e-04 3.20593966e-04 2.14537073e-04] + [3.52193929e-01 7.91402819e-02 1.84875925e-02 8.77085752e-03]]] +domain=10002 type=consistent nu-scatter matrix +[[[6.32859281e-01 3.76972649e-01 1.50714804e-01 9.04734705e-03] + [3.10225138e-02 8.66134326e-03 -2.53964096e-03 -3.74315061e-03]] + + [[4.40143026e-04 3.97073448e-04 3.17256062e-04 2.12303394e-04] + [2.02025649e+00 5.06259696e-01 1.10372136e-01 2.48080660e-02]]] +[[[4.52974133e-02 2.78247077e-02 1.21478698e-02 3.88422859e-03] + [3.06407542e-03 1.15855775e-03 1.02420876e-03 8.64382873e-04]] + + [[7.65033031e-04 6.90171798e-04 5.51437493e-04 3.69014387e-04] + [4.46600759e-01 1.04874946e-01 2.38091367e-02 9.39676938e-03]]] domain=10002 type=chi [0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00] diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py index 9197f549c..3c657981b 100644 --- a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -59,7 +59,7 @@ class MGXSTestHarness(PyAPITestHarness): # Export the MGXS Library to an HDF5 file self.mgxs_lib.build_hdf5_store(directory='.') - + # Open the MGXS HDF5 file f = h5py.File('mgxs.h5', 'r') diff --git a/tests/test_mgxs_library_mesh/inputs_true.dat b/tests/test_mgxs_library_mesh/inputs_true.dat index 421f4d8c7..b0db8a9c4 100644 --- a/tests/test_mgxs_library_mesh/inputs_true.dat +++ b/tests/test_mgxs_library_mesh/inputs_true.dat @@ -333,56 +333,56 @@ total flux - analog + tracklength total total - analog + tracklength + + + total + flux + analog + + total scatter-1 analog - - - - total - flux - analog - total - total - analog + flux + tracklength - + total - nu-scatter-1 - analog + total + tracklength total flux - tracklength + analog - + total - absorption - tracklength + nu-scatter-1 + analog @@ -402,14 +402,14 @@ total - fission + flux tracklength total - flux + absorption tracklength @@ -430,7 +430,7 @@ total - nu-fission + fission tracklength @@ -444,7 +444,7 @@ total - kappa-fission + nu-fission tracklength @@ -458,7 +458,7 @@ total - scatter + kappa-fission tracklength @@ -466,14 +466,14 @@ total flux - analog + tracklength total - nu-scatter - analog + scatter + tracklength @@ -485,9 +485,8 @@ - total - scatter-P3 + nu-scatter analog @@ -502,15 +501,14 @@ total - nu-scatter-P3 + scatter-P3 analog - total - nu-scatter + flux analog @@ -518,14 +516,15 @@ total - scatter + nu-scatter-P3 analog + total - flux + nu-scatter analog @@ -533,18 +532,19 @@ total - nu-fission + scatter analog total - nu-fission + flux analog + total nu-fission @@ -553,31 +553,33 @@ + total - prompt-nu-fission + scatter analog - - - total - prompt-nu-fission - analog - - total flux tracklength - + total - inverse-velocity + scatter tracklength + + + + + total + scatter-P3 + analog + @@ -589,14 +591,15 @@ total - prompt-nu-fission + scatter tracklength + total - flux + scatter-P3 analog @@ -604,17 +607,96 @@ total - prompt-nu-fission + nu-scatter-0 analog + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + total flux tracklength - + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -622,7 +704,7 @@ delayed-nu-fission tracklength - + @@ -630,7 +712,7 @@ delayed-nu-fission analog - + @@ -638,14 +720,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -653,7 +735,7 @@ delayed-nu-fission tracklength - + @@ -661,7 +743,7 @@ delayed-nu-fission tracklength - + @@ -669,14 +751,14 @@ decay-rate tracklength - + total flux analog - + diff --git a/tests/test_mgxs_library_mesh/results_true.dat b/tests/test_mgxs_library_mesh/results_true.dat index 869bb92d5..527c91d66 100644 --- a/tests/test_mgxs_library_mesh/results_true.dat +++ b/tests/test_mgxs_library_mesh/results_true.dat @@ -6,16 +6,16 @@ 3 2 2 1 1 total 0.641095 0.091519 mesh 1 group in nuclide mean std. dev. x y z -0 1 1 1 1 total 0.413423 0.087250 -1 1 2 1 1 total 0.392074 0.244272 -2 2 1 1 1 total 0.458841 0.087921 -3 2 2 1 1 total 0.403898 0.074343 +0 1 1 1 1 total 0.407867 0.104648 +1 1 2 1 1 total 0.417805 0.300173 +2 2 1 1 1 total 0.451699 0.087229 +3 2 2 1 1 total 0.396449 0.095884 mesh 1 group in nuclide mean std. dev. x y z -0 1 1 1 1 total 0.413423 0.087250 -1 1 2 1 1 total 0.392074 0.244272 -2 2 1 1 1 total 0.458841 0.087921 -3 2 2 1 1 total 0.403898 0.074343 +0 1 1 1 1 total 0.407867 0.104648 +1 1 2 1 1 total 0.417805 0.300173 +2 2 1 1 1 total 0.451699 0.087229 +3 2 2 1 1 total 0.396449 0.095884 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.021476 0.004248 @@ -106,6 +106,48 @@ 1 1 2 1 1 1 total 0.017348 0.008786 2 2 1 1 1 1 total 0.020409 0.003354 3 2 2 1 1 1 total 0.011105 0.003806 + mesh 1 group in group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 1.0 0.153265 +1 1 2 1 1 1 total 1.0 0.454973 +2 2 1 1 1 1 total 1.0 0.146747 +3 2 2 1 1 1 total 1.0 0.141824 + mesh 1 group in group out nuclide moment mean std. dev. + x y z +0 1 1 1 1 1 total P0 0.633490 0.135514 +1 1 1 1 1 1 total P1 0.245219 0.051009 +2 1 1 1 1 1 total P2 0.091493 0.017479 +3 1 1 1 1 1 total P3 0.013124 0.004906 +4 1 2 1 1 1 total P0 0.618705 0.392783 +5 1 2 1 1 1 total P1 0.232972 0.149703 +6 1 2 1 1 1 total P2 0.073396 0.049002 +7 1 2 1 1 1 total P3 -0.003195 0.010229 +8 2 1 1 1 1 total P0 0.686150 0.126578 +9 2 1 1 1 1 total P1 0.257252 0.047890 +10 2 1 1 1 1 total P2 0.094522 0.018315 +11 2 1 1 1 1 total P3 0.016676 0.005187 +12 2 2 1 1 1 total P0 0.619269 0.124057 +13 2 2 1 1 1 total P1 0.242153 0.048064 +14 2 2 1 1 1 total P2 0.087677 0.018646 +15 2 2 1 1 1 total P3 0.019785 0.014168 + mesh 1 group in group out nuclide moment mean std. dev. + x y z +0 1 1 1 1 1 total P0 0.633490 0.166706 +1 1 1 1 1 1 total P1 0.245219 0.063359 +2 1 1 1 1 1 total P2 0.091493 0.022409 +3 1 1 1 1 1 total P3 0.013124 0.005303 +4 1 2 1 1 1 total P0 0.618705 0.483237 +5 1 2 1 1 1 total P1 0.232972 0.183428 +6 1 2 1 1 1 total P2 0.073396 0.059298 +7 1 2 1 1 1 total P3 -0.003195 0.010332 +8 2 1 1 1 1 total P0 0.686150 0.161742 +9 2 1 1 1 1 total P1 0.257252 0.060980 +10 2 1 1 1 1 total P2 0.094522 0.022975 +11 2 1 1 1 1 total P3 0.016676 0.005736 +12 2 2 1 1 1 total P0 0.619269 0.152000 +13 2 2 1 1 1 total P1 0.242153 0.059073 +14 2 2 1 1 1 total P2 0.087677 0.022412 +15 2 2 1 1 1 total P3 0.019785 0.014443 mesh 1 group out nuclide mean std. dev. x y z 0 1 1 1 1 total 1.0 0.135958 diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index ad6526fc1..79c7ea049 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -69,56 +69,56 @@ total flux - analog + tracklength total total - analog + tracklength + + + total + flux + analog + + total scatter-1 analog - - - - total - flux - analog - total - total - analog + flux + tracklength - + total - nu-scatter-1 - analog + total + tracklength total flux - tracklength + analog - + total - absorption - tracklength + nu-scatter-1 + analog @@ -138,14 +138,14 @@ total - fission + flux tracklength total - flux + absorption tracklength @@ -166,7 +166,7 @@ total - nu-fission + fission tracklength @@ -180,7 +180,7 @@ total - kappa-fission + nu-fission tracklength @@ -194,7 +194,7 @@ total - scatter + kappa-fission tracklength @@ -202,14 +202,14 @@ total flux - analog + tracklength total - nu-scatter - analog + scatter + tracklength @@ -221,9 +221,8 @@ - total - scatter-P3 + nu-scatter analog @@ -238,15 +237,14 @@ total - nu-scatter-P3 + scatter-P3 analog - total - nu-scatter + flux analog @@ -254,14 +252,15 @@ total - scatter + nu-scatter-P3 analog + total - flux + nu-scatter analog @@ -269,18 +268,19 @@ total - nu-fission + scatter analog - + total - nu-fission + flux analog + total nu-fission @@ -288,32 +288,34 @@ - + + total - prompt-nu-fission + scatter analog - - - total - prompt-nu-fission - analog - - total flux tracklength - + total - inverse-velocity + scatter tracklength + + + + + total + scatter-P3 + analog + @@ -325,14 +327,15 @@ total - prompt-nu-fission + scatter tracklength + total - flux + scatter-P3 analog @@ -340,17 +343,96 @@ total - prompt-nu-fission + nu-scatter-0 analog + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + total flux tracklength - + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -358,7 +440,7 @@ delayed-nu-fission tracklength - + @@ -366,7 +448,7 @@ delayed-nu-fission analog - + @@ -374,14 +456,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -389,7 +471,7 @@ delayed-nu-fission tracklength - + @@ -397,7 +479,7 @@ delayed-nu-fission tracklength - + @@ -405,14 +487,14 @@ decay-rate tracklength - + total flux analog - + @@ -421,95 +503,18 @@ delayed-nu-fission analog - - - - total - flux - tracklength - - - - - total - total - tracklength - - - - - total - flux - analog - - - - - total - total - analog - - - - - total - scatter-1 - analog - - - - - total - flux - analog - - - - - total - total - analog - - - - - total - nu-scatter-1 - analog - - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - flux - tracklength - total - absorption + flux tracklength total - fission + total tracklength @@ -523,7 +528,7 @@ total - fission + total tracklength @@ -531,14 +536,14 @@ total flux - tracklength + analog - + total - nu-fission - tracklength + scatter-1 + analog @@ -551,7 +556,7 @@ total - kappa-fission + total tracklength @@ -559,37 +564,128 @@ total flux - tracklength + analog - + total - scatter - tracklength + nu-scatter-1 + analog total flux - analog + tracklength total - nu-scatter - analog + absorption + tracklength total flux - analog + tracklength + + + total + absorption + tracklength + + + + + total + fission + tracklength + + + + + total + flux + tracklength + + + + + total + fission + tracklength + + + + + total + flux + tracklength + + + + + total + nu-fission + tracklength + + + + + total + flux + tracklength + + + + + total + kappa-fission + tracklength + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + total + flux + analog + + + + + total + nu-scatter + analog + + + + + total + flux + analog + + @@ -597,14 +693,14 @@ scatter-P3 analog - + total flux analog - + @@ -612,116 +708,184 @@ nu-scatter-P3 analog - - - - - total - nu-scatter - analog - - - - - - total - scatter - analog - - - - - total - flux - analog - - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - - - - total - prompt-nu-fission - analog - - - - - total - prompt-nu-fission - analog - - - - - total - flux - tracklength - - - - - total - inverse-velocity - tracklength - - - - - total - flux - tracklength - - - - - total - prompt-nu-fission - tracklength - - - - - total - flux - analog - total - prompt-nu-fission + nu-scatter analog + + + + total + scatter + analog + + + + + total + flux + analog + + + + + + total + nu-fission + analog + + + + + + total + scatter + analog + + total flux tracklength - + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + + total + nu-scatter-0 + analog + + + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + @@ -729,7 +893,7 @@ delayed-nu-fission tracklength - + @@ -737,7 +901,7 @@ delayed-nu-fission analog - + @@ -745,14 +909,14 @@ delayed-nu-fission analog - + total nu-fission tracklength - + @@ -760,7 +924,7 @@ delayed-nu-fission tracklength - + @@ -768,7 +932,7 @@ delayed-nu-fission tracklength - + @@ -776,14 +940,14 @@ decay-rate tracklength - + total flux analog - + @@ -792,268 +956,109 @@ delayed-nu-fission analog - + total flux tracklength - + total total tracklength - + + + + total + flux + tracklength + + + + + total + total + tracklength + + total flux analog - - - - total - total - analog - - + total scatter-1 analog - + + + + total + flux + tracklength + + + + + total + total + tracklength + + total flux analog - - - - total - total - analog - - + total nu-scatter-1 analog - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - flux - tracklength - - - - - total - absorption - tracklength - - - - - total - fission - tracklength - - - - - total - flux - tracklength - - - - - total - fission - tracklength - - - - - total - flux - tracklength - - - - - total - nu-fission - tracklength - - - - - total - flux - tracklength - - - - - total - kappa-fission - tracklength - - - - - total - flux - tracklength - - - - - total - scatter - tracklength - - - - - total - flux - analog - - - - - total - nu-scatter - analog - - - - - total - flux - analog - - - - - - total - scatter-P3 - analog - - - - - total - flux - analog - - - - - - total - nu-scatter-P3 - analog - - - - - - total - nu-scatter - analog - - - - - - total - scatter - analog - - - - - total - flux - analog - - - - - - total - nu-fission - analog - - - - - total - nu-fission - analog - - + total - nu-fission - analog + flux + tracklength - + total - prompt-nu-fission - analog + absorption + tracklength - + total - prompt-nu-fission - analog + flux + tracklength total - flux + absorption tracklength total - inverse-velocity + fission tracklength @@ -1067,7 +1072,7 @@ total - prompt-nu-fission + fission tracklength @@ -1075,15 +1080,14 @@ total flux - analog + tracklength - total - prompt-nu-fission - analog + nu-fission + tracklength @@ -1094,58 +1098,53 @@ - total - delayed-nu-fission + kappa-fission tracklength - - + total - delayed-nu-fission - analog + flux + tracklength - - + total - delayed-nu-fission - analog + scatter + tracklength total - nu-fission - tracklength + flux + analog - total - delayed-nu-fission - tracklength + nu-scatter + analog - total - delayed-nu-fission - tracklength + flux + analog - + total - decay-rate - tracklength + scatter-P3 + analog @@ -1155,6 +1154,253 @@ analog + + + + total + nu-scatter-P3 + analog + + + + + + total + nu-scatter + analog + + + + + + total + scatter + analog + + + + + total + flux + analog + + + + + + total + nu-fission + analog + + + + + + total + scatter + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + total + scatter + tracklength + + + + + + total + scatter-P3 + analog + + + + + + total + nu-scatter-0 + analog + + + + + + total + scatter-0 + analog + + + + + total + nu-fission + analog + + + + + total + nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + total + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + total + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + total + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + delayed-nu-fission + analog + + + + + + total + delayed-nu-fission + analog + + + + + total + nu-fission + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + delayed-nu-fission + tracklength + + + + + + total + decay-rate + tracklength + + + + + total + flux + analog + + diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 7ed890855..e3481ce4e 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -2,11 +2,11 @@ 1 10000 1 total 0.414825 0.022793 0 10000 2 total 0.660170 0.047519 material group in nuclide mean std. dev. -1 10000 1 total 0.356860 0.025494 -0 10000 2 total 0.647648 0.023704 +1 10000 1 total 0.363092 0.023838 +0 10000 2 total 0.644851 0.047675 material group in nuclide mean std. dev. -1 10000 1 total 0.356860 0.025494 -0 10000 2 total 0.647648 0.023704 +1 10000 1 total 0.363092 0.023838 +0 10000 2 total 0.644851 0.047675 material group in nuclide mean std. dev. 1 10000 1 total 0.027408 0.002692 0 10000 2 total 0.264511 0.023367 @@ -72,6 +72,45 @@ 2 10000 1 2 total 0.000000 0.000000 1 10000 2 1 total 0.454366 0.027426 0 10000 2 2 total 0.000000 0.000000 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 0.997433 0.078224 +2 10000 1 2 total 0.002567 0.001256 +1 10000 2 1 total 0.002242 0.002243 +0 10000 2 2 total 0.997758 0.041053 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 0.386423 0.036629 +13 10000 1 1 total P1 0.052170 0.007767 +14 10000 1 1 total P2 0.020185 0.003138 +15 10000 1 1 total P3 0.009533 0.002327 +8 10000 1 2 total P0 0.000995 0.000489 +9 10000 1 2 total P1 -0.000208 0.000150 +10 10000 1 2 total P2 -0.000104 0.000186 +11 10000 1 2 total P3 0.000236 0.000130 +4 10000 2 1 total P0 0.000887 0.000889 +5 10000 2 1 total P1 -0.000737 0.000738 +6 10000 2 1 total P2 0.000474 0.000475 +7 10000 2 1 total P3 -0.000165 0.000165 +0 10000 2 2 total P0 0.394772 0.029871 +1 10000 2 2 total P1 0.015813 0.004443 +2 10000 2 2 total P2 0.006113 0.010131 +3 10000 2 2 total P3 -0.010073 0.010037 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 0.386423 0.047563 +13 10000 1 1 total P1 0.052170 0.008781 +14 10000 1 1 total P2 0.020185 0.003515 +15 10000 1 1 total P3 0.009533 0.002444 +8 10000 1 2 total P0 0.000995 0.000841 +9 10000 1 2 total P1 -0.000208 0.000208 +10 10000 1 2 total P2 -0.000104 0.000199 +11 10000 1 2 total P3 0.000236 0.000208 +4 10000 2 1 total P0 0.000887 0.001538 +5 10000 2 1 total P1 -0.000737 0.001277 +6 10000 2 1 total P2 0.000474 0.000821 +7 10000 2 1 total P3 -0.000165 0.000285 +0 10000 2 2 total P0 0.394772 0.033999 +1 10000 2 2 total P1 0.015813 0.004491 +2 10000 2 2 total P2 0.006113 0.010134 +3 10000 2 2 total P3 -0.010073 0.010045 material group out nuclide mean std. dev. 1 10000 1 total 1.0 0.046071 0 10000 2 total 0.0 0.000000 @@ -170,11 +209,11 @@ 1 10001 1 total 0.313738 0.015582 0 10001 2 total 0.300821 0.028052 material group in nuclide mean std. dev. -1 10001 1 total 0.273228 0.033115 -0 10001 2 total 0.312375 0.049606 +1 10001 1 total 0.275508 0.017742 +0 10001 2 total 0.312035 0.032384 material group in nuclide mean std. dev. -1 10001 1 total 0.273228 0.033115 -0 10001 2 total 0.312375 0.049606 +1 10001 1 total 0.275508 0.017742 +0 10001 2 total 0.312035 0.032384 material group in nuclide mean std. dev. 1 10001 1 total 0.001575 0.000323 0 10001 2 total 0.005400 0.000618 @@ -240,6 +279,45 @@ 2 10001 1 2 total 0.0 0.0 1 10001 2 1 total 0.0 0.0 0 10001 2 2 total 0.0 0.0 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.0 0.108779 +2 10001 1 2 total 0.0 0.000000 +1 10001 2 1 total 0.0 0.000000 +0 10001 2 2 total 1.0 0.142427 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 0.312163 0.037253 +13 10001 1 1 total P1 0.038481 0.008743 +14 10001 1 1 total P2 0.020882 0.004835 +15 10001 1 1 total P3 0.008017 0.003776 +8 10001 1 2 total P0 0.000000 0.000000 +9 10001 1 2 total P1 0.000000 0.000000 +10 10001 1 2 total P2 0.000000 0.000000 +11 10001 1 2 total P3 0.000000 0.000000 +4 10001 2 1 total P0 0.000000 0.000000 +5 10001 2 1 total P1 0.000000 0.000000 +6 10001 2 1 total P2 0.000000 0.000000 +7 10001 2 1 total P3 0.000000 0.000000 +0 10001 2 2 total P0 0.295421 0.050236 +1 10001 2 2 total P1 -0.011182 0.016162 +2 10001 2 2 total P2 0.008811 0.011495 +3 10001 2 2 total P3 -0.003261 0.007313 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 0.312163 0.050407 +13 10001 1 1 total P1 0.038481 0.009693 +14 10001 1 1 total P2 0.020882 0.005342 +15 10001 1 1 total P3 0.008017 0.003876 +8 10001 1 2 total P0 0.000000 0.000000 +9 10001 1 2 total P1 0.000000 0.000000 +10 10001 1 2 total P2 0.000000 0.000000 +11 10001 1 2 total P3 0.000000 0.000000 +4 10001 2 1 total P0 0.000000 0.000000 +5 10001 2 1 total P1 0.000000 0.000000 +6 10001 2 1 total P2 0.000000 0.000000 +7 10001 2 1 total P3 0.000000 0.000000 +0 10001 2 2 total P0 0.295421 0.065529 +1 10001 2 2 total P1 -0.011182 0.016240 +2 10001 2 2 total P2 0.008811 0.011563 +3 10001 2 2 total P3 -0.003261 0.007328 material group out nuclide mean std. dev. 1 10001 1 total 0.0 0.0 0 10001 2 total 0.0 0.0 @@ -338,11 +416,11 @@ 1 10002 1 total 0.664572 0.031215 0 10002 2 total 2.052384 0.224343 material group in nuclide mean std. dev. -1 10002 1 total 0.290565 0.023852 -0 10002 2 total 1.516438 0.235197 +1 10002 1 total 0.283323 0.035206 +0 10002 2 total 1.499740 0.230902 material group in nuclide mean std. dev. -1 10002 1 total 0.290565 0.023852 -0 10002 2 total 1.516438 0.235197 +1 10002 1 total 0.283323 0.035206 +0 10002 2 total 1.499740 0.230902 material group in nuclide mean std. dev. 1 10002 1 total 0.000690 0.000044 0 10002 2 total 0.031687 0.003747 @@ -408,6 +486,45 @@ 2 10002 1 2 total 0.0 0.0 1 10002 2 1 total 0.0 0.0 0 10002 2 2 total 0.0 0.0 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.953271 0.036018 +2 10002 1 2 total 0.046729 0.002547 +1 10002 2 1 total 0.000218 0.000219 +0 10002 2 2 total 0.999782 0.135885 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 0.632859 0.038142 +13 10002 1 1 total P1 0.376973 0.023715 +14 10002 1 1 total P2 0.150715 0.010664 +15 10002 1 1 total P3 0.009047 0.003868 +8 10002 1 2 total P0 0.031023 0.002232 +9 10002 1 2 total P1 0.008661 0.000999 +10 10002 1 2 total P2 -0.002540 0.001010 +11 10002 1 2 total P3 -0.003743 0.000826 +4 10002 2 1 total P0 0.000440 0.000445 +5 10002 2 1 total P1 0.000397 0.000401 +6 10002 2 1 total P2 0.000317 0.000321 +7 10002 2 1 total P3 0.000212 0.000215 +0 10002 2 2 total P0 2.020256 0.352194 +1 10002 2 2 total P1 0.506260 0.079140 +2 10002 2 2 total P2 0.110372 0.018488 +3 10002 2 2 total P3 0.024808 0.008771 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 0.632859 0.045297 +13 10002 1 1 total P1 0.376973 0.027825 +14 10002 1 1 total P2 0.150715 0.012148 +15 10002 1 1 total P3 0.009047 0.003884 +8 10002 1 2 total P0 0.031023 0.003064 +9 10002 1 2 total P1 0.008661 0.001159 +10 10002 1 2 total P2 -0.002540 0.001024 +11 10002 1 2 total P3 -0.003743 0.000864 +4 10002 2 1 total P0 0.000440 0.000765 +5 10002 2 1 total P1 0.000397 0.000690 +6 10002 2 1 total P2 0.000317 0.000551 +7 10002 2 1 total P3 0.000212 0.000369 +0 10002 2 2 total P0 2.020256 0.446601 +1 10002 2 2 total P1 0.506260 0.104875 +2 10002 2 2 total P2 0.110372 0.023809 +3 10002 2 2 total P3 0.024808 0.009397 material group out nuclide mean std. dev. 1 10002 1 total 0.0 0.0 0 10002 2 total 0.0 0.0 diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index 74dfc7b2e..89541b4d5 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -69,56 +69,56 @@ total flux - analog + tracklength U234 U235 U238 O16 total - analog + tracklength + + + total + flux + analog + + U234 U235 U238 O16 scatter-1 analog - + total flux - analog + tracklength - + U234 U235 U238 O16 total - analog - - - - - U234 U235 U238 O16 - nu-scatter-1 - analog + tracklength total flux - tracklength + analog - + U234 U235 U238 O16 - absorption - tracklength + nu-scatter-1 + analog @@ -137,15 +137,15 @@ - U234 U235 U238 O16 - fission + total + flux tracklength - total - flux + U234 U235 U238 O16 + absorption tracklength @@ -166,7 +166,7 @@ U234 U235 U238 O16 - nu-fission + fission tracklength @@ -180,7 +180,7 @@ U234 U235 U238 O16 - kappa-fission + nu-fission tracklength @@ -194,7 +194,7 @@ U234 U235 U238 O16 - scatter + kappa-fission tracklength @@ -202,14 +202,14 @@ total flux - analog + tracklength U234 U235 U238 O16 - nu-scatter - analog + scatter + tracklength @@ -221,9 +221,8 @@ - U234 U235 U238 O16 - scatter-P3 + nu-scatter analog @@ -238,15 +237,14 @@ U234 U235 U238 O16 - nu-scatter-P3 + scatter-P3 analog - - U234 U235 U238 O16 - nu-scatter + total + flux analog @@ -254,14 +252,15 @@ U234 U235 U238 O16 - scatter + nu-scatter-P3 analog - total - flux + + U234 U235 U238 O16 + nu-scatter analog @@ -269,18 +268,19 @@ U234 U235 U238 O16 - nu-fission + scatter analog - - U234 U235 U238 O16 - nu-fission + + total + flux analog + U234 U235 U238 O16 nu-fission @@ -288,32 +288,34 @@ - + + U234 U235 U238 O16 - prompt-nu-fission + scatter analog - - - U234 U235 U238 O16 - prompt-nu-fission - analog - - total flux tracklength - + U234 U235 U238 O16 - inverse-velocity + scatter tracklength + + + + + U234 U235 U238 O16 + scatter-P3 + analog + @@ -325,14 +327,15 @@ U234 U235 U238 O16 - prompt-nu-fission + scatter tracklength - total - flux + + U234 U235 U238 O16 + scatter-P3 analog @@ -340,98 +343,100 @@ U234 U235 U238 O16 - prompt-nu-fission + nu-scatter-0 analog - + - total - flux - tracklength + + U234 U235 U238 O16 + scatter-0 + analog - - - Zr90 Zr91 Zr92 Zr94 Zr96 - total - tracklength + + + U234 U235 U238 O16 + nu-fission + analog - - - total - flux + + + U234 U235 U238 O16 + nu-fission analog - - - Zr90 Zr91 Zr92 Zr94 Zr96 - total + + + U234 U235 U238 O16 + prompt-nu-fission analog - + - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter-1 + U234 U235 U238 O16 + prompt-nu-fission analog - + total flux - analog + tracklength - + - Zr90 Zr91 Zr92 Zr94 Zr96 - total - analog + U234 U235 U238 O16 + inverse-velocity + tracklength - - - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter-1 - analog - - - + total flux tracklength + + + + U234 U235 U238 O16 + prompt-nu-fission + tracklength + - - - Zr90 Zr91 Zr92 Zr94 Zr96 - absorption - tracklength - - - + total flux - tracklength + analog + + + + + + U234 U235 U238 O16 + prompt-nu-fission + analog - Zr90 Zr91 Zr92 Zr94 Zr96 - absorption + total + flux tracklength Zr90 Zr91 Zr92 Zr94 Zr96 - fission + total tracklength @@ -445,7 +450,7 @@ Zr90 Zr91 Zr92 Zr94 Zr96 - fission + total tracklength @@ -453,14 +458,14 @@ total flux - tracklength + analog - + Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - tracklength + scatter-1 + analog @@ -473,7 +478,7 @@ Zr90 Zr91 Zr92 Zr94 Zr96 - kappa-fission + total tracklength @@ -481,37 +486,128 @@ total flux - tracklength + analog - + Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - tracklength + nu-scatter-1 + analog total flux - analog + tracklength Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog + absorption + tracklength total flux - analog + tracklength + + + Zr90 Zr91 Zr92 Zr94 Zr96 + absorption + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + fission + tracklength + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + fission + tracklength + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + tracklength + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + kappa-fission + tracklength + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + tracklength + + + + + total + flux + analog + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-scatter + analog + + + + + total + flux + analog + + @@ -519,14 +615,14 @@ scatter-P3 analog - + total flux analog - + @@ -534,370 +630,279 @@ nu-scatter-P3 analog - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-scatter - analog - - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - scatter - analog - - - - - total - flux - analog - - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - analog - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - analog - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - nu-fission - analog - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - analog - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - analog - - - - - total - flux - tracklength - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - inverse-velocity - tracklength - - - - - total - flux - tracklength - - - - - Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission - tracklength - - - - - total - flux - analog - Zr90 Zr91 Zr92 Zr94 Zr96 - prompt-nu-fission + nu-scatter analog - + - total - flux - tracklength + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + analog - - - H1 O16 B10 B11 - total - tracklength - - - + total flux analog + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + analog + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + tracklength + + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter + tracklength + + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter-P3 + analog + + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-scatter-0 + analog + + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + scatter-0 + analog + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + nu-fission + analog + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + tracklength + + + + + total + flux + analog + + + + + + Zr90 Zr91 Zr92 Zr94 Zr96 + prompt-nu-fission + analog + + + + + total + flux + tracklength + + H1 O16 B10 B11 total + tracklength + + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + total + tracklength + + + + + total + flux analog - + H1 O16 B10 B11 scatter-1 analog - + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + total + tracklength + + total flux analog - - - - H1 O16 B10 B11 - total - analog - - + H1 O16 B10 B11 nu-scatter-1 analog - - - - total - flux - tracklength - - - - - H1 O16 B10 B11 - absorption - tracklength - - - - - total - flux - tracklength - - - - - H1 O16 B10 B11 - absorption - tracklength - - - - - H1 O16 B10 B11 - fission - tracklength - - - - - total - flux - tracklength - - - - - H1 O16 B10 B11 - fission - tracklength - - - - - total - flux - tracklength - - - - - H1 O16 B10 B11 - nu-fission - tracklength - - - - - total - flux - tracklength - - - - - H1 O16 B10 B11 - kappa-fission - tracklength - - - - - total - flux - tracklength - - - - - H1 O16 B10 B11 - scatter - tracklength - - - - - total - flux - analog - - - - - H1 O16 B10 B11 - nu-scatter - analog - - - - - total - flux - analog - - - - - - H1 O16 B10 B11 - scatter-P3 - analog - - - - - total - flux - analog - - - - - - H1 O16 B10 B11 - nu-scatter-P3 - analog - - - - - - H1 O16 B10 B11 - nu-scatter - analog - - - - - - H1 O16 B10 B11 - scatter - analog - - - - - total - flux - analog - - - - - - H1 O16 B10 B11 - nu-fission - analog - - - - - H1 O16 B10 B11 - nu-fission - analog - - - H1 O16 B10 B11 - nu-fission - analog + + total + flux + tracklength - + H1 O16 B10 B11 - prompt-nu-fission - analog + absorption + tracklength - - H1 O16 B10 B11 - prompt-nu-fission - analog + + total + flux + tracklength - total - flux + H1 O16 B10 B11 + absorption tracklength H1 O16 B10 B11 - inverse-velocity + fission tracklength @@ -911,7 +916,7 @@ H1 O16 B10 B11 - prompt-nu-fission + fission tracklength @@ -919,9 +924,250 @@ total flux - analog + tracklength + + + H1 O16 B10 B11 + nu-fission + tracklength + + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + kappa-fission + tracklength + + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + scatter + tracklength + + + + + total + flux + analog + + + + + H1 O16 B10 B11 + nu-scatter + analog + + + + + total + flux + analog + + + + + + H1 O16 B10 B11 + scatter-P3 + analog + + + + + total + flux + analog + + + + + + H1 O16 B10 B11 + nu-scatter-P3 + analog + + + + + + H1 O16 B10 B11 + nu-scatter + analog + + + + + + H1 O16 B10 B11 + scatter + analog + + + + + total + flux + analog + + + + + + H1 O16 B10 B11 + nu-fission + analog + + + + + + H1 O16 B10 B11 + scatter + analog + + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + scatter + tracklength + + + + + + H1 O16 B10 B11 + scatter-P3 + analog + + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + scatter + tracklength + + + + + + H1 O16 B10 B11 + scatter-P3 + analog + + + + + + H1 O16 B10 B11 + nu-scatter-0 + analog + + + + + + H1 O16 B10 B11 + scatter-0 + analog + + + + + H1 O16 B10 B11 + nu-fission + analog + + + + + H1 O16 B10 B11 + nu-fission + analog + + + + + H1 O16 B10 B11 + prompt-nu-fission + analog + + + + + H1 O16 B10 B11 + prompt-nu-fission + analog + + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + inverse-velocity + tracklength + + + + + total + flux + tracklength + + + + + H1 O16 B10 B11 + prompt-nu-fission + tracklength + + + + + total + flux + analog + + diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 595394ad2..c521a1a55 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -b91cd851e23046bed070866f56e03cb95d92025dbaf4d7e12dad553fc391cd812c2c6cb7584e9a10af113d728631dd10a079717418eefd57b676b847c3261c80 \ No newline at end of file +107576b21fa8ed72f71ac65866e4ad1100cc62df527f6f4e6bb8a6318f3694614b6ba1c72634b2e97474a75ea1b3112dcb9b4b36e58f0417e5b04aee5d3c7570 \ No newline at end of file