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