Merge branch 'develop' into anl-ne-requests

This commit is contained in:
Paul Romano 2016-08-17 10:44:15 -05:00
commit 67c2e4c3d2
50 changed files with 19827 additions and 14760 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -27,6 +27,8 @@ Example Jupyter Notebooks
examples/mgxs-part-ii
examples/mgxs-part-iii
examples/mgxs-part-iv
examples/mdgxs-part-i
examples/mdgxs-part-ii
examples/nuclear-data
------------------------------------
@ -284,6 +286,19 @@ Multi-group Cross Sections
openmc.mgxs.TotalXS
openmc.mgxs.TransportXS
Multi-delayed-group Cross Sections
----------------------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclassinherit.rst
openmc.mgxs.MDGXS
openmc.mgxs.ChiDelayed
openmc.mgxs.DelayedNuFissionXS
openmc.mgxs.Beta
Multi-group Cross Section Libraries
-----------------------------------

View file

@ -13,10 +13,10 @@ from openmc.settings import *
from openmc.surface import *
from openmc.universe import *
from openmc.mesh import *
from openmc.mgxs_library import *
from openmc.filter import *
from openmc.trigger import *
from openmc.tallies import *
from openmc.mgxs_library import *
from openmc.cmfd import *
from openmc.executor import *
from openmc.statepoint import *

View file

@ -777,6 +777,18 @@ class Filter(object):
df.loc[:, self.type + ' low'] = lo_bins
df.loc[:, self.type + ' high'] = hi_bins
elif self.type == 'surface':
filter_bins = np.repeat(self.bins, self.stride)
tile_factor = data_size / len(filter_bins)
filter_bins = np.tile(filter_bins, tile_factor)
filter_bins = [x if x != 1 else 'x-min' for x in filter_bins]
filter_bins = [x if x != 2 else 'x-max' for x in filter_bins]
filter_bins = [x if x != 3 else 'y-min' for x in filter_bins]
filter_bins = [x if x != 4 else 'y-max' for x in filter_bins]
filter_bins = [x if x != 5 else 'z-min' for x in filter_bins]
filter_bins = [x if x != 6 else 'z-max' for x in filter_bins]
df = pd.concat([df, pd.DataFrame({self.type : filter_bins})])
# universe, material, surface, cell, and cellborn filters
else:
filter_bins = np.repeat(self.bins, self.stride)

View file

@ -1,3 +1,4 @@
from openmc.mgxs.groups import EnergyGroups
from openmc.mgxs.library import Library
from openmc.mgxs.mgxs import *
from openmc.mgxs.mdgxs import *

View file

@ -11,6 +11,7 @@ import numpy as np
import openmc
import openmc.mgxs
import openmc.checkvalue as cv
from openmc.tallies import ESTIMATOR_TYPES
if sys.version_info[0] >= 3:
@ -18,17 +19,18 @@ if sys.version_info[0] >= 3:
class Library(object):
"""A multi-group cross section library for some energy group structure.
"""A multi-energy-group and multi-delayed-group cross section library for
some energy group structure.
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 deterministic neutronics calculations.
This class helps automate the generation of MGXS objects for some energy
group structure and domain type. The Library serves as a collection for
MGXS objects with routines to automate the initialization of tallies for
input files, the loading of tally data from statepoint files, data storage,
energy group condensation and more.
This class helps automate the generation of MGXS and MDGXS objects for some
energy group structure and domain type. The Library serves as a collection
for MGXS and MDGXS objects with routines to automate the initialization of
tallies for input files, the loading of tally data from statepoint files,
data storage, energy group condensation and more.
Parameters
----------
@ -39,7 +41,7 @@ class Library(object):
mgxs_types : Iterable of str
The types of cross sections in the library (e.g., ['total', 'scatter'])
name : str, optional
Name of the multi-group cross section. library Used as a label to
Name of the multi-group cross section library. Used as a label to
identify tallies in OpenMC 'tallies.xml' file.
Attributes
@ -64,6 +66,11 @@ class Library(object):
The highest legendre moment in the scattering matrices (default is 0)
energy_groups : openmc.mgxs.EnergyGroups
Energy group structure for energy condensation
delayed_groups : list of int
Delayed groups to filter out the xs
estimator : str or None
The tally estimator used to compute multi-group cross sections. If None,
the default for each MGXS type is used.
tally_trigger : openmc.Trigger
An (optional) tally precision trigger given to each tally used to
compute the cross section
@ -95,6 +102,7 @@ class Library(object):
self._domain_type = None
self._domains = 'all'
self._energy_groups = None
self._delayed_groups = None
self._correction = 'P0'
self._legendre_order = 0
self._tally_trigger = None
@ -102,6 +110,7 @@ class Library(object):
self._sp_filename = None
self._keff = None
self._sparse = False
self._estimator = None
self.name = name
self.openmc_geometry = openmc_geometry
@ -126,6 +135,7 @@ class Library(object):
clone._correction = self.correction
clone._legendre_order = self.legendre_order
clone._energy_groups = copy.deepcopy(self.energy_groups, memo)
clone._delayed_groups = copy.deepcopy(self.delayed_groups, memo)
clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo)
clone._all_mgxs = copy.deepcopy(self.all_mgxs)
clone._sp_filename = self._sp_filename
@ -194,6 +204,10 @@ class Library(object):
def energy_groups(self):
return self._energy_groups
@property
def delayed_groups(self):
return self._delayed_groups
@property
def correction(self):
return self._correction
@ -206,10 +220,21 @@ class Library(object):
def tally_trigger(self):
return self._tally_trigger
@property
def estimator(self):
return self._estimator
@property
def num_groups(self):
return self.energy_groups.num_groups
@property
def num_delayed_groups(self):
if self.delayed_groups == None:
return 0
else:
return len(self.delayed_groups)
@property
def all_mgxs(self):
return self._all_mgxs
@ -239,22 +264,33 @@ class Library(object):
@mgxs_types.setter
def mgxs_types(self, mgxs_types):
all_mgxs_types = openmc.mgxs.MGXS_TYPES + openmc.mgxs.MDGXS_TYPES
if mgxs_types == 'all':
self._mgxs_types = openmc.mgxs.MGXS_TYPES
self._mgxs_types = all_mgxs_types
else:
cv.check_iterable_type('mgxs_types', mgxs_types, basestring)
for mgxs_type in mgxs_types:
cv.check_value('mgxs_type', mgxs_type, openmc.mgxs.MGXS_TYPES)
cv.check_value('mgxs_type', mgxs_type, all_mgxs_types)
self._mgxs_types = mgxs_types
@by_nuclide.setter
def by_nuclide(self, by_nuclide):
cv.check_type('by_nuclide', by_nuclide, bool)
if by_nuclide == True and self.domain_type == 'mesh':
raise ValueError('Unable to create MGXS library by nuclide with '
'mesh domain')
self._by_nuclide = by_nuclide
@domain_type.setter
def domain_type(self, domain_type):
cv.check_value('domain type', domain_type, openmc.mgxs.DOMAIN_TYPES)
if self.by_nuclide == True and domain_type == 'mesh':
raise ValueError('Unable to create MGXS library by nuclide with '
'mesh domain')
self._domain_type = domain_type
@domains.setter
@ -298,6 +334,23 @@ class Library(object):
cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups)
self._energy_groups = energy_groups
@delayed_groups.setter
def delayed_groups(self, delayed_groups):
if delayed_groups != None:
cv.check_type('delayed groups', delayed_groups, list, int)
cv.check_greater_than('num delayed groups', len(delayed_groups), 0)
# Check that the groups are within [1, MAX_DELAYED_GROUPS]
for group in delayed_groups:
cv.check_greater_than('delayed group', group, 0)
cv.check_less_than('delayed group', group,
openmc.mgxs.MAX_DELAYED_GROUPS,
equality=True)
self._delayed_groups = delayed_groups
@correction.setter
def correction(self, correction):
cv.check_value('correction', correction, ('P0', None))
@ -327,6 +380,11 @@ class Library(object):
cv.check_type('tally trigger', tally_trigger, openmc.Trigger)
self._tally_trigger = tally_trigger
@estimator.setter
def estimator(self, estimator):
cv.check_value('estimator', estimator, ESTIMATOR_TYPES)
self._estimator = estimator
@sparse.setter
def sparse(self, sparse):
"""Convert tally data from NumPy arrays to SciPy list of lists (LIL)
@ -363,14 +421,23 @@ class Library(object):
for domain in self.domains:
self.all_mgxs[domain.id] = OrderedDict()
for mgxs_type in self.mgxs_types:
mgxs = openmc.mgxs.MGXS.get_mgxs(mgxs_type, name=self.name)
if mgxs_type in openmc.mgxs.MDGXS_TYPES:
mgxs = openmc.mgxs.MDGXS.get_mgxs(mgxs_type, name=self.name)
else:
mgxs = openmc.mgxs.MGXS.get_mgxs(mgxs_type, name=self.name)
mgxs.domain = domain
mgxs.domain_type = self.domain_type
mgxs.energy_groups = self.energy_groups
mgxs.by_nuclide = self.by_nuclide
if self.estimator is not None:
mgxs.estimator = self.estimator
if mgxs_type in openmc.mgxs.MDGXS_TYPES:
mgxs.delayed_groups = self.delayed_groups
# If a tally trigger was specified, add it to the MGXS
if self.tally_trigger:
if self.tally_trigger is not None:
mgxs.tally_trigger = self.tally_trigger
# Specify whether to use a transport ('P0') correction
@ -460,7 +527,7 @@ class Library(object):
----------
domain : Material or Cell or Universe or Integral
The material, cell, or universe object of interest (or its ID)
mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission'}
mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission', 'delayed-nu-fission', 'chi-delayed', 'beta'}
The type of multi-group cross section object to return
Returns
@ -763,7 +830,7 @@ class Library(object):
Parameters
----------
domain : openmc.Material or openmc.Cell or openmc.Universe
domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh
The domain for spatial homogenization
xsdata_name : str
Name to apply to the "xsdata" entry produced by this method
@ -811,7 +878,7 @@ class Library(object):
"""
cv.check_type('domain', domain, (openmc.Material, openmc.Cell,
openmc.Cell))
openmc.Cell, openmc.Mesh))
cv.check_type('xsdata_name', xsdata_name, basestring)
cv.check_type('nuclide', nuclide, basestring)
cv.check_value('xs_type', xs_type, ['macro', 'micro'])

1573
openmc/mgxs/mdgxs.py Normal file

File diff suppressed because it is too large Load diff

View file

@ -13,6 +13,7 @@ import numpy as np
import openmc
import openmc.checkvalue as cv
from openmc.tallies import ESTIMATOR_TYPES
from openmc.mgxs import EnergyGroups
if sys.version_info[0] >= 3:
@ -39,7 +40,6 @@ MGXS_TYPES = ['total',
'inverse-velocity',
'prompt-nu-fission']
# Supported domain types
DOMAIN_TYPES = ['cell',
'distribcell',
@ -102,7 +102,7 @@ class MGXS(object):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section
@ -144,11 +144,11 @@ class MGXS(object):
def __init__(self, domain=None, domain_type=None,
energy_groups=None, by_nuclide=False, name=''):
self._name = ''
self._rxn_type = None
self._by_nuclide = None
self._nuclides = None
self._estimator = 'tracklength'
self._domain = None
self._domain_type = None
self._energy_groups = None
@ -160,6 +160,7 @@ class MGXS(object):
self._loaded_sp = False
self._derived = False
self._hdf5_key = None
self._valid_estimators = ESTIMATOR_TYPES
self.name = name
self.by_nuclide = by_nuclide
@ -250,7 +251,7 @@ class MGXS(object):
@property
def estimator(self):
return 'tracklength'
return self._estimator
@property
def tallies(self):
@ -368,6 +369,11 @@ class MGXS(object):
cv.check_iterable_type('nuclides', nuclides, basestring)
self._nuclides = nuclides
@estimator.setter
def estimator(self, estimator):
cv.check_value('estimator', estimator, self._valid_estimators)
self._estimator = estimator
@domain.setter
def domain(self, domain):
cv.check_type('domain', domain, _DOMAINS)
@ -710,11 +716,13 @@ class MGXS(object):
def get_xs(self, groups='all', subdomains='all', nuclides='all',
xs_type='macro', order_groups='increasing',
value='mean', **kwargs):
value='mean', squeeze=True, **kwargs):
r"""Returns an array of multi-group cross sections.
This method constructs a 2D NumPy array for the requested multi-group
cross section data data for one or more energy groups and subdomains.
This method constructs a 3D NumPy array for the requested
multi-group cross section data for one or more subdomains
(1st dimension), energy groups (2nd dimension), and nuclides
(3rd dimension).
Parameters
----------
@ -736,6 +744,9 @@ class MGXS(object):
Defaults to 'increasing'.
value : {'mean', 'std_dev', 'rel_err'}
A string for the type of value to return. Defaults to 'mean'.
squeeze : bool
A boolean representing whether to eliminate the extra dimensions
of the multi-dimensional array to be returned. Defaults to True.
Returns
-------
@ -806,25 +817,29 @@ class MGXS(object):
xs /= densities[np.newaxis, :, np.newaxis]
xs[np.isnan(xs)] = 0.0
# Eliminate the trivial score dimension
xs = np.squeeze(xs, axis=len(xs.shape) - 1)
xs = np.nan_to_num(xs)
if groups == 'all':
num_groups = self.num_groups
else:
num_groups = len(groups)
# Reshape tally data array with separate axes for domain and energy
num_subdomains = int(xs.shape[0] / num_groups)
new_shape = (num_subdomains, num_groups) + xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Reverse data if user requested increasing energy groups since
# tally data is stored in order of increasing energies
if order_groups == 'increasing':
if groups == 'all':
num_groups = self.num_groups
else:
num_groups = len(groups)
# Reshape tally data array with separate axes for domain and energy
num_subdomains = int(xs.shape[0] / num_groups)
new_shape = (num_subdomains, num_groups) + xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Reverse energies to align with increasing energy groups
xs = xs[:, ::-1, :]
# Eliminate trivial dimensions
xs = np.squeeze(xs)
xs = np.atleast_1d(xs)
if squeeze:
xs = np.squeeze(xs)
xs = np.atleast_1d(xs)
return xs
def get_condensed_xs(self, coarse_groups):
@ -1337,8 +1352,6 @@ class MGXS(object):
std_dev = self.get_xs(subdomains=[subdomain], nuclides=[nuclide],
xs_type=xs_type, value='std_dev',
row_column=row_column)
average = average.squeeze()
std_dev = std_dev.squeeze()
# Add MGXS results data to the HDF5 group
nuclide_group.require_dataset('average', dtype=np.float64,
@ -1504,15 +1517,14 @@ class MGXS(object):
if 'energy low [MeV]' in df and 'energyout low [MeV]' in df:
df.rename(columns={'energy low [MeV]': 'group in'},
inplace=True)
in_groups = np.tile(all_groups, self.num_subdomains)
in_groups = np.repeat(in_groups, df.shape[0] / in_groups.size)
in_groups = np.tile(all_groups, int(self.num_subdomains))
in_groups = np.repeat(in_groups, int(df.shape[0] / in_groups.size))
df['group in'] = in_groups
del df['energy high [MeV]']
df.rename(columns={'energyout low [MeV]': 'group out'},
inplace=True)
out_groups = np.repeat(all_groups, self.xs_tally.num_scores)
out_groups = np.tile(out_groups, df.shape[0] / out_groups.size)
out_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size))
df['group out'] = out_groups
del df['energyout high [MeV]']
columns = ['group in', 'group out']
@ -1520,14 +1532,14 @@ class MGXS(object):
elif 'energyout low [MeV]' in df:
df.rename(columns={'energyout low [MeV]': 'group out'},
inplace=True)
in_groups = np.tile(all_groups, self.num_subdomains)
in_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size))
df['group out'] = in_groups
del df['energyout high [MeV]']
columns = ['group out']
elif 'energy low [MeV]' in df:
df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True)
in_groups = np.tile(all_groups, self.num_subdomains)
in_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size))
df['group in'] = in_groups
del df['energy high [MeV]']
columns = ['group in']
@ -1562,6 +1574,7 @@ class MGXS(object):
(mesh_str, 'z')] + columns, inplace=True)
else:
df.sort_values(by=[self.domain_type] + columns, inplace=True)
return df
def get_units(self, xs_type='macro'):
@ -1636,7 +1649,7 @@ class MatrixMGXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section
@ -1685,18 +1698,16 @@ class MatrixMGXS(MGXS):
return [[energy], [energy, energyout]]
@property
def estimator(self):
return 'analog'
def get_xs(self, in_groups='all', out_groups='all',
subdomains='all', nuclides='all',
xs_type='macro', order_groups='increasing',
row_column='inout', value='mean', **kwargs):
row_column='inout', value='mean', squeeze=True, **kwargs):
"""Returns an array of multi-group cross sections.
This method constructs a 2D NumPy array for the requested multi-group
matrix data for one or more energy groups and subdomains.
This method constructs a 4D NumPy array for the requested
multi-group cross section data for one or more subdomains
(1st dimension), energy groups in (2nd dimension), energy groups out
(3rd dimension), and nuclides (4th dimension).
Parameters
----------
@ -1725,6 +1736,9 @@ class MatrixMGXS(MGXS):
Defaults to 'inout'.
value : {'mean', 'std_dev', 'rel_err'}
A string for the type of value to return. Defaults to 'mean'.
squeeze : bool
A boolean representing whether to eliminate the extra dimensions
of the multi-dimensional array to be returned. Defaults to True.
Returns
-------
@ -1796,8 +1810,6 @@ class MatrixMGXS(MGXS):
filter_bins=filter_bins,
nuclides=query_nuclides, value=value)
xs = np.nan_to_num(xs)
# Divide by atom number densities for microscopic cross sections
if xs_type == 'micro':
if self.by_nuclide:
@ -1808,33 +1820,36 @@ class MatrixMGXS(MGXS):
xs /= densities[np.newaxis, :, np.newaxis]
xs[np.isnan(xs)] = 0.0
# Eliminate the trivial score dimension
xs = np.squeeze(xs, axis=len(xs.shape) - 1)
xs = np.nan_to_num(xs)
if in_groups == 'all':
num_in_groups = self.num_groups
else:
num_in_groups = len(in_groups)
if out_groups == 'all':
num_out_groups = self.num_groups
else:
num_out_groups = len(out_groups)
# Reshape tally data array with separate axes for domain and energy
num_subdomains = int(xs.shape[0] / (num_in_groups * num_out_groups))
new_shape = (num_subdomains, num_in_groups, num_out_groups)
new_shape += xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Transpose the matrix if requested by user
if row_column == 'outin':
xs = np.swapaxes(xs, 1, 2)
# Reverse data if user requested increasing energy groups since
# tally data is stored in order of increasing energies
if order_groups == 'increasing':
if in_groups == 'all':
num_in_groups = self.num_groups
else:
num_in_groups = len(in_groups)
if out_groups == 'all':
num_out_groups = self.num_groups
else:
num_out_groups = len(out_groups)
# Reshape tally data array with separate axes for domain and energy
num_subdomains = int(xs.shape[0] /
(num_in_groups * num_out_groups))
new_shape = (num_subdomains, num_in_groups, num_out_groups)
new_shape += xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Transpose the matrix if requested by user
if row_column == 'outin':
xs = np.swapaxes(xs, 1, 2)
# Reverse energies to align with increasing energy groups
xs = xs[:, ::-1, ::-1, :]
# Eliminate trivial dimensions
if squeeze:
xs = np.squeeze(xs)
xs = np.atleast_2d(xs)
@ -2066,7 +2081,7 @@ class TotalXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -2184,7 +2199,7 @@ class TransportXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -2227,6 +2242,8 @@ class TransportXS(MGXS):
super(TransportXS, self).__init__(domain, domain_type,
groups, by_nuclide, name)
self._rxn_type = 'transport'
self._estimator = 'analog'
self._valid_estimators = ['analog']
@property
def scores(self):
@ -2239,10 +2256,6 @@ class TransportXS(MGXS):
energyout_filter = openmc.Filter('energyout', group_edges)
return [[energy_filter], [energy_filter], [energyout_filter]]
@property
def estimator(self):
return 'analog'
@property
def rxn_rate_tally(self):
if self._rxn_rate_tally is None:
@ -2314,7 +2327,7 @@ class NuTransportXS(TransportXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -2435,7 +2448,7 @@ class AbsorptionXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -2452,7 +2465,8 @@ class AbsorptionXS(MGXS):
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).
tally data from a statepoint file) and the number of mesh cells for
'mesh' domain types.
num_nuclides : int
The number of nuclides for which the multi-group cross section is
being tracked. This is unity if the by_nuclide attribute is False.
@ -2551,7 +2565,7 @@ class CaptureXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -2673,7 +2687,7 @@ class FissionXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -2784,7 +2798,7 @@ class NuFissionXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -2828,7 +2842,6 @@ class NuFissionXS(MGXS):
groups, by_nuclide, name)
self._rxn_type = 'nu-fission'
class KappaFissionXS(MGXS):
r"""A recoverable fission energy production rate multi-group cross section.
@ -2900,7 +2913,7 @@ class KappaFissionXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -3013,7 +3026,7 @@ class ScatterXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -3128,7 +3141,7 @@ class NuScatterXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -3171,10 +3184,8 @@ class NuScatterXS(MGXS):
super(NuScatterXS, self).__init__(domain, domain_type,
groups, by_nuclide, name)
self._rxn_type = 'nu-scatter'
@property
def estimator(self):
return 'analog'
self._estimator = 'analog'
self._valid_estimators = ['analog']
class ScatterMatrixXS(MatrixMGXS):
@ -3262,7 +3273,7 @@ class ScatterMatrixXS(MatrixMGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -3308,6 +3319,8 @@ class ScatterMatrixXS(MatrixMGXS):
self._correction = 'P0'
self._legendre_order = 0
self._hdf5_key = 'scatter matrix'
self._estimator = 'analog'
self._valid_estimators = ['analog']
def __deepcopy__(self, memo):
clone = super(ScatterMatrixXS, self).__deepcopy__(memo)
@ -3511,11 +3524,13 @@ class ScatterMatrixXS(MatrixMGXS):
def get_xs(self, in_groups='all', out_groups='all',
subdomains='all', nuclides='all', moment='all',
xs_type='macro', order_groups='increasing',
row_column='inout', value='mean'):
row_column='inout', value='mean', squeeze=True):
r"""Returns an array of multi-group cross sections.
This method constructs a 2D NumPy array for the requested scattering
matrix data data for one or more energy groups and subdomains.
This method constructs a 5D NumPy array for the requested
multi-group cross section data for one or more subdomains
(1st dimension), energy groups in (2nd dimension), energy groups out
(3rd dimension), nuclides (4th dimension), and moments (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
@ -3551,6 +3566,9 @@ class ScatterMatrixXS(MatrixMGXS):
Defaults to 'inout'.
value : {'mean', 'std_dev', 'rel_err'}
A string for the type of value to return. Defaults to 'mean'.
squeeze : bool
A boolean representing whether to eliminate the extra dimensions
of the multi-dimensional array to be returned. Defaults to True.
Returns
-------
@ -3629,8 +3647,6 @@ class ScatterMatrixXS(MatrixMGXS):
filter_bins=filter_bins,
nuclides=query_nuclides, value=value)
xs = np.nan_to_num(xs)
# Divide by atom number densities for microscopic cross sections
if xs_type == 'micro':
if self.by_nuclide:
@ -3641,32 +3657,35 @@ class ScatterMatrixXS(MatrixMGXS):
xs /= densities[np.newaxis, :, np.newaxis]
xs[np.isnan(xs)] = 0.0
# Convert and nans to zero
xs = np.nan_to_num(xs)
if in_groups == 'all':
num_in_groups = self.num_groups
else:
num_in_groups = len(in_groups)
if out_groups == 'all':
num_out_groups = self.num_groups
else:
num_out_groups = len(out_groups)
# Reshape tally data array with separate axes for domain and energy
num_subdomains = int(xs.shape[0] / (num_in_groups * num_out_groups))
new_shape = (num_subdomains, num_in_groups, num_out_groups)
new_shape += xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Transpose the scattering matrix if requested by user
if row_column == 'outin':
xs = np.swapaxes(xs, 1, 2)
# Reverse data if user requested increasing energy groups since
# tally data is stored in order of increasing energies
if order_groups == 'increasing':
if in_groups == 'all':
num_in_groups = self.num_groups
else:
num_in_groups = len(in_groups)
if out_groups == 'all':
num_out_groups = self.num_groups
else:
num_out_groups = len(out_groups)
# Reshape tally data array with separate axes for domain and energy
num_subdomains = int(xs.shape[0] / (num_in_groups * num_out_groups))
new_shape = (num_subdomains, num_in_groups, num_out_groups)
new_shape += xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Transpose the scattering matrix if requested by user
if row_column == 'outin':
xs = np.swapaxes(xs, 1, 2)
# Reverse energies to align with increasing energy groups
xs = xs[:, ::-1, ::-1, :]
# Eliminate trivial dimensions
if squeeze:
xs = np.squeeze(xs)
xs = np.atleast_2d(xs)
@ -3723,7 +3742,7 @@ class ScatterMatrixXS(MatrixMGXS):
if self.legendre_order > 0:
# Insert a column corresponding to the Legendre moments
moments = ['P{}'.format(i) for i in range(self.legendre_order+1)]
moments = np.tile(moments, df.shape[0] / len(moments))
moments = np.tile(moments, int(df.shape[0] / len(moments)))
df['moment'] = moments
# Place the moment column before the mean column
@ -3924,7 +3943,7 @@ class NuScatterMatrixXS(ScatterMatrixXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -4046,7 +4065,7 @@ class MultiplicityMatrixXS(MatrixMGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -4089,6 +4108,8 @@ class MultiplicityMatrixXS(MatrixMGXS):
super(MultiplicityMatrixXS, self).__init__(domain, domain_type, groups,
by_nuclide, name)
self._rxn_type = 'multiplicity matrix'
self._estimator = 'analog'
self._valid_estimators = ['analog']
@property
def scores(self):
@ -4193,7 +4214,7 @@ class NuFissionMatrixXS(MatrixMGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -4237,6 +4258,8 @@ class NuFissionMatrixXS(MatrixMGXS):
groups, by_nuclide, name)
self._rxn_type = 'nu-fission'
self._hdf5_key = 'nu-fission matrix'
self._estimator = 'analog'
self._valid_estimators = ['analog']
class Chi(MGXS):
@ -4308,7 +4331,7 @@ class Chi(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -4350,6 +4373,8 @@ class Chi(MGXS):
groups=None, by_nuclide=False, name=''):
super(Chi, self).__init__(domain, domain_type, groups, by_nuclide, name)
self._rxn_type = 'chi'
self._estimator = 'analog'
self._valid_estimators = ['analog']
@property
def scores(self):
@ -4367,10 +4392,6 @@ class Chi(MGXS):
def tally_keys(self):
return ['nu-fission-in', 'nu-fission-out']
@property
def estimator(self):
return 'analog'
@property
def rxn_rate_tally(self):
if self._rxn_rate_tally is None:
@ -4507,11 +4528,13 @@ class Chi(MGXS):
def get_xs(self, groups='all', subdomains='all', nuclides='all',
xs_type='macro', order_groups='increasing',
value='mean', **kwargs):
value='mean', squeeze=True, **kwargs):
"""Returns an array of the fission spectrum.
This method constructs a 2D NumPy array for the requested multi-group
cross section data data for one or more energy groups and subdomains.
This method constructs a 3D NumPy array for the requested
multi-group cross section data for one or more subdomains
(1st dimension), energy groups (2nd dimension), and nuclides
(3rd dimension).
Parameters
----------
@ -4533,6 +4556,9 @@ class Chi(MGXS):
Defaults to 'increasing'.
value : {'mean', 'std_dev', 'rel_err'}
A string for the type of value to return. Defaults to 'mean'.
squeeze : bool
A boolean representing whether to eliminate the extra dimensions
of the multi-dimensional array to be returned. Defaults to True.
Returns
-------
@ -4624,27 +4650,29 @@ class Chi(MGXS):
xs = self.xs_tally.get_values(filters=filters,
filter_bins=filter_bins, value=value)
# Eliminate the trivial score dimension
xs = np.squeeze(xs, axis=len(xs.shape) - 1)
xs = np.nan_to_num(xs)
# Reshape tally data array with separate axes for domain and energy
if groups == 'all':
num_groups = self.num_groups
else:
num_groups = len(groups)
num_subdomains = int(xs.shape[0] / num_groups)
new_shape = (num_subdomains, num_groups) + xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Reverse data if user requested increasing energy groups since
# tally data is stored in order of increasing energies
if order_groups == 'increasing':
# Reshape tally data array with separate axes for domain and energy
if groups == 'all':
num_groups = self.num_groups
else:
num_groups = len(groups)
num_subdomains = int(xs.shape[0] / num_groups)
new_shape = (num_subdomains, num_groups) + xs.shape[1:]
xs = np.reshape(xs, new_shape)
# Reverse energies to align with increasing energy groups
xs = xs[:, ::-1, :]
# Eliminate trivial dimensions
if squeeze:
xs = np.squeeze(xs)
xs = np.atleast_1d(xs)
xs = np.nan_to_num(xs)
return xs
def get_pandas_dataframe(self, groups='all', nuclides='all',
@ -4753,7 +4781,7 @@ class ChiPrompt(Chi):
\langle \nu^p \sigma_{f,g' \rightarrow g} \phi \rangle &= \int_{r \in V}
dr \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \;
\chi(E) \nu^p \sigma_f (r, E') \psi(r, E', \Omega')\\
\chi(E)^p \nu^p \sigma_f (r, E') \psi(r, E', \Omega')\\
\langle \nu^p \sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi}
d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu^p \sigma_f (r,
E') \psi(r, E', \Omega') \\
@ -4798,7 +4826,7 @@ class ChiPrompt(Chi):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
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
@ -4913,7 +4941,7 @@ class InverseVelocity(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys
@ -4930,7 +4958,8 @@ class InverseVelocity(MGXS):
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).
tally data from a statepoint file) and the number of mesh cells for
'mesh' domain types.
num_nuclides : int
The number of nuclides for which the multi-group cross section is
being tracked. This is unity if the by_nuclide attribute is False.
@ -5047,7 +5076,7 @@ class PromptNuFissionXS(MGXS):
tally_keys : list of str
The keys into the tallies dictionary for each tally used to compute
the multi-group cross section
estimator : {'tracklength', 'analog'}
estimator : {'tracklength', 'collision', 'analog'}
The tally estimator used to compute the multi-group cross section
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section. The keys

View file

@ -701,7 +701,7 @@ class StatePoint(object):
if tally_filter.type == 'surface':
surface_ids = []
for bin in tally_filter.bins:
surface_ids.append(summary.surfaces[bin].id)
surface_ids.append(bin)
tally_filter.bins = surface_ids
if tally_filter.type in ['cell', 'distribcell']:

View file

@ -40,6 +40,9 @@ _SCORE_CLASSES = (basestring, CrossScore, AggregateScore)
_NUCLIDE_CLASSES = (basestring, Nuclide, CrossNuclide, AggregateNuclide)
_FILTER_CLASSES = (Filter, CrossFilter, AggregateFilter)
# Valid types of estimators
ESTIMATOR_TYPES = ['tracklength', 'collision', 'analog']
def reset_auto_tally_id():
"""Reset counter for auto-generated tally IDs."""
@ -387,8 +390,7 @@ class Tally(object):
@estimator.setter
def estimator(self, estimator):
cv.check_value('estimator', estimator,
['analog', 'tracklength', 'collision'])
cv.check_value('estimator', estimator, ESTIMATOR_TYPES)
self._estimator = estimator
@triggers.setter
@ -795,6 +797,9 @@ class Tally(object):
else:
no_scores_match = False
if score == 'current' and score not in self.scores:
return False
# Nuclides cannot be specified on 'flux' scores
if 'flux' in self.scores or 'flux' in other.scores:
if self.nuclides != other.nuclides:
@ -2197,8 +2202,8 @@ class Tally(object):
"""
cv.check_type('filter1', filter1, (Filter, CrossFilter, AggregateFilter))
cv.check_type('filter2', filter2, (Filter, CrossFilter, AggregateFilter))
cv.check_type('filter1', filter1, _FILTER_CLASSES)
cv.check_type('filter2', filter2, _FILTER_CLASSES)
# Check that the filters exist in the tally and are not the same
if filter1 == filter2:
@ -2280,8 +2285,8 @@ class Tally(object):
'since it does not contain any results.'.format(self.id)
raise ValueError(msg)
cv.check_type('nuclide1', nuclide1, Nuclide)
cv.check_type('nuclide2', nuclide2, Nuclide)
cv.check_type('nuclide1', nuclide1, _NUCLIDE_CLASSES)
cv.check_type('nuclide2', nuclide2, _NUCLIDE_CLASSES)
# Check that the nuclides exist in the tally and are not the same
if nuclide1 == nuclide2:
@ -3318,7 +3323,7 @@ class Tally(object):
"""
cv.check_type('new_filter', new_filter, Filter)
cv.check_type('new_filter', new_filter, _FILTER_CLASSES)
if new_filter in self.filters:
msg = 'Unable to diagonalize Tally ID="{0}" which already ' \

View file

@ -51,9 +51,9 @@ contains
subroutine compute_xs()
use constants, only: FILTER_MESH, FILTER_ENERGYIN, FILTER_ENERGYOUT, &
FILTER_SURFACE, IN_RIGHT, OUT_RIGHT, IN_FRONT, &
OUT_FRONT, IN_TOP, OUT_TOP, CMFD_NOACCEL, ZERO, &
ONE, TINY_BIT
FILTER_SURFACE, OUT_LEFT, OUT_RIGHT, OUT_BACK, &
OUT_FRONT, OUT_BOTTOM, OUT_TOP, CMFD_NOACCEL, &
ZERO, ONE, TINY_BIT
use error, only: fatal_error
use global, only: cmfd, n_cmfd_tallies, cmfd_tallies, meshes,&
matching_bins
@ -236,23 +236,33 @@ contains
! Left surface
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i-1, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_RIGHT
(/ i, j, k /))
matching_bins(i_filter_surf) = OUT_LEFT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t%stride) + 1 ! outgoing
cmfd % current(1,h,i,j,k) = t % results(1,score_index) % sum
matching_bins(i_filter_surf) = OUT_RIGHT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(2,h,i,j,k) = t % results(1,score_index) % sum
if (i > 1) then
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i-1, j, k /))
matching_bins(i_filter_surf) = OUT_RIGHT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(2,h,i,j,k) = t % results(1,score_index) % sum
end if
! Right surface
if (i < nx) then
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i+1, j, k /) )
matching_bins(i_filter_surf) = OUT_LEFT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(3,h,i,j,k) = t % results(1,score_index) % sum
end if
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_RIGHT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(3,h,i,j,k) = t % results(1,score_index) % sum
(/ i, j, k /) )
matching_bins(i_filter_surf) = OUT_RIGHT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! outgoing
@ -260,23 +270,33 @@ contains
! Back surface
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j-1, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_FRONT
(/ i, j, k /))
matching_bins(i_filter_surf) = OUT_BACK
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! outgoing
cmfd % current(5,h,i,j,k) = t % results(1,score_index) % sum
matching_bins(i_filter_surf) = OUT_FRONT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(6,h,i,j,k) = t % results(1,score_index) % sum
if (j > 1) then
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j-1, k /))
matching_bins(i_filter_surf) = OUT_FRONT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(6,h,i,j,k) = t % results(1,score_index) % sum
end if
! Front surface
if (j < ny) then
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j+1, k /))
matching_bins(i_filter_surf) = OUT_BACK
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(7,h,i,j,k) = t % results(1,score_index) % sum
end if
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_FRONT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(7,h,i,j,k) = t % results(1,score_index) % sum
(/ i, j, k /))
matching_bins(i_filter_surf) = OUT_FRONT
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! outgoing
@ -284,23 +304,33 @@ contains
! Bottom surface
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j, k-1 /) + 1, .true.)
matching_bins(i_filter_surf) = IN_TOP
(/ i, j, k /))
matching_bins(i_filter_surf) = OUT_BOTTOM
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! outgoing
cmfd % current(9,h,i,j,k) = t % results(1,score_index) % sum
matching_bins(i_filter_surf) = OUT_TOP
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(10,h,i,j,k) = t % results(1,score_index) % sum
if (k > 1) then
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j, k-1 /))
matching_bins(i_filter_surf) = OUT_TOP
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(10,h,i,j,k) = t % results(1,score_index) % sum
end if
! Top surface
if (k < nz) then
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j, k+1 /))
matching_bins(i_filter_surf) = OUT_BOTTOM
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(11,h,i,j,k) = t % results(1,score_index) % sum
end if
matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, &
(/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_TOP
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! incoming
cmfd % current(11,h,i,j,k) = t % results(1,score_index) % sum
(/ i, j, k /))
matching_bins(i_filter_surf) = OUT_TOP
score_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1 ! outgoing

View file

@ -534,10 +534,10 @@ contains
filt % n_bins = 2 * m % n_dimension
allocate(filt % surfaces(2 * m % n_dimension))
if (m % n_dimension == 2) then
filt % surfaces = (/ IN_RIGHT, OUT_RIGHT, IN_FRONT, OUT_FRONT /)
filt % surfaces = (/ OUT_LEFT, OUT_RIGHT, OUT_BACK, OUT_FRONT /)
elseif (m % n_dimension == 3) then
filt % surfaces = (/ IN_RIGHT, OUT_RIGHT, IN_FRONT, OUT_FRONT, &
IN_TOP, OUT_TOP /)
filt % surfaces = (/ OUT_LEFT, OUT_RIGHT, OUT_BACK, OUT_FRONT, &
OUT_BOTTOM, OUT_TOP /)
end if
end select
t % find_filter(FILTER_SURFACE) = n_filters

View file

@ -359,12 +359,12 @@ module constants
! Tally surface current directions
integer, parameter :: &
IN_RIGHT = 1, &
OUT_RIGHT = 2, &
IN_FRONT = 3, &
OUT_FRONT = 4, &
IN_TOP = 5, &
OUT_TOP = 6
OUT_LEFT = 1, & ! x min
OUT_RIGHT = 2, & ! x max
OUT_BACK = 3, & ! y min
OUT_FRONT = 4, & ! y max
OUT_BOTTOM = 5, & ! z min
OUT_TOP = 6 ! z max
! Tally trigger types and threshold
integer, parameter :: &

View file

@ -3047,18 +3047,18 @@ contains
// " specified on tally " // trim(to_str(t % id)))
end if
! Determine number of bins -- this is assuming that the tally is
! a volume tally and not a surface current tally. If it is a
! surface current tally, the number of bins will get reset later
! Determine number of bins
filt % n_bins = product(m % dimension)
! Store the index of the mesh
filt % mesh = i_mesh
end select
! Set the filter index in the tally find_filter array
t % find_filter(FILTER_MESH) = j
case ('energy')
! Allocate and declare the filter type
allocate(EnergyFilter::t % filters(j) % obj)
select type (filt => t % filters(j) % obj)
@ -3676,10 +3676,6 @@ contains
&same tally as surface currents")
end if
! Since the number of bins for the mesh filter was already set
! assuming it was a volume tally, we need to adjust the number
! of bins
! Get index of mesh filter
k = t % find_filter(FILTER_MESH)
@ -3689,19 +3685,6 @@ contains
&filter.")
end if
! Declare the type of the mesh filter
select type(filt => t % filters(k) % obj)
type is (MeshFilter)
! Get pointer to mesh
i_mesh = filt % mesh
m => meshes(i_mesh)
! We need to increase the dimension by one since we also need
! currents coming into and out of the boundary mesh cells.
filt % n_bins = product(m % dimension + 1)
end select
! Copy filters to temporary array
allocate(filters(size(t % filters) + 1))
filters(1:size(t % filters)) = t % filters
@ -3718,10 +3701,10 @@ contains
filt % n_bins = 2 * m % n_dimension
allocate(filt % surfaces(2 * m % n_dimension))
if (m % n_dimension == 2) then
filt % surfaces = (/ IN_RIGHT, OUT_RIGHT, IN_FRONT, OUT_FRONT /)
filt % surfaces = (/ OUT_LEFT, OUT_RIGHT, OUT_BACK, OUT_FRONT /)
elseif (m % n_dimension == 3) then
filt % surfaces = (/ IN_RIGHT, OUT_RIGHT, IN_FRONT, OUT_FRONT,&
IN_TOP, OUT_TOP /)
filt % surfaces = (/ OUT_LEFT, OUT_RIGHT, OUT_BACK, OUT_FRONT,&
OUT_BOTTOM, OUT_TOP /)
end if
end select
t % find_filter(FILTER_SURFACE) = size(t % filters)

View file

@ -93,30 +93,21 @@ contains
! use in a TallyObject results array
!===============================================================================
pure function mesh_indices_to_bin(m, ijk, surface_current) result(bin)
pure function mesh_indices_to_bin(m, ijk) result(bin)
type(RegularMesh), intent(in) :: m
integer, intent(in) :: ijk(:)
logical, intent(in), optional :: surface_current
integer :: bin
integer :: n_x ! number of mesh cells in x direction
integer :: n_y ! number of mesh cells in y direction
integer :: n_z ! number of mesh cells in z direction
if (present(surface_current)) then
n_y = m % dimension(2) + 1
else
n_y = m % dimension(2)
end if
n_x = m % dimension(1)
n_y = m % dimension(2)
if (m % n_dimension == 2) then
bin = (ijk(1) - 1)*n_y + ijk(2)
bin = (ijk(2) - 1)*n_x + ijk(1)
elseif (m % n_dimension == 3) then
if (present(surface_current)) then
n_z = m % dimension(3) + 1
else
n_z = m % dimension(3)
end if
bin = (ijk(1) - 1)*n_y*n_z + (ijk(2) - 1)*n_z + ijk(3)
bin = (ijk(3) - 1)*n_y*n_x + (ijk(2) - 1)*n_x + ijk(1)
end if
end function mesh_indices_to_bin
@ -131,19 +122,19 @@ contains
integer, intent(in) :: bin
integer, intent(out) :: ijk(:)
integer :: n_x ! number of mesh cells in x direction
integer :: n_y ! number of mesh cells in y direction
integer :: n_z ! number of mesh cells in z direction
n_x = m % dimension(1)
n_y = m % dimension(2)
if (m % n_dimension == 2) then
ijk(1) = (bin - 1)/n_y + 1
ijk(2) = mod(bin - 1, n_y) + 1
ijk(1) = mod(bin - 1, n_x) + 1
ijk(2) = (bin - 1)/n_x + 1
else if (m % n_dimension == 3) then
n_z = m % dimension(3)
ijk(1) = (bin - 1)/(n_y*n_z) + 1
ijk(2) = mod(bin - 1, n_y*n_z)/n_z + 1
ijk(3) = mod(bin - 1, n_z) + 1
ijk(1) = mod(bin - 1, n_x) + 1
ijk(2) = mod(bin - 1, n_x*n_y)/n_x + 1
ijk(3) = (bin - 1)/(n_x*n_y) + 1
end if
end subroutine bin_to_mesh_indices

View file

@ -1036,8 +1036,8 @@ contains
! Left Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i-1, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_RIGHT
mesh_indices_to_bin(m, (/ i, j, k /))
matching_bins(i_filter_surf) = OUT_LEFT
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
@ -1045,25 +1045,9 @@ contains
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
matching_bins(i_filter_surf) = OUT_RIGHT
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
"Incoming Current from Left", &
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
! Right Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_RIGHT
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
"Incoming Current from Right", &
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
mesh_indices_to_bin(m, (/ i, j, k /))
matching_bins(i_filter_surf) = OUT_RIGHT
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
@ -1074,8 +1058,8 @@ contains
! Back Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j-1, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_FRONT
mesh_indices_to_bin(m, (/ i, j, k /))
matching_bins(i_filter_surf) = OUT_BACK
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
@ -1083,25 +1067,9 @@ contains
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
matching_bins(i_filter_surf) = OUT_FRONT
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
"Incoming Current from Back", &
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
! Front Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_FRONT
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
"Incoming Current from Front", &
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
mesh_indices_to_bin(m, (/ i, j, k /))
matching_bins(i_filter_surf) = OUT_FRONT
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
@ -1112,8 +1080,8 @@ contains
! Bottom Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k-1 /) + 1, .true.)
matching_bins(i_filter_surf) = IN_TOP
mesh_indices_to_bin(m, (/ i, j, k /))
matching_bins(i_filter_surf) = OUT_BOTTOM
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
@ -1121,25 +1089,9 @@ contains
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
matching_bins(i_filter_surf) = OUT_TOP
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
"Incoming Current from Bottom", &
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
! Top Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_TOP
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') &
"Incoming Current from Top", &
to_str(t % results(1,filter_index) % sum), &
trim(to_str(t % results(1,filter_index) % sum_sq))
mesh_indices_to_bin(m, (/ i, j, k /))
matching_bins(i_filter_surf) = OUT_TOP
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1

View file

@ -2327,6 +2327,7 @@ contains
integer :: filter_index ! index of scoring bin
integer :: i_filter_mesh ! index of mesh filter in filters array
integer :: i_filter_surf ! index of surface filter in filters
integer :: i_filter_energy ! index of energy filter in filters
real(8) :: uvw(3) ! cosine of angle of particle
real(8) :: xyz0(3) ! starting/intermediate coordinates
real(8) :: xyz1(3) ! ending coordinates of particle
@ -2351,9 +2352,10 @@ contains
i_tally = active_current_tallies % get_item(i)
t => tallies(i_tally)
! Get index for mesh and surface filters
! Get index for mesh, surface, and energy filters
i_filter_mesh = t % find_filter(FILTER_MESH)
i_filter_surf = t % find_filter(FILTER_SURFACE)
i_filter_energy = t % find_filter(FILTER_ENERGYIN)
! Get pointer to mesh
select type(filt => t % filters(i_filter_mesh) % obj)
@ -2386,11 +2388,11 @@ contains
! Determine incoming energy bin. We need to tell the energy filter this
! is a tracklength tally so it uses the pre-collision energy.
j = t % find_filter(FILTER_ENERGYIN)
if (j > 0) then
call t % filters(i) % obj % get_next_bin(p, ESTIMATOR_TRACKLENGTH, &
& NO_BIN_FOUND, matching_bins(j), filt_score)
if (matching_bins(j) == NO_BIN_FOUND) cycle
if (i_filter_energy > 0) then
call t % filters(i_filter_energy) % obj % get_next_bin(p, &
ESTIMATOR_TRACKLENGTH, NO_BIN_FOUND, &
matching_bins(i_filter_energy), filt_score)
if (matching_bins(i_filter_energy) == NO_BIN_FOUND) cycle
end if
! =======================================================================
@ -2405,10 +2407,10 @@ contains
if (uvw(3) > 0) then
do j = ijk0(3), ijk1(3) - 1
ijk0(3) = j
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_TOP
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
!$omp atomic
@ -2417,12 +2419,12 @@ contains
end if
end do
else
do j = ijk0(3) - 1, ijk1(3), -1
do j = ijk0(3), ijk1(3) + 1, -1
ijk0(3) = j
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = IN_TOP
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_BOTTOM
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
!$omp atomic
@ -2437,10 +2439,10 @@ contains
if (uvw(2) > 0) then
do j = ijk0(2), ijk1(2) - 1
ijk0(2) = j
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_FRONT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
!$omp atomic
@ -2449,12 +2451,12 @@ contains
end if
end do
else
do j = ijk0(2) - 1, ijk1(2), -1
do j = ijk0(2), ijk1(2) + 1, -1
ijk0(2) = j
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = IN_FRONT
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_BACK
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
!$omp atomic
@ -2469,10 +2471,10 @@ contains
if (uvw(1) > 0) then
do j = ijk0(1), ijk1(1) - 1
ijk0(1) = j
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_RIGHT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
!$omp atomic
@ -2481,12 +2483,12 @@ contains
end if
end do
else
do j = ijk0(1) - 1, ijk1(1), -1
do j = ijk0(1), ijk1(1) + 1, -1
ijk0(1) = j
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = IN_RIGHT
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_LEFT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
filter_index = sum((matching_bins(1:size(t % filters)) - 1) &
* t % stride) + 1
!$omp atomic
@ -2538,67 +2540,67 @@ contains
if (uvw(1) > 0) then
! Crossing into right mesh cell -- this is treated as outgoing
! current from (i,j,k)
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_RIGHT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
end if
ijk0(1) = ijk0(1) + 1
xyz_cross(1) = xyz_cross(1) + m % width(1)
else
! Crossing into left mesh cell -- this is treated as incoming
! current in (i-1,j,k)
! Crossing into left mesh cell -- this is treated as outgoing
! current in (i,j,k)
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_LEFT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0)
end if
ijk0(1) = ijk0(1) - 1
xyz_cross(1) = xyz_cross(1) - m % width(1)
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = IN_RIGHT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
end if
end if
elseif (distance == d(2)) then
if (uvw(2) > 0) then
! Crossing into front mesh cell -- this is treated as outgoing
! current in (i,j,k)
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_FRONT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
end if
ijk0(2) = ijk0(2) + 1
xyz_cross(2) = xyz_cross(2) + m % width(2)
else
! Crossing into back mesh cell -- this is treated as incoming
! current in (i,j-1,k)
! Crossing into back mesh cell -- this is treated as outgoing
! current in (i,j,k)
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_BACK
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0)
end if
ijk0(2) = ijk0(2) - 1
xyz_cross(2) = xyz_cross(2) - m % width(2)
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = IN_FRONT
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
end if
end if
else if (distance == d(3)) then
if (uvw(3) > 0) then
! Crossing into top mesh cell -- this is treated as outgoing
! current in (i,j,k)
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_TOP
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
mesh_indices_to_bin(m, ijk0)
end if
ijk0(3) = ijk0(3) + 1
xyz_cross(3) = xyz_cross(3) + m % width(3)
else
! Crossing into bottom mesh cell -- this is treated as incoming
! current in (i,j,k-1)
! Crossing into bottom mesh cell -- this is treated as outgoing
! current in (i,j,k)
if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = OUT_BOTTOM
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0)
end if
ijk0(3) = ijk0(3) - 1
xyz_cross(3) = xyz_cross(3) - m % width(3)
if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then
matching_bins(i_filter_surf) = IN_TOP
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
end if
end if
end if

View file

@ -328,10 +328,11 @@ contains
matching_bins(i_filter_ein) = l
end if
! Left Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i-1, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_RIGHT
mesh_indices_to_bin(m, (/ i, j, k /))
! Left Surface
matching_bins(i_filter_surf) = OUT_LEFT
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
@ -343,33 +344,7 @@ contains
end if
trigger % variance = std_dev**2
matching_bins(i_filter_surf) = OUT_RIGHT
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
if (trigger % std_dev < std_dev) then
trigger % std_dev = std_dev
end if
if (trigger % rel_err < rel_err) then
trigger % rel_err = rel_err
end if
trigger % variance = trigger % std_dev**2
! Right Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_RIGHT
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
if (trigger % std_dev < std_dev) then
trigger % std_dev = std_dev
end if
if (trigger % rel_err < rel_err) then
trigger % rel_err = rel_err
end if
trigger % variance = trigger % std_dev**2
matching_bins(i_filter_surf) = OUT_RIGHT
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
@ -383,22 +358,7 @@ contains
trigger % variance = trigger % std_dev**2
! Back Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j-1, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_FRONT
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
if (trigger % std_dev < std_dev) then
trigger % std_dev = std_dev
end if
if (trigger % rel_err < rel_err) then
trigger % rel_err = rel_err
end if
trigger % variance = trigger % std_dev**2
matching_bins(i_filter_surf) = OUT_FRONT
matching_bins(i_filter_surf) = OUT_BACK
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
@ -411,20 +371,6 @@ contains
trigger % variance = trigger % std_dev**2
! Front Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_FRONT
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
if (trigger % std_dev < std_dev) then
trigger % std_dev = std_dev
end if
if (trigger % rel_err < rel_err) then
trigger % rel_err = rel_err
end if
trigger % variance = trigger % std_dev**2
matching_bins(i_filter_surf) = OUT_FRONT
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
@ -438,21 +384,7 @@ contains
trigger % variance = trigger % std_dev**2
! Bottom Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k-1 /) + 1, .true.)
matching_bins(i_filter_surf) = IN_TOP
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
if (trigger % std_dev < std_dev) then
trigger % std_dev = std_dev
end if
if (trigger % rel_err < rel_err) then
trigger % rel_err = rel_err
end if
trigger % variance = trigger % std_dev**2
matching_bins(i_filter_surf) = OUT_TOP
matching_bins(i_filter_surf) = OUT_BOTTOM
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
@ -465,20 +397,6 @@ contains
trigger % variance = trigger % std_dev**2
! Top Surface
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.)
matching_bins(i_filter_surf) = IN_TOP
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1
call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t)
if (trigger % std_dev < std_dev) then
trigger % std_dev = std_dev
end if
if (trigger % rel_err < rel_err) then
trigger % rel_err = rel_err
end if
trigger % variance = trigger % std_dev**2
matching_bins(i_filter_surf) = OUT_TOP
filter_index = &
sum((matching_bins(1:size(t % filters)) - 1) * t % stride) + 1

View file

@ -2,6 +2,7 @@ import openmc
from openmc.source import Source
from openmc.stats import Box
import numpy as np
class InputSet(object):
def __init__(self):
@ -673,6 +674,158 @@ class PinCellInputSet(object):
self.plots.add_plot(plot)
class AssemblyInputSet(object):
def __init__(self):
self.settings = openmc.Settings()
self.materials = openmc.Materials()
self.geometry = openmc.Geometry()
self.tallies = None
self.plots = None
def export(self):
self.settings.export_to_xml()
self.materials.export_to_xml()
self.geometry.export_to_xml()
if self.tallies is not None:
self.tallies.export_to_xml()
if self.plots is not None:
self.plots.export_to_xml()
def build_default_materials_and_geometry(self):
# Define materials.
fuel = openmc.Material(name='Fuel')
fuel.set_density('g/cm3', 10.29769)
fuel.add_nuclide("U234", 4.4843e-6)
fuel.add_nuclide("U235", 5.5815e-4)
fuel.add_nuclide("U238", 2.2408e-2)
fuel.add_nuclide("O16", 4.5829e-2)
clad = openmc.Material(name='Cladding')
clad.set_density('g/cm3', 6.55)
clad.add_nuclide("Zr90", 2.1827e-2)
clad.add_nuclide("Zr91", 4.7600e-3)
clad.add_nuclide("Zr92", 7.2758e-3)
clad.add_nuclide("Zr94", 7.3734e-3)
clad.add_nuclide("Zr96", 1.1879e-3)
hot_water = openmc.Material(name='Hot borated water')
hot_water.set_density('g/cm3', 0.740582)
hot_water.add_nuclide("H1", 4.9457e-2)
hot_water.add_nuclide("O16", 2.4672e-2)
hot_water.add_nuclide("B10", 8.0042e-6)
hot_water.add_nuclide("B11", 3.2218e-5)
hot_water.add_s_alpha_beta('c_H_in_H2O', '71t')
# Define the materials file.
self.materials.default_xs = '71c'
self.materials += (fuel, clad, hot_water)
# Instantiate ZCylinder surfaces
fuel_or = openmc.ZCylinder(x0=0, y0=0, R=0.39218, name='Fuel OR')
clad_or = openmc.ZCylinder(x0=0, y0=0, R=0.45720, name='Clad OR')
# Create boundary planes to surround the geometry
min_x = openmc.XPlane(x0=-10.71, boundary_type='reflective')
max_x = openmc.XPlane(x0=+10.71, boundary_type='reflective')
min_y = openmc.YPlane(y0=-10.71, boundary_type='reflective')
max_y = openmc.YPlane(y0=+10.71, boundary_type='reflective')
# Create a Universe to encapsulate a fuel pin
fuel_pin_universe = openmc.Universe(name='Fuel Pin')
# Create fuel Cell
fuel_cell = openmc.Cell(name='fuel')
fuel_cell.fill = fuel
fuel_cell.region = -fuel_or
fuel_pin_universe.add_cell(fuel_cell)
# Create a clad Cell
clad_cell = openmc.Cell(name='clad')
clad_cell.fill = clad
clad_cell.region = +fuel_or & -clad_or
fuel_pin_universe.add_cell(clad_cell)
# Create a moderator Cell
hot_water_cell = openmc.Cell(name='hot water')
hot_water_cell.fill = hot_water
hot_water_cell.region = +clad_or
fuel_pin_universe.add_cell(hot_water_cell)
# Create a Universe to encapsulate a control rod guide tube
guide_tube_universe = openmc.Universe(name='Guide Tube')
# Create guide tube inner Cell
gt_inner_cell = openmc.Cell(name='guide tube inner water')
gt_inner_cell.fill = hot_water
gt_inner_cell.region = -fuel_or
guide_tube_universe.add_cell(gt_inner_cell)
# Create a clad Cell
gt_clad_cell = openmc.Cell(name='guide tube clad')
gt_clad_cell.fill = clad
gt_clad_cell.region = +fuel_or & -clad_or
guide_tube_universe.add_cell(gt_clad_cell)
# Create a guide tube outer Cell
gt_outer_cell = openmc.Cell(name='guide tube outer water')
gt_outer_cell.fill = hot_water
gt_outer_cell.region = +clad_or
guide_tube_universe.add_cell(gt_outer_cell)
# Create fuel assembly Lattice
assembly = openmc.RectLattice(name='Fuel Assembly')
assembly.pitch = (1.26, 1.26)
assembly.lower_left = [-1.26 * 17. / 2.0] * 2
# Create array indices for guide tube locations in lattice
template_x = np.array([5, 8, 11, 3, 13, 2, 5, 8, 11, 14, 2, 5, 8,
11, 14, 2, 5, 8, 11, 14, 3, 13, 5, 8, 11])
template_y = np.array([2, 2, 2, 3, 3, 5, 5, 5, 5, 5, 8, 8, 8, 8,
8, 11, 11, 11, 11, 11, 13, 13, 14, 14, 14])
# Initialize an empty 17x17 array of the lattice universes
universes = np.empty((17, 17), dtype=openmc.Universe)
# Fill the array with the fuel pin and guide tube universes
universes[:,:] = fuel_pin_universe
universes[template_x, template_y] = guide_tube_universe
# Store the array of universes in the lattice
assembly.universes = universes
# Create root Cell
root_cell = openmc.Cell(name='root cell')
root_cell.fill = assembly
# Add boundary planes
root_cell.region = +min_x & -max_x & +min_y & -max_y
# Create root Universe
root_universe = openmc.Universe(universe_id=0, name='root universe')
root_universe.add_cell(root_cell)
# Instantiate a Geometry, register the root Universe, and export to XML
self.geometry.root_universe = root_universe
def build_default_settings(self):
self.settings.batches = 10
self.settings.inactive = 5
self.settings.particles = 100
self.settings.source = Source(space=Box([-10.71, -10.71, -1],
[10.71, 10.71, 1],
only_fissionable=True))
def build_defualt_plots(self):
plot = openmc.Plot()
plot.filename = 'mat'
plot.origin = (0.0, 0.0, 0)
plot.width = (21.42, 21.42)
plot.pixels = (300, 300)
plot.color = 'mat'
self.plots.add_plot(plot)
class MGInputSet(InputSet):
def build_default_materials_and_geometry(self):
# Define materials needed for 1D/1G slab problem

View file

@ -124,92 +124,8 @@ tally 3:
1.020705E+00
5.413570E-02
tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.049469E+00
4.677325E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.514939E+00
1.528899E+00
2.770358E+00
3.879191E-01
0.000000E+00
@ -220,44 +136,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
7.294002E+00
2.675589E+00
5.514939E+00
1.528899E+00
5.032131E+00
1.275040E+00
0.000000E+00
@ -268,44 +148,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
8.668860E+00
3.776102E+00
7.294002E+00
2.675589E+00
7.036008E+00
2.490719E+00
0.000000E+00
@ -316,44 +160,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.345868E+00
4.380719E+00
8.668860E+00
3.776102E+00
8.352414E+00
3.501945E+00
0.000000E+00
@ -364,44 +172,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.223771E+00
4.270119E+00
9.345868E+00
4.380719E+00
9.093766E+00
4.158282E+00
0.000000E+00
@ -412,44 +184,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
8.530966E+00
3.651778E+00
9.223771E+00
4.270119E+00
9.219150E+00
4.264346E+00
0.000000E+00
@ -460,44 +196,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
7.204424E+00
2.604203E+00
8.530966E+00
3.651778E+00
8.690373E+00
3.785262E+00
0.000000E+00
@ -508,44 +208,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.326721E+00
1.426975E+00
7.204424E+00
2.604203E+00
7.513640E+00
2.833028E+00
0.000000E+00
@ -556,44 +220,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.847310E+00
4.090440E-01
5.326721E+00
1.426975E+00
5.661144E+00
1.607138E+00
0.000000E+00
@ -604,44 +232,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.847310E+00
4.090440E-01
3.025812E+00
4.597241E-01
0.000000E+00
@ -652,6 +244,414 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
cmfd indices
1.000000E+01
1.000000E+00

View file

@ -124,92 +124,8 @@ tally 3:
9.213728E-01
4.422001E-02
tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.090000E+00
4.810640E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.555000E+00
1.551579E+00
2.833000E+00
4.078910E-01
0.000000E+00
@ -220,44 +136,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
7.271000E+00
2.659755E+00
5.555000E+00
1.551579E+00
5.095000E+00
1.310819E+00
0.000000E+00
@ -268,44 +148,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
8.577000E+00
3.703215E+00
7.271000E+00
2.659755E+00
7.026000E+00
2.486552E+00
0.000000E+00
@ -316,44 +160,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.393000E+00
4.422429E+00
8.577000E+00
3.703215E+00
8.572000E+00
3.680852E+00
0.000000E+00
@ -364,44 +172,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.265000E+00
4.305625E+00
9.393000E+00
4.422429E+00
9.261000E+00
4.304411E+00
0.000000E+00
@ -412,44 +184,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
8.535000E+00
3.659395E+00
9.265000E+00
4.305625E+00
9.303000E+00
4.350791E+00
0.000000E+00
@ -460,44 +196,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
7.104000E+00
2.544182E+00
8.535000E+00
3.659395E+00
8.693000E+00
3.799545E+00
0.000000E+00
@ -508,44 +208,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.168000E+00
1.344390E+00
7.104000E+00
2.544182E+00
7.334000E+00
2.700052E+00
0.000000E+00
@ -556,44 +220,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.724000E+00
3.745680E-01
5.168000E+00
1.344390E+00
5.416000E+00
1.471086E+00
0.000000E+00
@ -604,44 +232,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.724000E+00
3.745680E-01
2.960000E+00
4.397840E-01
0.000000E+00
@ -652,6 +244,414 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
cmfd indices
1.000000E+01
1.000000E+00

View file

@ -19,6 +19,82 @@ tally 1:
0.000000E+00
0.000000E+00
0.000000E+00
2.486634E-01
2.561523E-02
5.574899E-01
1.049542E-01
7.713789E-01
2.948263E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.149324E-01
1.320945E-02
2.001407E+00
1.600000E+00
9.572791E-01
8.942065E-01
0.000000E+00
0.000000E+00
2.501129E-02
6.255649E-04
1.484996E-01
2.205214E-02
3.079994E-03
9.486363E-06
1.090478E+00
5.381842E-01
4.235354E+00
5.638989E+00
3.267703E-01
4.763836E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.465048E-02
3.049063E-04
7.159080E-01
2.988090E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.984785E-01
1.486414E-01
9.889831E-01
3.657975E-01
1.492571E+00
6.318792E-01
6.314497E-01
1.552199E-01
2.034493E+00
1.162774E+00
1.252153E+00
4.563949E-01
3.452042E-02
1.191659E-03
0.000000E+00
0.000000E+00
0.000000E+00
@ -39,6 +115,186 @@ tally 1:
0.000000E+00
0.000000E+00
0.000000E+00
1.251028E-01
1.306358E-02
2.850134E+00
2.250972E+00
2.083542E+00
1.599782E+00
3.417016E+00
2.972256E+00
1.533605E+00
8.644495E-01
1.962807E-01
2.410165E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
4.131352E-01
6.756111E-02
2.677440E+00
2.382024E+00
5.709899E+00
7.095076E+00
4.663027E+00
5.641430E+00
1.357567E+00
4.362757E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.473499E-01
1.206520E-01
5.299733E-01
2.205463E-01
4.425042E-01
5.854257E-02
9.831996E-01
4.846833E-01
8.393183E-03
7.044551E-05
4.457483E-01
5.194318E-02
1.194169E+00
4.790398E-01
1.261505E+00
7.705206E-01
2.356462E-01
3.082678E-02
3.679762E-01
1.354065E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.597805E-01
1.297695E-02
1.349846E+00
6.808561E-01
2.237774E+00
1.109643E+00
4.237107E-01
6.002592E-02
0.000000E+00
0.000000E+00
5.424180E-02
2.942173E-03
1.420269E-01
2.017163E-02
1.954689E+00
9.874394E-01
1.380025E+00
4.289689E-01
5.043842E-02
2.544034E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.438568E-01
1.597365E-02
6.874433E-01
2.287801E-01
7.495196E-01
1.939234E-01
8.922533E-01
2.835397E-01
7.462571E-02
5.568996E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.449729E-01
2.101714E-02
1.876891E-01
1.675278E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
7.002118E-02
4.902965E-03
8.612279E-02
5.910825E-03
5.651386E-01
1.286874E-01
3.804197E-01
1.225870E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.355899E-02
5.550260E-04
3.214464E-01
1.033278E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
@ -55,456 +311,200 @@ tally 1:
0.000000E+00
1.474078E-01
2.172907E-02
5.128548E-01
1.258296E-01
9.004671E-01
2.791173E-01
5.729905E-01
2.680764E-01
1.009880E-01
9.392497E-03
3.174349E-01
1.007649E-01
2.560771E-01
6.557550E-02
3.571813E-02
1.275785E-03
2.222160E-02
4.937996E-04
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
6.386562E-02
4.078817E-03
1.379070E+00
4.300261E-01
6.485841E+00
1.046238E+01
5.509254E-01
1.200498E-01
2.424177E+00
1.613025E+00
1.260449E+00
5.881747E-01
9.262861E-03
8.580060E-05
6.588191E-01
2.543824E-01
2.028040E-01
4.112944E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.040956E+00
3.089102E-01
6.743595E+00
1.135216E+01
1.494910E+00
6.327940E-01
2.226123E+00
1.203763E+00
3.147407E+00
3.333589E+00
2.505905E-01
6.279558E-02
4.171440E-01
8.701395E-02
1.417427E+00
9.671327E-01
1.398153E-01
1.954832E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.905797E-02
8.443654E-04
7.532560E-03
5.673946E-05
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.149324E-01
1.320945E-02
2.465048E-02
3.049063E-04
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
7.002118E-02
4.902965E-03
5.128548E-01
1.258296E-01
1.379070E+00
4.300261E-01
1.040956E+00
3.089102E-01
1.237157E+00
6.284409E-01
9.539296E-01
5.206980E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.001407E+00
1.600000E+00
7.159080E-01
2.988090E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.473499E-01
1.206520E-01
1.597805E-01
1.297695E-02
1.438568E-01
1.597365E-02
8.612279E-02
5.910825E-03
9.004671E-01
2.791173E-01
6.485841E+00
1.046238E+01
6.743595E+00
1.135216E+01
7.681046E-01
1.896252E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.572791E-01
8.942065E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.299733E-01
2.205463E-01
1.349846E+00
6.808561E-01
6.874433E-01
2.287801E-01
5.651386E-01
1.286874E-01
5.729905E-01
2.680764E-01
5.509254E-01
1.200498E-01
1.494910E+00
6.327940E-01
2.444256E-01
2.804968E-02
6.927475E-01
2.317744E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
4.425042E-01
5.854257E-02
2.237774E+00
1.109643E+00
7.495196E-01
1.939234E-01
3.804197E-01
1.225870E-01
1.009880E-01
9.392497E-03
2.424177E+00
1.613025E+00
2.226123E+00
1.203763E+00
1.939766E+00
1.132042E+00
3.953753E-01
1.420303E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.501129E-02
6.255649E-04
3.984785E-01
1.486414E-01
1.251028E-01
1.306358E-02
0.000000E+00
0.000000E+00
9.831996E-01
4.846833E-01
4.237107E-01
6.002592E-02
8.922533E-01
2.835397E-01
0.000000E+00
0.000000E+00
3.174349E-01
1.007649E-01
1.260449E+00
5.881747E-01
3.147407E+00
3.333589E+00
2.021896E+00
1.425606E+00
1.377786E-01
1.716503E-02
3.011069E-02
9.066538E-04
0.000000E+00
0.000000E+00
5.118696E-02
2.620104E-03
0.000000E+00
0.000000E+00
1.484996E-01
2.205214E-02
9.889831E-01
3.657975E-01
2.850134E+00
2.250972E+00
4.131352E-01
6.756111E-02
8.393183E-03
7.044551E-05
0.000000E+00
0.000000E+00
7.462571E-02
5.568996E-03
0.000000E+00
0.000000E+00
2.560771E-01
6.557550E-02
9.262861E-03
8.580060E-05
2.505905E-01
6.279558E-02
5.136552E-01
2.638417E-01
1.441275E+00
5.086865E-01
2.913901E+00
1.841912E+00
6.978650E-01
2.584000E-01
1.451562E-02
2.107031E-04
0.000000E+00
0.000000E+00
3.079994E-03
9.486363E-06
1.492571E+00
6.318792E-01
2.083542E+00
1.599782E+00
2.677440E+00
2.382024E+00
4.457483E-01
5.194318E-02
5.424180E-02
2.942173E-03
0.000000E+00
0.000000E+00
2.355899E-02
5.550260E-04
3.571813E-02
1.275785E-03
6.588191E-01
2.543824E-01
4.171440E-01
8.701395E-02
7.735493E-01
1.575534E-01
4.033076E-01
5.492660E-02
4.513270E+00
5.611449E+00
1.653243E+00
8.369762E-01
1.045336E-01
1.092727E-02
2.486634E-01
2.561523E-02
1.090478E+00
5.381842E-01
6.314497E-01
1.552199E-01
3.417016E+00
2.972256E+00
5.709899E+00
7.095076E+00
1.194169E+00
4.790398E-01
1.420269E-01
2.017163E-02
0.000000E+00
0.000000E+00
3.214464E-01
1.033278E-01
2.222160E-02
4.937996E-04
2.028040E-01
4.112944E-02
1.417427E+00
9.671327E-01
1.453489E+00
6.697189E-01
8.534416E-01
2.290345E-01
5.367404E+00
6.853344E+00
1.237276E+00
4.961691E-01
5.835684E-02
3.405521E-03
5.574899E-01
1.049542E-01
4.235354E+00
5.638989E+00
2.034493E+00
1.162774E+00
1.533605E+00
8.644495E-01
4.663027E+00
5.641430E+00
1.261505E+00
7.705206E-01
1.954689E+00
9.874394E-01
1.449729E-01
2.101714E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.398153E-01
1.954832E-02
5.089636E-01
8.836228E-02
1.422521E+00
6.953668E-01
1.137705E+00
5.670907E-01
3.521780E-01
6.575561E-02
0.000000E+00
0.000000E+00
7.713789E-01
2.948263E-01
3.267703E-01
4.763836E-02
1.252153E+00
4.563949E-01
1.962807E-01
2.410165E-02
1.357567E+00
4.362757E-01
2.356462E-01
3.082678E-02
1.380025E+00
4.289689E-01
1.876891E-01
1.675278E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.940736E-01
2.763730E-02
6.059470E-02
3.671718E-03
3.479381E-01
1.210609E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.452042E-02
1.191659E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.679762E-01
1.354065E-01
5.043842E-02
2.544034E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.678278E-01
2.097037E-02
5.312751E-02
1.423243E-03
3.374418E-01
1.138670E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.208007E-01
2.057626E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
7.532560E-03
5.673946E-05
9.539296E-01
5.206980E-01
0.000000E+00
0.000000E+00
6.927475E-01
2.317744E-01
3.953753E-01
1.420303E-01
1.377786E-01
1.716503E-02
1.441275E+00
5.086865E-01
4.033076E-01
5.492660E-02
8.534416E-01
2.290345E-01
1.422521E+00
6.953668E-01
1.940736E-01
2.763730E-02
0.000000E+00
0.000000E+00
5.312751E-02
1.423243E-03
1.050464E+00
5.524605E-01
5.214580E-02
2.719184E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.011069E-02
9.066538E-04
2.913901E+00
1.841912E+00
4.513270E+00
5.611449E+00
5.367404E+00
6.853344E+00
1.137705E+00
5.670907E-01
6.059470E-02
3.671718E-03
0.000000E+00
0.000000E+00
3.374418E-01
1.138670E-01
7.171591E-02
5.143172E-03
0.000000E+00
@ -525,24 +525,16 @@ tally 1:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.214580E-02
2.719184E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
6.978650E-01
2.584000E-01
1.653243E+00
8.369762E-01
1.237276E+00
4.961691E-01
3.521780E-01
6.575561E-02
3.479381E-01
1.210609E-01
0.000000E+00
0.000000E+00
0.000000E+00
@ -565,6 +557,14 @@ tally 1:
0.000000E+00
0.000000E+00
0.000000E+00
5.118696E-02
2.620104E-03
1.451562E-02
2.107031E-04
1.045336E-01
1.092727E-02
5.835684E-02
3.405521E-03
0.000000E+00
0.000000E+00
0.000000E+00

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e
08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df

View file

@ -40,6 +40,27 @@
0 10000 1 total 4.996730e-07 3.650635e-08
material group in nuclide mean std. dev.
0 10000 1 total 0.090004 0.006367
material delayedgroup group in nuclide mean std. dev.
0 10000 1 1 total 0.000021 0.000001
1 10000 2 1 total 0.000110 0.000008
2 10000 3 1 total 0.000107 0.000007
3 10000 4 1 total 0.000249 0.000017
4 10000 5 1 total 0.000112 0.000007
5 10000 6 1 total 0.000046 0.000003
material delayedgroup group out nuclide mean std. dev.
0 10000 1 1 total 0.0 0.000000
1 10000 2 1 total 1.0 0.869128
2 10000 3 1 total 1.0 1.414214
3 10000 4 1 total 1.0 0.360359
4 10000 5 1 total 0.0 0.000000
5 10000 6 1 total 0.0 0.000000
material delayedgroup group in nuclide mean std. dev.
0 10000 1 1 total 0.000227 0.000020
1 10000 2 1 total 0.001214 0.000108
2 10000 3 1 total 0.001184 0.000104
3 10000 4 1 total 0.002752 0.000240
4 10000 5 1 total 0.001231 0.000105
5 10000 6 1 total 0.000512 0.000044
material group in nuclide mean std. dev.
0 10001 1 total 0.311594 0.013793
material group in nuclide mean std. dev.
@ -82,6 +103,27 @@
0 10001 1 total 5.454760e-07 4.949800e-08
material group in nuclide mean std. dev.
0 10001 1 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
0 10001 1 1 total 0.0 0.0
1 10001 2 1 total 0.0 0.0
2 10001 3 1 total 0.0 0.0
3 10001 4 1 total 0.0 0.0
4 10001 5 1 total 0.0 0.0
5 10001 6 1 total 0.0 0.0
material delayedgroup group out nuclide mean std. dev.
0 10001 1 1 total 0.0 0.0
1 10001 2 1 total 0.0 0.0
2 10001 3 1 total 0.0 0.0
3 10001 4 1 total 0.0 0.0
4 10001 5 1 total 0.0 0.0
5 10001 6 1 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
0 10001 1 1 total 0.0 0.0
1 10001 2 1 total 0.0 0.0
2 10001 3 1 total 0.0 0.0
3 10001 4 1 total 0.0 0.0
4 10001 5 1 total 0.0 0.0
5 10001 6 1 total 0.0 0.0
material group in nuclide mean std. dev.
0 10002 1 total 0.904999 0.043964
material group in nuclide mean std. dev.
@ -124,3 +166,24 @@
0 10002 1 total 5.773006e-07 5.322132e-08
material group in nuclide mean std. dev.
0 10002 1 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
0 10002 1 1 total 0.0 0.0
1 10002 2 1 total 0.0 0.0
2 10002 3 1 total 0.0 0.0
3 10002 4 1 total 0.0 0.0
4 10002 5 1 total 0.0 0.0
5 10002 6 1 total 0.0 0.0
material delayedgroup group out nuclide mean std. dev.
0 10002 1 1 total 0.0 0.0
1 10002 2 1 total 0.0 0.0
2 10002 3 1 total 0.0 0.0
3 10002 4 1 total 0.0 0.0
4 10002 5 1 total 0.0 0.0
5 10002 6 1 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
0 10002 1 1 total 0.0 0.0
1 10002 2 1 total 0.0 0.0
2 10002 3 1 total 0.0 0.0
3 10002 4 1 total 0.0 0.0
4 10002 5 1 total 0.0 0.0
5 10002 6 1 total 0.0 0.0

View file

@ -23,12 +23,18 @@ class MGXSTestHarness(PyAPITestHarness):
energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6,
20.])
# Initialize a six-delayed-group structure
delayed_groups = list(range(1,7))
# Initialize MGXS Library for a few cross section types
self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry)
self.mgxs_lib.by_nuclide = False
# Test all MGXS types
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \
openmc.mgxs.MDGXS_TYPES
self.mgxs_lib.energy_groups = energy_groups
self.mgxs_lib.delayed_groups = delayed_groups
self.mgxs_lib.legendre_order = 3
self.mgxs_lib.domain_type = 'material'
self.mgxs_lib.build_library()

View file

@ -1 +1 @@
2d948f3b12293294eaeca231a3df9d51195379e8bb38dd3e68d3bc512a7d08ed52a1109054ca381684ec127268710f6d6e9210ac8154c9b379608e996627624a
9ce3d6987d67e92b0924916bb54288429d2bd6dfd12a69f86c5dbefb407f7eb72adb0e44d558c09e9a39610ffeb651aee4aedc629cf3a28a181d62ca4cfbcd5a

View file

@ -1,42 +1,63 @@
avg(distribcell) group in nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.145934 0.553822
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.457353 0.010474
avg(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.718919 0.520644
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.405649 0.015784
avg(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.718919 0.520644
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.405641 0.015787
avg(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.019762 0.010629
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.066556 0.00251
avg(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.019762 0.010629
avg(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.0 0.0
avg(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.0 0.0
avg(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.0 0.0
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.028979 0.002712
avg(distribcell) group in nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.126172 0.54344
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.037577 0.001487
avg(distribcell) group in nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.142547 0.570131
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.092377 0.003628
avg(distribcell) group in nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 7.276707 0.287579
avg(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.390797 0.008717
avg(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.387332 0.014241
avg(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 1.142547 0.570131
1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.447381 0.216322
2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.141202 0.066504
3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.039228 0.024621
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P0 0.387009 0.014230
1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.047179 0.004923
2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.015713 0.003654
3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.005378 0.003137
avg(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 1.142547 0.570131
1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.447381 0.216322
2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.141202 0.066504
3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.039228 0.024621
avg(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.529717
avg(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.0 0.0
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P0 0.387332 0.014241
1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.047187 0.004933
2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.015727 0.003654
3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.005387 0.003141
avg(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.000834 0.037242
avg(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
avg(distribcell) group out nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.0 0.080455
avg(distribcell) group out nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0
avg(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.000001 6.946255e-07
avg(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.0 0.0
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.0 0.080541
avg(distribcell) group in nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 5.139437e-07 2.133314e-08
avg(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.091725 0.003604
avg(distribcell) delayedgroup group in nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.000021 8.253907e-07
1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0.000112 4.284000e-06
2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0.000109 4.105197e-06
3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0.000252 9.271420e-06
4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0.000112 3.888625e-06
5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0.000047 1.625563e-06
avg(distribcell) delayedgroup 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.0 0.000000
1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 1.0 1.414214
2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 1.0 1.414214
3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0.0 0.000000
4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0.0 0.000000
5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 1.0 1.414214
avg(distribcell) delayedgroup group in nuclide mean std. dev.
0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.000227 0.000012
1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0.001209 0.000061
2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0.001177 0.000059
3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0.002727 0.000135
4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0.001210 0.000058
5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0.000504 0.000024

View file

@ -6,29 +6,39 @@ import glob
import hashlib
sys.path.insert(0, os.pardir)
from testing_harness import PyAPITestHarness
from input_set import AssemblyInputSet
import openmc
import openmc.mgxs
class MGXSTestHarness(PyAPITestHarness):
def _build_inputs(self):
# Set the input set to use the pincell model
self._input_set = AssemblyInputSet()
# Generate inputs using parent class routine
super(MGXSTestHarness, self)._build_inputs()
# Initialize a one-group structure
energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.])
# Initialize a six-delayed-group structure
delayed_groups = list(range(1,7))
# Initialize MGXS Library for a few cross section types
# for one material-filled cell in the geometry
self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry)
self.mgxs_lib.by_nuclide = False
# Test all MGXS types
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \
openmc.mgxs.MDGXS_TYPES
self.mgxs_lib.energy_groups = energy_groups
self.mgxs_lib.delayed_groups = delayed_groups
self.mgxs_lib.legendre_order = 3
self.mgxs_lib.domain_type = 'distribcell'
material_cells = self.mgxs_lib.openmc_geometry.get_all_material_cells()
self.mgxs_lib.domains = [material_cells[-1]]
cells = self.mgxs_lib.openmc_geometry.get_all_material_cells()
self.mgxs_lib.domains = [c for c in cells if c.name == 'fuel']
self.mgxs_lib.build_library()
# Initialize a tallies file

View file

@ -1 +1 @@
e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e
08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df

View file

@ -72,6 +72,45 @@ domain=10000 type=inverse-velocity
domain=10000 type=prompt-nu-fission
[ 0.01923922 0.46671903]
[ 0.00130951 0.04141087]
domain=10000 type=delayed-nu-fission
[[ 2.29808234e-05 1.06974158e-04]
[ 1.43606337e-04 5.52167907e-04]
[ 1.51382216e-04 5.27147681e-04]
[ 7.42603178e-05 2.22018043e-04]
[ 4.14908454e-05 9.10244403e-05]
[ 1.70016000e-05 3.81298119e-05]]
[[ 1.66363133e-06 9.49156242e-06]
[ 1.05907806e-05 4.89925426e-05]
[ 1.12671238e-05 4.67725567e-05]
[ 5.22610273e-06 1.87563195e-05]
[ 2.99830766e-06 7.68984041e-06]
[ 1.22654684e-06 3.22124663e-06]]
domain=10000 type=chi-delayed
[[ 0. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0. ]
[ 0.86912776 0. ]
[ 1.41421356 0. ]
[ 0.36035904 0. ]
[ 0. 0. ]
[ 0. 0. ]]
domain=10000 type=beta
[[ 4.89188107e-05 2.27713711e-04]
[ 3.05691886e-04 1.17538858e-03]
[ 3.22244241e-04 1.12212853e-03]
[ 3.82159891e-03 1.14255357e-02]
[ 2.13520995e-03 4.68431744e-03]
[ 8.74939644e-04 1.96224379e-03]]
[[ 4.67388620e-06 2.46946810e-05]
[ 2.95223877e-05 1.27466393e-04]
[ 3.12885004e-05 1.21690543e-04]
[ 3.21434855e-04 1.09939816e-03]
[ 1.82980497e-04 4.50738567e-04]
[ 7.48899920e-05 1.88812772e-04]]
domain=10001 type=total
[ 0.31373767 0.3008214 ]
[ 0.0155819 0.02805245]
@ -146,6 +185,45 @@ domain=10001 type=inverse-velocity
domain=10001 type=prompt-nu-fission
[ 0. 0.]
[ 0. 0.]
domain=10001 type=delayed-nu-fission
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
domain=10001 type=chi-delayed
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
domain=10001 type=beta
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
domain=10002 type=total
[ 0.66457226 2.05238401]
[ 0.03121475 0.22434291]
@ -220,3 +298,42 @@ domain=10002 type=inverse-velocity
domain=10002 type=prompt-nu-fission
[ 0. 0.]
[ 0. 0.]
domain=10002 type=delayed-nu-fission
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
domain=10002 type=chi-delayed
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
domain=10002 type=beta
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]

View file

@ -24,12 +24,18 @@ class MGXSTestHarness(PyAPITestHarness):
energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6,
20.])
# Initialize a six-delayed-group structure
delayed_groups = list(range(1,7))
# Initialize MGXS Library for a few cross section types
self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry)
self.mgxs_lib.by_nuclide = False
# Test all MGXS types
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \
openmc.mgxs.MDGXS_TYPES
self.mgxs_lib.energy_groups = energy_groups
self.mgxs_lib.delayed_groups = delayed_groups
self.mgxs_lib.legendre_order = 3
self.mgxs_lib.domain_type = 'material'
self.mgxs_lib.build_library()

View file

@ -1 +1 @@
a4cd030bea212e45fdb159e75a7fb3d1947e9bf3d0384ac5d37a72298d67dcfdd1b9eb5c6af8ac6e5983bd5b47de9c17a2ea472b467b7222a4909ee070bf1ca3
5f167bdd4d6ae5873d48483e85aceaec8a934239ed5a50ef6f6500ce204f5851ae330621a5007f3b3d6bdab49f2cd627d011c1f6e6983fec958a6984eb9cb7ca

View file

@ -1,62 +1,62 @@
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.640786 0.044177
1 1 2 1 1 total 0.660597 0.128423
2 2 1 1 1 total 0.615276 0.104046
1 1 2 1 1 total 0.615276 0.104046
2 2 1 1 1 total 0.660597 0.128423
3 2 2 1 1 total 0.646999 0.186709
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.36665 0.048814
1 1 2 1 1 total 0.40784 0.096486
2 2 1 1 1 total 0.36356 0.074111
1 1 2 1 1 total 0.36356 0.074111
2 2 1 1 1 total 0.40784 0.096486
3 2 2 1 1 total 0.41456 0.160443
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.366650 0.048814
1 1 2 1 1 total 0.407840 0.096486
2 2 1 1 1 total 0.363560 0.074111
1 1 2 1 1 total 0.363560 0.074111
2 2 1 1 1 total 0.407840 0.096486
3 2 2 1 1 total 0.414593 0.160436
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.025749 0.002863
1 1 2 1 1 total 0.028400 0.005275
2 2 1 1 1 total 0.022988 0.004099
1 1 2 1 1 total 0.022988 0.004099
2 2 1 1 1 total 0.028400 0.005275
3 2 2 1 1 total 0.027589 0.010350
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.015861 0.002876
1 1 2 1 1 total 0.017280 0.004371
2 2 1 1 1 total 0.014403 0.003542
1 1 2 1 1 total 0.014403 0.003542
2 2 1 1 1 total 0.017280 0.004371
3 2 2 1 1 total 0.018061 0.010110
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.009888 0.001077
1 1 2 1 1 total 0.011121 0.002456
2 2 1 1 1 total 0.008585 0.001552
1 1 2 1 1 total 0.008585 0.001552
2 2 1 1 1 total 0.011121 0.002456
3 2 2 1 1 total 0.009527 0.003659
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.026065 0.002907
1 1 2 1 1 total 0.029084 0.006430
2 2 1 1 1 total 0.022596 0.004062
1 1 2 1 1 total 0.022596 0.004062
2 2 1 1 1 total 0.029084 0.006430
3 2 2 1 1 total 0.025066 0.009687
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 1.938476 0.211550
1 1 2 1 1 total 2.177360 0.480780
2 2 1 1 1 total 1.682799 0.303764
1 1 2 1 1 total 1.682799 0.303764
2 2 1 1 1 total 2.177360 0.480780
3 2 2 1 1 total 1.864890 0.715661
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.615037 0.041754
1 1 2 1 1 total 0.632196 0.123878
2 2 1 1 1 total 0.592288 0.100439
1 1 2 1 1 total 0.592288 0.100439
2 2 1 1 1 total 0.632196 0.123878
3 2 2 1 1 total 0.619410 0.177190
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.584014 0.054315
1 1 2 1 1 total 0.622514 0.111323
2 2 1 1 1 total 0.587256 0.084833
1 1 2 1 1 total 0.587256 0.084833
2 2 1 1 1 total 0.622514 0.111323
3 2 2 1 1 total 0.613792 0.168612
mesh 1 group in group out nuclide moment mean std. dev.
x y z
@ -64,14 +64,14 @@
1 1 1 1 1 1 total P1 0.243427 0.025488
2 1 1 1 1 1 total P2 0.089236 0.007357
3 1 1 1 1 1 total P3 0.008994 0.005768
4 1 2 1 1 1 total P0 0.622514 0.111323
5 1 2 1 1 1 total P1 0.239376 0.042594
6 1 2 1 1 1 total P2 0.088386 0.017200
7 1 2 1 1 1 total P3 -0.001243 0.005639
8 2 1 1 1 1 total P0 0.587256 0.084833
9 2 1 1 1 1 total P1 0.245120 0.041033
10 2 1 1 1 1 total P2 0.086784 0.016255
11 2 1 1 1 1 total P3 0.008660 0.004755
4 1 2 1 1 1 total P0 0.587256 0.084833
5 1 2 1 1 1 total P1 0.245120 0.041033
6 1 2 1 1 1 total P2 0.086784 0.016255
7 1 2 1 1 1 total P3 0.008660 0.004755
8 2 1 1 1 1 total P0 0.622514 0.111323
9 2 1 1 1 1 total P1 0.239376 0.042594
10 2 1 1 1 1 total P2 0.088386 0.017200
11 2 1 1 1 1 total P3 -0.001243 0.005639
12 2 2 1 1 1 total P0 0.612950 0.167940
13 2 2 1 1 1 total P1 0.226176 0.061882
14 2 2 1 1 1 total P2 0.086593 0.026126
@ -82,14 +82,14 @@
1 1 1 1 1 1 total P1 0.243427 0.025488
2 1 1 1 1 1 total P2 0.089236 0.007357
3 1 1 1 1 1 total P3 0.008994 0.005768
4 1 2 1 1 1 total P0 0.622514 0.111323
5 1 2 1 1 1 total P1 0.239376 0.042594
6 1 2 1 1 1 total P2 0.088386 0.017200
7 1 2 1 1 1 total P3 -0.001243 0.005639
8 2 1 1 1 1 total P0 0.587256 0.084833
9 2 1 1 1 1 total P1 0.245120 0.041033
10 2 1 1 1 1 total P2 0.086784 0.016255
11 2 1 1 1 1 total P3 0.008660 0.004755
4 1 2 1 1 1 total P0 0.587256 0.084833
5 1 2 1 1 1 total P1 0.245120 0.041033
6 1 2 1 1 1 total P2 0.086784 0.016255
7 1 2 1 1 1 total P3 0.008660 0.004755
8 2 1 1 1 1 total P0 0.622514 0.111323
9 2 1 1 1 1 total P1 0.239376 0.042594
10 2 1 1 1 1 total P2 0.088386 0.017200
11 2 1 1 1 1 total P3 -0.001243 0.005639
12 2 2 1 1 1 total P0 0.613792 0.168612
13 2 2 1 1 1 total P1 0.226142 0.061856
14 2 2 1 1 1 total P2 0.086174 0.025979
@ -97,36 +97,114 @@
mesh 1 group in group out nuclide mean std. dev.
x y z
0 1 1 1 1 1 total 1.000000 0.088094
1 1 2 1 1 1 total 1.000000 0.160891
2 2 1 1 1 1 total 1.000000 0.126864
1 1 2 1 1 1 total 1.000000 0.126864
2 2 1 1 1 1 total 1.000000 0.160891
3 2 2 1 1 1 total 1.001374 0.305883
mesh 1 group in group out nuclide mean std. dev.
x y z
0 1 1 1 1 1 total 0.027395 0.004680
1 1 2 1 1 1 total 0.022914 0.006025
2 2 1 1 1 1 total 0.019384 0.002846
1 1 2 1 1 1 total 0.019384 0.002846
2 2 1 1 1 1 total 0.022914 0.006025
3 2 2 1 1 1 total 0.029629 0.006292
mesh 1 group out nuclide mean std. dev.
x y z
0 1 1 1 1 total 1.0 0.220956
1 1 2 1 1 total 1.0 0.316565
2 2 1 1 1 total 1.0 0.132140
1 1 2 1 1 total 1.0 0.132140
2 2 1 1 1 total 1.0 0.316565
3 2 2 1 1 total 1.0 0.181577
mesh 1 group out nuclide mean std. dev.
x y z
0 1 1 1 1 total 1.0 0.222246
1 1 2 1 1 total 1.0 0.316565
2 2 1 1 1 total 1.0 0.132140
1 1 2 1 1 total 1.0 0.132140
2 2 1 1 1 total 1.0 0.316565
3 2 2 1 1 total 1.0 0.181577
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 3.610522e-07 3.169931e-08
1 1 2 1 1 total 3.942353e-07 8.459167e-08
2 2 1 1 1 total 3.097784e-07 5.252025e-08
1 1 2 1 1 total 3.097784e-07 5.252025e-08
2 2 1 1 1 total 3.942353e-07 8.459167e-08
3 2 2 1 1 total 3.799163e-07 1.806470e-07
mesh 1 group in nuclide mean std. dev.
x y z
0 1 1 1 1 total 0.025920 0.002893
1 1 2 1 1 total 0.028922 0.006394
2 2 1 1 1 total 0.022467 0.004039
1 1 2 1 1 total 0.022467 0.004039
2 2 1 1 1 total 0.028922 0.006394
3 2 2 1 1 total 0.024923 0.009632
mesh 1 delayedgroup group in nuclide mean std. dev.
x y z
0 1 1 1 1 1 total 0.000004 4.432732e-07
1 1 1 1 2 1 total 0.000026 2.653319e-06
2 1 1 1 3 1 total 0.000024 2.402270e-06
3 1 1 1 4 1 total 0.000054 5.464055e-06
4 1 1 1 5 1 total 0.000026 2.663025e-06
5 1 1 1 6 1 total 0.000010 1.038005e-06
6 1 2 1 1 1 total 0.000004 6.987770e-07
7 1 2 1 2 1 total 0.000023 4.115234e-06
8 1 2 1 3 1 total 0.000021 3.816392e-06
9 1 2 1 4 1 total 0.000049 8.885822e-06
10 1 2 1 5 1 total 0.000024 4.378290e-06
11 1 2 1 6 1 total 0.000009 1.745695e-06
12 2 1 1 1 1 total 0.000005 1.098837e-06
13 2 1 1 2 1 total 0.000029 6.436855e-06
14 2 1 1 3 1 total 0.000027 5.926286e-06
15 2 1 1 4 1 total 0.000061 1.359391e-05
16 2 1 1 5 1 total 0.000029 6.489015e-06
17 2 1 1 6 1 total 0.000011 2.574270e-06
18 2 2 1 1 1 total 0.000004 1.660497e-06
19 2 2 1 2 1 total 0.000025 9.701974e-06
20 2 2 1 3 1 total 0.000023 9.005217e-06
21 2 2 1 4 1 total 0.000054 2.084107e-05
22 2 2 1 5 1 total 0.000026 9.981045e-06
23 2 2 1 6 1 total 0.000010 3.987979e-06
mesh 1 delayedgroup group out nuclide mean std. dev.
x y z
0 1 1 1 1 1 total 0.0 0.000000
1 1 1 1 2 1 total 0.0 0.000000
2 1 1 1 3 1 total 0.0 0.000000
3 1 1 1 4 1 total 1.0 1.414214
4 1 1 1 5 1 total 0.0 0.000000
5 1 1 1 6 1 total 0.0 0.000000
6 1 2 1 1 1 total 0.0 0.000000
7 1 2 1 2 1 total 0.0 0.000000
8 1 2 1 3 1 total 0.0 0.000000
9 1 2 1 4 1 total 0.0 0.000000
10 1 2 1 5 1 total 0.0 0.000000
11 1 2 1 6 1 total 0.0 0.000000
12 2 1 1 1 1 total 0.0 0.000000
13 2 1 1 2 1 total 0.0 0.000000
14 2 1 1 3 1 total 0.0 0.000000
15 2 1 1 4 1 total 0.0 0.000000
16 2 1 1 5 1 total 0.0 0.000000
17 2 1 1 6 1 total 0.0 0.000000
18 2 2 1 1 1 total 0.0 0.000000
19 2 2 1 2 1 total 0.0 0.000000
20 2 2 1 3 1 total 0.0 0.000000
21 2 2 1 4 1 total 0.0 0.000000
22 2 2 1 5 1 total 0.0 0.000000
23 2 2 1 6 1 total 0.0 0.000000
mesh 1 delayedgroup group in nuclide mean std. dev.
x y z
0 1 1 1 1 1 total 0.000166 0.000023
1 1 1 1 2 1 total 0.000989 0.000136
2 1 1 1 3 1 total 0.000907 0.000123
3 1 1 1 4 1 total 0.002087 0.000282
4 1 1 1 5 1 total 0.001014 0.000137
5 1 1 1 6 1 total 0.000400 0.000054
6 1 2 1 1 1 total 0.000167 0.000030
7 1 2 1 2 1 total 0.001002 0.000178
8 1 2 1 3 1 total 0.000926 0.000165
9 1 2 1 4 1 total 0.002149 0.000384
10 1 2 1 5 1 total 0.001056 0.000189
11 1 2 1 6 1 total 0.000417 0.000076
12 2 1 1 1 1 total 0.000171 0.000039
13 2 1 1 2 1 total 0.001003 0.000226
14 2 1 1 3 1 total 0.000918 0.000208
15 2 1 1 4 1 total 0.002100 0.000477
16 2 1 1 5 1 total 0.000996 0.000228
17 2 1 1 6 1 total 0.000394 0.000090
18 2 2 1 1 1 total 0.000171 0.000082
19 2 2 1 2 1 total 0.001007 0.000480
20 2 2 1 3 1 total 0.000929 0.000445
21 2 2 1 4 1 total 0.002143 0.001028
22 2 2 1 5 1 total 0.001026 0.000492
23 2 2 1 6 1 total 0.000408 0.000196

View file

@ -18,14 +18,19 @@ class MGXSTestHarness(PyAPITestHarness):
# Initialize a one-group structure
energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.])
# Initialize a six-delayed-group structure
delayed_groups = list(range(1,7))
# Initialize MGXS Library for a few cross section types
# for one material-filled cell in the geometry
self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry)
self.mgxs_lib.by_nuclide = False
# Test all MGXS types
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \
openmc.mgxs.MDGXS_TYPES
self.mgxs_lib.energy_groups = energy_groups
self.mgxs_lib.delayed_groups = delayed_groups
self.mgxs_lib.legendre_order = 3
self.mgxs_lib.domain_type = 'mesh'

View file

@ -1 +1 @@
e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e
08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df

View file

@ -29,39 +29,39 @@
1 10000 1 total 0.385188 0.026946
0 10000 2 total 0.412389 0.015425
material group in group out nuclide moment mean std. dev.
12 10000 1 1 total P0 0.384199 0.027001
13 10000 1 1 total P1 0.051870 0.006983
14 10000 1 1 total P2 0.020069 0.002846
9 10000 1 1 total P0 -0.000207 0.000149
11 10000 1 1 total P1 0.000234 0.000128
13 10000 1 1 total P2 0.051870 0.006983
15 10000 1 1 total P3 0.009478 0.002234
8 10000 1 2 total P0 0.000989 0.000482
9 10000 1 2 total P1 -0.000207 0.000149
10 10000 1 2 total P2 -0.000103 0.000184
11 10000 1 2 total P3 0.000234 0.000128
4 10000 2 1 total P0 0.000925 0.000925
5 10000 2 1 total P1 -0.000768 0.000768
6 10000 2 1 total P2 0.000494 0.000494
10 10000 1 2 total P1 -0.000103 0.000184
12 10000 1 2 total P2 0.384199 0.027001
14 10000 1 2 total P3 0.020069 0.002846
1 10000 2 1 total P0 0.016482 0.004502
3 10000 2 1 total P1 -0.010499 0.010438
5 10000 2 1 total P2 -0.000768 0.000768
7 10000 2 1 total P3 -0.000171 0.000172
0 10000 2 2 total P0 0.411465 0.015245
1 10000 2 2 total P1 0.016482 0.004502
2 10000 2 2 total P2 0.006371 0.010551
3 10000 2 2 total P3 -0.010499 0.010438
2 10000 2 2 total P1 0.006371 0.010551
4 10000 2 2 total P2 0.000925 0.000925
6 10000 2 2 total P3 0.000494 0.000494
material group in group out nuclide moment mean std. dev.
12 10000 1 1 total P0 0.384199 0.027001
13 10000 1 1 total P1 0.051870 0.006983
14 10000 1 1 total P2 0.020069 0.002846
9 10000 1 1 total P0 -0.000207 0.000149
11 10000 1 1 total P1 0.000234 0.000128
13 10000 1 1 total P2 0.051870 0.006983
15 10000 1 1 total P3 0.009478 0.002234
8 10000 1 2 total P0 0.000989 0.000482
9 10000 1 2 total P1 -0.000207 0.000149
10 10000 1 2 total P2 -0.000103 0.000184
11 10000 1 2 total P3 0.000234 0.000128
4 10000 2 1 total P0 0.000925 0.000925
5 10000 2 1 total P1 -0.000768 0.000768
6 10000 2 1 total P2 0.000494 0.000494
10 10000 1 2 total P1 -0.000103 0.000184
12 10000 1 2 total P2 0.384199 0.027001
14 10000 1 2 total P3 0.020069 0.002846
1 10000 2 1 total P0 0.016482 0.004502
3 10000 2 1 total P1 -0.010499 0.010438
5 10000 2 1 total P2 -0.000768 0.000768
7 10000 2 1 total P3 -0.000171 0.000172
0 10000 2 2 total P0 0.411465 0.015245
1 10000 2 2 total P1 0.016482 0.004502
2 10000 2 2 total P2 0.006371 0.010551
3 10000 2 2 total P3 -0.010499 0.010438
2 10000 2 2 total P1 0.006371 0.010551
4 10000 2 2 total P2 0.000925 0.000925
6 10000 2 2 total P3 0.000494 0.000494
material group in group out nuclide mean std. dev.
3 10000 1 1 total 1.0 0.078516
2 10000 1 2 total 1.0 0.687184
@ -84,6 +84,45 @@
material group in nuclide mean std. dev.
1 10000 1 total 0.019239 0.001310
0 10000 2 total 0.466719 0.041411
material delayedgroup group in nuclide mean std. dev.
1 10000 1 1 total 0.000023 0.000002
3 10000 2 1 total 0.000144 0.000011
5 10000 3 1 total 0.000151 0.000011
7 10000 4 1 total 0.000074 0.000005
9 10000 5 1 total 0.000041 0.000003
11 10000 6 1 total 0.000017 0.000001
0 10000 1 2 total 0.000107 0.000009
2 10000 2 2 total 0.000552 0.000049
4 10000 3 2 total 0.000527 0.000047
6 10000 4 2 total 0.000222 0.000019
8 10000 5 2 total 0.000091 0.000008
10 10000 6 2 total 0.000038 0.000003
material delayedgroup group out nuclide mean std. dev.
1 10000 1 1 total 0.0 0.000000
3 10000 2 1 total 1.0 0.869128
5 10000 3 1 total 1.0 1.414214
7 10000 4 1 total 1.0 0.360359
9 10000 5 1 total 0.0 0.000000
11 10000 6 1 total 0.0 0.000000
0 10000 1 2 total 0.0 0.000000
2 10000 2 2 total 0.0 0.000000
4 10000 3 2 total 0.0 0.000000
6 10000 4 2 total 0.0 0.000000
8 10000 5 2 total 0.0 0.000000
10 10000 6 2 total 0.0 0.000000
material delayedgroup group in nuclide mean std. dev.
1 10000 1 1 total 0.000049 0.000005
3 10000 2 1 total 0.000306 0.000030
5 10000 3 1 total 0.000322 0.000031
7 10000 4 1 total 0.003822 0.000321
9 10000 5 1 total 0.002135 0.000183
11 10000 6 1 total 0.000875 0.000075
0 10000 1 2 total 0.000228 0.000025
2 10000 2 2 total 0.001175 0.000127
4 10000 3 2 total 0.001122 0.000122
6 10000 4 2 total 0.011426 0.001099
8 10000 5 2 total 0.004684 0.000451
10 10000 6 2 total 0.001962 0.000189
material group in nuclide mean std. dev.
1 10001 1 total 0.313738 0.015582
0 10001 2 total 0.300821 0.028052
@ -115,39 +154,39 @@
1 10001 1 total 0.310121 0.033788
0 10001 2 total 0.296264 0.043792
material group in group out nuclide moment mean std. dev.
12 10001 1 1 total P0 0.310121 0.033788
13 10001 1 1 total P1 0.038230 0.008484
14 10001 1 1 total P2 0.020745 0.004696
9 10001 1 1 total P0 0.000000 0.000000
11 10001 1 1 total P1 0.000000 0.000000
13 10001 1 1 total P2 0.038230 0.008484
15 10001 1 1 total P3 0.007964 0.003732
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
10 10001 1 2 total P1 0.000000 0.000000
12 10001 1 2 total P2 0.310121 0.033788
14 10001 1 2 total P3 0.020745 0.004696
1 10001 2 1 total P0 -0.011214 0.016180
3 10001 2 1 total P1 -0.003270 0.007329
5 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.296264 0.043792
1 10001 2 2 total P1 -0.011214 0.016180
2 10001 2 2 total P2 0.008837 0.011504
3 10001 2 2 total P3 -0.003270 0.007329
2 10001 2 2 total P1 0.008837 0.011504
4 10001 2 2 total P2 0.000000 0.000000
6 10001 2 2 total P3 0.000000 0.000000
material group in group out nuclide moment mean std. dev.
12 10001 1 1 total P0 0.310121 0.033788
13 10001 1 1 total P1 0.038230 0.008484
14 10001 1 1 total P2 0.020745 0.004696
9 10001 1 1 total P0 0.000000 0.000000
11 10001 1 1 total P1 0.000000 0.000000
13 10001 1 1 total P2 0.038230 0.008484
15 10001 1 1 total P3 0.007964 0.003732
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
10 10001 1 2 total P1 0.000000 0.000000
12 10001 1 2 total P2 0.310121 0.033788
14 10001 1 2 total P3 0.020745 0.004696
1 10001 2 1 total P0 -0.011214 0.016180
3 10001 2 1 total P1 -0.003270 0.007329
5 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.296264 0.043792
1 10001 2 2 total P1 -0.011214 0.016180
2 10001 2 2 total P2 0.008837 0.011504
3 10001 2 2 total P3 -0.003270 0.007329
2 10001 2 2 total P1 0.008837 0.011504
4 10001 2 2 total P2 0.000000 0.000000
6 10001 2 2 total P3 0.000000 0.000000
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
@ -170,6 +209,45 @@
material group in nuclide mean std. dev.
1 10001 1 total 0.0 0.0
0 10001 2 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
1 10001 1 1 total 0.0 0.0
3 10001 2 1 total 0.0 0.0
5 10001 3 1 total 0.0 0.0
7 10001 4 1 total 0.0 0.0
9 10001 5 1 total 0.0 0.0
11 10001 6 1 total 0.0 0.0
0 10001 1 2 total 0.0 0.0
2 10001 2 2 total 0.0 0.0
4 10001 3 2 total 0.0 0.0
6 10001 4 2 total 0.0 0.0
8 10001 5 2 total 0.0 0.0
10 10001 6 2 total 0.0 0.0
material delayedgroup group out nuclide mean std. dev.
1 10001 1 1 total 0.0 0.0
3 10001 2 1 total 0.0 0.0
5 10001 3 1 total 0.0 0.0
7 10001 4 1 total 0.0 0.0
9 10001 5 1 total 0.0 0.0
11 10001 6 1 total 0.0 0.0
0 10001 1 2 total 0.0 0.0
2 10001 2 2 total 0.0 0.0
4 10001 3 2 total 0.0 0.0
6 10001 4 2 total 0.0 0.0
8 10001 5 2 total 0.0 0.0
10 10001 6 2 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
1 10001 1 1 total 0.0 0.0
3 10001 2 1 total 0.0 0.0
5 10001 3 1 total 0.0 0.0
7 10001 4 1 total 0.0 0.0
9 10001 5 1 total 0.0 0.0
11 10001 6 1 total 0.0 0.0
0 10001 1 2 total 0.0 0.0
2 10001 2 2 total 0.0 0.0
4 10001 3 2 total 0.0 0.0
6 10001 4 2 total 0.0 0.0
8 10001 5 2 total 0.0 0.0
10 10001 6 2 total 0.0 0.0
material group in nuclide mean std. dev.
1 10002 1 total 0.664572 0.031215
0 10002 2 total 2.052384 0.224343
@ -201,39 +279,39 @@
1 10002 1 total 0.671269 0.026186
0 10002 2 total 2.035388 0.258060
material group in group out nuclide moment mean std. dev.
12 10002 1 1 total P0 0.639901 0.024709
13 10002 1 1 total P1 0.381167 0.016243
14 10002 1 1 total P2 0.152392 0.008156
9 10002 1 1 total P0 0.008758 0.000926
11 10002 1 1 total P1 -0.003785 0.000817
13 10002 1 1 total P2 0.381167 0.016243
15 10002 1 1 total P3 0.009148 0.003889
8 10002 1 2 total P0 0.031368 0.001728
9 10002 1 2 total P1 0.008758 0.000926
10 10002 1 2 total P2 -0.002568 0.001014
11 10002 1 2 total P3 -0.003785 0.000817
4 10002 2 1 total P0 0.000443 0.000445
5 10002 2 1 total P1 0.000400 0.000401
6 10002 2 1 total P2 0.000320 0.000321
10 10002 1 2 total P1 -0.002568 0.001014
12 10002 1 2 total P2 0.639901 0.024709
14 10002 1 2 total P3 0.152392 0.008156
1 10002 2 1 total P0 0.509941 0.051236
3 10002 2 1 total P1 0.024988 0.008312
5 10002 2 1 total P2 0.000400 0.000401
7 10002 2 1 total P3 0.000214 0.000215
0 10002 2 2 total P0 2.034945 0.257800
1 10002 2 2 total P1 0.509941 0.051236
2 10002 2 2 total P2 0.111175 0.013020
3 10002 2 2 total P3 0.024988 0.008312
2 10002 2 2 total P1 0.111175 0.013020
4 10002 2 2 total P2 0.000443 0.000445
6 10002 2 2 total P3 0.000320 0.000321
material group in group out nuclide moment mean std. dev.
12 10002 1 1 total P0 0.639901 0.024709
13 10002 1 1 total P1 0.381167 0.016243
14 10002 1 1 total P2 0.152392 0.008156
9 10002 1 1 total P0 0.008758 0.000926
11 10002 1 1 total P1 -0.003785 0.000817
13 10002 1 1 total P2 0.381167 0.016243
15 10002 1 1 total P3 0.009148 0.003889
8 10002 1 2 total P0 0.031368 0.001728
9 10002 1 2 total P1 0.008758 0.000926
10 10002 1 2 total P2 -0.002568 0.001014
11 10002 1 2 total P3 -0.003785 0.000817
4 10002 2 1 total P0 0.000443 0.000445
5 10002 2 1 total P1 0.000400 0.000401
6 10002 2 1 total P2 0.000320 0.000321
10 10002 1 2 total P1 -0.002568 0.001014
12 10002 1 2 total P2 0.639901 0.024709
14 10002 1 2 total P3 0.152392 0.008156
1 10002 2 1 total P0 0.509941 0.051236
3 10002 2 1 total P1 0.024988 0.008312
5 10002 2 1 total P2 0.000400 0.000401
7 10002 2 1 total P3 0.000214 0.000215
0 10002 2 2 total P0 2.034945 0.257800
1 10002 2 2 total P1 0.509941 0.051236
2 10002 2 2 total P2 0.111175 0.013020
3 10002 2 2 total P3 0.024988 0.008312
2 10002 2 2 total P1 0.111175 0.013020
4 10002 2 2 total P2 0.000443 0.000445
6 10002 2 2 total P3 0.000320 0.000321
material group in group out nuclide mean std. dev.
3 10002 1 1 total 1.0 0.038609
2 10002 1 2 total 1.0 0.067667
@ -256,3 +334,42 @@
material group in nuclide mean std. dev.
1 10002 1 total 0.0 0.0
0 10002 2 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
1 10002 1 1 total 0.0 0.0
3 10002 2 1 total 0.0 0.0
5 10002 3 1 total 0.0 0.0
7 10002 4 1 total 0.0 0.0
9 10002 5 1 total 0.0 0.0
11 10002 6 1 total 0.0 0.0
0 10002 1 2 total 0.0 0.0
2 10002 2 2 total 0.0 0.0
4 10002 3 2 total 0.0 0.0
6 10002 4 2 total 0.0 0.0
8 10002 5 2 total 0.0 0.0
10 10002 6 2 total 0.0 0.0
material delayedgroup group out nuclide mean std. dev.
1 10002 1 1 total 0.0 0.0
3 10002 2 1 total 0.0 0.0
5 10002 3 1 total 0.0 0.0
7 10002 4 1 total 0.0 0.0
9 10002 5 1 total 0.0 0.0
11 10002 6 1 total 0.0 0.0
0 10002 1 2 total 0.0 0.0
2 10002 2 2 total 0.0 0.0
4 10002 3 2 total 0.0 0.0
6 10002 4 2 total 0.0 0.0
8 10002 5 2 total 0.0 0.0
10 10002 6 2 total 0.0 0.0
material delayedgroup group in nuclide mean std. dev.
1 10002 1 1 total 0.0 0.0
3 10002 2 1 total 0.0 0.0
5 10002 3 1 total 0.0 0.0
7 10002 4 1 total 0.0 0.0
9 10002 5 1 total 0.0 0.0
11 10002 6 1 total 0.0 0.0
0 10002 1 2 total 0.0 0.0
2 10002 2 2 total 0.0 0.0
4 10002 3 2 total 0.0 0.0
6 10002 4 2 total 0.0 0.0
8 10002 5 2 total 0.0 0.0
10 10002 6 2 total 0.0 0.0

View file

@ -23,12 +23,18 @@ class MGXSTestHarness(PyAPITestHarness):
energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6,
20.])
# Initialize a six-delayed-group structure
delayed_groups = list(range(1,7))
# Initialize MGXS Library for a few cross section types
self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry)
self.mgxs_lib.by_nuclide = False
# Test all MGXS types
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \
openmc.mgxs.MDGXS_TYPES
self.mgxs_lib.energy_groups = energy_groups
self.mgxs_lib.delayed_groups = delayed_groups
self.mgxs_lib.legendre_order = 3
self.mgxs_lib.domain_type = 'material'
self.mgxs_lib.build_library()

View file

@ -1 +1 @@
e494320a213b5704a2ac915a2ba504857be91961ceb6735b6ad05d81eb31c44c9584d5bd9d40baececf1dcb5b030e6ecec63cfbd20639baf69bcb596c5c46591
8142ae4e107002a835999e4ace85c17376f262a7059fc224f3756a2de19aba6ca4c4fa14ca2085c87d7729aa8d6d6f78fdae21ac6dfe33ca303449c769076074

View file

@ -1 +1 @@
bafab1921a12146abb2bb29603b52b9cc28a5a950a7a6bb1e3f012c05891c310fad643760d4f148b04d0fef3d1f3e141d146e3a278d81cc6fc8187c37717c5e7
c2921f159dac64099862c1cd9c6d421c977991f621f954f893ec1351cfcea6794ca2c98c9c2dcc3411f1b8dac91ec83bd895788ba33179222c450a7df1d64f1e

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
5a0f3f1ae244ada7d8c9f444d7a98c2589a9720e78174a276cf96162df6728bab6d534f136f65cb0386c3235eb7d5db47a0dd6504636ca77e7eb375e6978a84d
a6afd2f11affce2467d77b8477881ab20091f67df4f632226ec2dd5d4cd7fabb9ac3e182563bb467ed249e4b3fe95b319cb688d653757f8ea154759b8a7f50e1

View file

@ -49,19 +49,19 @@
14 (500, 5000, 50000) 6.25e-07 2.00e+01 U238 fission 0.00e+00 0.00e+00
15 (500, 5000, 50000) 6.25e-07 2.00e+01 U238 nu-fission 0.00e+00 0.00e+00
sum(mesh) energy low [MeV] energy high [MeV] nuclide score mean std. dev.
0 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 fission 9.18e-03 1.62e-03
1 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.24e-02 3.94e-03
2 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.31e-08 2.08e-09
3 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.26e-08 5.19e-09
4 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 fission 8.40e-04 2.13e-04
5 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 2.06e-03 5.17e-04
6 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 fission 7.05e-04 3.42e-04
7 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 1.99e-03 1.01e-03
8 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 fission 8.77e-03 1.30e-03
9 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.14e-02 3.18e-03
10 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.24e-08 1.74e-09
11 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.08e-08 4.33e-09
12 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 fission 2.30e-03 6.20e-04
13 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 5.63e-03 1.52e-03
14 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 fission 1.45e-03 7.19e-04
15 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 3.97e-03 1.98e-03
0 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 fission 8.54e-03 1.30e-03
1 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.08e-02 3.17e-03
2 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.21e-08 1.74e-09
3 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.01e-08 4.34e-09
4 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 fission 2.20e-03 6.05e-04
5 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 5.38e-03 1.48e-03
6 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 fission 1.40e-03 7.17e-04
7 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 3.84e-03 1.97e-03
8 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 fission 9.40e-03 1.62e-03
9 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.29e-02 3.95e-03
10 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.34e-08 2.08e-09
11 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.33e-08 5.18e-09
12 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 fission 9.41e-04 2.52e-04
13 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 2.31e-03 6.13e-04
14 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 fission 7.54e-04 3.45e-04
15 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 2.12e-03 1.02e-03

View file

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<VTKFile type="PPolyData" version="0.1" byte_order="LittleEndian" compressor="vtkZLibDataCompressor">
<VTKFile type="PPolyData" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
<PPolyData GhostLevel="0">
<PPoints>
<PDataArray type="Float32" Name="Points" NumberOfComponents="3"/>