Merge pull request #807 from wbinventor/new-scatt-mat

Consistent Multi-Group Scattering Matrices
This commit is contained in:
Adam Nelson 2017-03-10 18:54:30 -05:00 committed by GitHub
commit fb59d51d17
18 changed files with 4147 additions and 2179 deletions

View file

@ -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

View file

@ -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.')

View file

@ -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.

View file

@ -1,4 +1,3 @@
import sys
import re
import os
import warnings

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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.

View file

@ -96,56 +96,56 @@
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
<estimator>tracklength</estimator>
</tally>
<tally id="10003">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>total</scores>
<estimator>analog</estimator>
<estimator>tracklength</estimator>
</tally>
<tally id="10004">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10005">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-1</scores>
<estimator>analog</estimator>
</tally>
<tally id="10005">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10006">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>total</scores>
<estimator>analog</estimator>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10007">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energyout" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-scatter-1</scores>
<estimator>analog</estimator>
<scores>total</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10008">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
<estimator>analog</estimator>
</tally>
<tally id="10009">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>absorption</scores>
<estimator>tracklength</estimator>
<scores>nu-scatter-1</scores>
<estimator>analog</estimator>
</tally>
<tally id="10010">
<filter bins="10000" type="distribcell" />
@ -165,14 +165,14 @@
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>fission</scores>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10013">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<scores>absorption</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10014">
@ -193,7 +193,7 @@
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<scores>fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10017">
@ -207,7 +207,7 @@
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>kappa-fission</scores>
<scores>nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10019">
@ -221,7 +221,7 @@
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>scatter</scores>
<scores>kappa-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10021">
@ -229,14 +229,14 @@
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
<estimator>tracklength</estimator>
</tally>
<tally id="10022">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-scatter</scores>
<estimator>analog</estimator>
<scores>scatter</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10023">
<filter bins="10000" type="distribcell" />
@ -248,9 +248,8 @@
<tally id="10024">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-P3</scores>
<scores>nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10025">
@ -265,15 +264,14 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-scatter-P3</scores>
<scores>scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10027">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-scatter</scores>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10028">
@ -281,14 +279,15 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter</scores>
<scores>nu-scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10029">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>flux</scores>
<scores>nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10030">
@ -296,18 +295,19 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<scores>scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10031">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10032">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
@ -316,31 +316,33 @@
<tally id="10033">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<scores>scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10034">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10035">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10036">
<tally id="10035">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>inverse-velocity</scores>
<scores>scatter</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10036">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10037">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
@ -352,14 +354,15 @@
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<scores>scatter</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10039">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>flux</scores>
<scores>scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10040">
@ -367,17 +370,96 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<scores>nu-scatter-0</scores>
<estimator>analog</estimator>
</tally>
<tally id="10041">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-0</scores>
<estimator>analog</estimator>
</tally>
<tally id="10042">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10043">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10044">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10045">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10046">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10042">
<tally id="10047">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>inverse-velocity</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10048">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10049">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10050">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10051">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10052">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10053">
<filter bins="10000" type="distribcell" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -385,7 +467,7 @@
<scores>delayed-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10043">
<tally id="10054">
<filter bins="10000" type="distribcell" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -393,7 +475,7 @@
<scores>delayed-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10044">
<tally id="10055">
<filter bins="10000" type="distribcell" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energyout" />
@ -401,14 +483,14 @@
<scores>delayed-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10045">
<tally id="10056">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10046">
<tally id="10057">
<filter bins="10000" type="distribcell" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -416,7 +498,7 @@
<scores>delayed-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10047">
<tally id="10058">
<filter bins="10000" type="distribcell" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -424,7 +506,7 @@
<scores>delayed-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10048">
<tally id="10059">
<filter bins="10000" type="distribcell" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -432,14 +514,14 @@
<scores>decay-rate</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10049">
<tally id="10060">
<filter bins="10000" type="distribcell" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10050">
<tally id="10061">
<filter bins="10000" type="distribcell" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />

View file

@ -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.

File diff suppressed because it is too large Load diff

View file

@ -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]

View file

@ -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')

View file

@ -333,56 +333,56 @@
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
<estimator>tracklength</estimator>
</tally>
<tally id="10003">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>total</scores>
<estimator>analog</estimator>
<estimator>tracklength</estimator>
</tally>
<tally id="10004">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10005">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-1</scores>
<estimator>analog</estimator>
</tally>
<tally id="10005">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10006">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>total</scores>
<estimator>analog</estimator>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10007">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energyout" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-scatter-1</scores>
<estimator>analog</estimator>
<scores>total</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10008">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
<estimator>analog</estimator>
</tally>
<tally id="10009">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>absorption</scores>
<estimator>tracklength</estimator>
<scores>nu-scatter-1</scores>
<estimator>analog</estimator>
</tally>
<tally id="10010">
<filter bins="1" type="mesh" />
@ -402,14 +402,14 @@
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>fission</scores>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10013">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<scores>absorption</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10014">
@ -430,7 +430,7 @@
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<scores>fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10017">
@ -444,7 +444,7 @@
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>kappa-fission</scores>
<scores>nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10019">
@ -458,7 +458,7 @@
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>scatter</scores>
<scores>kappa-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10021">
@ -466,14 +466,14 @@
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
<estimator>tracklength</estimator>
</tally>
<tally id="10022">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-scatter</scores>
<estimator>analog</estimator>
<scores>scatter</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10023">
<filter bins="1" type="mesh" />
@ -485,9 +485,8 @@
<tally id="10024">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-P3</scores>
<scores>nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10025">
@ -502,15 +501,14 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-scatter-P3</scores>
<scores>scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10027">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-scatter</scores>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10028">
@ -518,14 +516,15 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter</scores>
<scores>nu-scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10029">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>flux</scores>
<scores>nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10030">
@ -533,18 +532,19 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<scores>scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10031">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10032">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
@ -553,31 +553,33 @@
<tally id="10033">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<scores>scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="10034">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10035">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10036">
<tally id="10035">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>inverse-velocity</scores>
<scores>scatter</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10036">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10037">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
@ -589,14 +591,15 @@
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<scores>scatter</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10039">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>flux</scores>
<scores>scatter-P3</scores>
<estimator>analog</estimator>
</tally>
<tally id="10040">
@ -604,17 +607,96 @@
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<scores>nu-scatter-0</scores>
<estimator>analog</estimator>
</tally>
<tally id="10041">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>scatter-0</scores>
<estimator>analog</estimator>
</tally>
<tally id="10042">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10043">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10044">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10045">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10046">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10042">
<tally id="10047">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>inverse-velocity</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10048">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10049">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10050">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10051">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<filter bins="0.0 20000000.0" type="energyout" />
<nuclides>total</nuclides>
<scores>prompt-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10052">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10053">
<filter bins="1" type="mesh" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -622,7 +704,7 @@
<scores>delayed-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10043">
<tally id="10054">
<filter bins="1" type="mesh" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -630,7 +712,7 @@
<scores>delayed-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10044">
<tally id="10055">
<filter bins="1" type="mesh" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energyout" />
@ -638,14 +720,14 @@
<scores>delayed-nu-fission</scores>
<estimator>analog</estimator>
</tally>
<tally id="10045">
<tally id="10056">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10046">
<tally id="10057">
<filter bins="1" type="mesh" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -653,7 +735,7 @@
<scores>delayed-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10047">
<tally id="10058">
<filter bins="1" type="mesh" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -661,7 +743,7 @@
<scores>delayed-nu-fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10048">
<tally id="10059">
<filter bins="1" type="mesh" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />
@ -669,14 +751,14 @@
<scores>decay-rate</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10049">
<tally id="10060">
<filter bins="1" type="mesh" />
<filter bins="0.0 20000000.0" type="energy" />
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="10050">
<tally id="10061">
<filter bins="1" type="mesh" />
<filter bins="1 2 3 4 5 6" type="delayedgroup" />
<filter bins="0.0 20000000.0" type="energy" />

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
b91cd851e23046bed070866f56e03cb95d92025dbaf4d7e12dad553fc391cd812c2c6cb7584e9a10af113d728631dd10a079717418eefd57b676b847c3261c80
107576b21fa8ed72f71ac65866e4ad1100cc62df527f6f4e6bb8a6318f3694614b6ba1c72634b2e97474a75ea1b3112dcb9b4b36e58f0417e5b04aee5d3c7570