From c7a0b716d26779b61c197a5bfcf0b64a884c9c7b Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 1 Jul 2016 22:57:14 +0700 Subject: [PATCH 01/82] General cleanup -- both bugs and style issues -- based on running pylint --- openmc/arithmetic.py | 7 +++-- openmc/cell.py | 5 ++-- openmc/checkvalue.py | 4 +-- openmc/cmfd.py | 6 ++--- openmc/element.py | 7 ++--- openmc/filter.py | 5 ++-- openmc/geometry.py | 30 +++++++++++---------- openmc/lattice.py | 9 +++---- openmc/macroscopic.py | 10 ++----- openmc/material.py | 26 +++++++++--------- openmc/mesh.py | 17 ++++++------ openmc/mgxs/library.py | 54 ++++++++++++++----------------------- openmc/mgxs/mgxs.py | 37 +++++++++++++------------ openmc/mgxs_library.py | 17 +++++------- openmc/nuclide.py | 23 ++++++---------- openmc/opencg_compatible.py | 33 ++++++++--------------- openmc/particle_restart.py | 3 --- openmc/plots.py | 13 ++++----- openmc/region.py | 4 +-- openmc/settings.py | 28 ++++++++++--------- openmc/source.py | 8 ++++++ openmc/statepoint.py | 2 +- openmc/stats/univariate.py | 4 +-- openmc/summary.py | 15 ++++++----- openmc/surface.py | 23 +++++++++------- openmc/tallies.py | 54 +++++++++++++++++-------------------- openmc/trigger.py | 7 ++--- openmc/universe.py | 15 +++++------ setup.py | 1 - 29 files changed, 215 insertions(+), 252 deletions(-) diff --git a/openmc/arithmetic.py b/openmc/arithmetic.py index f9ef58db89..74ed760c7a 100644 --- a/openmc/arithmetic.py +++ b/openmc/arithmetic.py @@ -1,6 +1,5 @@ import sys import copy -from numbers import Integral from collections import Iterable import numpy as np @@ -321,7 +320,7 @@ class CrossFilter(object): @type.setter def type(self, filter_type): - if filter_type not in _FILTER_TYPES.values(): + if filter_type not in _FILTER_TYPES: msg = 'Unable to set CrossFilter type to "{0}" since it ' \ 'is not one of the supported types'.format(filter_type) raise ValueError(msg) @@ -576,7 +575,7 @@ class AggregateNuclide(object): @nuclides.setter def nuclides(self, nuclides): cv.check_iterable_type('nuclides', nuclides, - (basestring, Nuclide, CrossNuclide)) + (basestring, Nuclide, CrossNuclide)) self._nuclides = nuclides @aggregate_op.setter @@ -691,7 +690,7 @@ class AggregateFilter(object): @type.setter def type(self, filter_type): - if filter_type not in _FILTER_TYPES.values(): + if filter_type not in _FILTER_TYPES: msg = 'Unable to set AggregateFilter type to "{0}" since it ' \ 'is not one of the supported types'.format(filter_type) raise ValueError(msg) diff --git a/openmc/cell.py b/openmc/cell.py index 9ff5d1fa30..9055f10e59 100644 --- a/openmc/cell.py +++ b/openmc/cell.py @@ -21,6 +21,7 @@ AUTO_CELL_ID = 10000 def reset_auto_cell_id(): + """Reset counter for auto-generated cell IDs.""" global AUTO_CELL_ID AUTO_CELL_ID = 10000 @@ -421,7 +422,7 @@ class Cell(object): # Append all Cells in each Cell in the Universe to the dictionary cells = self.get_all_cells() - for cell_id, cell in cells.items(): + for cell in cells.values(): materials.update(cell.get_all_materials()) return materials @@ -497,7 +498,7 @@ class Cell(object): if self.temperature is not None: if isinstance(self.temperature, Iterable): element.set("temperature", ' '.join( - str(t) for t in self.temperature)) + str(t) for t in self.temperature)) else: element.set("temperature", str(self.temperature)) diff --git a/openmc/checkvalue.py b/openmc/checkvalue.py index cc0e1190df..7c0dff99dd 100644 --- a/openmc/checkvalue.py +++ b/openmc/checkvalue.py @@ -1,6 +1,5 @@ import copy from collections import Iterable -from numbers import Integral, Real import numpy as np @@ -162,7 +161,7 @@ def check_length(name, value, length_min, length_max=None): else: msg = 'Unable to set "{0}" to "{1}" since it must have length ' \ 'between "{2}" and "{3}"'.format(name, value, length_min, - length_max) + length_max) raise ValueError(msg) @@ -255,6 +254,7 @@ class CheckedList(list): """ def __init__(self, expected_type, name, items=[]): + super(CheckedList, self).__init__() self.expected_type = expected_type self.name = name for item in items: diff --git a/openmc/cmfd.py b/openmc/cmfd.py index d4cce2af5a..76d8685ff1 100644 --- a/openmc/cmfd.py +++ b/openmc/cmfd.py @@ -15,9 +15,7 @@ from numbers import Real, Integral from xml.etree import ElementTree as ET import sys -import numpy as np - -from openmc.clean_xml import * +from openmc.clean_xml import clean_xml_indentation from openmc.checkvalue import (check_type, check_length, check_value, check_greater_than, check_less_than) @@ -188,7 +186,7 @@ class CMFDMesh(object): class CMFD(object): - """Parameters that control the use of coarse-mesh finite difference acceleration + r"""Parameters that control the use of coarse-mesh finite difference acceleration in OpenMC. This corresponds directly to the cmfd.xml input file. Attributes diff --git a/openmc/element.py b/openmc/element.py index 14c98d4952..2e22702d99 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -45,9 +45,9 @@ class Element(object): def __eq__(self, other): if isinstance(other, Element): - if self._name != other._name: + if self._name != other.name: return False - elif self._xs != other._xs: + elif self._xs != other.xs: return False else: return True @@ -68,9 +68,6 @@ class Element(object): def __hash__(self): return hash(repr(self)) - def __hash__(self): - return hash(repr(self)) - def __repr__(self): string = 'Element - {0}\n'.format(self._name) string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self._xs) diff --git a/openmc/filter.py b/openmc/filter.py index 72fb3b14ed..bc8b5bdf77 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -6,7 +6,6 @@ import sys import numpy as np from openmc import Mesh -from openmc.summary import Summary import openmc.checkvalue as cv @@ -391,7 +390,7 @@ class Filter(object): if self.type == 'mesh': # Convert (x,y,z) to a single bin -- this is similar to # subroutine mesh_indices_to_bin in openmc/src/mesh.F90. - if (len(self.mesh.dimension) == 3): + if len(self.mesh.dimension) == 3: nx, ny, nz = self.mesh.dimension val = (filter_bin[0] - 1) * ny * nz + \ (filter_bin[1] - 1) * nz + \ @@ -568,7 +567,7 @@ class Filter(object): mesh_key = 'mesh {0}'.format(self.mesh.id) # Find mesh dimensions - use 3D indices for simplicity - if (len(self.mesh.dimension) == 3): + if len(self.mesh.dimension) == 3: nx, ny, nz = self.mesh.dimension else: nx, ny = self.mesh.dimension diff --git a/openmc/geometry.py b/openmc/geometry.py index 2625ed3fa5..14fd48fb1e 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -1,11 +1,13 @@ -from collections import Iterable, OrderedDict +from collections import OrderedDict from xml.etree import ElementTree as ET import openmc -from openmc.clean_xml import * +from openmc.clean_xml import sort_xml_elements, clean_xml_indentation from openmc.checkvalue import check_type + def reset_auto_ids(): + """Reset counters for all auto-generated IDs""" openmc.reset_auto_material_id() openmc.reset_auto_surface_id() openmc.reset_auto_cell_id() @@ -40,10 +42,10 @@ class Geometry(object): @root_universe.setter def root_universe(self, root_universe): check_type('root universe', root_universe, openmc.Universe) - if root_universe._id != 0: + if root_universe.id != 0: msg = 'Unable to add root Universe "{0}" to Geometry since ' \ 'it has ID="{1}" instead of ' \ - 'ID=0'.format(root_universe, root_universe._id) + 'ID=0'.format(root_universe, root_universe.id) raise ValueError(msg) self._root_universe = root_universe @@ -281,9 +283,9 @@ class Geometry(object): The name to match case_sensitive : bool Whether to distinguish upper and lower case letters in each - material's name (default is True) + material's name (default is False) matching : bool - Whether the names must match completely (default is True) + Whether the names must match completely (default is False) Returns ------- @@ -321,9 +323,9 @@ class Geometry(object): The name to search match case_sensitive : bool Whether to distinguish upper and lower case letters in each - cell's name (default is True) + cell's name (default is False) matching : bool - Whether the names must match completely (default is True) + Whether the names must match completely (default is False) Returns ------- @@ -361,9 +363,9 @@ class Geometry(object): The name to match case_sensitive : bool Whether to distinguish upper and lower case letters in each - cell's name (default is True) + cell's name (default is False) matching : bool - Whether the names must match completely (default is True) + Whether the names must match completely (default is False) Returns ------- @@ -401,9 +403,9 @@ class Geometry(object): The name to match case_sensitive : bool Whether to distinguish upper and lower case letters in each - universe's name (default is True) + universe's name (default is False) matching : bool - Whether the names must match completely (default is True) + Whether the names must match completely (default is False) Returns ------- @@ -441,9 +443,9 @@ class Geometry(object): The name to match case_sensitive : bool Whether to distinguish upper and lower case letters in each - lattice's name (default is True) + lattice's name (default is False) matching : bool - Whether the names must match completely (default is True) + Whether the names must match completely (default is False) Returns ------- diff --git a/openmc/lattice.py b/openmc/lattice.py index 7690104c71..81144e4d81 100644 --- a/openmc/lattice.py +++ b/openmc/lattice.py @@ -6,7 +6,6 @@ from math import sqrt, floor from numbers import Real, Integral from xml.etree import ElementTree as ET import sys -import warnings import numpy as np @@ -429,14 +428,14 @@ class RectLattice(Lattice): # For 2D Lattices if self.ndim == 2: offset = self._offsets[lat_z, lat_y, lat_x, distribcell_index-1] - offset += self._universes[lat_x][lat_y].get_cell_instance(path, - distribcell_index) + offset += self._universes[lat_x][lat_y].get_cell_instance( + path, distribcell_index) # For 3D Lattices else: offset = self._offsets[lat_z, lat_y, lat_x, distribcell_index-1] offset += self._universes[lat_z][lat_y][lat_x].get_cell_instance( - path, distribcell_index) + path, distribcell_index) return offset @@ -908,7 +907,7 @@ class HexLattice(Lattice): # coordinates d_min = np.inf for idx in [(ix, ia, iz), (ix + 1, ia, iz), (ix, ia + 1, iz), - (ix + 1, ia + 1, iz)]: + (ix + 1, ia + 1, iz)]: p = self.get_local_coordinates(point, idx) d = p[0]**2 + p[1]**2 if d < d_min: diff --git a/openmc/macroscopic.py b/openmc/macroscopic.py index 9f67a50ba4..1fdf875e72 100644 --- a/openmc/macroscopic.py +++ b/openmc/macroscopic.py @@ -1,4 +1,3 @@ -from numbers import Integral import sys from openmc.checkvalue import check_type @@ -39,9 +38,9 @@ class Macroscopic(object): def __eq__(self, other): if isinstance(other, Macroscopic): - if self._name != other._name: + if self._name != other.name: return False - elif self._xs != other._xs: + elif self._xs != other.xs: return False else: return True @@ -78,8 +77,3 @@ class Macroscopic(object): def xs(self, xs): check_type('cross-section identifier', xs, basestring) self._xs = xs - - def __repr__(self): - string = 'Macroscopic - {0}\n'.format(self._name) - string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self.xs) - return string diff --git a/openmc/material.py b/openmc/material.py index 66c2320ea4..1ba8f533a9 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -1,16 +1,16 @@ -from collections import Iterable, OrderedDict +from collections import OrderedDict from copy import deepcopy from numbers import Real, Integral import warnings from xml.etree import ElementTree as ET import sys -if sys.version_info[0] >= 3: - basestring = str import openmc import openmc.checkvalue as cv -from openmc.clean_xml import * -from openmc.data import natural_abundance +from openmc.clean_xml import sort_xml_elements, clean_xml_indentation + +if sys.version_info[0] >= 3: + basestring = str # A static variable for auto-generated Material IDs @@ -18,6 +18,7 @@ AUTO_MATERIAL_ID = 10000 def reset_auto_material_id(): + """Reset counter for auto-generated material IDs.""" global AUTO_MATERIAL_ID AUTO_MATERIAL_ID = 10000 @@ -352,8 +353,8 @@ class Material(object): self._macroscopic = macroscopic else: msg = 'Unable to add a Macroscopic to Material ID="{0}", ' \ - 'Only One Macroscopic allowed per ' \ - 'Material!'.format(self._id, macroscopic) + 'Only one Macroscopic allowed per ' \ + 'Material!'.format(self._id) raise ValueError(msg) # Generally speaking, the density for a macroscopic object will @@ -380,7 +381,7 @@ class Material(object): raise ValueError(msg) # If the Material contains the Macroscopic, delete it - if macroscopic._name == self._macroscopic.name: + if macroscopic.name == self._macroscopic.name: self._macroscopic = None def add_element(self, element, percent, percent_type='ao', expand=False): @@ -446,7 +447,7 @@ class Material(object): """ - if not isinstance(nuclide, openmc.Element): + if not isinstance(element, openmc.Element): msg = 'Unable to remove "{0}" in Material ID="{1}" ' \ 'since it is not an Element'.format(self.id, element) raise ValueError(msg) @@ -534,7 +535,7 @@ class Material(object): def _get_macroscopic_xml(self, macroscopic): xml_element = ET.Element("macroscopic") - xml_element.set("name", macroscopic._name) + xml_element.set("name", macroscopic.name) if macroscopic.xs is not None: xml_element.set("xs", macroscopic.xs) @@ -640,7 +641,7 @@ class Material(object): if self._macroscopic is None: # Create nuclide XML subelements - subelements = self.get_nuclides_xml(self._nuclides, distrib=True) + subelements = self._get_nuclides_xml(self._nuclides, distrib=True) for subelement_nuc in subelements: subelement.append(subelement_nuc) @@ -650,8 +651,7 @@ class Material(object): subelement.append(subsubelement) else: # Create macroscopic XML subelements - subsubelement = self._get_macroscopic_xml(self._macroscopic, - distrib=True) + subsubelement = self._get_macroscopic_xml(self._macroscopic) subelement.append(subsubelement) if len(self._sab) > 0: diff --git a/openmc/mesh.py b/openmc/mesh.py index 0c88d4a680..169e7705cc 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -16,6 +16,7 @@ AUTO_MESH_ID = 10000 def reset_auto_mesh_id(): + """Reset counter for auto-generated mesh IDs.""" global AUTO_MESH_ID AUTO_MESH_ID = 10000 @@ -63,20 +64,20 @@ class Mesh(object): def __eq__(self, mesh2): # Check type - if self._type != mesh2._type: + if self._type != mesh2.type: return False # Check dimension - elif self._dimension != mesh2._dimension: + elif self._dimension != mesh2.dimension: return False # Check width - elif self._width != mesh2._width: + elif self._width != mesh2.width: return False # Check lower left / upper right - elif self._lower_left != mesh2._lower_left and \ - self._upper_right != mesh2._upper_right: + elif self._lower_left != mesh2.lower_left and \ + self._upper_right != mesh2.upper_right: return False else: @@ -129,7 +130,7 @@ class Mesh(object): def name(self, name): if name is not None: cv.check_type('name for mesh ID="{0}"'.format(self._id), - name, basestring) + name, basestring) self._name = name else: self._name = '' @@ -137,9 +138,9 @@ class Mesh(object): @type.setter def type(self, meshtype): cv.check_type('type for mesh ID="{0}"'.format(self._id), - meshtype, basestring) + meshtype, basestring) cv.check_value('type for mesh ID="{0}"'.format(self._id), - meshtype, ['regular']) + meshtype, ['regular']) self._type = meshtype @dimension.setter diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 9241892646..319e4d4139 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -2,7 +2,6 @@ import sys import os import copy import pickle -import warnings from numbers import Integral from collections import OrderedDict from warnings import warn @@ -152,10 +151,6 @@ class Library(object): def openmc_geometry(self): return self._openmc_geometry - @property - def openmc_geometry(self): - return self._openmc_geometry - @property def opencg_geometry(self): if self._opencg_geometry is None: @@ -279,16 +274,14 @@ class Library(object): cv.check_iterable_type('domain', domains, openmc.Universe) all_domains = self.openmc_geometry.get_all_universes() else: - msg = 'Unable to set domains with ' \ - 'domain type "{}"'.format(self.domain_type) - raise ValueError(msg) + raise ValueError('Unable to set domains with domain ' + 'type "{}"'.format(self.domain_type)) # Check that each domain can be found in the geometry for domain in domains: if domain not in all_domains: - msg = 'Domain "{}" could not be found in the ' \ - 'geometry.'.format(domain) - raise ValueError(msg) + raise ValueError('Domain "{}" could not be found in the ' + 'geometry.'.format(domain)) self._domains = domains @@ -302,9 +295,8 @@ class Library(object): cv.check_value('correction', correction, ('P0', None)) if correction == 'P0' and self.legendre_order > 0: - msg = 'The P0 correction will be ignored since the scattering ' \ - 'order {} is greater than zero'.format(self.legendre_order) - warnings.warn(msg) + warn('The P0 correction will be ignored since the scattering ' + 'order {} is greater than zero'.format(self.legendre_order)) self._correction = correction @@ -317,7 +309,7 @@ class Library(object): if self.correction == 'P0' and legendre_order > 0: msg = 'The P0 correction will be ignored since the scattering ' \ 'order {} is greater than zero'.format(self.legendre_order) - warnings.warn(msg, RuntimeWarning) + warn(msg, RuntimeWarning) self.correction = None self._legendre_order = legendre_order @@ -402,7 +394,7 @@ class Library(object): for domain in self.domains: for mgxs_type in self.mgxs_types: mgxs = self.get_mgxs(domain, mgxs_type) - for tally_id, tally in mgxs.tallies.items(): + for tally in mgxs.tallies.values(): tallies_file.append(tally, merge=merge) def load_from_statepoint(self, statepoint): @@ -498,8 +490,8 @@ class Library(object): # Check that requested domain is included in library if mgxs_type not in self.mgxs_types: - msg = 'Unable to find MGXS type "{0}"'.format(mgxs_type) - raise ValueError(msg) + msg = 'Unable to find MGXS type "{0}"'.format(mgxs_type) + raise ValueError(msg) return self.all_mgxs[domain_id][mgxs_type] @@ -922,7 +914,7 @@ class Library(object): # accounted for approximately by using an adjusted # absorption cross section. if 'total' in self.mgxs_types: - xsdata._absorption = \ + xsdata.absorption = \ np.subtract(xsdata.total, np.sum(xsdata.scatter[0, :, :], axis=1)) @@ -1184,13 +1176,11 @@ class Library(object): # Ensure absorption is present if 'absorption' not in self.mgxs_types: error_flag = True - msg = '"absorption" MGXS type is required but not provided.' - warn(msg) + warn('"absorption" MGXS type is required but not provided.') # Ensure nu-scattering matrix is required if 'nu-scatter matrix' not in self.mgxs_types: error_flag = True - msg = '"nu-scatter matrix" MGXS type is required but not provided.' - warn(msg) + warn('"nu-scatter matrix" MGXS type is required but not provided.') else: # Ok, now see the status of scatter and/or multiplicity if ((('scatter matrix' not in self.mgxs_types) and @@ -1199,24 +1189,20 @@ class Library(object): # we need total, and not transport. if 'total' not in self.mgxs_types: error_flag = True - msg = '"total" MGXS type is required if a ' \ - 'scattering matrix is not provided.' - warn(msg) + warn('"total" MGXS type is required if a ' + 'scattering matrix is not provided.') # Total or transport can be present, but if using # self.correction=="P0", then we should use transport. if (((self.correction is "P0") and ('nu-transport' not in self.mgxs_types))): error_flag = True - msg = 'A "nu-transport" MGXS type is required since a "P0" ' \ - 'correction is applied, but a "nu-transport" MGXS is ' \ - 'not provided.' - warn(msg) + warn('A "nu-transport" MGXS type is required since a "P0" ' + 'correction is applied, but a "nu-transport" MGXS is ' + 'not provided.') elif (((self.correction is None) and ('total' not in self.mgxs_types))): error_flag = True - msg = '"total" MGXS type is required, but not provided.' - warn(msg) + warn('"total" MGXS type is required, but not provided.') if error_flag: - msg = 'Invalid MGXS configuration encountered.' - raise ValueError(msg) + raise ValueError('Invalid MGXS configuration encountered.') diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index c12c61bdf4..2c0cb21c60 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1,6 +1,6 @@ from __future__ import division -from collections import Iterable, OrderedDict +from collections import OrderedDict from numbers import Integral import warnings import os @@ -412,7 +412,7 @@ class MGXS(object): self.rxn_rate_tally.sparse = sparse for tally_name in self.tallies: - self.tallies[tally_name].sparse = sparse + self.tallies[tally_name].sparse = sparse self._sparse = sparse @@ -852,7 +852,7 @@ class MGXS(object): fine_edges = self.energy_groups.group_edges # Condense each of the tallies to the coarse group structure - for tally_type, tally in condensed_xs.tallies.items(): + for tally in condensed_xs.tallies.values(): # Make condensed tally derived and null out sum, sum_sq tally._derived = True @@ -993,7 +993,8 @@ class MGXS(object): slice_nuclides = [nuc for nuc in nuclides if nuc in tally.nuclides] if len(groups) != 0 and tally.contains_filter('energy'): tally_slice = tally.get_slice(filters=filters, - filter_bins=filter_bins, nuclides=slice_nuclides) + filter_bins=filter_bins, + nuclides=slice_nuclides) else: tally_slice = tally.get_slice(nuclides=slice_nuclides) slice_xs.tallies[tally_type] = tally_slice @@ -1286,7 +1287,7 @@ class MGXS(object): num_digits = len(str(self.num_subdomains)) # Create a separate HDF5 group for each subdomain - for i, subdomain in enumerate(subdomains): + for subdomain in subdomains: # Create an HDF5 group for the subdomain if self.domain_type == 'distribcell': @@ -1311,9 +1312,11 @@ class MGXS(object): # Extract the cross section for this subdomain and nuclide average = self.get_xs(subdomains=[subdomain], nuclides=[nuclide], - xs_type=xs_type, value='mean', row_column=row_column) + xs_type=xs_type, value='mean', + row_column=row_column) std_dev = self.get_xs(subdomains=[subdomain], nuclides=[nuclide], - xs_type=xs_type, value='std_dev', row_column=row_column) + xs_type=xs_type, value='std_dev', + row_column=row_column) average = average.squeeze() std_dev = std_dev.squeeze() @@ -1386,9 +1389,9 @@ class MGXS(object): longtable=True, index=False) # Surround LaTeX table with code needed to run pdflatex - with open(filename + '.tex','r') as original: + with open(filename + '.tex', 'r') as original: data = original.read() - with open(filename + '.tex','w') as modified: + with open(filename + '.tex', 'w') as modified: modified.write( '\\documentclass[preview, 12pt, border=1mm]{standalone}\n') modified.write('\\usepackage{caption}\n') @@ -1451,7 +1454,7 @@ class MGXS(object): query_nuclides = self.get_all_nuclides() xs_tally = self.xs_tally.summation(nuclides=query_nuclides) df = xs_tally.get_pandas_dataframe( - distribcell_paths=distribcell_paths) + distribcell_paths=distribcell_paths) # Remove nuclide column since it is homogeneous and redundant df.drop('nuclide', axis=1, inplace=True) @@ -1460,12 +1463,12 @@ class MGXS(object): elif self.by_nuclide and nuclides != 'all': xs_tally = self.xs_tally.get_slice(nuclides=nuclides) df = xs_tally.get_pandas_dataframe( - distribcell_paths=distribcell_paths) + distribcell_paths=distribcell_paths) # If the user requested all nuclides, keep nuclide column in dataframe else: df = self.xs_tally.get_pandas_dataframe( - distribcell_paths=distribcell_paths) + distribcell_paths=distribcell_paths) # Remove the score column since it is homogeneous and redundant df = df.drop('score', axis=1) @@ -3443,7 +3446,7 @@ 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', **kwargs): + row_column='inout', value='mean'): r"""Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested scattering @@ -3530,7 +3533,7 @@ class ScatterMatrixXS(MatrixMGXS): cv.check_type('moment', moment, Integral) cv.check_greater_than('moment', moment, 0, equality=True) cv.check_less_than( - 'moment', moment, self.legendre_order, equality=True) + 'moment', moment, self.legendre_order, equality=True) scores = [self.xs_tally.scores[moment]] else: scores = [] @@ -3641,7 +3644,7 @@ class ScatterMatrixXS(MatrixMGXS): """ df = super(ScatterMatrixXS, self).get_pandas_dataframe( - groups, nuclides, xs_type, distribcell_paths) + groups, nuclides, xs_type, distribcell_paths) # Add a moment column to dataframe if self.legendre_order > 0: @@ -3660,7 +3663,7 @@ class ScatterMatrixXS(MatrixMGXS): cv.check_type('moment', moment, Integral) cv.check_greater_than('moment', moment, 0, equality=True) cv.check_less_than( - 'moment', moment, self.legendre_order, equality=True) + 'moment', moment, self.legendre_order, equality=True) df = df[df['moment'] == 'P{}'.format(moment)] return df @@ -4601,7 +4604,7 @@ class Chi(MGXS): # Build the dataframe using the parent class method df = super(Chi, self).get_pandas_dataframe( - groups, nuclides, xs_type, distribcell_paths=distribcell_paths) + groups, nuclides, xs_type, distribcell_paths=distribcell_paths) # If user requested micro cross sections, multiply by the atom # densities to cancel out division made by the parent class method diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index f34f3b71ce..8a572c8748 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -9,7 +9,7 @@ import openmc import openmc.mgxs from openmc.checkvalue import check_type, check_value, check_greater_than, \ check_iterable_type -from openmc.clean_xml import * +from openmc.clean_xml import sort_xml_elements, clean_xml_indentation if sys.version_info[0] >= 3: basestring = str @@ -376,7 +376,7 @@ class XSdata(object): # Check validity of energy_groups check_type('energy_groups', energy_groups, openmc.mgxs.EnergyGroups) - if energy_group.group_edges is None: + if energy_groups.group_edges is None: msg = 'Unable to assign an EnergyGroups object ' \ 'with uninitialized group edges' raise ValueError(msg) @@ -597,10 +597,7 @@ class XSdata(object): [self.vector_shape, self.matrix_shape]) # Find out if we have a nu-fission matrix or vector # and set a flag to allow other methods to check this later. - if npnu_fission.shape == self.vector_shape: - self.use_chi = True - else: - self.use_chi = False + self.use_chi = (npnu_fission.shape == self.vector_shape) self._nu_fission = npnu_fission if np.sum(self._nu_fission) > 0.0: @@ -873,7 +870,7 @@ class XSdata(object): check_value('domain_type', scatter.domain_type, ['universe', 'cell', 'material']) - if (self.scatt_type != 'legendre'): + if self.scatt_type != 'legendre': msg = 'Anisotropic scattering representations other than ' \ 'Legendre expansions have not yet been implemented in ' \ 'openmc.mgxs.' @@ -1090,9 +1087,9 @@ class MGXSLibrary(object): @inverse_velocities.setter def inverse_velocities(self, inverse_velocities): - cv.check_type('inverse_velocities', inverse_velocities, Iterable, Real) - cv.check_greater_than('number of inverse_velocities', - len(inverse_velocities), 0.0) + check_type('inverse_velocities', inverse_velocities, Iterable, Real) + check_greater_than('number of inverse_velocities', + len(inverse_velocities), 0.0) self._inverse_velocities = np.array(inverse_velocities) @energy_groups.setter diff --git a/openmc/nuclide.py b/openmc/nuclide.py index 8e97f1a1c6..a2130680fb 100644 --- a/openmc/nuclide.py +++ b/openmc/nuclide.py @@ -46,9 +46,9 @@ class Nuclide(object): def __eq__(self, other): if isinstance(other, Nuclide): - if self._name != other._name: + if self._name != other.name: return False - elif self._xs != other._xs: + elif self._xs != other.xs: return False else: return True @@ -71,9 +71,12 @@ class Nuclide(object): def __repr__(self): string = 'Nuclide - {0}\n'.format(self._name) - string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self._xs) - if self._zaid is not None: - string += '{0: <16}{1}{2}\n'.format('\tZAID', '=\t', self._zaid) + string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self.xs) + if self.zaid is not None: + string += '{0: <16}{1}{2}\n'.format('\tZAID', '=\t', self.zaid) + if self.scattering is not None: + string += '{0: <16}{1}{2}\n'.format('\tscattering', '=\t', + self.scattering) return string @property @@ -116,13 +119,3 @@ class Nuclide(object): raise ValueError(msg) self._scattering = scattering - - def __repr__(self): - string = 'Nuclide - {0}\n'.format(self._name) - string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self.xs) - if self.zaid is not None: - string += '{0: <16}{1}{2}\n'.format('\tZAID', '=\t', self.zaid) - if self.scattering is not None: - string += '{0: <16}{1}{2}\n'.format('\tscattering', '=\t', - self.scattering) - return string diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index b112ed327f..967e11f48c 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -6,8 +6,8 @@ import numpy as np try: import opencg except ImportError: - msg = 'Unable to import opencg which is needed by openmc.opencg_compatible' - raise ImportError(msg) + raise ImportError('Unable to import opencg which is needed by ' + 'openmc.opencg_compatible') import openmc import openmc.checkvalue as cv @@ -81,7 +81,6 @@ def get_opencg_material(openmc_material): cv.check_type('openmc_material', openmc_material, openmc.Material) - global OPENCG_MATERIALS material_id = openmc_material.id # If this Material was already created, use it @@ -118,7 +117,6 @@ def get_openmc_material(opencg_material): cv.check_type('opencg_material', opencg_material, opencg.Material) - global OPENMC_MATERIALS material_id = opencg_material.id # If this Material was already created, use it @@ -185,7 +183,6 @@ def get_opencg_surface(openmc_surface): cv.check_type('openmc_surface', openmc_surface, openmc.Surface) - global OPENCG_SURFACES surface_id = openmc_surface.id # If this Material was already created, use it @@ -226,21 +223,21 @@ def get_opencg_surface(openmc_surface): z0 = openmc_surface.z0 R = openmc_surface.r opencg_surface = opencg.XCylinder(surface_id, name, - boundary, y0, z0, R) + boundary, y0, z0, R) elif openmc_surface.type == 'y-cylinder': x0 = openmc_surface.x0 z0 = openmc_surface.z0 R = openmc_surface.r opencg_surface = opencg.YCylinder(surface_id, name, - boundary, x0, z0, R) + boundary, x0, z0, R) elif openmc_surface.type == 'z-cylinder': x0 = openmc_surface.x0 y0 = openmc_surface.y0 R = openmc_surface.r opencg_surface = opencg.ZCylinder(surface_id, name, - boundary, x0, y0, R) + boundary, x0, y0, R) # Add the OpenMC Surface to the global collection of all OpenMC Surfaces OPENMC_SURFACES[surface_id] = openmc_surface @@ -268,7 +265,6 @@ def get_openmc_surface(opencg_surface): cv.check_type('opencg_surface', opencg_surface, opencg.Surface) - global openmc_surface surface_id = opencg_surface.id # If this Surface was already created, use it @@ -356,7 +352,6 @@ def get_compatible_opencg_surfaces(opencg_surface): cv.check_type('opencg_surface', opencg_surface, opencg.Surface) - global OPENMC_SURFACES surface_id = opencg_surface.id # If this Surface was already created, use it @@ -435,7 +430,6 @@ def get_opencg_cell(openmc_cell): cv.check_type('openmc_cell', openmc_cell, openmc.Cell) - global OPENCG_CELLS cell_id = openmc_cell.id # If this Cell was already created, use it @@ -480,7 +474,7 @@ def get_opencg_cell(openmc_cell): opencg_cell.add_surface(get_opencg_surface(surface), halfspace) else: raise NotImplementedError("Complex cells not yet supported " - "in OpenCG.") + "in OpenCG.") # Add the OpenMC Cell to the global collection of all OpenMC Cells OPENMC_CELLS[cell_id] = openmc_cell @@ -615,7 +609,7 @@ def make_opencg_cells_compatible(opencg_universe): # Check all OpenCG Cells in this Universe for compatibility with OpenMC opencg_cells = opencg_universe.cells - for cell_id, opencg_cell in opencg_cells.items(): + for opencg_cell in opencg_cells.values(): # Check each of the OpenCG Surfaces for OpenMC compatibility surfaces = opencg_cell.surfaces @@ -635,7 +629,7 @@ def make_opencg_cells_compatible(opencg_universe): # of this block is necessary in the event that there are more # incompatible Surfaces in this Cell that are not accounted for. cells = get_compatible_opencg_cells(opencg_cell, - surface, halfspace) + surface, halfspace) # Remove the non-compatible OpenCG Cell from the Universe opencg_universe.remove_cell(opencg_cell) @@ -668,7 +662,6 @@ def get_openmc_cell(opencg_cell): cv.check_type('opencg_cell', opencg_cell, opencg.Cell) - global OPENMC_CELLS cell_id = opencg_cell.id # If this Cell was already created, use it @@ -730,7 +723,6 @@ def get_opencg_universe(openmc_universe): cv.check_type('openmc_universe', openmc_universe, openmc.Universe) - global OPENCG_UNIVERSES universe_id = openmc_universe.id # If this Universe was already created, use it @@ -744,7 +736,7 @@ def get_opencg_universe(openmc_universe): # Convert all OpenMC Cells in this Universe to OpenCG Cells openmc_cells = openmc_universe.cells - for cell_id, openmc_cell in openmc_cells.items(): + for openmc_cell in openmc_cells.values(): opencg_cell = get_opencg_cell(openmc_cell) opencg_universe.add_cell(opencg_cell) @@ -774,7 +766,6 @@ def get_openmc_universe(opencg_universe): cv.check_type('opencg_universe', opencg_universe, opencg.Universe) - global OPENMC_UNIVERSES universe_id = opencg_universe.id # If this Universe was already created, use it @@ -791,7 +782,7 @@ def get_openmc_universe(opencg_universe): # Convert all OpenCG Cells in this Universe to OpenMC Cells opencg_cells = opencg_universe.cells - for cell_id, opencg_cell in opencg_cells.items(): + for opencg_cell in opencg_cells.values(): openmc_cell = get_openmc_cell(opencg_cell) openmc_universe.add_cell(openmc_cell) @@ -821,7 +812,6 @@ def get_opencg_lattice(openmc_lattice): cv.check_type('openmc_lattice', openmc_lattice, openmc.Lattice) - global OPENCG_LATTICES lattice_id = openmc_lattice.id # If this Lattice was already created, use it @@ -915,7 +905,6 @@ def get_openmc_lattice(opencg_lattice): cv.check_type('opencg_lattice', opencg_lattice, opencg.Lattice) - global OPENMC_LATTICES lattice_id = opencg_lattice.id # If this Lattice was already created, use it @@ -1043,7 +1032,7 @@ def get_openmc_geometry(opencg_geometry): # Make the entire geometry "compatible" before assigning auto IDs universes = opencg_geometry.get_all_universes() - for universe_id, universe in universes.items(): + for universe in universes.values(): if not isinstance(universe, opencg.Lattice): make_opencg_cells_compatible(universe) diff --git a/openmc/particle_restart.py b/openmc/particle_restart.py index 7a27db2f60..fb2fc4736f 100644 --- a/openmc/particle_restart.py +++ b/openmc/particle_restart.py @@ -1,6 +1,3 @@ -import struct - - class Particle(object): """Information used to restart a specific particle that caused a simulation to fail. diff --git a/openmc/plots.py b/openmc/plots.py index 9167e55d50..73b51da5e8 100644 --- a/openmc/plots.py +++ b/openmc/plots.py @@ -8,7 +8,7 @@ import numpy as np import openmc import openmc.checkvalue as cv -from openmc.clean_xml import * +from openmc.clean_xml import clean_xml_indentation if sys.version_info[0] >= 3: basestring = str @@ -18,6 +18,7 @@ AUTO_PLOT_ID = 10000 def reset_auto_plot_id(): + """Reset counter for auto-generated plot IDs.""" global AUTO_PLOT_ID AUTO_PLOT_ID = 10000 @@ -201,7 +202,7 @@ class Plot(object): cv.check_type('plot background', background, Iterable, Integral) cv.check_length('plot background', background, 3) for rgb in background: - cv.check_greater_than('plot background',rgb, 0, True) + cv.check_greater_than('plot background', rgb, 0, True) cv.check_less_than('plot background', rgb, 256) self._background = background @@ -257,7 +258,7 @@ class Plot(object): string += '{0: <16}{1}{2}\n'.format('\tColor', '=\t', self._color) string += '{0: <16}{1}{2}\n'.format('\tMask', '=\t', self._mask_components) - string += '{0: <16}{1}{2}\n'.format('\tMask', '=\t', + string += '{0: <16}{1}{2}\n'.format('\tMask', '=\t', self._mask_background) string += '{0: <16}{1}{2}\n'.format('\tCol Spec', '=\t', self._col_spec) return string @@ -536,8 +537,8 @@ class Plots(cv.CheckedList): for plot in self: xml_element = plot.get_plot_xml() - if len(plot._name) > 0: - self._plots_file.append(ET.Comment(plot._name)) + if len(plot.name) > 0: + self._plots_file.append(ET.Comment(plot.name)) self._plots_file.append(xml_element) @@ -557,4 +558,4 @@ class Plots(cv.CheckedList): # Write the XML Tree to the plots.xml file tree = ET.ElementTree(self._plots_file) tree.write("plots.xml", xml_declaration=True, - encoding='utf-8', method="xml") + encoding='utf-8', method="xml") diff --git a/openmc/region.py b/openmc/region.py index 9e10112710..a1b9e9fd0d 100644 --- a/openmc/region.py +++ b/openmc/region.py @@ -203,7 +203,7 @@ class Region(object): class Intersection(Region): - """Intersection of two or more regions. + r"""Intersection of two or more regions. Instances of Intersection are generally created via the __and__ operator applied to two instances of :class:`openmc.Region`. This is illustrated in @@ -277,7 +277,7 @@ class Intersection(Region): class Union(Region): - """Union of two or more regions. + r"""Union of two or more regions. Instances of Union are generally created via the __or__ operator applied to two instances of :class:`openmc.Region`. This is illustrated in the diff --git a/openmc/settings.py b/openmc/settings.py index 3c22b39ba9..1738beb0d2 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -6,7 +6,7 @@ import sys import numpy as np -from openmc.clean_xml import * +from openmc.clean_xml import clean_xml_indentation from openmc.checkvalue import (check_type, check_length, check_value, check_greater_than, check_less_than) from openmc import Nuclide @@ -311,7 +311,7 @@ class Settings(object): @property def trigger_batch_interval(self): - return self._batch_interval + return self._trigger_batch_interval @property def output(self): @@ -1011,7 +1011,7 @@ class Settings(object): if self._trigger_active is not None: if self._trigger_subelement is None: self._trigger_subelement = ET.SubElement(self._settings_file, - "trigger") + "trigger") element = ET.SubElement(self._trigger_subelement, "active") element.text = str(self._trigger_active).lower() @@ -1020,7 +1020,7 @@ class Settings(object): if self._trigger_max_batches is not None: if self._trigger_subelement is None: self._trigger_subelement = ET.SubElement(self._settings_file, - "trigger") + "trigger") element = ET.SubElement(self._trigger_subelement, "max_batches") element.text = str(self._trigger_max_batches) @@ -1029,7 +1029,7 @@ class Settings(object): if self._trigger_batch_interval is not None: if self._trigger_subelement is None: self._trigger_subelement = ET.SubElement(self._settings_file, - "trigger") + "trigger") element = ET.SubElement(self._trigger_subelement, "batch_interval") element.text = str(self._trigger_batch_interval) @@ -1103,14 +1103,16 @@ class Settings(object): element.text = str(self._multipole_active) def _create_resonance_scattering_element(self): - if self.resonance_scattering is None: return + if self.resonance_scattering is None: + return element = ET.SubElement(self._settings_file, "resonance_scattering") for r in self.resonance_scattering: if r.nuclide.name != r.nuclide_0K.name: raise ValueError("The nuclide and nuclide_0K attributes of " - "a ResonantScattering object must have identical names.") + "a ResonantScattering object must have " + "identical names.") r.create_xml_subelement(element) def export_to_xml(self): @@ -1159,7 +1161,7 @@ class Settings(object): # Write the XML Tree to the settings.xml file tree = ET.ElementTree(self._settings_file) tree.write("settings.xml", xml_declaration=True, - encoding='utf-8', method="xml") + encoding='utf-8', method="xml") class ResonanceScattering(object): @@ -1215,15 +1217,17 @@ class ResonanceScattering(object): @nuclide.setter def nuclide(self, nuc): check_type('nuclide', nuc, Nuclide) - if nuc.zaid == None: raise ValueError("The nuclide must have an " - "explicitly defined zaid attribute.") + if nuc.zaid is None: + raise ValueError("The nuclide must have an explicitly defined " + "zaid attribute.") self._nuclide = nuc @nuclide_0K.setter def nuclide_0K(self, nuc): check_type('nuclide_0K', nuc, Nuclide) - if nuc.zaid == None: raise ValueError("The nuclide_0K must have an " - "explicitly defined zaid attribute.") + if nuc.zaid is None: + raise ValueError("The nuclide_0K must have an explicitly defined " + "zaid attribute.") self._nuclide_0K = nuc @method.setter diff --git a/openmc/source.py b/openmc/source.py index 36a36e5948..7e8a68accf 100644 --- a/openmc/source.py +++ b/openmc/source.py @@ -104,6 +104,14 @@ class Source(object): self._strength = strength def to_xml(self): + """Return XML representation of the source + + Returns + ------- + element : xml.etree.ElementTree.Element + XML element containing source data + + """ element = ET.Element("source") element.set("strength", str(self.strength)) if self.file is not None: diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 0baa631581..6337746650 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -558,7 +558,7 @@ class StatePoint(object): tally = None # Iterate over all tallies to find the appropriate one - for tally_id, test_tally in self.tallies.items(): + for test_tally in self.tallies.values(): # Determine if Tally has queried name if name and name != test_tally.name: diff --git a/openmc/stats/univariate.py b/openmc/stats/univariate.py index af9b9b3013..7c84dba34c 100644 --- a/openmc/stats/univariate.py +++ b/openmc/stats/univariate.py @@ -24,7 +24,7 @@ class Univariate(object): pass @abstractmethod - def to_xml(self): + def to_xml(self, element_name): return '' @@ -180,7 +180,7 @@ class Maxwell(Univariate): class Watt(Univariate): - """Watt fission energy spectrum. + r"""Watt fission energy spectrum. The Watt fission energy spectrum is characterized by two parameters :math:`a` and :math:`b` and has density function :math:`p(E) dE = c e^{-E/a} diff --git a/openmc/summary.py b/openmc/summary.py index c5dbcadda0..8c626940e5 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -1,7 +1,8 @@ from collections import Iterable -import numpy as np import re +import numpy as np + import openmc from openmc.region import Region @@ -301,7 +302,7 @@ class Summary(object): # Get the distribcell index ind = self._f['geometry/cells'][key]['distribcell_index'].value if ind != 0: - cell.distribcell_index = ind + cell.distribcell_index = ind # Add the Cell to the global dictionary of all Cells self.cells[index] = cell @@ -608,7 +609,7 @@ class Summary(object): """ - for index, material in self.materials.items(): + for material in self.materials.values(): if material.id == material_id: return material @@ -629,7 +630,7 @@ class Summary(object): """ - for index, surface in self.surfaces.items(): + for surface in self.surfaces.values(): if surface.id == surface_id: return surface @@ -650,7 +651,7 @@ class Summary(object): """ - for index, cell in self.cells.items(): + for cell in self.cells.values(): if cell.id == cell_id: return cell @@ -671,7 +672,7 @@ class Summary(object): """ - for index, universe in self.universes.items(): + for universe in self.universes.values(): if universe.id == universe_id: return universe @@ -692,7 +693,7 @@ class Summary(object): """ - for index, lattice in self.lattices.items(): + for lattice in self.lattices.values(): if lattice.id == lattice_id: return lattice diff --git a/openmc/surface.py b/openmc/surface.py index 76f0d82e7d..c33c4ee74c 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -19,6 +19,7 @@ _BC_TYPES = ['transmission', 'vacuum', 'reflective', 'periodic'] def reset_auto_surface_id(): + """Reset counters for all auto-generated surface IDs""" global AUTO_SURFACE_ID AUTO_SURFACE_ID = 10000 @@ -1814,18 +1815,20 @@ def make_hexagon_region(edge_length=1., orientation='y'): right = XPlane(x0=sqrt(3.)/2.*l) left = XPlane(x0=-sqrt(3.)/2.*l) c = sqrt(3.)/3. - ur = Plane(A=c, B=1., D=l) # y = -x/sqrt(3) + a - ul = Plane(A=-c, B=1., D=l) # y = x/sqrt(3) + a - lr = Plane(A=-c, B=1., D=-l) # y = x/sqrt(3) - a - ll = Plane(A=c, B=1., D=-l) # y = -x/sqrt(3) - a - return Intersection(-right, +left, -ur, -ul, +lr, +ll) + upper_right = Plane(A=c, B=1., D=l) # y = -x/sqrt(3) + a + upper_left = Plane(A=-c, B=1., D=l) # y = x/sqrt(3) + a + lower_right = Plane(A=-c, B=1., D=-l) # y = x/sqrt(3) - a + lower_left = Plane(A=c, B=1., D=-l) # y = -x/sqrt(3) - a + return Intersection(-right, +left, -upper_right, -upper_left, + +lower_right, +lower_left) elif orientation == 'x': top = YPlane(y0=sqrt(3.)/2.*l) bottom = YPlane(y0=-sqrt(3.)/2.*l) c = sqrt(3.) - ur = Plane(A=c, B=1., D=c*l) # y = -sqrt(3)*(x - a) - lr = Plane(A=-c, B=1., D=-c*l) # y = sqrt(3)*(x + a) - ll = Plane(A=c, B=1., D=-c*l) # y = -sqrt(3)*(x + a) - ul = Plane(A=-c, B=1., D=c*l) # y = sqrt(3)*(x + a) - return Intersection(-top, +bottom, -ur, +lr, +ll, -ul) + upper_right = Plane(A=c, B=1., D=c*l) # y = -sqrt(3)*(x - a) + lower_right = Plane(A=-c, B=1., D=-c*l) # y = sqrt(3)*(x + a) + lower_left = Plane(A=c, B=1., D=-c*l) # y = -sqrt(3)*(x + a) + upper_left = Plane(A=-c, B=1., D=c*l) # y = sqrt(3)*(x + a) + return Intersection(-top, +bottom, -upper_right, +lower_right, + +lower_left, -upper_left) diff --git a/openmc/tallies.py b/openmc/tallies.py index af19549a7c..a58465994d 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1,6 +1,6 @@ from __future__ import division -from collections import Iterable, MutableSequence, defaultdict +from collections import Iterable, MutableSequence import copy from functools import partial import os @@ -13,11 +13,12 @@ from xml.etree import ElementTree as ET import numpy as np -from openmc import Mesh, Filter, Trigger, Nuclide -from openmc.arithmetic import * +from openmc import Filter, Trigger, Nuclide +from openmc.arithmetic import CrossScore, CrossNuclide, CrossFilter, \ + AggregateScore, AggregateNuclide, AggregateFilter from openmc.filter import _FILTER_TYPES import openmc.checkvalue as cv -from openmc.clean_xml import * +from openmc.clean_xml import clean_xml_indentation if sys.version_info[0] >= 3: basestring = str @@ -41,6 +42,7 @@ _FILTER_CLASSES = (Filter, CrossFilter, AggregateFilter) def reset_auto_tally_id(): + """Reset counter for auto-generated tally IDs.""" global AUTO_TALLY_ID AUTO_TALLY_ID = 10000 @@ -177,7 +179,7 @@ class Tally(object): for self_filter in self.filters: string += '{0: <16}\t\t{1}\t{2}\n'.format('', self_filter.type, - self_filter.bins) + self_filter.bins) string += '{0: <16}{1}'.format('\tNuclides', '=\t') @@ -386,7 +388,7 @@ class Tally(object): @estimator.setter def estimator(self, estimator): cv.check_value('estimator', estimator, - ['analog', 'tracklength', 'collision']) + ['analog', 'tracklength', 'collision']) self._estimator = estimator @triggers.setter @@ -762,10 +764,7 @@ class Tally(object): no_nuclides_match = False # Either all nuclides should match, or none should - if no_nuclides_match or all_nuclides_match: - return True - else: - return False + return no_nuclides_match or all_nuclides_match def _can_merge_scores(self, other): """Determine if another tally's scores can be merged with this one's @@ -802,10 +801,7 @@ class Tally(object): return False # Either all scores should match, or none should - if no_scores_match or all_scores_match: - return True - else: - return False + return no_scores_match or all_scores_match def can_merge(self, other): """Determine if another tally can be merged with this one @@ -901,7 +897,7 @@ class Tally(object): # Search for mergeable filters for i, filter1 in enumerate(self.filters): - for j, filter2 in enumerate(other.filters): + for filter2 in other.filters: if filter1 != filter2 and filter1.can_merge(filter2): other_copy._swap_filters(other_copy.filters[i], filter2) merged_tally.filters[i] = filter1.merge(filter2) @@ -1058,7 +1054,7 @@ class Tally(object): for score in self.scores: scores += '{0} '.format(score) - subelement = ET.SubElement(element, "scores") + subelement = ET.SubElement(element, "scores") subelement.text = scores.rstrip(' ') # Tally estimator type @@ -1192,7 +1188,7 @@ class Tally(object): # If the Summary was linked, then values are Nuclide objects if isinstance(test_nuclide, Nuclide): - if test_nuclide._name == nuclide: + if test_nuclide.name == nuclide: nuclide_index = i break @@ -1557,7 +1553,7 @@ class Tally(object): # Append each Filter's DataFrame to the overall DataFrame for self_filter in self.filters: filter_df = self_filter.get_pandas_dataframe( - data_size, distribcell_paths) + data_size, distribcell_paths) df = pd.concat([df, filter_df], axis=1) # Include DataFrame column for nuclides if user requested it @@ -1673,7 +1669,7 @@ class Tally(object): return data def export_results(self, filename='tally-results', directory='.', - format='hdf5', append=True): + format='hdf5', append=True): """Exports tallly results to an HDF5 or Python pickle binary file. Parameters @@ -1719,7 +1715,7 @@ class Tally(object): elif not isinstance(append, bool): msg = 'Unable to export the results for Tally ID="{0}" since the ' \ - 'append parameter is not True/False'.format(self.id, append) + 'append parameter is not True/False'.format(self.id) raise ValueError(msg) # Make directory if it does not exist @@ -1776,7 +1772,7 @@ class Tally(object): filename = directory + '/' + filename + '.pkl' if os.path.exists(filename) and append: - tally_results = pickle.load(file(filename, 'rb')) + tally_results = pickle.load(open(filename, 'rb')) else: tally_results = {} @@ -1815,7 +1811,7 @@ class Tally(object): pickle.dump(tally_results, open(filename, 'wb')) def hybrid_product(self, other, binary_op, filter_product=None, - nuclide_product=None, score_product=None): + nuclide_product=None, score_product=None): """Combines filters, scores and nuclides with another tally. This is a helper method for the tally arithmetic operator overloaded @@ -2451,7 +2447,7 @@ class Tally(object): new_tally._std_dev = self.std_dev new_tally.estimator = self.estimator new_tally.with_summary = self.with_summary - new_tally.num_realization = self.num_realizations + new_tally.num_realizations = self.num_realizations new_tally.filters = copy.deepcopy(self.filters) new_tally.nuclides = copy.deepcopy(self.nuclides) @@ -2522,7 +2518,7 @@ class Tally(object): new_tally._std_dev = self.std_dev new_tally.estimator = self.estimator new_tally.with_summary = self.with_summary - new_tally.num_realization = self.num_realizations + new_tally.num_realizations = self.num_realizations new_tally.filters = copy.deepcopy(self.filters) new_tally.nuclides = copy.deepcopy(self.nuclides) @@ -2594,7 +2590,7 @@ class Tally(object): new_tally._std_dev = self.std_dev * np.abs(other) new_tally.estimator = self.estimator new_tally.with_summary = self.with_summary - new_tally.num_realization = self.num_realizations + new_tally.num_realizations = self.num_realizations new_tally.filters = copy.deepcopy(self.filters) new_tally.nuclides = copy.deepcopy(self.nuclides) @@ -2666,7 +2662,7 @@ class Tally(object): new_tally._std_dev = self.std_dev * np.abs(1. / other) new_tally.estimator = self.estimator new_tally.with_summary = self.with_summary - new_tally.num_realization = self.num_realizations + new_tally.num_realizations = self.num_realizations new_tally.filters = copy.deepcopy(self.filters) new_tally.nuclides = copy.deepcopy(self.nuclides) @@ -2742,7 +2738,7 @@ class Tally(object): new_tally._std_dev = np.abs(new_tally._mean * power * self_rel_err) new_tally.estimator = self.estimator new_tally.with_summary = self.with_summary - new_tally.num_realization = self.num_realizations + new_tally.num_realizations = self.num_realizations new_tally.filters = copy.deepcopy(self.filters) new_tally.nuclides = copy.deepcopy(self.nuclides) @@ -3149,7 +3145,7 @@ class Tally(object): return tally_sum def average(self, scores=[], filter_type=None, - filter_bins=[], nuclides=[], remove_filter=False): + filter_bins=[], nuclides=[], remove_filter=False): """Vectorized average of tally data across scores, filter bins and/or nuclides using tally aggregation. @@ -3577,4 +3573,4 @@ class Tallies(cv.CheckedList): # Write the XML Tree to the tallies.xml file tree = ET.ElementTree(self._tallies_file) tree.write("tallies.xml", xml_declaration=True, - encoding='utf-8', method="xml") + encoding='utf-8', method="xml") diff --git a/openmc/trigger.py b/openmc/trigger.py index 537af1c8d8..f23838dcff 100644 --- a/openmc/trigger.py +++ b/openmc/trigger.py @@ -40,10 +40,7 @@ class Trigger(object): self._scores = [] def __eq__(self, other): - if str(self) == str(other): - return True - else: - return False + return str(self) == str(other) def __ne__(self, other): return not self == other @@ -70,7 +67,7 @@ class Trigger(object): @trigger_type.setter def trigger_type(self, trigger_type): cv.check_value('tally trigger type', trigger_type, - ['variance', 'std_dev', 'rel_err']) + ['variance', 'std_dev', 'rel_err']) self._trigger_type = trigger_type @threshold.setter diff --git a/openmc/universe.py b/openmc/universe.py index 84a5acdcac..c8e7fcab1e 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -1,9 +1,7 @@ from collections import OrderedDict, Iterable from numbers import Integral -from xml.etree import ElementTree as ET import random import sys -import warnings import numpy as np @@ -22,6 +20,7 @@ AUTO_UNIVERSE_ID = 10000 def reset_auto_universe_id(): + """Reset counter for auto-generated universe IDs.""" global AUTO_UNIVERSE_ID AUTO_UNIVERSE_ID = 10000 @@ -256,7 +255,7 @@ class Universe(object): if obj not in colors: colors[obj] = (random.random(), random.random(), random.random(), 1.0) - img[j,i,:] = colors[obj] + img[j, i, :] = colors[obj] # Display image plt.imshow(img, extent=(x_min, x_max, y_min, y_max)) @@ -282,7 +281,7 @@ class Universe(object): 'a Cell'.format(self._id, cell) raise ValueError(msg) - cell_id = cell._id + cell_id = cell.id if cell_id not in self._cells: self._cells[cell_id] = cell @@ -364,7 +363,7 @@ class Universe(object): nuclides = OrderedDict() # Append all Nuclides in each Cell in the Universe to the dictionary - for cell_id, cell in self._cells.items(): + for cell in self._cells.values(): nuclides.update(cell.get_all_nuclides()) return nuclides @@ -386,7 +385,7 @@ class Universe(object): cells.update(self._cells) # Append all Cells in each Cell in the Universe to the dictionary - for cell_id, cell in self._cells.items(): + for cell in self._cells.values(): cells.update(cell.get_all_cells()) return cells @@ -406,7 +405,7 @@ class Universe(object): # Append all Cells in each Cell in the Universe to the dictionary cells = self.get_all_cells() - for cell_id, cell in cells.items(): + for cell in cells.values(): materials.update(cell.get_all_materials()) return materials @@ -428,7 +427,7 @@ class Universe(object): universes = OrderedDict() # Append all Universes containing each Cell to the dictionary - for cell_id, cell in cells.items(): + for cell in cells.values(): universes.update(cell.get_all_universes()) return universes diff --git a/setup.py b/setup.py index 99e465c9d4..a842a1c3ae 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,6 @@ #!/usr/bin/env python import glob -import os try: from setuptools import setup have_setuptools = True From b483cfe0b64bd6a77c2bc06e02b46b9a48630a33 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sat, 2 Jul 2016 15:21:58 +0700 Subject: [PATCH 02/82] Respond to @wbinventor comments on #679 --- openmc/element.py | 4 ++-- openmc/macroscopic.py | 4 ++-- openmc/material.py | 4 ++-- openmc/mgxs/library.py | 10 +++++----- openmc/nuclide.py | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/openmc/element.py b/openmc/element.py index 2e22702d99..c877c27a12 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -45,9 +45,9 @@ class Element(object): def __eq__(self, other): if isinstance(other, Element): - if self._name != other.name: + if self.name != other.name: return False - elif self._xs != other.xs: + elif self.xs != other.xs: return False else: return True diff --git a/openmc/macroscopic.py b/openmc/macroscopic.py index 1fdf875e72..1dd087903f 100644 --- a/openmc/macroscopic.py +++ b/openmc/macroscopic.py @@ -38,9 +38,9 @@ class Macroscopic(object): def __eq__(self, other): if isinstance(other, Macroscopic): - if self._name != other.name: + if self.name != other.name: return False - elif self._xs != other.xs: + elif self.xs != other.xs: return False else: return True diff --git a/openmc/material.py b/openmc/material.py index 1ba8f533a9..d7ffd04e94 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -352,9 +352,9 @@ class Material(object): if self._macroscopic is None: self._macroscopic = macroscopic else: - msg = 'Unable to add a Macroscopic to Material ID="{0}", ' \ + msg = 'Unable to add a Macroscopic to Material ID="{0}". ' \ 'Only one Macroscopic allowed per ' \ - 'Material!'.format(self._id) + 'Material.'.format(self._id) raise ValueError(msg) # Generally speaking, the density for a macroscopic object will diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 319e4d4139..9df9d150dd 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -296,7 +296,7 @@ class Library(object): if correction == 'P0' and self.legendre_order > 0: warn('The P0 correction will be ignored since the scattering ' - 'order {} is greater than zero'.format(self.legendre_order)) + 'order "{}" is greater than zero'.format(self.legendre_order)) self._correction = correction @@ -1176,11 +1176,11 @@ class Library(object): # Ensure absorption is present if 'absorption' not in self.mgxs_types: error_flag = True - warn('"absorption" MGXS type is required but not provided.') + warn('An "absorption" MGXS type is required but not provided.') # Ensure nu-scattering matrix is required if 'nu-scatter matrix' not in self.mgxs_types: error_flag = True - warn('"nu-scatter matrix" MGXS type is required but not provided.') + warn('A "nu-scatter matrix" MGXS type is required but not provided.') else: # Ok, now see the status of scatter and/or multiplicity if ((('scatter matrix' not in self.mgxs_types) and @@ -1189,7 +1189,7 @@ class Library(object): # we need total, and not transport. if 'total' not in self.mgxs_types: error_flag = True - warn('"total" MGXS type is required if a ' + warn('A "total" MGXS type is required if a ' 'scattering matrix is not provided.') # Total or transport can be present, but if using # self.correction=="P0", then we should use transport. @@ -1202,7 +1202,7 @@ class Library(object): elif (((self.correction is None) and ('total' not in self.mgxs_types))): error_flag = True - warn('"total" MGXS type is required, but not provided.') + warn('A "total" MGXS type is required, but not provided.') if error_flag: raise ValueError('Invalid MGXS configuration encountered.') diff --git a/openmc/nuclide.py b/openmc/nuclide.py index a2130680fb..bfeff93113 100644 --- a/openmc/nuclide.py +++ b/openmc/nuclide.py @@ -46,9 +46,9 @@ class Nuclide(object): def __eq__(self, other): if isinstance(other, Nuclide): - if self._name != other.name: + if self.name != other.name: return False - elif self._xs != other.xs: + elif self.xs != other.xs: return False else: return True From c66cb6ab66633b05712cc48b8b43d0cc841ace2c Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 08:45:19 -0400 Subject: [PATCH 03/82] fixed bug in tally.get_slice() method for mesh filters --- openmc/tallies.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openmc/tallies.py b/openmc/tallies.py index af19549a7c..9ef5148966 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2986,6 +2986,9 @@ class Tally(object): elif filter_type == 'distribcell': bin_indices = [0] num_bins = find_filter.num_bins + elif filter_type == 'mesh': + bin_indices = [0] + num_bins = find_filter.mesh.num_mesh_cells else: bin_indices.append(bin_index) num_bins += 1 From eb553a75ddde66c6833d2b4b9f5793c13c332864 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Tue, 5 Jul 2016 12:55:54 +0000 Subject: [PATCH 04/82] changed way num_bins for mesh filter are set in tally.get_slice() method --- openmc/tallies.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/openmc/tallies.py b/openmc/tallies.py index 9ef5148966..4fc19f1e5d 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2983,12 +2983,9 @@ class Tally(object): bin_indices.extend([bin_index]) bin_indices.extend([bin_index, bin_index+1]) num_bins += 1 - elif filter_type == 'distribcell': + elif filter_type in ['distribcell', 'mesh']: bin_indices = [0] num_bins = find_filter.num_bins - elif filter_type == 'mesh': - bin_indices = [0] - num_bins = find_filter.mesh.num_mesh_cells else: bin_indices.append(bin_index) num_bins += 1 From 16dc3db6fa28ebd2b3600fbaf72bb60edbfab537 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 14:43:40 -0400 Subject: [PATCH 05/82] added prompt-nu-fission tally and reduced size of new MGXS types --- .../pythonapi/examples/mgxs-part-i.ipynb | 5 +- .../pythonapi/examples/mgxs-part-iii.ipynb | 13 +- docs/source/usersguide/input.rst | 4 + openmc/mgxs/mgxs.py | 300 ++---------------- src/constants.F90 | 5 +- src/endf.F90 | 2 + src/input_xml.F90 | 6 + src/output.F90 | 1 + src/tally.F90 | 131 ++++++++ tests/test_tallies/test_tallies.py | 3 +- 10 files changed, 181 insertions(+), 289 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index ea75bec722..ded04e4790 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -383,6 +383,9 @@ "* `ScatterMatrixXS`\n", "* `NuScatterMatrixXS`\n", "* `Chi`\n", + "* `ChiPrompt`\n", + "* `Velocity`\n", + "* `PromptNuFissionXS`\n", "\n", "These classes provide us with an interface to generate the tally inputs as well as perform post-processing of OpenMC's tally data to compute the respective multi-group cross sections. In this case, let's create the multi-group total, absorption and scattering cross sections with our 2-group structure." ] @@ -1181,7 +1184,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.6" + "version": "2.7.11" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index 5f0acde3f1..c33aeeca1a 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -549,6 +549,9 @@ "* `ScatterMatrixXS` (`\"scatter matrix\"`)\n", "* `NuScatterMatrixXS` (`\"nu-scatter matrix\"`)\n", "* `Chi` (`\"chi\"`)\n", + "* `ChiPrompt` (`\"chi prompt\"`)\n", + "* `Velocity` (`\"velocity\"`)\n", + "* `PromptNuFissionXS` (`\"prompt-nu-fission\"`)\n", "\n", "In this case, let's create the multi-group cross sections needed to run an OpenMOC simulation to verify the accuracy of our cross sections. In particular, we will define `\"transport\"`, `\"nu-fission\"`, `'\"fission\"`, `\"nu-scatter matrix\"` and `\"chi\"` cross sections for our `Library`.\n", "\n", @@ -1596,21 +1599,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 2", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" + "pygments_lexer": "ipython2", + "version": "2.7.11" } }, "nbformat": 4, diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index d6802075e5..e530097ded 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1764,6 +1764,10 @@ The ```` element accepts the following sub-elements: | |fission. This score type is not used in the | | |multi-group :ref:`energy_mode`. | +----------------------+---------------------------------------------------+ + |prompt-nu-fission |Total production of prompt neutrons due to | + | |fission. This score type is not used in the | + | |multi-group :ref:`energy_mode`. | + +----------------------+---------------------------------------------------+ |nu-fission |Total production of neutrons due to fission. | +----------------------+---------------------------------------------------+ |nu-scatter, |These scores are similar in functionality to their | diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index acd6365298..aa97bc5984 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -430,11 +430,7 @@ class MGXS(object): Parameters ---------- - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', - 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', - 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', - 'multiplicity matrix', 'nu-fission matrix', 'chi', 'chi-prompt', - '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', 'velocity', 'prompt-nu-fission'} The type of multi-group cross section object to return domain : openmc.Material or openmc.Cell or openmc.Universe The domain for spatial homogenization @@ -1948,7 +1944,7 @@ class MatrixMGXS(MGXS): class TotalXS(MGXS): - """A total multi-group cross section. + r"""A total multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -2057,7 +2053,7 @@ class TotalXS(MGXS): class TransportXS(MGXS): - """A transport-corrected total multi-group cross section. + r"""A transport-corrected total multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -2200,7 +2196,7 @@ class TransportXS(MGXS): class NuTransportXS(TransportXS): - """A transport-corrected total multi-group cross section which + r"""A transport-corrected total multi-group cross section which accounts for neutron multiplicity in scattering reactions. This class can be used for both OpenMC input generation and tally data @@ -2313,7 +2309,7 @@ class NuTransportXS(TransportXS): class AbsorptionXS(MGXS): - """An absorption multi-group cross section. + r"""An absorption multi-group cross section. Absorption is defined as all reactions that do not produce secondary neutrons (disappearance) plus fission reactions. @@ -2426,7 +2422,7 @@ class AbsorptionXS(MGXS): class CaptureXS(MGXS): - """A capture multi-group cross section. + r"""A capture multi-group cross section. The neutron capture reaction rate is defined as the difference between OpenMC's 'absorption' and 'fission' reaction rate score types. This includes @@ -2554,7 +2550,7 @@ class CaptureXS(MGXS): class FissionXS(MGXS): - """A fission multi-group cross section. + r"""A fission multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -2664,7 +2660,7 @@ class FissionXS(MGXS): class NuFissionXS(MGXS): - """A fission neutron production multi-group cross section. + r"""A fission neutron production multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -2775,7 +2771,7 @@ class NuFissionXS(MGXS): class KappaFissionXS(MGXS): - """A recoverable fission energy production rate multi-group cross section. + r"""A recoverable fission energy production rate multi-group cross section. The recoverable energy per fission, :math:`\kappa`, is defined as the fission product kinetic energy, prompt and delayed neutron kinetic energies, @@ -2891,7 +2887,7 @@ class KappaFissionXS(MGXS): class ScatterXS(MGXS): - """A scattering multi-group cross section. + r"""A scattering multi-group cross section. The scattering cross section is defined as the difference between the total and absorption cross sections. @@ -3004,7 +3000,7 @@ class ScatterXS(MGXS): class NuScatterXS(MGXS): - """A scattering neutron production multi-group cross section. + r"""A scattering neutron production multi-group cross section. The neutron production from scattering is defined as the average number of neutrons produced from all neutron-producing reactions except for fission. @@ -3123,7 +3119,7 @@ class NuScatterXS(MGXS): class ScatterMatrixXS(MatrixMGXS): - """A scattering matrix multi-group cross section for one or more Legendre + r"""A scattering matrix multi-group cross section for one or more Legendre moments. This class can be used for both OpenMC input generation and tally data @@ -3793,7 +3789,7 @@ class ScatterMatrixXS(MatrixMGXS): class NuScatterMatrixXS(ScatterMatrixXS): - """A scattering production matrix multi-group cross section for one or + r"""A scattering production matrix multi-group cross section for one or more Legendre moments. This class can be used for both OpenMC input generation and tally data @@ -3903,7 +3899,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): class MultiplicityMatrixXS(MatrixMGXS): - """The scattering multiplicity matrix. + r"""The scattering multiplicity matrix. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -4057,7 +4053,7 @@ class MultiplicityMatrixXS(MatrixMGXS): class NuFissionMatrixXS(MatrixMGXS): - """A fission production matrix multi-group cross section. + r"""A fission production matrix multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -4172,7 +4168,7 @@ class NuFissionMatrixXS(MatrixMGXS): class Chi(MGXS): - """The fission spectrum. + r"""The fission spectrum. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -4631,7 +4627,7 @@ class Chi(MGXS): class ChiPrompt(Chi): - """The prompt fission spectrum. + r"""The prompt fission spectrum. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -4744,112 +4740,7 @@ class ChiPrompt(Chi): @property def scores(self): - return ['delayed-nu-fission', 'delayed-nu-fission', - 'nu-fission', 'nu-fission'] - - @property - def filters(self): - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energyout = openmc.Filter('energyout', group_edges) - energyin = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) - return [[energyin], [energyout], [energyin], [energyout]] - - @property - def tally_keys(self): - return ['delayed-nu-fission-in', 'delayed-nu-fission-out', - 'nu-fission-in', 'nu-fission-out'] - - @property - def rxn_rate_tally(self): - if self._rxn_rate_tally is None: - self._rxn_rate_tally = self.tallies['nu-fission-out'] - \ - self.tallies['delayed-nu-fission-out'] - self._rxn_rate_tally.sparse = self.sparse - return self._rxn_rate_tally - - @property - def xs_tally(self): - - if self._xs_tally is None: - delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] - nu_fission_in = self.tallies['nu-fission-in'] - prompt_nu_fission_in = nu_fission_in - delayed_nu_fission_in - - # Remove coarse energy filter to keep it out of tally arithmetic - energy_filter = prompt_nu_fission_in.find_filter('energy') - prompt_nu_fission_in.remove_filter(energy_filter) - - # Compute chi - self._xs_tally = self.rxn_rate_tally / prompt_nu_fission_in - super(ChiPrompt, self)._compute_xs() - - # Add the coarse energy filter back to the nu-fission tally - prompt_nu_fission_in.filters.append(energy_filter) - - return self._xs_tally - - def get_slice(self, nuclides=[], groups=[]): - """Build a sliced ChiPrompt for the specified nuclides and energy - groups. - - This method constructs a new MGXS to encapsulate a subset of the data - represented by this MGXS. The subset of data to include in the tally - slice is determined by the nuclides and energy groups specified in - the input parameters. - - Parameters - ---------- - nuclides : list of str - A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) - groups : list of Integral - A list of energy group indices starting at 1 for the high energies - (e.g., [1, 2, 3]; default is []) - - Returns - ------- - openmc.mgxs.MGXS - A new MGXS which encapsulates the subset of data requested - for the nuclide(s) and/or energy group(s) requested in the - parameters. - - """ - - # Temporarily remove energy filter from delayed-nu-fission-in since its - # group structure will work in super MGXS.get_slice(...) method - delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] - nu_fission_in = self.tallies['nu-fission-in'] - prompt_nu_fission_in = nu_fission_in - delayed_nu_fission_in - energy_filter = prompt_nu_fission_in.find_filter('energy') - prompt_nu_fission_in.remove_filter(energy_filter) - - # Call super class method and null out derived tallies - slice_xs = super(ChiPrompt, self).get_slice(nuclides, groups) - slice_xs._rxn_rate_tally = None - slice_xs._xs_tally = None - - # Slice energy groups if needed - if len(groups) != 0: - filter_bins = [] - for group in groups: - group_bounds = self.energy_groups.get_group_bounds(group) - filter_bins.append(group_bounds) - filter_bins = [tuple(filter_bins)] - - # Slice nu-fission-out tally along energyout filter - prompt_nu_fission_out = slice_xs.tallies['nu-fission-out'] - \ - slice_xs.tallies['delayed-nu-fission-out'] - tally_slice = prompt_nu_fission_out\ - .get_slice(filters=['energyout'], - filter_bins=filter_bins) - slice_xs._tallies['prompt-nu-fission-out'] = tally_slice - - # Add energy filter back to nu-fission-in tallies - slice_xs._tallies['prompt-nu-fission-in'].add_filter(energy_filter) - - slice_xs.sparse = self.sparse - return slice_xs + return ['prompt-nu-fission', 'prompt-nu-fission'] def merge(self, other): """Merge another ChiPrompt with this one @@ -4873,148 +4764,9 @@ class ChiPrompt(Chi): return super(ChiPrompt, self).merge(other) - def get_xs(self, groups='all', subdomains='all', nuclides='all', - xs_type='macro', order_groups='increasing', - value='mean', **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. - - Parameters - ---------- - groups : Iterable of Integral or 'all' - Energy groups of interest. Defaults to 'all'. - subdomains : Iterable of Integral or 'all' - Subdomain IDs of interest. Defaults to 'all'. - nuclides : Iterable of str or 'all' or 'sum' - A list of nuclide name strings (e.g., ['U-235', 'U-238']). The - special string 'all' will return the cross sections for all nuclides - in the spatial domain. The special string 'sum' will return the - cross section summed over all nuclides. Defaults to 'all'. - xs_type: {'macro', 'micro'} - This parameter is not relevant for chi but is included here to - mirror the parent MGXS.get_xs(...) class method - order_groups: {'increasing', 'decreasing'} - Return the cross section indexed according to increasing or - decreasing energy groups (decreasing or increasing energies). - Defaults to 'increasing'. - value : {'mean', 'std_dev', 'rel_err'} - A string for the type of value to return. Defaults to 'mean'. - - Returns - ------- - numpy.ndarray - A NumPy array of the multi-group cross section indexed in the order - each group, subdomain and nuclide is listed in the parameters. - - Raises - ------ - ValueError - When this method is called before the multi-group cross section is - computed from tally data. - - """ - - cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) - cv.check_value('xs_type', xs_type, ['macro', 'micro']) - - filters = [] - filter_bins = [] - - # Construct a collection of the domain filter bins - if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) - for subdomain in subdomains: - filters.append(self.domain_type) - filter_bins.append((subdomain,)) - - # Construct list of energy group bounds tuples for all requested groups - if not isinstance(groups, basestring): - cv.check_iterable_type('groups', groups, Integral) - for group in groups: - filters.append('energyout') - filter_bins.append((self.energy_groups.get_group_bounds(group),)) - - # If chi prompt was computed for each nuclide in the domain - if self.by_nuclide: - - # Get the sum as the fission source weighted average chi for all - # nuclides in the domain - if nuclides == 'sum' or nuclides == ['sum']: - - # Retrieve the fission production tallies - prompt_nu_fission_in = self.tallies['nu-fission-in'] - \ - self.tallies['delayed-nu-fission-in'] - prompt_nu_fission_out = self.tallies['nu-fission-out'] - \ - self.tallies['delayed-nu-fission-out'] - - # Sum out all nuclides - nuclides = self.get_all_nuclides() - prompt_nu_fission_in = prompt_nu_fission_in.summation\ - (nuclides=nuclides) - prompt_nu_fission_out = prompt_nu_fission_out.summation\ - (nuclides=nuclides) - - # Remove coarse energy filter to keep it out of tally arithmetic - energy_filter = prompt_nu_fission_in.find_filter('energy') - prompt_nu_fission_in.remove_filter(energy_filter) - - # Compute chi prompt and store it as the xs_tally attribute so - # we can use the generic get_xs(...) method - xs_tally = prompt_nu_fission_out / prompt_nu_fission_in - - # Add the coarse energy filter back to the nu-fission tally - prompt_nu_fission_in.filters.append(energy_filter) - - xs = xs_tally.get_values(filters=filters, - filter_bins=filter_bins, value=value) - - # Get chi prompt for all nuclides in the domain - elif nuclides == 'all': - nuclides = self.get_all_nuclides() - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, - nuclides=nuclides, value=value) - - # Get chi prompt for user-specified nuclides in the domain - else: - cv.check_iterable_type('nuclides', nuclides, basestring) - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, - nuclides=nuclides, value=value) - - # If chi prompt was computed as an average of nuclides in the domain - else: - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, value=value) - - # 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 - xs = np.squeeze(xs) - xs = np.atleast_1d(xs) - - xs = np.nan_to_num(xs) - return xs - class Velocity(MGXS): - """A velocity multi-group cross section. + r"""A velocity multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -5235,7 +4987,7 @@ class Velocity(MGXS): class PromptNuFissionXS(MGXS): - """A prompt fission neutron production multi-group cross section. + r"""A prompt fission neutron production multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -5341,15 +5093,3 @@ class PromptNuFissionXS(MGXS): super(PromptNuFissionXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'prompt-nu-fission' - - @property - def scores(self): - return ['flux', 'nu-fission', 'delayed-nu-fission'] - - @property - def rxn_rate_tally(self): - if self._rxn_rate_tally is None: - self._rxn_rate_tally = self.tallies['nu-fission'] - \ - self.tallies['delayed-nu-fission'] - self._rxn_rate_tally.sparse = self.sparse - return self._rxn_rate_tally diff --git a/src/constants.F90 b/src/constants.F90 index b3e5ed89b1..06f7769bc0 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -282,7 +282,7 @@ module constants EVENT_ABSORB = 2 ! Tally score type - integer, parameter :: N_SCORE_TYPES = 20 + integer, parameter :: N_SCORE_TYPES = 21 integer, parameter :: & SCORE_FLUX = -1, & ! flux SCORE_TOTAL = -2, & ! total reaction rate @@ -303,7 +303,8 @@ module constants SCORE_NU_SCATTER_YN = -17, & ! angular flux-weighted nu-scattering moment (0:N) SCORE_EVENTS = -18, & ! number of events SCORE_DELAYED_NU_FISSION = -19, & ! delayed neutron production rate - SCORE_INVERSE_VELOCITY = -20 ! flux-weighted inverse velocity + SCORE_PROMPT_NU_FISSION = -20, & ! prompt neutron production rate + SCORE_INVERSE_VELOCITY = -21 ! flux-weighted inverse velocity ! Maximum scattering order supported integer, parameter :: MAX_ANG_ORDER = 10 diff --git a/src/endf.F90 b/src/endf.F90 index ad5e97a033..a836a54397 100644 --- a/src/endf.F90 +++ b/src/endf.F90 @@ -42,6 +42,8 @@ contains string = "nu-fission" case (SCORE_DELAYED_NU_FISSION) string = "delayed-nu-fission" + case (SCORE_PROMPT_NU_FISSION) + string = "prompt-nu-fission" case (SCORE_KAPPA_FISSION) string = "kappa-fission" case (SCORE_CURRENT) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 3c6143e5a0..b192be0e40 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -3599,6 +3599,12 @@ contains ! Set tally estimator to analog t % estimator = ESTIMATOR_ANALOG end if + case ('prompt-nu-fission') + t % score_bins(j) = SCORE_PROMPT_NU_FISSION + if (t % find_filter(FILTER_ENERGYOUT) > 0) then + ! Set tally estimator to analog + t % estimator = ESTIMATOR_ANALOG + end if ! Disallow for MG mode since data not present if (.not. run_CE) then diff --git a/src/output.F90 b/src/output.F90 index d7dfe7e1c2..702c9e2647 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -791,6 +791,7 @@ contains score_names(abs(SCORE_NU_SCATTER_PN)) = "Scattering Prod. Rate Moment" score_names(abs(SCORE_NU_SCATTER_YN)) = "Scattering Prod. Rate Moment" score_names(abs(SCORE_DELAYED_NU_FISSION)) = "Delayed-Nu-Fission Rate" + score_names(abs(SCORE_PROMPT_NU_FISSION)) = "Prompt-Nu-Fission Rate" score_names(abs(SCORE_INVERSE_VELOCITY)) = "Flux-Weighted Inverse Velocity" ! Create filename for tally output diff --git a/src/tally.F90 b/src/tally.F90 index b40a39ce0c..b5f6bea7d9 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -441,6 +441,67 @@ contains end if + case (SCORE_PROMPT_NU_FISSION) + if (t % estimator == ESTIMATOR_ANALOG) then + if (survival_biasing .or. p % fission) then + if (t % find_filter(FILTER_ENERGYOUT) > 0) then + ! Normally, we only need to make contributions to one scoring + ! bin. However, in the case of fission, since multiple fission + ! neutrons were emitted with different energies, multiple + ! outgoing energy bins may have been scored to. The following + ! logic treats this special case and results to multiple bins + call score_fission_prompt_eout(p, t, score_index) + cycle SCORE_LOOP + end if + end if + if (survival_biasing) then + ! No fission events occur if survival biasing is on -- need to + ! calculate fraction of absorptions that would have resulted in + ! prompt-nu-fission + if (micro_xs(p % event_nuclide) % absorption > ZERO) then + score = p % absorb_wgt * micro_xs(p % event_nuclide) % fission & + * nuclides(p % event_nuclide) % nu(E, EMISSION_PROMPT) & + / micro_xs(p % event_nuclide) % absorption + else + score = ZERO + end if + else + ! Skip any non-fission events + if (.not. p % fission) cycle SCORE_LOOP + ! If there is no outgoing energy filter, than we only need to + ! score to one bin. For the score to be 'analog', we need to + ! score the number of particles that were banked in the fission + ! bank as prompt neutrons. Since this was weighted by 1/keff, we + ! multiply by keff to get the proper score. + score = keff * p % wgt_bank * (1 - sum(p % n_delayed_bank) & + / p % n_bank) + end if + + else + if (i_nuclide > 0) then + score = micro_xs(i_nuclide) % fission * nuclides(i_nuclide) % & + nu(E, EMISSION_PROMPT) * atom_density * flux + else + + score = ZERO + + ! Loop over all nuclides in the current material + do l = 1, materials(p % material) % n_nuclides + + ! Get atom density + atom_density_ = materials(p % material) % atom_density(l) + + ! Get index in nuclides array + i_nuc = materials(p % material) % nuclide(l) + + ! Accumulate the contribution from each nuclide + score = score + micro_xs(i_nuc) % fission * nuclides(i_nuc) % & + nu(E, EMISSION_PROMPT) * atom_density_ * flux + end do + end if + end if + + case (SCORE_DELAYED_NU_FISSION) ! make sure the correct energy is used @@ -1647,6 +1708,76 @@ contains end subroutine score_fission_eout_mg +!=============================================================================== +! SCORE_FISSION_PROMPT_EOUT handles a special case where we need to store +! prompt neutron production rate with an outgoing energy filter (think of a +! fission matrix). In this case, we may need to score to multiple bins if there +! were multiple neutrons produced with different energies. +!=============================================================================== + + subroutine score_fission_prompt_eout(p, t, i_score) + + type(Particle), intent(in) :: p + type(TallyObject), intent(inout) :: t + integer, intent(in) :: i_score ! index for score + + integer :: i ! index of outgoing energy filter + integer :: g ! delayed group + integer :: n ! number of energies on filter + integer :: k ! loop index for bank sites + integer :: bin_energyout ! original outgoing energy bin + integer :: i_filter ! index for matching filter bin combination + real(8) :: score ! actual score + real(8) :: E_out ! energy of fission bank site + + ! Save original outgoing energy bin + i = t % find_filter(FILTER_ENERGYOUT) + bin_energyout = matching_bins(i) + + ! Get number of energies on filter + n = size(t % filters(i) % real_bins) + + ! Since the creation of fission sites is weighted such that it is + ! expected to create n_particles sites, we need to multiply the + ! score by keff to get the true delayed-nu-fission rate. + + ! loop over number of particles banked + do k = 1, p % n_bank + + ! get the delayed group + g = fission_bank(n_bank - p % n_bank + k) % delayed_group + + ! check if the particle was born prompt + if (g == 0) then + + ! determine score based on bank site weight and keff + score = keff * fission_bank(n_bank - p % n_bank + k) % wgt + + ! determine outgoing energy from fission bank + E_out = fission_bank(n_bank - p % n_bank + k) % E + + ! check if outgoing energy is within specified range on filter + if (E_out < t % filters(i) % real_bins(1) .or. & + E_out > t % filters(i) % real_bins(n)) cycle + + ! change outgoing energy bin + matching_bins(i) = binary_search(t % filters(i) % real_bins, n, E_out) + + ! determine scoring index + i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 + + ! Add score to tally +!$omp atomic + t % results(i_score, i_filter) % value = & + t % results(i_score, i_filter) % value + score + end if + end do + + ! reset outgoing energy bin + matching_bins(i) = bin_energyout + + end subroutine score_fission_prompt_eout + !=============================================================================== ! SCORE_FISSION_DELAYED_EOUT handles a special case where we need to store ! delayed neutron production rate with an outgoing energy filter (think of a diff --git a/tests/test_tallies/test_tallies.py b/tests/test_tallies/test_tallies.py index 9e40d4185d..4969e5680d 100644 --- a/tests/test_tallies/test_tallies.py +++ b/tests/test_tallies/test_tallies.py @@ -122,7 +122,8 @@ class TalliesTestHarness(PyAPITestHarness): t.filters = [cell_filter] t.scores = ['absorption', 'delayed-nu-fission', 'events', 'fission', 'inverse-velocity', 'kappa-fission', '(n,2n)', '(n,n1)', - '(n,gamma)', 'nu-fission', 'scatter', 'elastic', 'total'] + '(n,gamma)', 'nu-fission', 'scatter', 'elastic', 'total', + 'prompt-nu-fission'] score_tallies[0].estimator = 'tracklength' score_tallies[1].estimator = 'analog' score_tallies[2].estimator = 'collision' From 736d7aa5ba3bcd1a8a1614ce4b6769babcb1d8ca Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 15:19:35 -0400 Subject: [PATCH 06/82] updated velocity docstring --- openmc/mgxs/mgxs.py | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index aa97bc5984..7485236087 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -713,7 +713,7 @@ class MGXS(object): def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', value='mean', **kwargs): - """Returns an array of multi-group cross sections. + 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. @@ -3789,7 +3789,7 @@ class ScatterMatrixXS(MatrixMGXS): class NuScatterMatrixXS(ScatterMatrixXS): - r"""A scattering production matrix multi-group cross section for one or + """A scattering production matrix multi-group cross section for one or more Legendre moments. This class can be used for both OpenMC input generation and tally data @@ -4650,7 +4650,7 @@ class ChiPrompt(Chi): \langle \nu\sigma_{f,\rightarrow g}^p \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\sigma_f (r, E') \psi(r, E', \Omega')\\ + \nu\sigma_f^p (r, E') \psi(r, E', \Omega')\\ \langle \nu\sigma_f^p \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f^p (r, E') \psi(r, E', \Omega') \\ @@ -4770,13 +4770,12 @@ class Velocity(MGXS): This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group velocity cross sections for multi-group neutronics - calculations. At a minimum, one needs to set the - :attr:`Velocity.energy_groups` and :attr:`Velocity.domain` - properties. Tallies for the flux and appropriate reaction rates over the - specified domain are generated automatically via the - :attr:`Velocity.tallies` property, which can then be appended to a - :class:`openmc.Tallies` instance. + multi-group neutron velocities for multi-group neutronics calculations. + The units of velocity are cm per second. At a minimum, one needs to set the + :attr:`Velocity.energy_groups` and :attr:`Velocity.domain` properties. + Tallies for the flux and appropriate reaction rates over the specified + domain are generated automatically via the :attr:`Velocity.tallies` + property, which can then be appended to a :class:`openmc.Tallies` instance. For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the necessary data to compute multi-group cross sections from a @@ -4784,7 +4783,10 @@ class Velocity(MGXS): can then be obtained from the :attr:`Velocity.xs_tally` property. For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the - velocity cross section is calculated as: + neutron velocities are calculated by tallying the flux-weighted inverse + velocity and the flux. The velocity is then the inverse of the flux-weighted + inverse velocity divided by the flux. This equates to dividing the + spatially-homogenized and energy-integrated flux by the inverse velocity: .. math:: @@ -4897,7 +4899,7 @@ class Velocity(MGXS): return self._xs_tally - def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): + def print_xs(self, subdomains='all', nuclides='all'): """Print a string representation for the multi-group cross section. Parameters @@ -4911,9 +4913,6 @@ class Velocity(MGXS): The special string 'all' will report the cross sections for all nuclides in the spatial domain. The special string 'sum' will report the cross sections summed over all nuclides. Defaults to 'all'. - xs_type: {'macro', 'micro'} - Return the macro or micro cross section in units of cm^-1 or barns. - Defaults to 'macro'. """ @@ -4936,8 +4935,6 @@ class Velocity(MGXS): else: nuclides = ['sum'] - cv.check_value('xs_type', xs_type, ['macro']) - # Build header for string with type and domain info string = 'Multi-Group XS\n' string += '{0: <16}=\t{1}\n'.format('\tReaction Type', self.rxn_type) @@ -4973,9 +4970,9 @@ class Velocity(MGXS): bounds = self.energy_groups.get_group_bounds(group) string += template.format('', group, bounds[0], bounds[1]) average = self.get_xs([group], [subdomain], [nuclide], - xs_type=xs_type, value='mean') + xs_type='macro', value='mean') rel_err = self.get_xs([group], [subdomain], [nuclide], - xs_type=xs_type, value='rel_err') + xs_type='macro', value='rel_err') average = average.flatten()[0] rel_err = rel_err.flatten()[0] * 100. string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) From 1ec7ac26afbbf9aee722cfac09f9f7bdbf4750bf Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Tue, 5 Jul 2016 19:30:21 +0000 Subject: [PATCH 07/82] updated mgxs and tallies test results --- tests/test_mgxs_library_condense/inputs_true.dat | 2 +- tests/test_mgxs_library_condense/results_true.dat | 6 +++--- tests/test_mgxs_library_distribcell/inputs_true.dat | 2 +- tests/test_mgxs_library_hdf5/inputs_true.dat | 2 +- tests/test_mgxs_library_hdf5/results_true.dat | 8 ++++---- tests/test_mgxs_library_no_nuclides/inputs_true.dat | 2 +- tests/test_mgxs_library_no_nuclides/results_true.dat | 10 +++++----- tests/test_mgxs_library_nuclides/inputs_true.dat | 2 +- tests/test_mgxs_library_nuclides/results_true.dat | 2 +- tests/test_tallies/inputs_true.dat | 2 +- tests/test_tallies/results_true.dat | 2 +- 11 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index c187a5f507..be692e46f5 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -fa10bef56a0541a6484ed87ab0d94ae338ad9ff3ff69d917f33aa3a0bf8744f28c00fa23a2bccc1503f8815ac9d9305be7f739d1a7edcf296139b8a3ad5531c9 \ No newline at end of file +d4ad3ef5f03913bcedf7dad7f9ace431e0701dac128d1f38f571898b2c79d6b207191fd1e726d9b3c14b2b994ea9d3ba5b10489be3af9c8fbb41868b85940d9f \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index bc820c5769..3dbb07d3c3 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -34,12 +34,12 @@ 0 10000 1 1 total 0.085835 0.005592 material group out nuclide mean std. dev. 0 10000 1 total 1.0 0.046071 - material group out nuclide mean std. dev. -0 10000 1 total 1.0 0.047454 + material group out nuclide mean std. dev. +0 10000 1 total 0.991442 0.050935 material group in nuclide mean std. dev. 0 10000 1 total 2.001309e+06 146216.555365 material group in nuclide mean std. dev. -0 10000 1 total 0.090004 0.006401 +0 10000 1 total 0.090004 0.006367 material group in nuclide mean std. dev. 0 10001 1 total 0.311594 0.013793 material group in nuclide mean std. dev. diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index 7e2a2e990f..1d013ae9f5 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -3799e4a037364d2df56e440f005abe6a0a93817865fc046af99de59525ca468b88a8e591181bfeac851993ec2a91b767b909c262d89f2850dcbc81428a048e9d \ No newline at end of file +8387be0df212cc1b277f42e4b7946b7b1097b34a2d51733bbc0ce1fcc86b0ae97676770b0a4230735e8c11d769989a8c6f702d9f48eb1a145ab6517128443fb7 \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index c187a5f507..be692e46f5 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -fa10bef56a0541a6484ed87ab0d94ae338ad9ff3ff69d917f33aa3a0bf8744f28c00fa23a2bccc1503f8815ac9d9305be7f739d1a7edcf296139b8a3ad5531c9 \ No newline at end of file +d4ad3ef5f03913bcedf7dad7f9ace431e0701dac128d1f38f571898b2c79d6b207191fd1e726d9b3c14b2b994ea9d3ba5b10489be3af9c8fbb41868b85940d9f \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 1105f35d10..d757944925 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -64,14 +64,14 @@ domain=10000 type=chi [ 1. 0.] [ 0.04607052 0. ] domain=10000 type=chi-prompt -[ 1. 0.] -[ 0.04745364 0. ] +[ 0.9914425 0. ] +[ 0.05093465 0. ] domain=10000 type=velocity [ 17515210.62039676 350171.99519401] [ 1438175.27389879 29945.93169673] domain=10000 type=prompt-nu-fission -[ 0.01923926 0.46671903] -[ 0.00131949 0.04161421] +[ 0.01923922 0.46671903] +[ 0.00130951 0.04141087] domain=10001 type=total [ 0.31373767 0.3008214 ] [ 0.0155819 0.02805245] diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index c187a5f507..be692e46f5 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -fa10bef56a0541a6484ed87ab0d94ae338ad9ff3ff69d917f33aa3a0bf8744f28c00fa23a2bccc1503f8815ac9d9305be7f739d1a7edcf296139b8a3ad5531c9 \ No newline at end of file +d4ad3ef5f03913bcedf7dad7f9ace431e0701dac128d1f38f571898b2c79d6b207191fd1e726d9b3c14b2b994ea9d3ba5b10489be3af9c8fbb41868b85940d9f \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 71583d198e..4d79dbbb3b 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -75,15 +75,15 @@ material group out nuclide mean std. dev. 1 10000 1 total 1.0 0.046071 0 10000 2 total 0.0 0.000000 - material group out nuclide mean std. dev. -1 10000 1 total 1.0 0.047454 -0 10000 2 total 0.0 0.000000 + material group out nuclide mean std. dev. +1 10000 1 total 0.991442 0.050935 +0 10000 2 total 0.000000 0.000000 material group in nuclide mean std. dev. 1 10000 1 total 1.751521e+07 1.438175e+06 0 10000 2 total 3.501720e+05 2.994593e+04 material group in nuclide mean std. dev. -1 10000 1 total 0.019239 0.001319 -0 10000 2 total 0.466719 0.041614 +1 10000 1 total 0.019239 0.001310 +0 10000 2 total 0.466719 0.041411 material group in nuclide mean std. dev. 1 10001 1 total 0.313738 0.015582 0 10001 2 total 0.300821 0.028052 diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index 7c73d5eb1b..c9b85ca27c 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -c142d30bae2afb93e55fdeb7e364131b319f9d42523d999bb8b65cf70329b7356a1a878116d6848c4e27556b392bf76c7f49b6dbde79f4cda903738c4d3243c0 \ No newline at end of file +7e6a35ac723fc77db2865fe425832bd6c54aae0132b4543583fc6eb10f2ec5e3d53ea19aa23127a989f19cfe328a57d29f28bff43f779aff246d38f7cffdfd0c \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index a9e3fa952e..3a61638ad4 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -7e48c8cda041fcd77df98d128a2777ab8f411ac5b7dcba8cddd4ecfb22f5c92267ef0965dc0024ee8c31ae2d7afe9491d2b40589380167004b4bbbe7ada564ff \ No newline at end of file +30bee5191524167000108e833ae21547c0f6e416ec9367e24c1d1acd6aceead74aef0a0a2aa2968ddb55ef8c19cf7012fb6a4047ffa8b51aa2c2b2f08ccc0ea0 \ No newline at end of file diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index e3d37be300..fb836fb915 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -ea09926d8f5c6c96529bf5529f4deb3be78eda2da80adbbf3440147c337587358c2b1823bc72df9463676135573eb481dcd361b735f18365216645ee81092f1e \ No newline at end of file +5c0dbcb03265615cd2842b280dbd3e6c14f62ec7db9052657b98f03015cd1204295542f5affbb5948f4c5e57534746435065545a0fe533e3c8b062344bb854da \ No newline at end of file diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index ff3a828454..e8283cb679 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1 +1 @@ -a0c7d6ca246ecd7dd5fed06373af142390971401c4e97744f29e55810ab9c231c97c4d8947cdf0b3d2df0ae829a9ddf768e5b2d889bbea34f2b6db0e567db884 \ No newline at end of file +b1ef1648128580996df7ace74539e24d1183a0348f0fd9214f76ba495c00e0b54e22d16e4b146d02d152d67a19cd42fce2455384d39146f7fe8648d8f086e96d \ No newline at end of file From 9686543fa0890dd2a923fdc7ffa546afc54e9b6b Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 18:38:56 -0400 Subject: [PATCH 08/82] implemented mesh domain in mgxs --- .../pythonapi/examples/mgxs-part-i.ipynb | 586 +++++++----------- openmc/__init__.py | 2 +- openmc/mgxs/mgxs.py | 348 +++++++---- openmc/tallies.py | 2 +- 4 files changed, 468 insertions(+), 470 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index ded04e4790..ff242885e6 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -326,7 +326,7 @@ "# OpenMC simulation parameters\n", "batches = 50\n", "inactive = 10\n", - "particles = 2500\n", + "particles = 1000\n", "\n", "# Instantiate a Settings object\n", "settings_file = openmc.Settings()\n", @@ -398,10 +398,17 @@ }, "outputs": [], "source": [ + "# Instantiate a tally Mesh\n", + "mesh = openmc.Mesh(name='mesh')\n", + "mesh.type = 'regular'\n", + "mesh.dimension = [2, 2]\n", + "mesh.lower_left = [-0.63, -0.63]\n", + "mesh.upper_right = [+0.63, +0.63]\n", + "\n", "# Instantiate a few different sections\n", - "total = mgxs.TotalXS(domain=cell, groups=groups)\n", - "absorption = mgxs.AbsorptionXS(domain=cell, groups=groups)\n", - "scattering = mgxs.ScatterXS(domain=cell, groups=groups)" + "total = mgxs.TotalXS(domain=mesh, groups=groups)\n", + "absorption = mgxs.AbsorptionXS(domain=mesh, groups=groups)\n", + "scattering = mgxs.ScatterXS(domain=mesh, groups=groups)" ] }, { @@ -422,24 +429,22 @@ "data": { "text/plain": [ "OrderedDict([('flux', Tally\n", - "\tID =\t10000\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t['flux']\n", - "\tEstimator =\ttracklength\n", - "), ('absorption', Tally\n", - "\tID =\t10001\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t['absorption']\n", - "\tEstimator =\ttracklength\n", - ")])" + " \tID =\t10000\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tmesh\t[10000]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['flux']\n", + " \tEstimator =\ttracklength), ('absorption', Tally\n", + " \tID =\t10001\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tmesh\t[10000]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['absorption']\n", + " \tEstimator =\ttracklength)])" ] }, "execution_count": 13, @@ -516,9 +521,9 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 19feb55e6d5e8350398627f39fb55ee8e2e63011\n", - " Date/Time: 2016-05-13 10:19:16\n", - " MPI Processes: 1\n", + " Git SHA1: 736d7aa5ba3bcd1a8a1614ce4b6769babcb1d8ca\n", + " Date/Time: 2016-07-05 16:23:08\n", + " MPI Processes: 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -544,56 +549,56 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.11184 \n", - " 2/1 1.15820 \n", - " 3/1 1.18468 \n", - " 4/1 1.17492 \n", - " 5/1 1.19645 \n", - " 6/1 1.18436 \n", - " 7/1 1.14070 \n", - " 8/1 1.15150 \n", - " 9/1 1.19202 \n", - " 10/1 1.17677 \n", - " 11/1 1.20272 \n", - " 12/1 1.21366 1.20819 +/- 0.00547\n", - " 13/1 1.15906 1.19181 +/- 0.01668\n", - " 14/1 1.14687 1.18058 +/- 0.01629\n", - " 15/1 1.14570 1.17360 +/- 0.01442\n", - " 16/1 1.13480 1.16713 +/- 0.01343\n", - " 17/1 1.17680 1.16852 +/- 0.01144\n", - " 18/1 1.16866 1.16853 +/- 0.00990\n", - " 19/1 1.19253 1.17120 +/- 0.00913\n", - " 20/1 1.18124 1.17220 +/- 0.00823\n", - " 21/1 1.19206 1.17401 +/- 0.00766\n", - " 22/1 1.17681 1.17424 +/- 0.00700\n", - " 23/1 1.17634 1.17440 +/- 0.00644\n", - " 24/1 1.13659 1.17170 +/- 0.00654\n", - " 25/1 1.17144 1.17169 +/- 0.00609\n", - " 26/1 1.20649 1.17386 +/- 0.00610\n", - " 27/1 1.11238 1.17024 +/- 0.00678\n", - " 28/1 1.18911 1.17129 +/- 0.00647\n", - " 29/1 1.14681 1.17000 +/- 0.00626\n", - " 30/1 1.12152 1.16758 +/- 0.00641\n", - " 31/1 1.12729 1.16566 +/- 0.00639\n", - " 32/1 1.15399 1.16513 +/- 0.00612\n", - " 33/1 1.13547 1.16384 +/- 0.00599\n", - " 34/1 1.17723 1.16440 +/- 0.00576\n", - " 35/1 1.09296 1.16154 +/- 0.00622\n", - " 36/1 1.19621 1.16287 +/- 0.00612\n", - " 37/1 1.12560 1.16149 +/- 0.00605\n", - " 38/1 1.17872 1.16211 +/- 0.00586\n", - " 39/1 1.17721 1.16263 +/- 0.00568\n", - " 40/1 1.13724 1.16178 +/- 0.00555\n", - " 41/1 1.18526 1.16254 +/- 0.00542\n", - " 42/1 1.13779 1.16177 +/- 0.00531\n", - " 43/1 1.15066 1.16143 +/- 0.00516\n", - " 44/1 1.12174 1.16026 +/- 0.00514\n", - " 45/1 1.17479 1.16068 +/- 0.00501\n", - " 46/1 1.14146 1.16014 +/- 0.00489\n", - " 47/1 1.20464 1.16135 +/- 0.00491\n", - " 48/1 1.15119 1.16108 +/- 0.00479\n", - " 49/1 1.17938 1.16155 +/- 0.00468\n", - " 50/1 1.15798 1.16146 +/- 0.00457\n", + " 1/1 1.07993 \n", + " 2/1 1.23691 \n", + " 3/1 1.17407 \n", + " 4/1 1.08258 \n", + " 5/1 1.21012 \n", + " 6/1 1.23825 \n", + " 7/1 1.18016 \n", + " 8/1 1.20989 \n", + " 9/1 1.15475 \n", + " 10/1 1.13462 \n", + " 11/1 1.12749 \n", + " 12/1 1.09502 1.11125 +/- 0.01623\n", + " 13/1 1.24722 1.15657 +/- 0.04628\n", + " 14/1 1.14700 1.15418 +/- 0.03281\n", + " 15/1 1.13889 1.15112 +/- 0.02560\n", + " 16/1 1.19008 1.15762 +/- 0.02189\n", + " 17/1 1.11320 1.15127 +/- 0.01956\n", + " 18/1 1.12093 1.14748 +/- 0.01736\n", + " 19/1 1.13809 1.14643 +/- 0.01534\n", + " 20/1 1.09886 1.14168 +/- 0.01452\n", + " 21/1 1.15457 1.14285 +/- 0.01319\n", + " 22/1 1.19951 1.14757 +/- 0.01293\n", + " 23/1 1.13296 1.14645 +/- 0.01195\n", + " 24/1 1.15322 1.14693 +/- 0.01107\n", + " 25/1 1.26213 1.15461 +/- 0.01286\n", + " 26/1 1.11758 1.15230 +/- 0.01225\n", + " 27/1 1.19061 1.15455 +/- 0.01172\n", + " 28/1 1.17562 1.15572 +/- 0.01111\n", + " 29/1 1.15989 1.15594 +/- 0.01051\n", + " 30/1 1.19989 1.15814 +/- 0.01021\n", + " 31/1 1.14498 1.15751 +/- 0.00974\n", + " 32/1 1.11494 1.15558 +/- 0.00948\n", + " 33/1 1.13251 1.15457 +/- 0.00912\n", + " 34/1 1.17943 1.15561 +/- 0.00879\n", + " 35/1 1.21182 1.15786 +/- 0.00872\n", + " 36/1 1.16118 1.15798 +/- 0.00838\n", + " 37/1 1.13679 1.15720 +/- 0.00811\n", + " 38/1 1.15684 1.15719 +/- 0.00781\n", + " 39/1 1.12450 1.15606 +/- 0.00762\n", + " 40/1 1.30157 1.16091 +/- 0.00882\n", + " 41/1 1.04558 1.15719 +/- 0.00930\n", + " 42/1 1.16538 1.15745 +/- 0.00901\n", + " 43/1 1.17710 1.15804 +/- 0.00875\n", + " 44/1 1.13273 1.15730 +/- 0.00853\n", + " 45/1 1.19156 1.15828 +/- 0.00834\n", + " 46/1 1.19404 1.15927 +/- 0.00816\n", + " 47/1 1.19058 1.16012 +/- 0.00798\n", + " 48/1 1.12943 1.15931 +/- 0.00781\n", + " 49/1 1.22428 1.16097 +/- 0.00779\n", + " 50/1 1.07496 1.15882 +/- 0.00789\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -603,27 +608,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2300E-01 seconds\n", - " Reading cross sections = 9.3000E-02 seconds\n", - " Total time in simulation = 1.6549E+01 seconds\n", - " Time in transport only = 1.6535E+01 seconds\n", - " Time in inactive batches = 2.3650E+00 seconds\n", - " Time in active batches = 1.4184E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 8.6600E-01 seconds\n", + " Reading cross sections = 2.2400E-01 seconds\n", + " Total time in simulation = 3.0950E+00 seconds\n", + " Time in transport only = 2.9310E+00 seconds\n", + " Time in inactive batches = 2.8000E-01 seconds\n", + " Time in active batches = 2.8150E+00 seconds\n", + " Time synchronizing fission bank = 1.4200E-01 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.6981E+01 seconds\n", - " Calculation Rate (inactive) = 10570.8 neutrons/second\n", - " Calculation Rate (active) = 7050.20 neutrons/second\n", + " Time accumulating tallies = 2.0000E-03 seconds\n", + " Total time for finalization = 3.0000E-03 seconds\n", + " Total time elapsed = 3.9660E+00 seconds\n", + " Calculation Rate (inactive) = 35714.3 neutrons/second\n", + " Calculation Rate (active) = 14209.6 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.15984 +/- 0.00411\n", - " k-effective (Track-length) = 1.16146 +/- 0.00457\n", - " k-effective (Absorption) = 1.16177 +/- 0.00380\n", - " Combined k-effective = 1.16105 +/- 0.00364\n", + " k-effective (Collision) = 1.15707 +/- 0.00744\n", + " k-effective (Track-length) = 1.15882 +/- 0.00789\n", + " k-effective (Absorption) = 1.16215 +/- 0.00476\n", + " Combined k-effective = 1.16131 +/- 0.00452\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -641,7 +646,7 @@ ], "source": [ "# Run OpenMC\n", - "openmc.run()" + "openmc.run(mpi_procs=4)" ] }, { @@ -732,11 +737,26 @@ "text": [ "Multi-Group XS\n", "\tReaction Type =\ttotal\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t1\n", + "\tDomain Type =\tmesh\n", + "\tDomain ID =\t10000\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 2.69e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 5.93e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.83e-01 +/- 4.53e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.16e+00%\n", + "\n", + "\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 3.23e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.30e+00%\n", + "\n", + "\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.83e-01 +/- 3.88e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 9.89e-01%\n", + "\n", + "\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.82e-01 +/- 4.92e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.20e+00%\n", "\n", "\n", "\n" @@ -767,40 +787,121 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
cellmesh 10000group innuclidemeanstd. dev.
xyz
11111total0.6677870.0018020.6690160.003015
01112total1.2920130.0076421.2931380.014971
31211total0.6679300.002132
21212total1.2927410.016747
52111total0.6695130.002584
42112total1.2944230.012750
72211total0.6687730.003314
62212total1.2925150.015479
\n", "
" ], "text/plain": [ - " cell group in nuclide mean std. dev.\n", - "1 1 1 total 0.667787 0.001802\n", - "0 1 2 total 1.292013 0.007642" + " mesh 10000 group in nuclide mean std. dev.\n", + " x y z \n", + "1 1 1 1 1 total 0.669016 0.003015\n", + "0 1 1 1 2 total 1.293138 0.014971\n", + "3 1 2 1 1 total 0.667930 0.002132\n", + "2 1 2 1 2 total 1.292741 0.016747\n", + "5 2 1 1 1 total 0.669513 0.002584\n", + "4 2 1 1 2 total 1.294423 0.012750\n", + "7 2 2 1 1 total 0.668773 0.003314\n", + "6 2 2 1 2 total 1.292515 0.015479" ] }, "execution_count": 19, @@ -824,9 +925,23 @@ "cell_type": "code", "execution_count": 20, "metadata": { - "collapsed": true + "collapsed": false }, - "outputs": [], + "outputs": [ + { + "ename": "TypeError", + "evalue": "Setting dtype to anything other than object is not supported", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mabsorption\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexport_xs_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'absorption-xs'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'excel'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mexport_xs_data\u001b[0;34m(self, filename, directory, format, groups, xs_type)\u001b[0m\n\u001b[1;32m 1430\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1431\u001b[0m \u001b[0;31m# Capitalize column label strings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1432\u001b[0;31m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1433\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1434\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/index.pyc\u001b[0m in \u001b[0;36mastype\u001b[0;34m(self, dtype)\u001b[0m\n\u001b[1;32m 5922\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mis_object_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5923\u001b[0m raise TypeError('Setting %s dtype to anything other than object '\n\u001b[0;32m-> 5924\u001b[0;31m 'is not supported' % self.__class__)\n\u001b[0m\u001b[1;32m 5925\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_shallow_copy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5926\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: Setting dtype to anything other than object is not supported" + ] + } + ], "source": [ "absorption.export_xs_data(filename='absorption-xs', format='excel')" ] @@ -840,7 +955,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "collapsed": false }, @@ -867,68 +982,11 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellenergy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
010.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-3.774758e-150.011292
116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...1.443290e-150.002570
\n", - "
" - ], - "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - "0 (((total / flux) - (absorption / flux)) - (sca... -3.77e-15 1.13e-02 \n", - "1 (((total / flux) - (absorption / flux)) - (sca... 1.44e-15 2.57e-03 " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to compute the difference between the total, absorption and scattering\n", "difference = total.xs_tally - absorption.xs_tally - scattering.xs_tally\n", @@ -946,68 +1004,11 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellenergy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
010.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0761150.000649
116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0192630.000095
\n", - "
" - ], - "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - "0 ((absorption / flux) / (total / flux)) 7.61e-02 6.49e-04 \n", - "1 ((absorption / flux) / (total / flux)) 1.93e-02 9.46e-05 " - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to compute the absorption-to-total MGXS ratio\n", "absorption_to_total = absorption.xs_tally / total.xs_tally\n", @@ -1018,68 +1019,11 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellenergy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
010.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9238850.007736
116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9807370.003737
\n", - "
" - ], - "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - "0 ((scatter / flux) / (total / flux)) 9.24e-01 7.74e-03 \n", - "1 ((scatter / flux) / (total / flux)) 9.81e-01 3.74e-03 " - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to compute the scattering-to-total MGXS ratio\n", "scattering_to_total = scattering.xs_tally / total.xs_tally\n", @@ -1097,68 +1041,11 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellenergy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
010.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...1.00.007763
116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...1.00.003739
\n", - "
" - ], - "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 7.76e-03 \n", - "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 3.74e-03 " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to ensure that the absorption- and scattering-to-total MGXS ratios sum to unity\n", "sum_ratio = absorption_to_total + scattering_to_total\n", @@ -1166,6 +1053,15 @@ "# The scattering-to-total ratio is a derived tally which can generate Pandas DataFrames for inspection\n", "sum_ratio.get_pandas_dataframe()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/openmc/__init__.py b/openmc/__init__.py index 0bde0f5843..557e13039f 100644 --- a/openmc/__init__.py +++ b/openmc/__init__.py @@ -9,8 +9,8 @@ from openmc.plots import * from openmc.settings import * from openmc.surface import * from openmc.universe import * -from openmc.mgxs_library import * from openmc.mesh import * +from openmc.mgxs_library import * from openmc.filter import * from openmc.trigger import * from openmc.tallies import * diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 7485236087..cac5957fd6 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -13,7 +13,7 @@ import numpy as np import openmc import openmc.checkvalue as cv from openmc.mgxs import EnergyGroups - +from openmc import Mesh if sys.version_info[0] >= 3: basestring = str @@ -45,13 +45,15 @@ MGXS_TYPES = ['total', DOMAIN_TYPES = ['cell', 'distribcell', 'universe', - 'material'] + 'material', + 'mesh'] # Supported domain classes # TODO: Implement Mesh domains _DOMAINS = (openmc.Cell, openmc.Universe, - openmc.Material) + openmc.Material, + openmc.Mesh) class MGXS(object): @@ -66,9 +68,9 @@ class MGXS(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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -86,9 +88,9 @@ class MGXS(object): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -115,9 +117,10 @@ class MGXS(object): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + 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. @@ -263,6 +266,10 @@ class MGXS(object): # Create a domain Filter object domain_filter = openmc.Filter(self.domain_type, self.domain.id) + # If a mesh domain, give the mesh to the domain filter + if self.domain_type == 'mesh': + domain_filter.mesh = self.domain + # Create each Tally needed to compute the multi group cross section tally_metadata = zip(self.scores, self.tally_keys, self.filters) for score, key, filters in tally_metadata: @@ -378,6 +385,8 @@ class MGXS(object): self._domain_type = 'cell' elif isinstance(domain, openmc.Universe): self._domain_type = 'universe' + elif isinstance(domain, openmc.Mesh): + self._domain_type = 'mesh' @domain_type.setter def domain_type(self, domain_type): @@ -432,9 +441,10 @@ class MGXS(object): ---------- 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', 'velocity', 'prompt-nu-fission'} The type of multi-group cross section object to return - 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -675,6 +685,8 @@ class MGXS(object): self.domain = statepoint.summary.get_universe_by_id(self.domain.id) elif self.domain_type == 'material': self.domain = statepoint.summary.get_material_by_id(self.domain.id) + elif self.domain_type == 'mesh': + self.domain = statepoint.meshes[self.domain.id] else: msg = 'Unable to load data from a statepoint for domain type {0} ' \ 'which is not yet supported'.format(self.domain_type) @@ -682,7 +694,23 @@ class MGXS(object): # Use tally "slicing" to ensure that tallies correspond to our domain # NOTE: This is important if tally merging was used - if self.domain_type != 'distribcell': + if self.domain_type == 'mesh': + filters = [self.domain_type] + bins = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + bins.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + bins.append((x, y, 1)) + + filter_bins = [tuple(bins)] + elif self.domain_type != 'distribcell': filters = [self.domain_type] filter_bins = [(self.domain.id,)] # Distribcell filters only accept single cell - neglect it when slicing @@ -761,7 +789,7 @@ class MGXS(object): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) filter_bins.append((subdomain,)) @@ -981,16 +1009,16 @@ class MGXS(object): cv.check_iterable_type('energy_groups', groups, Integral) # Build lists of filters and filter bins to slice - if len(groups) == 0: - filters = [] - filter_bins = [] - else: - filter_bins = [] + filters = [] + filter_bins = [] + + if len(groups) != 0: + energy_bins = [] for group in groups: group_bounds = self.energy_groups.get_group_bounds(group) - filter_bins.append(group_bounds) - filter_bins = [tuple(filter_bins)] - filters = ['energy'] + energy_bins.append(group_bounds) + filter_bins.append(tuple(energy_bins)) + filters.append('energy') # Clone this MGXS to initialize the sliced version slice_xs = copy.deepcopy(self) @@ -1134,6 +1162,19 @@ class MGXS(object): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -1270,6 +1311,19 @@ class MGXS(object): elif self.domain_type == 'avg(distribcell)': domain_filter = self.xs_tally.find_filter('avg(distribcell)') subdomains = domain_filter.bins + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -1375,8 +1429,8 @@ class MGXS(object): df = self.get_pandas_dataframe(groups=groups, xs_type=xs_type) # Capitalize column label strings - df.columns = df.columns.astype(str) - df.columns = map(str.title, df.columns) + #df.columns = df.columns.astype(str) + #df.columns = map(str.title, df.columns) # Export the data using Pandas IO API if format == 'csv': @@ -1477,7 +1531,10 @@ class MGXS(object): distribcell_paths=distribcell_paths) # Remove the score column since it is homogeneous and redundant - df = df.drop('score', axis=1) + if self.domain_type == 'mesh': + df = df.drop('score', axis=1, level=0) + else: + df = df.drop('score', axis=1) # Override energy groups bounds with indices all_groups = np.arange(self.num_groups, 0, -1, dtype=np.int) @@ -1533,7 +1590,12 @@ class MGXS(object): # Sort the dataframe by domain type id (e.g., distribcell id) and # energy groups such that data is from fast to thermal - df.sort_values(by=[self.domain_type] + columns, inplace=True) + if self.domain_type == 'mesh': + mesh_str = 'mesh {0}'.format(self.domain.id) + df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'y'), \ + (mesh_str, 'z')] + columns, inplace=True) + else: + df.sort_values(by=[self.domain_type] + columns, inplace=True) return df @@ -1552,9 +1614,9 @@ class MatrixMGXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -1572,9 +1634,9 @@ class MatrixMGXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -1601,9 +1663,10 @@ class MatrixMGXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + 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. @@ -1700,7 +1763,7 @@ class MatrixMGXS(MGXS): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral, - max_depth=2) + max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) filter_bins.append((subdomain,)) @@ -1862,6 +1925,19 @@ class MatrixMGXS(MGXS): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -1971,9 +2047,9 @@ class TotalXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -1991,9 +2067,9 @@ class TotalXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2022,7 +2098,7 @@ class TotalXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2089,9 +2165,9 @@ class TransportXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2109,9 +2185,9 @@ class TransportXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2140,7 +2216,7 @@ class TransportXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2219,9 +2295,9 @@ class NuTransportXS(TransportXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2239,9 +2315,9 @@ class NuTransportXS(TransportXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2270,7 +2346,7 @@ class NuTransportXS(TransportXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2340,9 +2416,9 @@ class AbsorptionXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2360,9 +2436,9 @@ class AbsorptionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2391,7 +2467,7 @@ class AbsorptionXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2456,9 +2532,9 @@ class CaptureXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2476,9 +2552,9 @@ class CaptureXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2507,7 +2583,7 @@ class CaptureXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2578,9 +2654,9 @@ class FissionXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2598,9 +2674,9 @@ class FissionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2629,7 +2705,7 @@ class FissionXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2689,9 +2765,9 @@ class NuFissionXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2709,9 +2785,9 @@ class NuFissionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2740,7 +2816,7 @@ class NuFissionXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2805,9 +2881,9 @@ class KappaFissionXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2825,9 +2901,9 @@ class KappaFissionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2856,7 +2932,7 @@ class KappaFissionXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -2918,9 +2994,9 @@ class ScatterXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2938,9 +3014,9 @@ class ScatterXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2969,7 +3045,7 @@ class ScatterXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -3033,9 +3109,9 @@ class NuScatterXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -3053,9 +3129,9 @@ class NuScatterXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -3084,7 +3160,7 @@ class NuScatterXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -3163,9 +3239,9 @@ class ScatterMatrixXS(MatrixMGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -3187,9 +3263,9 @@ class ScatterMatrixXS(MatrixMGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -3218,7 +3294,7 @@ class ScatterMatrixXS(MatrixMGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -3515,7 +3591,7 @@ class ScatterMatrixXS(MatrixMGXS): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) filter_bins.append((subdomain,)) @@ -3702,6 +3778,19 @@ class ScatterMatrixXS(MatrixMGXS): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -3812,9 +3901,9 @@ class NuScatterMatrixXS(ScatterMatrixXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -3836,9 +3925,9 @@ class NuScatterMatrixXS(ScatterMatrixXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -3867,7 +3956,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -3938,9 +4027,9 @@ class MultiplicityMatrixXS(MatrixMGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -3958,9 +4047,9 @@ class MultiplicityMatrixXS(MatrixMGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -3989,7 +4078,7 @@ class MultiplicityMatrixXS(MatrixMGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -4085,9 +4174,9 @@ class NuFissionMatrixXS(MatrixMGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -4105,9 +4194,9 @@ class NuFissionMatrixXS(MatrixMGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -4136,7 +4225,7 @@ class NuFissionMatrixXS(MatrixMGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -4200,9 +4289,9 @@ class Chi(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -4220,9 +4309,9 @@ class Chi(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -4251,7 +4340,7 @@ class Chi(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -4484,7 +4573,7 @@ class Chi(MGXS): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) filter_bins.append((subdomain,)) @@ -4659,9 +4748,9 @@ class ChiPrompt(Chi): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -4679,9 +4768,9 @@ class ChiPrompt(Chi): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -4710,7 +4799,7 @@ class ChiPrompt(Chi): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int @@ -4796,9 +4885,9 @@ class Velocity(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -4816,9 +4905,9 @@ class Velocity(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -4921,6 +5010,19 @@ class Velocity(MGXS): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -5011,9 +5113,9 @@ class PromptNuFissionXS(MGXS): 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 - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -5031,9 +5133,9 @@ class PromptNuFissionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -5062,7 +5164,7 @@ class PromptNuFissionXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading tally data from a statepoint file). num_nuclides : int diff --git a/openmc/tallies.py b/openmc/tallies.py index af19549a7c..4fc19f1e5d 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2983,7 +2983,7 @@ class Tally(object): bin_indices.extend([bin_index]) bin_indices.extend([bin_index, bin_index+1]) num_bins += 1 - elif filter_type == 'distribcell': + elif filter_type in ['distribcell', 'mesh']: bin_indices = [0] num_bins = find_filter.num_bins else: From 04dafa13663f58f5b7206caf78e41427e48a4286 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 19:15:30 -0400 Subject: [PATCH 09/82] updated test_mgxs_library_hdf5 --- tests/test_mgxs_library_hdf5/results_true.dat | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index d757944925..ad25d4c81c 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -67,8 +67,8 @@ domain=10000 type=chi-prompt [ 0.9914425 0. ] [ 0.05093465 0. ] domain=10000 type=velocity -[ 17515210.62039676 350171.99519401] -[ 1438175.27389879 29945.93169673] +[ 17515210.62039744 350171.995194 ] +[ 1438175.27389862 29945.93169671] domain=10000 type=prompt-nu-fission [ 0.01923922 0.46671903] [ 0.00130951 0.04141087] @@ -141,8 +141,8 @@ domain=10001 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10001 type=velocity -[ 16677839.49736621 334953.36760125] -[ 1266444.30951813 38336.78162568] +[ 16677839.497365 334953.36760126] +[ 1266444.30951798 38336.7816257 ] domain=10001 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] @@ -215,8 +215,8 @@ domain=10002 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10002 type=velocity -[ 16605562.87322708 328412.03865003] -[ 1042435.52374238 38828.43572983] +[ 16605562.87322657 328412.03865004] +[ 1042435.52374247 38828.43572985] domain=10002 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] From 7459f8e335a2138193d4ccc777de2b8a2ed27887 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 6 Jul 2016 00:01:09 +0000 Subject: [PATCH 10/82] updated test_mgxs_library_hdf5 test results --- tests/test_mgxs_library_hdf5/results_true.dat | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index ad25d4c81c..d757944925 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -67,8 +67,8 @@ domain=10000 type=chi-prompt [ 0.9914425 0. ] [ 0.05093465 0. ] domain=10000 type=velocity -[ 17515210.62039744 350171.995194 ] -[ 1438175.27389862 29945.93169671] +[ 17515210.62039676 350171.99519401] +[ 1438175.27389879 29945.93169673] domain=10000 type=prompt-nu-fission [ 0.01923922 0.46671903] [ 0.00130951 0.04141087] @@ -141,8 +141,8 @@ domain=10001 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10001 type=velocity -[ 16677839.497365 334953.36760126] -[ 1266444.30951798 38336.7816257 ] +[ 16677839.49736621 334953.36760125] +[ 1266444.30951813 38336.78162568] domain=10001 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] @@ -215,8 +215,8 @@ domain=10002 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10002 type=velocity -[ 16605562.87322657 328412.03865004] -[ 1042435.52374247 38828.43572985] +[ 16605562.87322708 328412.03865003] +[ 1042435.52374238 38828.43572983] domain=10002 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] From e479f4472d4ef16202e8c7cf15ec0a01291c9ebd Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 6 Jul 2016 19:58:40 +0000 Subject: [PATCH 11/82] updated mgxs library hdf5 test --- tests/test_mgxs_library_hdf5/results_true.dat | 226 +++++++++--------- 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index d757944925..f778fd1328 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,92 +1,92 @@ domain=10000 type=total -[ 0.41482549 0.66016992] -[ 0.02279291 0.04751893] +[ 0.41737699 0.65550537] +[ 0.01622049 0.04822293] domain=10000 type=transport -[ 0.35685964 0.64764766] -[ 0.0254936 0.02370374] +[ 0.36820197 0.65187559] +[ 0.01250772 0.04456647] domain=10000 type=nu-transport -[ 0.35685964 0.64764766] -[ 0.0254936 0.02370374] +[ 0.3682861 0.65187559] +[ 0.01255746 0.04456647] domain=10000 type=absorption -[ 0.02740784 0.26451074] -[ 0.0026925 0.02336708] +[ 0.02918941 0.25999786] +[ 0.00220701 0.0193732 ] domain=10000 type=capture -[ 0.01984455 0.07171935] -[ 0.0026433 0.02520786] +[ 0.02193339 0.07048146] +[ 0.00217411 0.01745302] domain=10000 type=fission -[ 0.00756329 0.19279139] -[ 0.00050848 0.01710592] +[ 0.00725602 0.1895164 ] +[ 0.00020162 0.01415226] domain=10000 type=nu-fission -[ 0.01943174 0.46977478] -[ 0.00132298 0.041682 ] +[ 0.01868423 0.46179461] +[ 0.00054368 0.0344848 ] domain=10000 type=kappa-fission -[ 1.47456982 37.28689641] -[ 0.09923532 3.30837772] +[ 1.41427101 36.65349559] +[ 0.03905455 2.73712278] domain=10000 type=scatter -[ 0.38741765 0.39565918] -[ 0.02062573 0.02512506] +[ 0.38818758 0.39550752] +[ 0.01463905 0.02930007] domain=10000 type=nu-scatter -[ 0.38518839 0.4123894 ] -[ 0.02694562 0.01542528] +[ 0.39227772 0.39485975] +[ 0.01143512 0.0378726 ] domain=10000 type=scatter matrix -[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] - [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] +[[[ 3.90674403e-01 5.07976644e-02 2.12276198e-02 1.00823506e-02] + [ 1.24702272e-03 -9.19812968e-04 5.15976662e-04 -2.88532411e-04]] - [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] - [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] -[[[ 0.02700101 0.00698255 0.0028465 0.00223352] - [ 0.00048242 0.00014901 0.00018432 0.00012817]] + [[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [ 3.94859753e-01 1.12209557e-02 1.31165142e-02 9.25288210e-03]]] +[[[ 0.01161198 0.00415913 0.0039568 0.00300004] + [ 0.00035679 0.000272 0.00030608 0.00035952]] - [[ 0.00092488 0.00076791 0.00049392 0.00017154] - [ 0.01524494 0.00450173 0.01055075 0.01043819]]] + [[ 0. 0. 0. 0. ] + [ 0.0378726 0.01056496 0.0101966 0.00310401]]] domain=10000 type=nu-scatter matrix -[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] - [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] +[[[ 3.91030695e-01 5.07135280e-02 2.12493138e-02 9.99605867e-03] + [ 1.24702272e-03 -9.19812968e-04 5.15976662e-04 -2.88532411e-04]] - [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] - [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] -[[[ 0.02700101 0.00698255 0.0028465 0.00223352] - [ 0.00048242 0.00014901 0.00018432 0.00012817]] + [[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [ 3.94859753e-01 1.12209557e-02 1.31165142e-02 9.25288210e-03]]] +[[[ 0.01150629 0.00430451 0.0038862 0.00296991] + [ 0.00035679 0.000272 0.00030608 0.00035952]] - [[ 0.00092488 0.00076791 0.00049392 0.00017154] - [ 0.01524494 0.00450173 0.01055075 0.01043819]]] + [[ 0. 0. 0. 0. ] + [ 0.0378726 0.01056496 0.0101966 0.00310401]]] domain=10000 type=multiplicity matrix -[[ 1. 1.] - [ 1. 1.]] -[[ 0.07851646 0.68718427] - [ 1.41421356 0.04113035]] +[[ 1.00091199 1. ] + [ 0. 1. ]] +[[ 0.03596231 0.40406102] + [ 0. 0.11556054]] domain=10000 type=nu-fission matrix -[[ 0.02014243 0. ] - [ 0.45436647 0. ]] -[[ 0.00314909 0. ] - [ 0.02742551 0. ]] +[[ 0.01768789 0. ] + [ 0.41868231 0. ]] +[[ 0.00118211 0. ] + [ 0.03684218 0. ]] domain=10000 type=chi -[ 1. 0.] -[ 0.04607052 0. ] +[ 0.95000711 0. ] +[ 0.07214945 0. ] domain=10000 type=chi-prompt -[ 0.9914425 0. ] -[ 0.05093465 0. ] +[ 0.94989853 0. ] +[ 0.07156216 0. ] domain=10000 type=velocity -[ 17515210.62039676 350171.99519401] -[ 1438175.27389879 29945.93169673] +[ 17726682.88576092 355801.95919094] +[ 912304.37589157 26699.39400479] domain=10000 type=prompt-nu-fission -[ 0.01923922 0.46671903] -[ 0.00130951 0.04141087] +[ 0.01850303 0.45879077] +[ 0.00053983 0.03426049] domain=10001 type=total -[ 0.31373767 0.3008214 ] -[ 0.0155819 0.02805245] +[ 0.31589603 0.30072552] +[ 0.01039063 0.0279948 ] domain=10001 type=transport -[ 0.27322787 0.31237484] -[ 0.03311537 0.04960583] +[ 0.27104783 0.32663403] +[ 0.01242444 0.06732111] domain=10001 type=nu-transport -[ 0.27322787 0.31237484] -[ 0.03311537 0.04960583] +[ 0.27104783 0.32663403] +[ 0.01242444 0.06732111] domain=10001 type=absorption -[ 0.00157499 0.00540038] -[ 0.00032255 0.00061814] +[ 0.00126653 0.00530484] +[ 0.00027329 0.00054437] domain=10001 type=capture -[ 0.00157499 0.00540038] -[ 0.00032255 0.00061814] +[ 0.00126653 0.00530484] +[ 0.00027329 0.00054437] domain=10001 type=fission [ 0. 0.] [ 0. 0.] @@ -97,38 +97,38 @@ domain=10001 type=kappa-fission [ 0. 0.] [ 0. 0.] domain=10001 type=scatter -[ 0.31216268 0.29542102] -[ 0.01532192 0.02744549] +[ 0.3146295 0.29542068] +[ 0.01028598 0.02745453] domain=10001 type=nu-scatter -[ 0.31012074 0.29626427] -[ 0.03378811 0.04379223] +[ 0.31011079 0.29015956] +[ 0.01217247 0.06236369] domain=10001 type=scatter matrix -[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] +[[[ 0.31011079 0.04197025 0.03385311 0.00735142] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] -[[[ 0.03378811 0.008484 0.00469561 0.00373162] + [ 0.29015956 -0.02638196 0.01221917 -0.01057754]]] +[[[ 0.01217247 0.00442067 0.00236562 0.0053074 ] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.04379223 0.01618037 0.01150396 0.00732885]]] + [ 0.06236369 0.00984106 0.0126671 0.009591 ]]] domain=10001 type=nu-scatter matrix -[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] +[[[ 0.31011079 0.04197025 0.03385311 0.00735142] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] -[[[ 0.03378811 0.008484 0.00469561 0.00373162] + [ 0.29015956 -0.02638196 0.01221917 -0.01057754]]] +[[[ 0.01217247 0.00442067 0.00236562 0.0053074 ] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.04379223 0.01618037 0.01150396 0.00732885]]] + [ 0.06236369 0.00984106 0.0126671 0.009591 ]]] domain=10001 type=multiplicity matrix [[ 1. 0.] [ 0. 1.]] -[[ 0.1087787 0. ] - [ 0. 0.14242717]] +[[ 0.03025768 0. ] + [ 0. 0.2173913 ]] domain=10001 type=nu-fission matrix [[ 0. 0.] [ 0. 0.]] @@ -141,26 +141,26 @@ domain=10001 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10001 type=velocity -[ 16677839.49736621 334953.36760125] -[ 1266444.30951813 38336.78162568] +[ 17612034.94932026 340983.9144147 ] +[ 659484.31513854 34989.69457459] domain=10001 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] domain=10002 type=total -[ 0.66457226 2.05238401] -[ 0.03121475 0.22434291] +[ 0.67620548 2.02125348] +[ 0.02134983 0.14050739] domain=10002 type=transport -[ 0.29056526 1.51643801] -[ 0.02385185 0.23519727] +[ 0.29203886 1.4739065 ] +[ 0.01113636 0.10290272] domain=10002 type=nu-transport -[ 0.29056526 1.51643801] -[ 0.02385185 0.23519727] +[ 0.29203886 1.4739065 ] +[ 0.01113636 0.10290272] domain=10002 type=absorption -[ 0.0006904 0.03168726] -[ 4.41475687e-05 3.74655858e-03] +[ 0.00068579 0.03074796] +[ 3.68158517e-05 2.25078842e-03] domain=10002 type=capture -[ 0.0006904 0.03168726] -[ 4.41475687e-05 3.74655858e-03] +[ 0.00068579 0.03074796] +[ 3.68158517e-05 2.25078842e-03] domain=10002 type=fission [ 0. 0.] [ 0. 0.] @@ -171,38 +171,38 @@ domain=10002 type=kappa-fission [ 0. 0.] [ 0. 0.] domain=10002 type=scatter -[ 0.66388186 2.02069676] -[ 0.03117268 0.22060445] +[ 0.67551968 1.99050553] +[ 0.02133857 0.13826068] domain=10002 type=nu-scatter -[ 0.6712692 2.03538833] -[ 0.02618637 0.25806033] +[ 0.67767343 1.99516952] +[ 0.01508282 0.10853715] domain=10002 type=scatter matrix -[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] - [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] +[[[ 0.6469338 0.38638204 0.15208191 0.00907726] + [ 0.03073963 0.00912198 -0.00378942 -0.00414448]] - [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] - [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] -[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] - [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] + [[ 0. 0. 0. 0. ] + [ 1.99516952 0.50320636 0.11400654 0.03222921]]] +[[[ 0.01490544 0.00783787 0.00444992 0.00269273] + [ 0.00071472 0.00043674 0.00068793 0.00030916]] - [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] - [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] + [[ 0. 0. 0. 0. ] + [ 0.10853715 0.03505779 0.009685 0.014426 ]]] domain=10002 type=nu-scatter matrix -[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] - [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] +[[[ 0.6469338 0.38638204 0.15208191 0.00907726] + [ 0.03073963 0.00912198 -0.00378942 -0.00414448]] - [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] - [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] -[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] - [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] + [[ 0. 0. 0. 0. ] + [ 1.99516952 0.50320636 0.11400654 0.03222921]]] +[[[ 0.01490544 0.00783787 0.00444992 0.00269273] + [ 0.00071472 0.00043674 0.00068793 0.00030916]] - [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] - [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] + [[ 0. 0. 0. 0. ] + [ 0.10853715 0.03505779 0.009685 0.014426 ]]] domain=10002 type=multiplicity matrix [[ 1. 1.] - [ 1. 1.]] -[[ 0.03860919 0.06766735] - [ 1.41421356 0.13592921]] + [ 0. 1.]] +[[ 0.02036446 0.02083786] + [ 0. 0.05943471]] domain=10002 type=nu-fission matrix [[ 0. 0.] [ 0. 0.]] @@ -215,8 +215,8 @@ domain=10002 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10002 type=velocity -[ 16605562.87322708 328412.03865003] -[ 1042435.52374238 38828.43572983] +[ 16974477.47368938 338442.26464518] +[ 850676.35712708 24773.82692619] domain=10002 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] From 4c1ba68f709bc6f63395133394a848b4c24d91bd Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 6 Jul 2016 20:01:00 +0000 Subject: [PATCH 12/82] updated mgxs velocity comment --- openmc/mgxs/mgxs.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e844842539..d6cd8c2550 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -4774,11 +4774,12 @@ class Velocity(MGXS): This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated multi-group neutron velocities for multi-group neutronics calculations. - The units of velocity are cm per second. At a minimum, one needs to set the - :attr:`Velocity.energy_groups` and :attr:`Velocity.domain` properties. - Tallies for the flux and appropriate reaction rates over the specified - domain are generated automatically via the :attr:`Velocity.tallies` - property, which can then be appended to a :class:`openmc.Tallies` instance. + The units of velocity are centimeters per second. At a minimum, one needs to + set the :attr:`Velocity.energy_groups` and :attr:`Velocity.domain` + properties. Tallies for the flux and appropriate reaction rates over the + specified domain are generated automatically via the + :attr:`Velocity.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the necessary data to compute multi-group cross sections from a From 4c790a4093338f9cac86d7f423583b41cf174a10 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 6 Jul 2016 20:02:37 +0000 Subject: [PATCH 13/82] updated tally.F90 --- src/tally.F90 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tally.F90 b/src/tally.F90 index b5f6bea7d9..6c4bb02bdd 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -463,7 +463,9 @@ contains * nuclides(p % event_nuclide) % nu(E, EMISSION_PROMPT) & / micro_xs(p % event_nuclide) % absorption else + score = ZERO + end if else ! Skip any non-fission events From fd56f09367299ace01810369156b49185fc230b6 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 6 Jul 2016 20:09:29 +0000 Subject: [PATCH 14/82] updated mgxs library hdf5 test --- tests/test_mgxs_library_hdf5/results_true.dat | 226 +++++++++--------- 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index f778fd1328..af06a5a43f 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,92 +1,92 @@ domain=10000 type=total -[ 0.41737699 0.65550537] -[ 0.01622049 0.04822293] +[ 0.41482549 0.66016992] +[ 0.02279291 0.04751893] domain=10000 type=transport -[ 0.36820197 0.65187559] -[ 0.01250772 0.04456647] +[ 0.35685964 0.64764766] +[ 0.0254936 0.02370374] domain=10000 type=nu-transport -[ 0.3682861 0.65187559] -[ 0.01255746 0.04456647] +[ 0.35685964 0.64764766] +[ 0.0254936 0.02370374] domain=10000 type=absorption -[ 0.02918941 0.25999786] -[ 0.00220701 0.0193732 ] +[ 0.02740784 0.26451074] +[ 0.0026925 0.02336708] domain=10000 type=capture -[ 0.02193339 0.07048146] -[ 0.00217411 0.01745302] +[ 0.01984455 0.07171935] +[ 0.0026433 0.02520786] domain=10000 type=fission -[ 0.00725602 0.1895164 ] -[ 0.00020162 0.01415226] +[ 0.00756329 0.19279139] +[ 0.00050848 0.01710592] domain=10000 type=nu-fission -[ 0.01868423 0.46179461] -[ 0.00054368 0.0344848 ] +[ 0.01943174 0.46977478] +[ 0.00132298 0.041682 ] domain=10000 type=kappa-fission -[ 1.41427101 36.65349559] -[ 0.03905455 2.73712278] +[ 1.47456982 37.28689641] +[ 0.09923532 3.30837772] domain=10000 type=scatter -[ 0.38818758 0.39550752] -[ 0.01463905 0.02930007] +[ 0.38741765 0.39565918] +[ 0.02062573 0.02512506] domain=10000 type=nu-scatter -[ 0.39227772 0.39485975] -[ 0.01143512 0.0378726 ] +[ 0.38518839 0.4123894 ] +[ 0.02694562 0.01542528] domain=10000 type=scatter matrix -[[[ 3.90674403e-01 5.07976644e-02 2.12276198e-02 1.00823506e-02] - [ 1.24702272e-03 -9.19812968e-04 5.15976662e-04 -2.88532411e-04]] +[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] + [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] - [[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [ 3.94859753e-01 1.12209557e-02 1.31165142e-02 9.25288210e-03]]] -[[[ 0.01161198 0.00415913 0.0039568 0.00300004] - [ 0.00035679 0.000272 0.00030608 0.00035952]] + [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] + [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] +[[[ 0.02700101 0.00698255 0.0028465 0.00223352] + [ 0.00048242 0.00014901 0.00018432 0.00012817]] - [[ 0. 0. 0. 0. ] - [ 0.0378726 0.01056496 0.0101966 0.00310401]]] + [[ 0.00092488 0.00076791 0.00049392 0.00017154] + [ 0.01524494 0.00450173 0.01055075 0.01043819]]] domain=10000 type=nu-scatter matrix -[[[ 3.91030695e-01 5.07135280e-02 2.12493138e-02 9.99605867e-03] - [ 1.24702272e-03 -9.19812968e-04 5.15976662e-04 -2.88532411e-04]] +[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] + [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] - [[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [ 3.94859753e-01 1.12209557e-02 1.31165142e-02 9.25288210e-03]]] -[[[ 0.01150629 0.00430451 0.0038862 0.00296991] - [ 0.00035679 0.000272 0.00030608 0.00035952]] + [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] + [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] +[[[ 0.02700101 0.00698255 0.0028465 0.00223352] + [ 0.00048242 0.00014901 0.00018432 0.00012817]] - [[ 0. 0. 0. 0. ] - [ 0.0378726 0.01056496 0.0101966 0.00310401]]] + [[ 0.00092488 0.00076791 0.00049392 0.00017154] + [ 0.01524494 0.00450173 0.01055075 0.01043819]]] domain=10000 type=multiplicity matrix -[[ 1.00091199 1. ] - [ 0. 1. ]] -[[ 0.03596231 0.40406102] - [ 0. 0.11556054]] +[[ 1. 1.] + [ 1. 1.]] +[[ 0.07851646 0.68718427] + [ 1.41421356 0.04113035]] domain=10000 type=nu-fission matrix -[[ 0.01768789 0. ] - [ 0.41868231 0. ]] -[[ 0.00118211 0. ] - [ 0.03684218 0. ]] +[[ 0.02014243 0. ] + [ 0.45436647 0. ]] +[[ 0.00314909 0. ] + [ 0.02742551 0. ]] domain=10000 type=chi -[ 0.95000711 0. ] -[ 0.07214945 0. ] +[ 1. 0.] +[ 0.04607052 0. ] domain=10000 type=chi-prompt -[ 0.94989853 0. ] -[ 0.07156216 0. ] +[ 0.9914425 0. ] +[ 0.05093465 0. ] domain=10000 type=velocity -[ 17726682.88576092 355801.95919094] -[ 912304.37589157 26699.39400479] +[ 17515210.62039675 350171.99519401] +[ 1438175.27389879 29945.93169673] domain=10000 type=prompt-nu-fission -[ 0.01850303 0.45879077] -[ 0.00053983 0.03426049] +[ 0.01923922 0.46671903] +[ 0.00130951 0.04141087] domain=10001 type=total -[ 0.31589603 0.30072552] -[ 0.01039063 0.0279948 ] +[ 0.31373767 0.3008214 ] +[ 0.0155819 0.02805245] domain=10001 type=transport -[ 0.27104783 0.32663403] -[ 0.01242444 0.06732111] +[ 0.27322787 0.31237484] +[ 0.03311537 0.04960583] domain=10001 type=nu-transport -[ 0.27104783 0.32663403] -[ 0.01242444 0.06732111] +[ 0.27322787 0.31237484] +[ 0.03311537 0.04960583] domain=10001 type=absorption -[ 0.00126653 0.00530484] -[ 0.00027329 0.00054437] +[ 0.00157499 0.00540038] +[ 0.00032255 0.00061814] domain=10001 type=capture -[ 0.00126653 0.00530484] -[ 0.00027329 0.00054437] +[ 0.00157499 0.00540038] +[ 0.00032255 0.00061814] domain=10001 type=fission [ 0. 0.] [ 0. 0.] @@ -97,38 +97,38 @@ domain=10001 type=kappa-fission [ 0. 0.] [ 0. 0.] domain=10001 type=scatter -[ 0.3146295 0.29542068] -[ 0.01028598 0.02745453] +[ 0.31216268 0.29542102] +[ 0.01532192 0.02744549] domain=10001 type=nu-scatter -[ 0.31011079 0.29015956] -[ 0.01217247 0.06236369] +[ 0.31012074 0.29626427] +[ 0.03378811 0.04379223] domain=10001 type=scatter matrix -[[[ 0.31011079 0.04197025 0.03385311 0.00735142] +[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.29015956 -0.02638196 0.01221917 -0.01057754]]] -[[[ 0.01217247 0.00442067 0.00236562 0.0053074 ] + [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] +[[[ 0.03378811 0.008484 0.00469561 0.00373162] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.06236369 0.00984106 0.0126671 0.009591 ]]] + [ 0.04379223 0.01618037 0.01150396 0.00732885]]] domain=10001 type=nu-scatter matrix -[[[ 0.31011079 0.04197025 0.03385311 0.00735142] +[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.29015956 -0.02638196 0.01221917 -0.01057754]]] -[[[ 0.01217247 0.00442067 0.00236562 0.0053074 ] + [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] +[[[ 0.03378811 0.008484 0.00469561 0.00373162] [ 0. 0. 0. 0. ]] [[ 0. 0. 0. 0. ] - [ 0.06236369 0.00984106 0.0126671 0.009591 ]]] + [ 0.04379223 0.01618037 0.01150396 0.00732885]]] domain=10001 type=multiplicity matrix [[ 1. 0.] [ 0. 1.]] -[[ 0.03025768 0. ] - [ 0. 0.2173913 ]] +[[ 0.1087787 0. ] + [ 0. 0.14242717]] domain=10001 type=nu-fission matrix [[ 0. 0.] [ 0. 0.]] @@ -141,26 +141,26 @@ domain=10001 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10001 type=velocity -[ 17612034.94932026 340983.9144147 ] -[ 659484.31513854 34989.69457459] +[ 16677839.49736623 334953.36760125] +[ 1266444.30951813 38336.78162568] domain=10001 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] domain=10002 type=total -[ 0.67620548 2.02125348] -[ 0.02134983 0.14050739] +[ 0.66457226 2.05238401] +[ 0.03121475 0.22434291] domain=10002 type=transport -[ 0.29203886 1.4739065 ] -[ 0.01113636 0.10290272] +[ 0.29056526 1.51643801] +[ 0.02385185 0.23519727] domain=10002 type=nu-transport -[ 0.29203886 1.4739065 ] -[ 0.01113636 0.10290272] +[ 0.29056526 1.51643801] +[ 0.02385185 0.23519727] domain=10002 type=absorption -[ 0.00068579 0.03074796] -[ 3.68158517e-05 2.25078842e-03] +[ 0.0006904 0.03168726] +[ 4.41475687e-05 3.74655858e-03] domain=10002 type=capture -[ 0.00068579 0.03074796] -[ 3.68158517e-05 2.25078842e-03] +[ 0.0006904 0.03168726] +[ 4.41475687e-05 3.74655858e-03] domain=10002 type=fission [ 0. 0.] [ 0. 0.] @@ -171,38 +171,38 @@ domain=10002 type=kappa-fission [ 0. 0.] [ 0. 0.] domain=10002 type=scatter -[ 0.67551968 1.99050553] -[ 0.02133857 0.13826068] +[ 0.66388186 2.02069676] +[ 0.03117268 0.22060445] domain=10002 type=nu-scatter -[ 0.67767343 1.99516952] -[ 0.01508282 0.10853715] +[ 0.6712692 2.03538833] +[ 0.02618637 0.25806033] domain=10002 type=scatter matrix -[[[ 0.6469338 0.38638204 0.15208191 0.00907726] - [ 0.03073963 0.00912198 -0.00378942 -0.00414448]] +[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] + [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] - [[ 0. 0. 0. 0. ] - [ 1.99516952 0.50320636 0.11400654 0.03222921]]] -[[[ 0.01490544 0.00783787 0.00444992 0.00269273] - [ 0.00071472 0.00043674 0.00068793 0.00030916]] + [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] + [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] +[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] + [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] - [[ 0. 0. 0. 0. ] - [ 0.10853715 0.03505779 0.009685 0.014426 ]]] + [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] + [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] domain=10002 type=nu-scatter matrix -[[[ 0.6469338 0.38638204 0.15208191 0.00907726] - [ 0.03073963 0.00912198 -0.00378942 -0.00414448]] +[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] + [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] - [[ 0. 0. 0. 0. ] - [ 1.99516952 0.50320636 0.11400654 0.03222921]]] -[[[ 0.01490544 0.00783787 0.00444992 0.00269273] - [ 0.00071472 0.00043674 0.00068793 0.00030916]] + [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] + [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] +[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] + [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] - [[ 0. 0. 0. 0. ] - [ 0.10853715 0.03505779 0.009685 0.014426 ]]] + [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] + [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] domain=10002 type=multiplicity matrix [[ 1. 1.] - [ 0. 1.]] -[[ 0.02036446 0.02083786] - [ 0. 0.05943471]] + [ 1. 1.]] +[[ 0.03860919 0.06766735] + [ 1.41421356 0.13592921]] domain=10002 type=nu-fission matrix [[ 0. 0.] [ 0. 0.]] @@ -215,8 +215,8 @@ domain=10002 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10002 type=velocity -[ 16974477.47368938 338442.26464518] -[ 850676.35712708 24773.82692619] +[ 16605562.87322706 328412.03865003] +[ 1042435.52374236 38828.43572983] domain=10002 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] From f2b7709981892451db63b5ffedc08446849cba74 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 11:24:02 -0400 Subject: [PATCH 15/82] updated mgxs library hdf5 test results --- tests/test_mgxs_library_hdf5/results_true.dat | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index af06a5a43f..ad25d4c81c 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -67,8 +67,8 @@ domain=10000 type=chi-prompt [ 0.9914425 0. ] [ 0.05093465 0. ] domain=10000 type=velocity -[ 17515210.62039675 350171.99519401] -[ 1438175.27389879 29945.93169673] +[ 17515210.62039744 350171.995194 ] +[ 1438175.27389862 29945.93169671] domain=10000 type=prompt-nu-fission [ 0.01923922 0.46671903] [ 0.00130951 0.04141087] @@ -141,8 +141,8 @@ domain=10001 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10001 type=velocity -[ 16677839.49736623 334953.36760125] -[ 1266444.30951813 38336.78162568] +[ 16677839.497365 334953.36760126] +[ 1266444.30951798 38336.7816257 ] domain=10001 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] @@ -215,8 +215,8 @@ domain=10002 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10002 type=velocity -[ 16605562.87322706 328412.03865003] -[ 1042435.52374236 38828.43572983] +[ 16605562.87322657 328412.03865004] +[ 1042435.52374247 38828.43572985] domain=10002 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] From e890b4855b47f1e3a974d90700e534654fb3c012 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 11:28:09 -0400 Subject: [PATCH 16/82] removed extra spaces in tally.F90 --- src/tally.F90 | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/tally.F90 b/src/tally.F90 index 6c4bb02bdd..b5f6bea7d9 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -463,9 +463,7 @@ contains * nuclides(p % event_nuclide) % nu(E, EMISSION_PROMPT) & / micro_xs(p % event_nuclide) % absorption else - score = ZERO - end if else ! Skip any non-fission events From b66b381defc36b9348baf861cf11f8271a4f2a8c Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Thu, 7 Jul 2016 16:03:00 +0000 Subject: [PATCH 17/82] updated mgxs library hdf5 test results --- tests/test_mgxs_library_hdf5/results_true.dat | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index ad25d4c81c..d757944925 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -67,8 +67,8 @@ domain=10000 type=chi-prompt [ 0.9914425 0. ] [ 0.05093465 0. ] domain=10000 type=velocity -[ 17515210.62039744 350171.995194 ] -[ 1438175.27389862 29945.93169671] +[ 17515210.62039676 350171.99519401] +[ 1438175.27389879 29945.93169673] domain=10000 type=prompt-nu-fission [ 0.01923922 0.46671903] [ 0.00130951 0.04141087] @@ -141,8 +141,8 @@ domain=10001 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10001 type=velocity -[ 16677839.497365 334953.36760126] -[ 1266444.30951798 38336.7816257 ] +[ 16677839.49736621 334953.36760125] +[ 1266444.30951813 38336.78162568] domain=10001 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] @@ -215,8 +215,8 @@ domain=10002 type=chi-prompt [ 0. 0.] [ 0. 0.] domain=10002 type=velocity -[ 16605562.87322657 328412.03865004] -[ 1042435.52374247 38828.43572985] +[ 16605562.87322708 328412.03865003] +[ 1042435.52374238 38828.43572983] domain=10002 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] From 864156c28243321a4b48de24e955c1141a294450 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 12:39:05 -0400 Subject: [PATCH 18/82] simplified helper functions for tallying neutron production with energy out filter --- src/tally.F90 | 235 +++++++++++++------------------------------------- 1 file changed, 59 insertions(+), 176 deletions(-) diff --git a/src/tally.F90 b/src/tally.F90 index b5f6bea7d9..aa4da6b18a 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -407,7 +407,7 @@ contains ! neutrons were emitted with different energies, multiple ! outgoing energy bins may have been scored to. The following ! logic treats this special case and results to multiple bins - call score_fission_eout_ce(p, t, score_index) + call score_fission_eout_ce(p, t, score_index, score_bin) cycle SCORE_LOOP end if end if @@ -450,7 +450,7 @@ contains ! neutrons were emitted with different energies, multiple ! outgoing energy bins may have been scored to. The following ! logic treats this special case and results to multiple bins - call score_fission_prompt_eout(p, t, score_index) + call score_fission_eout_ce(p, t, score_index, score_bin) cycle SCORE_LOOP end if end if @@ -522,7 +522,7 @@ contains ! neutrons were emitted with different energies, multiple ! outgoing energy bins may have been scored to. The following ! logic treats this special case and results to multiple bins - call score_fission_delayed_eout(p, t, score_index) + call score_fission_eout_ce(p, t, score_index, score_bin) cycle SCORE_LOOP end if end if @@ -1576,12 +1576,18 @@ contains ! neutrons produced with different energies. !=============================================================================== - subroutine score_fission_eout_ce(p, t, i_score) - type(Particle), intent(in) :: p + subroutine score_fission_eout_ce(p, t, i_score, score_bin) + + type(Particle), intent(in) :: p type(TallyObject), intent(inout) :: t - integer, intent(in) :: i_score ! index for score + integer, intent(in) :: i_score ! index for score + integer, intent(in) :: score_bin integer :: i ! index of outgoing energy filter + integer :: j ! index of delayedgroup filter + integer :: d ! delayed group + integer :: g ! another delayed group + integer :: d_bin ! delayed group bin index integer :: n ! number of energies on filter integer :: k ! loop index for bank sites integer :: bin_energyout ! original outgoing energy bin @@ -1603,6 +1609,10 @@ contains ! loop over number of particles banked do k = 1, p % n_bank + + ! get the delayed group + g = fission_bank(n_bank - p % n_bank + k) % delayed_group + ! determine score based on bank site weight and keff score = keff * fission_bank(n_bank - p % n_bank + k) % wgt @@ -1616,13 +1626,51 @@ contains ! change outgoing energy bin matching_bins(i) = binary_search(t % filters(i) % real_bins, n, E_out) - ! determine scoring index - i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 + ! Case for tallying prompt neutrons + if (score_bin == SCORE_NU_FISSION .OR. \ + (score_bin == SCORE_PROMPT_NU_FISSION .AND. g == 0)) then - ! Add score to tally + ! determine scoring index + i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 + + ! Add score to tally + !$omp atomic + t % results(i_score, i_filter) % value = & + t % results(i_score, i_filter) % value + score + + ! Case for tallying delayed emissions + else if (score_bin == SCORE_DELAYED_NU_FISSION .AND. g /= 0) then + + ! Get the index of delayed group filter + j = t % find_filter(FILTER_DELAYEDGROUP) + + ! if the delayed group filter is present, tally to corresponding + ! delayed group bin if it exists + if (j > 0) then + + ! loop over delayed group bins until the corresponding bin is found + do d_bin = 1, t % filters(j) % n_bins + d = t % filters(j) % int_bins(d_bin) + + ! check whether the delayed group of the particle is equal to the + ! delayed group of this bin + if (d == g) then + call score_fission_delayed_dg(t, d_bin, score, i_score) + end if + end do + + ! if the delayed group filter is not present, add score to tally + else + + ! determine scoring index + i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 + + ! Add score to tally !$omp atomic - t % results(i_score, i_filter) % value = & - t % results(i_score, i_filter) % value + score + t % results(i_score, i_filter) % value = & + t % results(i_score, i_filter) % value + score + end if + end if end do ! reset outgoing energy bin and score index @@ -1708,171 +1756,6 @@ contains end subroutine score_fission_eout_mg -!=============================================================================== -! SCORE_FISSION_PROMPT_EOUT handles a special case where we need to store -! prompt neutron production rate with an outgoing energy filter (think of a -! fission matrix). In this case, we may need to score to multiple bins if there -! were multiple neutrons produced with different energies. -!=============================================================================== - - subroutine score_fission_prompt_eout(p, t, i_score) - - type(Particle), intent(in) :: p - type(TallyObject), intent(inout) :: t - integer, intent(in) :: i_score ! index for score - - integer :: i ! index of outgoing energy filter - integer :: g ! delayed group - integer :: n ! number of energies on filter - integer :: k ! loop index for bank sites - integer :: bin_energyout ! original outgoing energy bin - integer :: i_filter ! index for matching filter bin combination - real(8) :: score ! actual score - real(8) :: E_out ! energy of fission bank site - - ! Save original outgoing energy bin - i = t % find_filter(FILTER_ENERGYOUT) - bin_energyout = matching_bins(i) - - ! Get number of energies on filter - n = size(t % filters(i) % real_bins) - - ! Since the creation of fission sites is weighted such that it is - ! expected to create n_particles sites, we need to multiply the - ! score by keff to get the true delayed-nu-fission rate. - - ! loop over number of particles banked - do k = 1, p % n_bank - - ! get the delayed group - g = fission_bank(n_bank - p % n_bank + k) % delayed_group - - ! check if the particle was born prompt - if (g == 0) then - - ! determine score based on bank site weight and keff - score = keff * fission_bank(n_bank - p % n_bank + k) % wgt - - ! determine outgoing energy from fission bank - E_out = fission_bank(n_bank - p % n_bank + k) % E - - ! check if outgoing energy is within specified range on filter - if (E_out < t % filters(i) % real_bins(1) .or. & - E_out > t % filters(i) % real_bins(n)) cycle - - ! change outgoing energy bin - matching_bins(i) = binary_search(t % filters(i) % real_bins, n, E_out) - - ! determine scoring index - i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - - ! Add score to tally -!$omp atomic - t % results(i_score, i_filter) % value = & - t % results(i_score, i_filter) % value + score - end if - end do - - ! reset outgoing energy bin - matching_bins(i) = bin_energyout - - end subroutine score_fission_prompt_eout - -!=============================================================================== -! SCORE_FISSION_DELAYED_EOUT handles a special case where we need to store -! delayed neutron production rate with an outgoing energy filter (think of a -! fission matrix). In this case, we may need to score to multiple bins if there -! were multiple neutrons produced with different energies. -!=============================================================================== - - subroutine score_fission_delayed_eout(p, t, i_score) - - type(Particle), intent(in) :: p - type(TallyObject), intent(inout) :: t - integer, intent(in) :: i_score ! index for score - - integer :: i ! index of outgoing energy filter - integer :: j ! index of delayedgroup filter - integer :: d ! delayed group - integer :: g ! another delayed group - integer :: d_bin ! delayed group bin index - integer :: n ! number of energies on filter - integer :: k ! loop index for bank sites - integer :: bin_energyout ! original outgoing energy bin - integer :: i_filter ! index for matching filter bin combination - real(8) :: score ! actual score - real(8) :: E_out ! energy of fission bank site - - ! Save original outgoing energy bin - i = t % find_filter(FILTER_ENERGYOUT) - bin_energyout = matching_bins(i) - - ! Get the index of delayed group filter - j = t % find_filter(FILTER_DELAYEDGROUP) - - ! Get number of energies on filter - n = size(t % filters(i) % real_bins) - - ! Since the creation of fission sites is weighted such that it is - ! expected to create n_particles sites, we need to multiply the - ! score by keff to get the true delayed-nu-fission rate. - - ! loop over number of particles banked - do k = 1, p % n_bank - - ! get the delayed group - g = fission_bank(n_bank - p % n_bank + k) % delayed_group - - ! check if the particle was born delayed - if (g /= 0) then - - ! determine score based on bank site weight and keff - score = keff * fission_bank(n_bank - p % n_bank + k) % wgt - - ! determine outgoing energy from fission bank - E_out = fission_bank(n_bank - p % n_bank + k) % E - - ! check if outgoing energy is within specified range on filter - if (E_out < t % filters(i) % real_bins(1) .or. & - E_out > t % filters(i) % real_bins(n)) cycle - - ! change outgoing energy bin - matching_bins(i) = binary_search(t % filters(i) % real_bins, n, E_out) - - ! if the delayed group filter is present, tally to corresponding - ! delayed group bin if it exists - if (j > 0) then - - ! loop over delayed group bins until the corresponding bin is found - do d_bin = 1, t % filters(j) % n_bins - d = t % filters(j) % int_bins(d_bin) - - ! check whether the delayed group of the particle is equal to the - ! delayed group of this bin - if (d == g) then - call score_fission_delayed_dg(t, d_bin, score, i_score) - end if - end do - - ! if the delayed group filter is not present, add score to tally - else - - ! determine scoring index - i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - - ! Add score to tally -!$omp atomic - t % results(i_score, i_filter) % value = & - t % results(i_score, i_filter) % value + score - end if - end if - end do - - ! reset outgoing energy bin - matching_bins(i) = bin_energyout - - end subroutine score_fission_delayed_eout - !=============================================================================== ! SCORE_FISSION_DELAYED_DG helper function used to increment the tally when a ! delayed group filter is present. From 2815f1c97794939cd040c8b8e2fb56d18270caf0 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 14:03:39 -0400 Subject: [PATCH 19/82] forced numpy to print output in scientific notation --- openmc/mgxs/mgxs.py | 1 + tests/test_mgxs_library_hdf5/results_true.dat | 312 +++++++++--------- 2 files changed, 157 insertions(+), 156 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d6cd8c2550..de5ae05dc9 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -9,6 +9,7 @@ import copy import abc import numpy as np +np.set_printoptions(formatter={'float': lambda x: format(x, '8.6E')}) import openmc import openmc.checkvalue as cv diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index d757944925..0f83221597 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[ 0.41482549 0.66016992] -[ 0.02279291 0.04751893] +[4.148255E-01 6.601699E-01] +[2.279291E-02 4.751893E-02] domain=10000 type=transport -[ 0.35685964 0.64764766] -[ 0.0254936 0.02370374] +[3.568596E-01 6.476477E-01] +[2.549360E-02 2.370374E-02] domain=10000 type=nu-transport -[ 0.35685964 0.64764766] -[ 0.0254936 0.02370374] +[3.568596E-01 6.476477E-01] +[2.549360E-02 2.370374E-02] domain=10000 type=absorption -[ 0.02740784 0.26451074] -[ 0.0026925 0.02336708] +[2.740784E-02 2.645107E-01] +[2.692497E-03 2.336708E-02] domain=10000 type=capture -[ 0.01984455 0.07171935] -[ 0.0026433 0.02520786] +[1.984455E-02 7.171935E-02] +[2.643304E-03 2.520786E-02] domain=10000 type=fission -[ 0.00756329 0.19279139] -[ 0.00050848 0.01710592] +[7.563295E-03 1.927914E-01] +[5.084837E-04 1.710592E-02] domain=10000 type=nu-fission -[ 0.01943174 0.46977478] -[ 0.00132298 0.041682 ] +[1.943174E-02 4.697748E-01] +[1.322976E-03 4.168200E-02] domain=10000 type=kappa-fission -[ 1.47456982 37.28689641] -[ 0.09923532 3.30837772] +[1.474570E+00 3.728690E+01] +[9.923532E-02 3.308378E+00] domain=10000 type=scatter -[ 0.38741765 0.39565918] -[ 0.02062573 0.02512506] +[3.874176E-01 3.956592E-01] +[2.062573E-02 2.512506E-02] domain=10000 type=nu-scatter -[ 0.38518839 0.4123894 ] -[ 0.02694562 0.01542528] +[3.851884E-01 4.123894E-01] +[2.694562E-02 1.542528E-02] domain=10000 type=scatter matrix -[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] - [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] +[[[3.841995E-01 5.187028E-02 2.006885E-02 9.477716E-03] + [9.889304E-04 -2.072346E-04 -1.033662E-04 2.342906E-04]] - [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] - [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] -[[[ 0.02700101 0.00698255 0.0028465 0.00223352] - [ 0.00048242 0.00014901 0.00018432 0.00012817]] + [[9.246399E-04 -7.677050E-04 4.937889E-04 -1.714972E-04] + [4.114648E-01 1.648173E-02 6.371490E-03 -1.049912E-02]]] +[[[2.700101E-02 6.982549E-03 2.846495E-03 2.233520E-03] + [4.824194E-04 1.490108E-04 1.843163E-04 1.281731E-04]] - [[ 0.00092488 0.00076791 0.00049392 0.00017154] - [ 0.01524494 0.00450173 0.01055075 0.01043819]]] + [[9.248835E-04 7.679072E-04 4.939189E-04 1.715424E-04] + [1.524494E-02 4.501728E-03 1.055075E-02 1.043819E-02]]] domain=10000 type=nu-scatter matrix -[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] - [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] +[[[3.841995E-01 5.187028E-02 2.006885E-02 9.477716E-03] + [9.889304E-04 -2.072346E-04 -1.033662E-04 2.342906E-04]] - [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] - [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] -[[[ 0.02700101 0.00698255 0.0028465 0.00223352] - [ 0.00048242 0.00014901 0.00018432 0.00012817]] + [[9.246399E-04 -7.677050E-04 4.937889E-04 -1.714972E-04] + [4.114648E-01 1.648173E-02 6.371490E-03 -1.049912E-02]]] +[[[2.700101E-02 6.982549E-03 2.846495E-03 2.233520E-03] + [4.824194E-04 1.490108E-04 1.843163E-04 1.281731E-04]] - [[ 0.00092488 0.00076791 0.00049392 0.00017154] - [ 0.01524494 0.00450173 0.01055075 0.01043819]]] + [[9.248835E-04 7.679072E-04 4.939189E-04 1.715424E-04] + [1.524494E-02 4.501728E-03 1.055075E-02 1.043819E-02]]] domain=10000 type=multiplicity matrix -[[ 1. 1.] - [ 1. 1.]] -[[ 0.07851646 0.68718427] - [ 1.41421356 0.04113035]] +[[1.000000E+00 1.000000E+00] + [1.000000E+00 1.000000E+00]] +[[7.851646E-02 6.871843E-01] + [1.414214E+00 4.113035E-02]] domain=10000 type=nu-fission matrix -[[ 0.02014243 0. ] - [ 0.45436647 0. ]] -[[ 0.00314909 0. ] - [ 0.02742551 0. ]] +[[2.014243E-02 0.000000E+00] + [4.543665E-01 0.000000E+00]] +[[3.149092E-03 0.000000E+00] + [2.742551E-02 0.000000E+00]] domain=10000 type=chi -[ 1. 0.] -[ 0.04607052 0. ] +[1.000000E+00 0.000000E+00] +[4.607052E-02 0.000000E+00] domain=10000 type=chi-prompt -[ 0.9914425 0. ] -[ 0.05093465 0. ] +[9.914425E-01 0.000000E+00] +[5.093465E-02 0.000000E+00] domain=10000 type=velocity -[ 17515210.62039676 350171.99519401] -[ 1438175.27389879 29945.93169673] +[1.751521E+07 3.501720E+05] +[1.438175E+06 2.994593E+04] domain=10000 type=prompt-nu-fission -[ 0.01923922 0.46671903] -[ 0.00130951 0.04141087] +[1.923922E-02 4.667190E-01] +[1.309506E-03 4.141087E-02] domain=10001 type=total -[ 0.31373767 0.3008214 ] -[ 0.0155819 0.02805245] +[3.137377E-01 3.008214E-01] +[1.558190E-02 2.805245E-02] domain=10001 type=transport -[ 0.27322787 0.31237484] -[ 0.03311537 0.04960583] +[2.732279E-01 3.123748E-01] +[3.311537E-02 4.960583E-02] domain=10001 type=nu-transport -[ 0.27322787 0.31237484] -[ 0.03311537 0.04960583] +[2.732279E-01 3.123748E-01] +[3.311537E-02 4.960583E-02] domain=10001 type=absorption -[ 0.00157499 0.00540038] -[ 0.00032255 0.00061814] +[1.574991E-03 5.400379E-03] +[3.225479E-04 6.181383E-04] domain=10001 type=capture -[ 0.00157499 0.00540038] -[ 0.00032255 0.00061814] +[1.574991E-03 5.400379E-03] +[3.225479E-04 6.181383E-04] domain=10001 type=fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10001 type=nu-fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10001 type=kappa-fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10001 type=scatter -[ 0.31216268 0.29542102] -[ 0.01532192 0.02744549] +[3.121627E-01 2.954210E-01] +[1.532192E-02 2.744549E-02] domain=10001 type=nu-scatter -[ 0.31012074 0.29626427] -[ 0.03378811 0.04379223] +[3.101207E-01 2.962643E-01] +[3.378811E-02 4.379223E-02] domain=10001 type=scatter matrix -[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] - [ 0. 0. 0. 0. ]] +[[[3.101207E-01 3.822959E-02 2.074494E-02 7.964297E-03] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0. ] - [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] -[[[ 0.03378811 0.008484 0.00469561 0.00373162] - [ 0. 0. 0. 0. ]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [2.962643E-01 -1.121364E-02 8.836566E-03 -3.270067E-03]]] +[[[3.378811E-02 8.483997E-03 4.695611E-03 3.731623E-03] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0. ] - [ 0.04379223 0.01618037 0.01150396 0.00732885]]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [4.379223E-02 1.618037E-02 1.150396E-02 7.328846E-03]]] domain=10001 type=nu-scatter matrix -[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] - [ 0. 0. 0. 0. ]] +[[[3.101207E-01 3.822959E-02 2.074494E-02 7.964297E-03] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0. ] - [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] -[[[ 0.03378811 0.008484 0.00469561 0.00373162] - [ 0. 0. 0. 0. ]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [2.962643E-01 -1.121364E-02 8.836566E-03 -3.270067E-03]]] +[[[3.378811E-02 8.483997E-03 4.695611E-03 3.731623E-03] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0. ] - [ 0.04379223 0.01618037 0.01150396 0.00732885]]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [4.379223E-02 1.618037E-02 1.150396E-02 7.328846E-03]]] domain=10001 type=multiplicity matrix -[[ 1. 0.] - [ 0. 1.]] -[[ 0.1087787 0. ] - [ 0. 0.14242717]] +[[1.000000E+00 0.000000E+00] + [0.000000E+00 1.000000E+00]] +[[1.087787E-01 0.000000E+00] + [0.000000E+00 1.424272E-01]] domain=10001 type=nu-fission matrix -[[ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.]] +[[0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00]] +[[0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00]] domain=10001 type=chi -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10001 type=chi-prompt -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10001 type=velocity -[ 16677839.49736621 334953.36760125] -[ 1266444.30951813 38336.78162568] +[1.667784E+07 3.349534E+05] +[1.266444E+06 3.833678E+04] domain=10001 type=prompt-nu-fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10002 type=total -[ 0.66457226 2.05238401] -[ 0.03121475 0.22434291] +[6.645723E-01 2.052384E+00] +[3.121475E-02 2.243429E-01] domain=10002 type=transport -[ 0.29056526 1.51643801] -[ 0.02385185 0.23519727] +[2.905653E-01 1.516438E+00] +[2.385185E-02 2.351973E-01] domain=10002 type=nu-transport -[ 0.29056526 1.51643801] -[ 0.02385185 0.23519727] +[2.905653E-01 1.516438E+00] +[2.385185E-02 2.351973E-01] domain=10002 type=absorption -[ 0.0006904 0.03168726] -[ 4.41475687e-05 3.74655858e-03] +[6.903995E-04 3.168726E-02] +[4.414757E-05 3.746559E-03] domain=10002 type=capture -[ 0.0006904 0.03168726] -[ 4.41475687e-05 3.74655858e-03] +[6.903995E-04 3.168726E-02] +[4.414757E-05 3.746559E-03] domain=10002 type=fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10002 type=nu-fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10002 type=kappa-fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10002 type=scatter -[ 0.66388186 2.02069676] -[ 0.03117268 0.22060445] +[6.638819E-01 2.020697E+00] +[3.117268E-02 2.206045E-01] domain=10002 type=nu-scatter -[ 0.6712692 2.03538833] -[ 0.02618637 0.25806033] +[6.712692E-01 2.035388E+00] +[2.618637E-02 2.580603E-01] domain=10002 type=scatter matrix -[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] - [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] +[[[6.399015E-01 3.811674E-01 1.523919E-01 9.148022E-03] + [3.136772E-02 8.757723E-03 -2.567901E-03 -3.784803E-03]] - [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] - [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] -[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] - [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] + [[4.433431E-04 3.999604E-04 3.195627E-04 2.138470E-04] + [2.034945E+00 5.099405E-01 1.111746E-01 2.498844E-02]]] +[[[2.470912E-02 1.624326E-02 8.156278E-03 3.888562E-03] + [1.728113E-03 9.256705E-04 1.013985E-03 8.170756E-04]] - [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] - [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] + [[4.448504E-04 4.013202E-04 3.206491E-04 2.145740E-04] + [2.577999E-01 5.123591E-02 1.301982E-02 8.312353E-03]]] domain=10002 type=nu-scatter matrix -[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] - [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] +[[[6.399015E-01 3.811674E-01 1.523919E-01 9.148022E-03] + [3.136772E-02 8.757723E-03 -2.567901E-03 -3.784803E-03]] - [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] - [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] -[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] - [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] + [[4.433431E-04 3.999604E-04 3.195627E-04 2.138470E-04] + [2.034945E+00 5.099405E-01 1.111746E-01 2.498844E-02]]] +[[[2.470912E-02 1.624326E-02 8.156278E-03 3.888562E-03] + [1.728113E-03 9.256705E-04 1.013985E-03 8.170756E-04]] - [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] - [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] + [[4.448504E-04 4.013202E-04 3.206491E-04 2.145740E-04] + [2.577999E-01 5.123591E-02 1.301982E-02 8.312353E-03]]] domain=10002 type=multiplicity matrix -[[ 1. 1.] - [ 1. 1.]] -[[ 0.03860919 0.06766735] - [ 1.41421356 0.13592921]] +[[1.000000E+00 1.000000E+00] + [1.000000E+00 1.000000E+00]] +[[3.860919E-02 6.766735E-02] + [1.414214E+00 1.359292E-01]] domain=10002 type=nu-fission matrix -[[ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.]] +[[0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00]] +[[0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00]] domain=10002 type=chi -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10002 type=chi-prompt -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] domain=10002 type=velocity -[ 16605562.87322708 328412.03865003] -[ 1042435.52374238 38828.43572983] +[1.660556E+07 3.284120E+05] +[1.042436E+06 3.882844E+04] domain=10002 type=prompt-nu-fission -[ 0. 0.] -[ 0. 0.] +[0.000000E+00 0.000000E+00] +[0.000000E+00 0.000000E+00] From 3b7026dcabbf9b3da3888731a9b8f9690dbd83d7 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 14:30:45 -0400 Subject: [PATCH 20/82] updated failing tests due to change in the way mgxs values are printed --- openmc/mgxs/mgxs.py | 4 + tests/test_multipole/results_true.dat | 4 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++++++++--------- 4 files changed, 111 insertions(+), 107 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index de5ae05dc9..ee5848c7c7 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -9,6 +9,10 @@ import copy import abc import numpy as np + +# Require numpy to print output in scientific notation to 6 decimal places. +# This is needed to avoid round off error when large numbers are printed, +# which can cause tests to fail for different build configurations. np.set_printoptions(formatter={'float': lambda x: format(x, '8.6E')}) import openmc diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index d138fa16a9..84666915fc 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -1,12 +1,12 @@ k-combined: -1.457760E+00 1.119659E-02 +1.434998E+00 9.402333E-03 Cell ID = 11 Name = Fill = Material 2 Region = -10000 Rotation = None - Temperature = [ 500. 0. 700. 800.] + Temperature = [5.000000E+02 0.000000E+00 7.000000E+02 8.000000E+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 6c2d7a5193..0f40c54d10 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -840d2648f9ba782926c71baa84e5a2ad31331e156740a3d1e9d86af8f1f0d301ef8c0f69474975d365dbcf8d229a68c62d3e60286d18045e5254373f4e1010bf \ No newline at end of file +d7878520296fade8e96498f53209bfc9185b4e518aba5ed598008b1078e4590a7474dfbc60f7efac360350765e37d99b9ea0f90bc47021872ff9888f2315eda9 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index ef2741cc12..0f72dafa3c 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] +[[[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] ..., - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]]][[[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] ..., - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]]][[[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] ..., - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0. 0.] - [ 0. 0. 0. 0.] - [ 0. 0. 0. 0.]]][[[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] ..., - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]]][[[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] ..., - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]] + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]] - [[ 0. 0. 0.] - [ 0. 0. 0.] - [ 0. 0. 0.]]] \ No newline at end of file + [[0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00] + [0.000000E+00 0.000000E+00 0.000000E+00]]] \ No newline at end of file From a0806be6f7ee715ecb86f2b8a5dbf97a89fda95d Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Thu, 7 Jul 2016 19:21:41 +0000 Subject: [PATCH 21/82] updated multipole test results --- tests/test_multipole/results_true.dat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 84666915fc..133140999c 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -1,5 +1,5 @@ k-combined: -1.434998E+00 9.402333E-03 +1.457760E+00 1.119659E-02 Cell ID = 11 Name = From 9757d0adf4198665680e431a4653f6cc3ec7ba9f Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Thu, 7 Jul 2016 19:22:56 +0000 Subject: [PATCH 22/82] updated tally aggregation test results --- tests/test_tally_aggregation/results_true.dat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 0f40c54d10..365f1d775e 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -d7878520296fade8e96498f53209bfc9185b4e518aba5ed598008b1078e4590a7474dfbc60f7efac360350765e37d99b9ea0f90bc47021872ff9888f2315eda9 \ No newline at end of file +d5c21b44afd44a6e2be483090db0e2525d7d7cdbee1c02bee43621f1889193cc4712d74e28b3961a9ea9be093b33b56633046749a70f40c68982d6ca653d4cc1 \ No newline at end of file From a73e7529ab1e01e81a6ac07ee418667fd47ee3d4 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 16:17:50 -0400 Subject: [PATCH 23/82] modified tally slice merge test to get slice of a mesh --- tests/test_tally_slice_merge/inputs_true.dat | 2 +- tests/test_tally_slice_merge/results_true.dat | 86 +++++++++++-------- .../test_tally_slice_merge.py | 45 ++++++++-- 3 files changed, 93 insertions(+), 40 deletions(-) diff --git a/tests/test_tally_slice_merge/inputs_true.dat b/tests/test_tally_slice_merge/inputs_true.dat index be2ec63dc5..771a1de8e8 100644 --- a/tests/test_tally_slice_merge/inputs_true.dat +++ b/tests/test_tally_slice_merge/inputs_true.dat @@ -1 +1 @@ -bb4ae3b75445846bd5db05a06cc20e7589990154ccef8302f276cd8356630d585c513ebb6bfa99f9fc93dd2d30c42bfbb67dd3454134f4c9fcb3bac128d1f1c5 \ No newline at end of file +8e54df241233bf8d5424afa0a22cc23c614a3541e5d7cc64036b5284edd28fe2353905ffdfebb446a4dd0202dda6a7da6d0110af00b4ca79117ec1dbe0584ba7 \ No newline at end of file diff --git a/tests/test_tally_slice_merge/results_true.dat b/tests/test_tally_slice_merge/results_true.dat index ed04152d48..f986a91def 100644 --- a/tests/test_tally_slice_merge/results_true.dat +++ b/tests/test_tally_slice_merge/results_true.dat @@ -1,36 +1,37 @@ - energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 21 U-235 fission 1.08e-01 7.94e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 21 U-235 nu-fission 2.64e-01 1.94e-02 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 21 U-238 fission 1.51e-07 1.00e-08 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 21 U-238 nu-fission 3.76e-07 2.50e-08 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 21 U-235 fission 3.12e-02 2.56e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 21 U-235 nu-fission 7.65e-02 6.24e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 21 U-238 fission 2.00e-02 1.30e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 21 U-238 nu-fission 5.56e-02 3.78e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 27 U-235 fission 4.43e-02 7.21e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 27 U-235 nu-fission 1.08e-01 1.76e-02 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 27 U-238 fission 6.14e-08 9.64e-09 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 27 U-238 nu-fission 1.53e-07 2.40e-08 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 27 U-235 fission 1.39e-02 1.06e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 27 U-235 nu-fission 3.40e-02 2.61e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 27 U-238 fission 9.72e-03 1.21e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 6.25e-07 2.00e+01 27 U-238 nu-fission 2.71e-02 3.80e-03 energy low [MeV] energy high [MeV] cell nuclide score mean std. dev. -0 0.00e+00 6.25e-07 21 U-235 fission 1.08e-01 7.94e-03 -1 0.00e+00 6.25e-07 21 U-235 nu-fission 2.64e-01 1.94e-02 -2 0.00e+00 6.25e-07 21 U-238 fission 1.51e-07 1.00e-08 -3 0.00e+00 6.25e-07 21 U-238 nu-fission 3.76e-07 2.50e-08 -4 0.00e+00 6.25e-07 27 U-235 fission 4.43e-02 7.21e-03 -5 0.00e+00 6.25e-07 27 U-235 nu-fission 1.08e-01 1.76e-02 -6 0.00e+00 6.25e-07 27 U-238 fission 6.14e-08 9.64e-09 -7 0.00e+00 6.25e-07 27 U-238 nu-fission 1.53e-07 2.40e-08 -8 6.25e-07 2.00e+01 21 U-235 fission 3.12e-02 2.56e-03 -9 6.25e-07 2.00e+01 21 U-235 nu-fission 7.65e-02 6.24e-03 -10 6.25e-07 2.00e+01 21 U-238 fission 2.00e-02 1.30e-03 -11 6.25e-07 2.00e+01 21 U-238 nu-fission 5.56e-02 3.78e-03 -12 6.25e-07 2.00e+01 27 U-235 fission 1.39e-02 1.06e-03 -13 6.25e-07 2.00e+01 27 U-235 nu-fission 3.40e-02 2.61e-03 -14 6.25e-07 2.00e+01 27 U-238 fission 9.72e-03 1.21e-03 -15 6.25e-07 2.00e+01 27 U-238 nu-fission 2.71e-02 3.80e-03 sum(distribcell) energy low [MeV] energy high [MeV] nuclide score mean std. dev. + cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U-235 fission 1.08e-01 7.94e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U-235 nu-fission 2.64e-01 1.94e-02 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U-238 fission 1.51e-07 1.00e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U-238 nu-fission 3.76e-07 2.50e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U-235 fission 3.12e-02 2.56e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U-235 nu-fission 7.65e-02 6.24e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U-238 fission 2.00e-02 1.30e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U-238 nu-fission 5.56e-02 3.78e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U-235 fission 4.43e-02 7.21e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U-235 nu-fission 1.08e-01 1.76e-02 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U-238 fission 6.14e-08 9.64e-09 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U-238 nu-fission 1.53e-07 2.40e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U-235 fission 1.39e-02 1.06e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U-235 nu-fission 3.40e-02 2.61e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U-238 fission 9.72e-03 1.21e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U-238 nu-fission 2.71e-02 3.80e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U-235 fission 1.08e-01 7.94e-03 +1 21 0.00e+00 6.25e-07 U-235 nu-fission 2.64e-01 1.94e-02 +2 21 0.00e+00 6.25e-07 U-238 fission 1.51e-07 1.00e-08 +3 21 0.00e+00 6.25e-07 U-238 nu-fission 3.76e-07 2.50e-08 +4 21 6.25e-07 2.00e+01 U-235 fission 3.12e-02 2.56e-03 +5 21 6.25e-07 2.00e+01 U-235 nu-fission 7.65e-02 6.24e-03 +6 21 6.25e-07 2.00e+01 U-238 fission 2.00e-02 1.30e-03 +7 21 6.25e-07 2.00e+01 U-238 nu-fission 5.56e-02 3.78e-03 +8 27 0.00e+00 6.25e-07 U-235 fission 4.43e-02 7.21e-03 +9 27 0.00e+00 6.25e-07 U-235 nu-fission 1.08e-01 1.76e-02 +10 27 0.00e+00 6.25e-07 U-238 fission 6.14e-08 9.64e-09 +11 27 0.00e+00 6.25e-07 U-238 nu-fission 1.53e-07 2.40e-08 +12 27 6.25e-07 2.00e+01 U-235 fission 1.39e-02 1.06e-03 +13 27 6.25e-07 2.00e+01 U-235 nu-fission 3.40e-02 2.61e-03 +14 27 6.25e-07 2.00e+01 U-238 fission 9.72e-03 1.21e-03 +15 27 6.25e-07 2.00e+01 U-238 nu-fission 2.71e-02 3.80e-03 + sum(distribcell) energy low [MeV] energy high [MeV] nuclide score mean std. dev. 0 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U-235 fission 0.00e+00 0.00e+00 1 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U-235 nu-fission 0.00e+00 0.00e+00 2 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U-238 fission 0.00e+00 0.00e+00 @@ -46,4 +47,21 @@ 12 (500, 5000, 50000) 6.25e-07 2.00e+01 U-235 fission 0.00e+00 0.00e+00 13 (500, 5000, 50000) 6.25e-07 2.00e+01 U-235 nu-fission 0.00e+00 0.00e+00 14 (500, 5000, 50000) 6.25e-07 2.00e+01 U-238 fission 0.00e+00 0.00e+00 -15 (500, 5000, 50000) 6.25e-07 2.00e+01 U-238 nu-fission 0.00e+00 0.00e+00 \ No newline at end of file +15 (500, 5000, 50000) 6.25e-07 2.00e+01 U-238 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 U-235 fission 9.18e-03 1.62e-03 +1 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U-235 nu-fission 2.24e-02 3.94e-03 +2 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U-238 fission 1.31e-08 2.08e-09 +3 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U-238 nu-fission 3.26e-08 5.19e-09 +4 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-235 fission 8.40e-04 2.13e-04 +5 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-235 nu-fission 2.06e-03 5.17e-04 +6 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-238 fission 7.05e-04 3.42e-04 +7 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-238 nu-fission 1.99e-03 1.01e-03 +8 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-235 fission 8.77e-03 1.30e-03 +9 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-235 nu-fission 2.14e-02 3.18e-03 +10 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-238 fission 1.24e-08 1.74e-09 +11 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-238 nu-fission 3.08e-08 4.33e-09 +12 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-235 fission 2.30e-03 6.20e-04 +13 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-235 nu-fission 5.63e-03 1.52e-03 +14 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-238 fission 1.45e-03 7.19e-04 +15 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-238 nu-fission 3.97e-03 1.98e-03 diff --git a/tests/test_tally_slice_merge/test_tally_slice_merge.py b/tests/test_tally_slice_merge/test_tally_slice_merge.py index 4dbb993d59..0b05c088df 100644 --- a/tests/test_tally_slice_merge/test_tally_slice_merge.py +++ b/tests/test_tally_slice_merge/test_tally_slice_merge.py @@ -33,13 +33,21 @@ class TallySliceMergeTestHarness(PyAPITestHarness): cell_27 = openmc.Filter(type='cell', bins=[27]) distribcell_filter = openmc.Filter(type='distribcell', bins=[21]) + mesh = openmc.Mesh(name='mesh') + mesh.type = 'regular' + mesh.dimension = [2, 2] + mesh.lower_left = [-50., -50.] + mesh.upper_right = [+50., +50.] + mesh_filter = openmc.Filter(type='mesh', bins=[mesh.id]) + mesh_filter.mesh = mesh + self.cell_filters = [cell_21, cell_27] self.energy_filters = [low_energy, high_energy] # Initialize cell tallies with filters, nuclides and scores tallies = [] - for cell_filter in self.energy_filters: - for energy_filter in self.cell_filters: + for energy_filter in self.energy_filters: + for cell_filter in self.cell_filters: for nuclide in self.nuclides: for score in self.scores: tally = openmc.Tally() @@ -69,8 +77,18 @@ class TallySliceMergeTestHarness(PyAPITestHarness): for nuclide in self.nuclides: distribcell_tally.add_nuclide(nuclide) + mesh_tally = openmc.Tally(name='mesh tally') + mesh_tally.estimator = 'tracklength' + mesh_tally.add_filter(mesh_filter) + mesh_tally.add_filter(merged_energies) + for score in self.scores: + mesh_tally.add_score(score) + for nuclide in self.nuclides: + mesh_tally.add_nuclide(nuclide) + # Add tallies to a Tallies object - tallies_file = openmc.Tallies((tallies[0], distribcell_tally)) + tallies_file = openmc.Tallies((tallies[0], distribcell_tally, + mesh_tally)) # Export tallies to file self._input_set.tallies = tallies_file @@ -121,7 +139,7 @@ class TallySliceMergeTestHarness(PyAPITestHarness): # Append merged Tally Pandas DataFrame to output string df = tallies[0].get_pandas_dataframe() - outstr += df.to_string() + outstr += df.to_string() + '\n' # Extract the distribcell tally distribcell_tally = sp.get_tally(name='distribcell tally') @@ -138,7 +156,24 @@ class TallySliceMergeTestHarness(PyAPITestHarness): # Append merged Tally Pandas DataFrame to output string df = merge_tally.get_pandas_dataframe() - outstr += df.to_string() + outstr += df.to_string() + '\n' + + # Extract the mesh tally + mesh_tally = sp.get_tally(name='mesh tally') + + # Sum up a few subdomains from the mesh tally + sum1 = mesh_tally.summation(filter_type='mesh', + filter_bins=[(1,1,1), (1,2,1)]) + # Sum up a few subdomains from the mesh tally + sum2 = mesh_tally.summation(filter_type='mesh', + filter_bins=[(2,1,1), (2,2,1)]) + + # Merge the distribcell tally slices + merge_tally = sum1.merge(sum2) + + # Append merged Tally Pandas DataFrame to output string + df = merge_tally.get_pandas_dataframe() + outstr += df.to_string() + '\n' # Hash the results if necessary if hash_output: From 9d55caf5c0caf3d157ffd8e6070c28a87e877a96 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 16:19:30 -0400 Subject: [PATCH 24/82] fixed typo in tally slice merge test comment --- tests/test_tally_slice_merge/test_tally_slice_merge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_tally_slice_merge/test_tally_slice_merge.py b/tests/test_tally_slice_merge/test_tally_slice_merge.py index 0b05c088df..1472cc75a2 100644 --- a/tests/test_tally_slice_merge/test_tally_slice_merge.py +++ b/tests/test_tally_slice_merge/test_tally_slice_merge.py @@ -168,7 +168,7 @@ class TallySliceMergeTestHarness(PyAPITestHarness): sum2 = mesh_tally.summation(filter_type='mesh', filter_bins=[(2,1,1), (2,2,1)]) - # Merge the distribcell tally slices + # Merge the mesh tally slices merge_tally = sum1.merge(sum2) # Append merged Tally Pandas DataFrame to output string From b56c528bdb0ce3efaefe66af4da77cedfef69d8f Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 7 Jul 2016 16:46:24 -0400 Subject: [PATCH 25/82] used condensed methods to generate mesh domain bins --- .../pythonapi/examples/mgxs-part-i.ipynb | 900 +++++++++++++++--- openmc/mgxs/mgxs.py | 87 +- 2 files changed, 765 insertions(+), 222 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index ff242885e6..7c5838b2d9 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -91,7 +91,7 @@ "\n", "$$\\sigma_{n,x,k,g} = \\frac{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\sigma_{n,x}(\\mathbf{r},E')\\Phi(\\mathbf{r},E')}{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\Phi(\\mathbf{r},E')}$$\n", "\n", - "This scalar flux-weighted average microscopic cross section is computed by `openmc.mgxs` for most multi-group cross sections, including total, absorption, and fission reaction types. These double integrals are stochastically computed with OpenMC's tally system - in particular, [filters](https://mit-crpg.github.io/openmc/pythonapi/filter.html) on the energy range and spatial zone (material, cell or universe) define the bounds of integration for both numerator and denominator." + "This scalar flux-weighted average microscopic cross section is computed by `openmc.mgxs` for most multi-group cross sections, including total, absorption, and fission reaction types. These double integrals are stochastically computed with OpenMC's tally system - in particular, [filters](https://mit-crpg.github.io/openmc/pythonapi/filter.html) on the energy range and spatial zone (material, cell, universe, or mesh) define the bounds of integration for both numerator and denominator." ] }, { @@ -326,7 +326,7 @@ "# OpenMC simulation parameters\n", "batches = 50\n", "inactive = 10\n", - "particles = 1000\n", + "particles = 2500\n", "\n", "# Instantiate a Settings object\n", "settings_file = openmc.Settings()\n", @@ -433,7 +433,7 @@ " \tName =\t\n", " \tFilters =\t\n", " \t\tmesh\t[10000]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \t\tenergy\t[0.000000E+00 6.250000E-07 2.000000E+01]\n", " \tNuclides =\ttotal \n", " \tScores =\t['flux']\n", " \tEstimator =\ttracklength), ('absorption', Tally\n", @@ -441,7 +441,7 @@ " \tName =\t\n", " \tFilters =\t\n", " \t\tmesh\t[10000]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \t\tenergy\t[0.000000E+00 6.250000E-07 2.000000E+01]\n", " \tNuclides =\ttotal \n", " \tScores =\t['absorption']\n", " \tEstimator =\ttracklength)])" @@ -521,9 +521,9 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 736d7aa5ba3bcd1a8a1614ce4b6769babcb1d8ca\n", - " Date/Time: 2016-07-05 16:23:08\n", - " MPI Processes: 4\n", + " Git SHA1: 6a66fb9af7372435dc7da987c8fc3d6acff6549a\n", + " Date/Time: 2016-07-07 16:43:21\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -549,56 +549,56 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.07993 \n", - " 2/1 1.23691 \n", - " 3/1 1.17407 \n", - " 4/1 1.08258 \n", - " 5/1 1.21012 \n", - " 6/1 1.23825 \n", - " 7/1 1.18016 \n", - " 8/1 1.20989 \n", - " 9/1 1.15475 \n", - " 10/1 1.13462 \n", - " 11/1 1.12749 \n", - " 12/1 1.09502 1.11125 +/- 0.01623\n", - " 13/1 1.24722 1.15657 +/- 0.04628\n", - " 14/1 1.14700 1.15418 +/- 0.03281\n", - " 15/1 1.13889 1.15112 +/- 0.02560\n", - " 16/1 1.19008 1.15762 +/- 0.02189\n", - " 17/1 1.11320 1.15127 +/- 0.01956\n", - " 18/1 1.12093 1.14748 +/- 0.01736\n", - " 19/1 1.13809 1.14643 +/- 0.01534\n", - " 20/1 1.09886 1.14168 +/- 0.01452\n", - " 21/1 1.15457 1.14285 +/- 0.01319\n", - " 22/1 1.19951 1.14757 +/- 0.01293\n", - " 23/1 1.13296 1.14645 +/- 0.01195\n", - " 24/1 1.15322 1.14693 +/- 0.01107\n", - " 25/1 1.26213 1.15461 +/- 0.01286\n", - " 26/1 1.11758 1.15230 +/- 0.01225\n", - " 27/1 1.19061 1.15455 +/- 0.01172\n", - " 28/1 1.17562 1.15572 +/- 0.01111\n", - " 29/1 1.15989 1.15594 +/- 0.01051\n", - " 30/1 1.19989 1.15814 +/- 0.01021\n", - " 31/1 1.14498 1.15751 +/- 0.00974\n", - " 32/1 1.11494 1.15558 +/- 0.00948\n", - " 33/1 1.13251 1.15457 +/- 0.00912\n", - " 34/1 1.17943 1.15561 +/- 0.00879\n", - " 35/1 1.21182 1.15786 +/- 0.00872\n", - " 36/1 1.16118 1.15798 +/- 0.00838\n", - " 37/1 1.13679 1.15720 +/- 0.00811\n", - " 38/1 1.15684 1.15719 +/- 0.00781\n", - " 39/1 1.12450 1.15606 +/- 0.00762\n", - " 40/1 1.30157 1.16091 +/- 0.00882\n", - " 41/1 1.04558 1.15719 +/- 0.00930\n", - " 42/1 1.16538 1.15745 +/- 0.00901\n", - " 43/1 1.17710 1.15804 +/- 0.00875\n", - " 44/1 1.13273 1.15730 +/- 0.00853\n", - " 45/1 1.19156 1.15828 +/- 0.00834\n", - " 46/1 1.19404 1.15927 +/- 0.00816\n", - " 47/1 1.19058 1.16012 +/- 0.00798\n", - " 48/1 1.12943 1.15931 +/- 0.00781\n", - " 49/1 1.22428 1.16097 +/- 0.00779\n", - " 50/1 1.07496 1.15882 +/- 0.00789\n", + " 1/1 1.11184 \n", + " 2/1 1.15820 \n", + " 3/1 1.18468 \n", + " 4/1 1.17492 \n", + " 5/1 1.19645 \n", + " 6/1 1.18436 \n", + " 7/1 1.14070 \n", + " 8/1 1.15150 \n", + " 9/1 1.19202 \n", + " 10/1 1.17677 \n", + " 11/1 1.20272 \n", + " 12/1 1.21366 1.20819 +/- 0.00547\n", + " 13/1 1.15906 1.19181 +/- 0.01668\n", + " 14/1 1.14687 1.18058 +/- 0.01629\n", + " 15/1 1.14570 1.17360 +/- 0.01442\n", + " 16/1 1.13480 1.16713 +/- 0.01343\n", + " 17/1 1.17680 1.16852 +/- 0.01144\n", + " 18/1 1.16866 1.16853 +/- 0.00990\n", + " 19/1 1.19253 1.17120 +/- 0.00913\n", + " 20/1 1.18124 1.17220 +/- 0.00823\n", + " 21/1 1.19206 1.17401 +/- 0.00766\n", + " 22/1 1.17681 1.17424 +/- 0.00700\n", + " 23/1 1.17634 1.17440 +/- 0.00644\n", + " 24/1 1.13659 1.17170 +/- 0.00654\n", + " 25/1 1.17144 1.17169 +/- 0.00609\n", + " 26/1 1.20649 1.17386 +/- 0.00610\n", + " 27/1 1.11238 1.17024 +/- 0.00678\n", + " 28/1 1.18911 1.17129 +/- 0.00647\n", + " 29/1 1.14681 1.17000 +/- 0.00626\n", + " 30/1 1.12152 1.16758 +/- 0.00641\n", + " 31/1 1.12729 1.16566 +/- 0.00639\n", + " 32/1 1.15399 1.16513 +/- 0.00612\n", + " 33/1 1.13547 1.16384 +/- 0.00599\n", + " 34/1 1.17723 1.16440 +/- 0.00576\n", + " 35/1 1.09296 1.16154 +/- 0.00622\n", + " 36/1 1.19621 1.16287 +/- 0.00612\n", + " 37/1 1.12560 1.16149 +/- 0.00605\n", + " 38/1 1.17872 1.16211 +/- 0.00586\n", + " 39/1 1.17721 1.16263 +/- 0.00568\n", + " 40/1 1.13724 1.16178 +/- 0.00555\n", + " 41/1 1.18526 1.16254 +/- 0.00542\n", + " 42/1 1.13779 1.16177 +/- 0.00531\n", + " 43/1 1.15066 1.16143 +/- 0.00516\n", + " 44/1 1.12174 1.16026 +/- 0.00514\n", + " 45/1 1.17479 1.16068 +/- 0.00501\n", + " 46/1 1.14146 1.16014 +/- 0.00489\n", + " 47/1 1.20464 1.16135 +/- 0.00491\n", + " 48/1 1.15119 1.16108 +/- 0.00479\n", + " 49/1 1.17938 1.16155 +/- 0.00468\n", + " 50/1 1.15798 1.16146 +/- 0.00457\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -608,27 +608,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 8.6600E-01 seconds\n", - " Reading cross sections = 2.2400E-01 seconds\n", - " Total time in simulation = 3.0950E+00 seconds\n", - " Time in transport only = 2.9310E+00 seconds\n", - " Time in inactive batches = 2.8000E-01 seconds\n", - " Time in active batches = 2.8150E+00 seconds\n", - " Time synchronizing fission bank = 1.4200E-01 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 7.1900E-01 seconds\n", + " Reading cross sections = 2.0400E-01 seconds\n", + " Total time in simulation = 2.4932E+01 seconds\n", + " Time in transport only = 2.4916E+01 seconds\n", + " Time in inactive batches = 2.1830E+00 seconds\n", + " Time in active batches = 2.2749E+01 seconds\n", + " Time synchronizing fission bank = 4.0000E-03 seconds\n", + " Sampling source sites = 4.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", - " Total time for finalization = 3.0000E-03 seconds\n", - " Total time elapsed = 3.9660E+00 seconds\n", - " Calculation Rate (inactive) = 35714.3 neutrons/second\n", - " Calculation Rate (active) = 14209.6 neutrons/second\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 2.5667E+01 seconds\n", + " Calculation Rate (inactive) = 11452.1 neutrons/second\n", + " Calculation Rate (active) = 4395.80 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.15707 +/- 0.00744\n", - " k-effective (Track-length) = 1.15882 +/- 0.00789\n", - " k-effective (Absorption) = 1.16215 +/- 0.00476\n", - " Combined k-effective = 1.16131 +/- 0.00452\n", + " k-effective (Collision) = 1.15984 +/- 0.00411\n", + " k-effective (Track-length) = 1.16146 +/- 0.00457\n", + " k-effective (Absorption) = 1.16177 +/- 0.00380\n", + " Combined k-effective = 1.16105 +/- 0.00364\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -646,7 +646,7 @@ ], "source": [ "# Run OpenMC\n", - "openmc.run(mpi_procs=4)" + "openmc.run()" ] }, { @@ -740,23 +740,23 @@ "\tDomain Type =\tmesh\n", "\tDomain ID =\t10000\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.83e-01 +/- 4.53e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.16e+00%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 3.06e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 6.94e-01%\n", "\n", "\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 3.23e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.30e+00%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 3.19e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 7.34e-01%\n", "\n", "\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.83e-01 +/- 3.88e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 9.89e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.82e-01 +/- 3.01e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 7.23e-01%\n", "\n", "\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.82e-01 +/- 4.92e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.20e+00%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.80e-01 +/- 3.34e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 5.92e-01%\n", "\n", "\n", "\n" @@ -814,8 +814,8 @@ " 1\n", " 1\n", " total\n", - " 0.669016\n", - " 0.003015\n", + " 0.667691\n", + " 0.002046\n", " \n", " \n", " 0\n", @@ -824,8 +824,8 @@ " 1\n", " 2\n", " total\n", - " 1.293138\n", - " 0.014971\n", + " 1.291709\n", + " 0.008941\n", " \n", " \n", " 3\n", @@ -834,8 +834,8 @@ " 1\n", " 1\n", " total\n", - " 0.667930\n", - " 0.002132\n", + " 0.667474\n", + " 0.002119\n", " \n", " \n", " 2\n", @@ -844,8 +844,8 @@ " 1\n", " 2\n", " total\n", - " 1.292741\n", - " 0.016747\n", + " 1.292677\n", + " 0.009479\n", " \n", " \n", " 5\n", @@ -854,8 +854,8 @@ " 1\n", " 1\n", " total\n", - " 0.669513\n", - " 0.002584\n", + " 0.668766\n", + " 0.002021\n", " \n", " \n", " 4\n", @@ -864,8 +864,8 @@ " 1\n", " 2\n", " total\n", - " 1.294423\n", - " 0.012750\n", + " 1.292504\n", + " 0.009323\n", " \n", " \n", " 7\n", @@ -874,8 +874,8 @@ " 1\n", " 1\n", " total\n", - " 0.668773\n", - " 0.003314\n", + " 0.667218\n", + " 0.002220\n", " \n", " \n", " 6\n", @@ -884,8 +884,8 @@ " 1\n", " 2\n", " total\n", - " 1.292515\n", - " 0.015479\n", + " 1.291160\n", + " 0.007613\n", " \n", " \n", "\n", @@ -894,14 +894,14 @@ "text/plain": [ " mesh 10000 group in nuclide mean std. dev.\n", " x y z \n", - "1 1 1 1 1 total 0.669016 0.003015\n", - "0 1 1 1 2 total 1.293138 0.014971\n", - "3 1 2 1 1 total 0.667930 0.002132\n", - "2 1 2 1 2 total 1.292741 0.016747\n", - "5 2 1 1 1 total 0.669513 0.002584\n", - "4 2 1 1 2 total 1.294423 0.012750\n", - "7 2 2 1 1 total 0.668773 0.003314\n", - "6 2 2 1 2 total 1.292515 0.015479" + "1 1 1 1 1 total 0.667691 0.002046\n", + "0 1 1 1 2 total 1.291709 0.008941\n", + "3 1 2 1 1 total 0.667474 0.002119\n", + "2 1 2 1 2 total 1.292677 0.009479\n", + "5 2 1 1 1 total 0.668766 0.002021\n", + "4 2 1 1 2 total 1.292504 0.009323\n", + "7 2 2 1 1 total 0.667218 0.002220\n", + "6 2 2 1 2 total 1.291160 0.007613" ] }, "execution_count": 19, @@ -914,38 +914,6 @@ "df.head(10)" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each multi-group cross section object can be easily exported to a variety of file formats, including CSV, Excel, and LaTeX for storage or data processing." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "Setting dtype to anything other than object is not supported", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mabsorption\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexport_xs_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'absorption-xs'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'excel'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mexport_xs_data\u001b[0;34m(self, filename, directory, format, groups, xs_type)\u001b[0m\n\u001b[1;32m 1430\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1431\u001b[0m \u001b[0;31m# Capitalize column label strings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1432\u001b[0;31m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1433\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1434\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/index.pyc\u001b[0m in \u001b[0;36mastype\u001b[0;34m(self, dtype)\u001b[0m\n\u001b[1;32m 5922\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mis_object_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5923\u001b[0m raise TypeError('Setting %s dtype to anything other than object '\n\u001b[0;32m-> 5924\u001b[0;31m 'is not supported' % self.__class__)\n\u001b[0m\u001b[1;32m 5925\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_shallow_copy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5926\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: Setting dtype to anything other than object is not supported" - ] - } - ], - "source": [ - "absorption.export_xs_data(filename='absorption-xs', format='excel')" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -955,7 +923,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -982,11 +950,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-1.332268e-150.013214
11116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...-2.220446e-160.002922
21210.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...4.440892e-160.014000
31216.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...2.331468e-150.003034
42110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-6.661338e-160.013782
52116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...-9.992007e-160.002880
62210.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...4.440892e-160.011257
72216.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...7.771561e-160.003177
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 (((total / flux) - (absorption / flux)) - (sca... -1.33e-15 1.32e-02 \n", + "1 (((total / flux) - (absorption / flux)) - (sca... -2.22e-16 2.92e-03 \n", + "2 (((total / flux) - (absorption / flux)) - (sca... 4.44e-16 1.40e-02 \n", + "3 (((total / flux) - (absorption / flux)) - (sca... 2.33e-15 3.03e-03 \n", + "4 (((total / flux) - (absorption / flux)) - (sca... -6.66e-16 1.38e-02 \n", + "5 (((total / flux) - (absorption / flux)) - (sca... -9.99e-16 2.88e-03 \n", + "6 (((total / flux) - (absorption / flux)) - (sca... 4.44e-16 1.13e-02 \n", + "7 (((total / flux) - (absorption / flux)) - (sca... 7.77e-16 3.18e-03 " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to compute the difference between the total, absorption and scattering\n", "difference = total.xs_tally - absorption.xs_tally - scattering.xs_tally\n", @@ -1004,11 +1131,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0760770.000762
11116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0192420.000160
21210.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0761730.000800
31216.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0193720.000136
42110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0761830.000796
52116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0193640.000154
62210.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0760270.000654
72216.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0190740.000153
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 ((absorption / flux) / (total / flux)) 7.61e-02 7.62e-04 \n", + "1 ((absorption / flux) / (total / flux)) 1.92e-02 1.60e-04 \n", + "2 ((absorption / flux) / (total / flux)) 7.62e-02 8.00e-04 \n", + "3 ((absorption / flux) / (total / flux)) 1.94e-02 1.36e-04 \n", + "4 ((absorption / flux) / (total / flux)) 7.62e-02 7.96e-04 \n", + "5 ((absorption / flux) / (total / flux)) 1.94e-02 1.54e-04 \n", + "6 ((absorption / flux) / (total / flux)) 7.60e-02 6.54e-04 \n", + "7 ((absorption / flux) / (total / flux)) 1.91e-02 1.53e-04 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to compute the absorption-to-total MGXS ratio\n", "absorption_to_total = absorption.xs_tally / total.xs_tally\n", @@ -1019,11 +1305,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9239230.009054
11116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9807580.004247
21210.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9238270.009586
31216.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9806280.004411
42110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9238170.009436
52116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9806360.004180
62210.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9239730.007717
72216.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9809260.004623
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 ((scatter / flux) / (total / flux)) 9.24e-01 9.05e-03 \n", + "1 ((scatter / flux) / (total / flux)) 9.81e-01 4.25e-03 \n", + "2 ((scatter / flux) / (total / flux)) 9.24e-01 9.59e-03 \n", + "3 ((scatter / flux) / (total / flux)) 9.81e-01 4.41e-03 \n", + "4 ((scatter / flux) / (total / flux)) 9.24e-01 9.44e-03 \n", + "5 ((scatter / flux) / (total / flux)) 9.81e-01 4.18e-03 \n", + "6 ((scatter / flux) / (total / flux)) 9.24e-01 7.72e-03 \n", + "7 ((scatter / flux) / (total / flux)) 9.81e-01 4.62e-03 " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to compute the scattering-to-total MGXS ratio\n", "scattering_to_total = scattering.xs_tally / total.xs_tally\n", @@ -1041,11 +1486,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.009086
11116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.004250
21210.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.009619
31216.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.004413
42110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.009470
52116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.004183
62210.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.007745
72216.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.004626
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 9.09e-03 \n", + "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.25e-03 \n", + "2 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 9.62e-03 \n", + "3 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.41e-03 \n", + "4 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 9.47e-03 \n", + "5 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.18e-03 \n", + "6 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 7.74e-03 \n", + "7 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.63e-03 " + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to ensure that the absorption- and scattering-to-total MGXS ratios sum to unity\n", "sum_ratio = absorption_to_total + scattering_to_total\n", diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index ab65f7a5ac..1d2536678c 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -7,6 +7,7 @@ import os import sys import copy import abc +import itertools import numpy as np @@ -701,20 +702,8 @@ class MGXS(object): # NOTE: This is important if tally merging was used if self.domain_type == 'mesh': filters = [self.domain_type] - bins = [] - if (len(self.domain.dimension) == 3): - nx, ny, nz = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - for z in range(1,nz+1): - bins.append((x, y, z)) - else: - nx, ny = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - bins.append((x, y, 1)) - - filter_bins = [tuple(bins)] + xyz = map(lambda x: np.arange(1, x+1), self.domain.dimension) + filter_bins = [tuple(itertools.product(*xyz))] elif self.domain_type != 'distribcell': filters = [self.domain_type] filter_bins = [(self.domain.id,)] @@ -1169,18 +1158,8 @@ class MGXS(object): elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) elif self.domain_type == 'mesh': - subdomains = [] - if (len(self.domain.dimension) == 3): - nx, ny, nz = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - for z in range(1,nz+1): - subdomains.append((x, y, z)) - else: - nx, ny = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - subdomains.append((x, y, 1)) + xyz = map(lambda x: np.arange(1, x+1), self.domain.dimension) + subdomains = list(itertools.product(*xyz)) else: subdomains = [self.domain.id] @@ -1318,18 +1297,8 @@ class MGXS(object): domain_filter = self.xs_tally.find_filter('avg(distribcell)') subdomains = domain_filter.bins elif self.domain_type == 'mesh': - subdomains = [] - if (len(self.domain.dimension) == 3): - nx, ny, nz = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - for z in range(1,nz+1): - subdomains.append((x, y, z)) - else: - nx, ny = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - subdomains.append((x, y, 1)) + xyz = map(lambda x: np.arange(1, x+1), self.domain.dimension) + subdomains = list(itertools.product(*xyz)) else: subdomains = [self.domain.id] @@ -1934,18 +1903,8 @@ class MatrixMGXS(MGXS): elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) elif self.domain_type == 'mesh': - subdomains = [] - if (len(self.domain.dimension) == 3): - nx, ny, nz = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - for z in range(1,nz+1): - subdomains.append((x, y, z)) - else: - nx, ny = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - subdomains.append((x, y, 1)) + xyz = map(lambda x: np.arange(1, x+1), self.domain.dimension) + subdomains = list(itertools.product(*xyz)) else: subdomains = [self.domain.id] @@ -3787,18 +3746,8 @@ class ScatterMatrixXS(MatrixMGXS): elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) elif self.domain_type == 'mesh': - subdomains = [] - if (len(self.domain.dimension) == 3): - nx, ny, nz = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - for z in range(1,nz+1): - subdomains.append((x, y, z)) - else: - nx, ny = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - subdomains.append((x, y, 1)) + xyz = map(lambda x: np.arange(1, x+1), self.domain.dimension) + subdomains = list(itertools.product(*xyz)) else: subdomains = [self.domain.id] @@ -5020,18 +4969,8 @@ class Velocity(MGXS): elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) elif self.domain_type == 'mesh': - subdomains = [] - if (len(self.domain.dimension) == 3): - nx, ny, nz = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - for z in range(1,nz+1): - subdomains.append((x, y, z)) - else: - nx, ny = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - subdomains.append((x, y, 1)) + xyz = map(lambda x: np.arange(1, x+1), self.domain.dimension) + subdomains = list(itertools.product(*xyz)) else: subdomains = [self.domain.id] From b1d05ee64ac54a08d1d55ae3d09de01f6da38bec Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Sun, 10 Jul 2016 14:50:56 -0600 Subject: [PATCH 26/82] moved numpy scientific notation print requirements to testing harness --- openmc/mgxs/library.py | 2 +- openmc/mgxs/mgxs.py | 200 +++---- src/tally.F90 | 4 +- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 4 +- .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/testing_harness.py | 7 + 9 files changed, 520 insertions(+), 551 deletions(-) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 9df9d150dd..f1e839fdee 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -452,7 +452,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'} + 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', 'velocity', 'prompt-nu-fission'} The type of multi-group cross section object to return Returns diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index ee5848c7c7..1933394048 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -10,11 +10,6 @@ import abc import numpy as np -# Require numpy to print output in scientific notation to 6 decimal places. -# This is needed to avoid round off error when large numbers are printed, -# which can cause tests to fail for different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(x, '8.6E')}) - import openmc import openmc.checkvalue as cv from openmc.mgxs import EnergyGroups @@ -1162,6 +1157,9 @@ class MGXS(object): string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) + # Generate the header for an individual XS + xs_header = '\tCross Sections [{0}]:'.format(self.get_units(xs_type)) + # If cross section data has not been computed, only print string header if self.tallies is None: print(string) @@ -1181,11 +1179,7 @@ class MGXS(object): string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) # Build header for cross section type - if xs_type == 'macro': - string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') - else: - string += '{0: <16}\n'.format('\tCross Sections [barns]:') - + string += '{0: <16}\n'.format(xs_header) template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' # Loop over energy groups ranges @@ -1544,6 +1538,31 @@ class MGXS(object): df.sort_values(by=[self.domain_type] + columns, inplace=True) return df + def get_units(self, xs_type='macro'): + r"""Returns the units of a MGXS. + + This method returns the units of a MGXS based on a desired xs_type. + + Parameters + ---------- + xs_type: {'macro', 'micro'} + Return the macro or micro cross section units. + Defaults to 'macro'. + + Returns + ------- + str + A string representing the units of the MGXS. + + """ + + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + if xs_type == 'macro': + return 'cm^-1' + else: + return 'barns' + class MatrixMGXS(MGXS): """An abstract multi-group cross section for some energy group structure @@ -1892,6 +1911,9 @@ class MatrixMGXS(MGXS): string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) + # Generate the header for an individual XS + xs_header = '\tCross Sections [{0}]:'.format(self.get_units(xs_type)) + # If cross section data has not been computed, only print string header if self.tallies is None: print(string) @@ -1920,11 +1942,7 @@ class MatrixMGXS(MGXS): string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) # Build header for cross section type - if xs_type == 'macro': - string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') - else: - string += '{0: <16}\n'.format('\tCross Sections [barns]:') - + string += '{0: <16}\n'.format(xs_header) template = '{0: <12}Group {1} -> Group {2}:\t\t' # Loop over incoming/outgoing energy groups ranges @@ -3737,6 +3755,9 @@ class ScatterMatrixXS(MatrixMGXS): string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) + # Generate the header for an individual XS + xs_header = '\tCross Sections [{0}]:'.format(self.get_units(xs_type)) + # If cross section data has not been computed, only print string header if self.tallies is None: print(string) @@ -3765,11 +3786,7 @@ class ScatterMatrixXS(MatrixMGXS): string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) # Build header for cross section type - if xs_type == 'macro': - string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') - else: - string += '{0: <16}\n'.format('\tCross Sections [barns]:') - + string += '{0: <16}\n'.format(xs_header) template = '{0: <12}Group {1} -> Group {2}:\t\t' # Loop over incoming/outgoing energy groups ranges @@ -4409,7 +4426,7 @@ class Chi(MGXS): """ if not self.can_merge(other): - raise ValueError('Unable to merge Chi') + raise ValueError('Unable to merge a Chi MGXS') # Create deep copy of tally to return as merged tally merged_mgxs = copy.deepcopy(self) @@ -4428,7 +4445,7 @@ class Chi(MGXS): # The nuclides must be mutually exclusive for nuclide in self.nuclides: if nuclide in other.nuclides: - msg = 'Unable to merge Chi with shared nuclides' + msg = 'Unable to merge a Chi MGXS with shared nuclides' raise ValueError(msg) # Concatenate lists of nuclides for the merged MGXS @@ -4633,6 +4650,30 @@ class Chi(MGXS): return df + def get_units(self, xs_type='macro'): + r"""Returns the units of Chi. + + This method returns the units of Chi, which is "%" for both macro + and micro xs types. + + Parameters + ---------- + xs_type: {'macro', 'micro'} + Return the macro or micro cross section units. + Defaults to 'macro'. + + Returns + ------- + str + A string representing the units of Chi. + + """ + + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + # Chi has the same units (%) for both macro and micro + return '%' + class ChiPrompt(Chi): r"""The prompt fission spectrum. @@ -4750,28 +4791,6 @@ class ChiPrompt(Chi): def scores(self): return ['prompt-nu-fission', 'prompt-nu-fission'] - def merge(self, other): - """Merge another ChiPrompt with this one - - If results have been loaded from a statepoint, then ChiPrompt are only - mergeable along one and only one of energy groups or nuclides. - - Parameters - ---------- - other : openmc.mgxs.MGXS - MGXS to merge with this one - - Returns - ------- - merged_mgxs : openmc.mgxs.MGXS - Merged MGXS - """ - - if not self.can_merge(other): - raise ValueError('Unable to merge ChiPrompt') - - return super(ChiPrompt, self).merge(other) - class Velocity(MGXS): r"""A velocity multi-group cross section. @@ -4908,88 +4927,31 @@ class Velocity(MGXS): return self._xs_tally - def print_xs(self, subdomains='all', nuclides='all'): - """Print a string representation for the multi-group cross section. + def get_units(self, xs_type='macro'): + r"""Returns the units of Velocity. + + This method returns the units of a Velocity based on a desired xs_type. Parameters ---------- - subdomains : Iterable of Integral or 'all' - The subdomain IDs of the cross sections to include in the report. - Defaults to 'all'. - nuclides : Iterable of str or 'all' or 'sum' - The nuclides of the cross-sections to include in the report. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). - The special string 'all' will report the cross sections for all - nuclides in the spatial domain. The special string 'sum' will report - the cross sections summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + Return the macro or micro cross section units. + Defaults to 'macro'. + + Returns + ------- + str + A string representing the units of the Velocity. """ - # Construct a collection of the subdomains to report - if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral) - elif self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains, dtype=np.int) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + if xs_type == 'macro': + return 'cm/second' else: - subdomains = [self.domain.id] - - # Construct a collection of the nuclides to report - if self.by_nuclide: - if nuclides == 'all': - nuclides = self.get_all_nuclides() - elif nuclides == 'sum': - nuclides = ['sum'] - else: - cv.check_iterable_type('nuclides', nuclides, basestring) - else: - nuclides = ['sum'] - - # Build header for string with type and domain info - string = 'Multi-Group XS\n' - string += '{0: <16}=\t{1}\n'.format('\tReaction Type', self.rxn_type) - string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) - string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) - - # If cross section data has not been computed, only print string header - if self.tallies is None: - print(string) - return - - # Loop over all subdomains - for subdomain in subdomains: - - if self.domain_type == 'distribcell': - string += '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) - - # Loop over all Nuclides - for nuclide in nuclides: - - # Build header for nuclide type - if nuclide != 'sum': - string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) - - # Build header for cross section type - string += '{0: <16}\n'.format\ - ('\tVelocity [cm/second]:') - - template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' - - # Loop over energy groups ranges - for group in range(1, self.num_groups+1): - bounds = self.energy_groups.get_group_bounds(group) - string += template.format('', group, bounds[0], bounds[1]) - average = self.get_xs([group], [subdomain], [nuclide], - xs_type='macro', value='mean') - rel_err = self.get_xs([group], [subdomain], [nuclide], - xs_type='macro', value='rel_err') - average = average.flatten()[0] - rel_err = rel_err.flatten()[0] * 100. - string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) - string += '\n' - string += '\n' - string += '\n' - - print(string) + raise ValueError('Unable to return the units of Velocity for ' + + 'xs_type other than "macro"') class PromptNuFissionXS(MGXS): diff --git a/src/tally.F90 b/src/tally.F90 index aa4da6b18a..d1aa36d46b 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -473,8 +473,8 @@ contains ! score the number of particles that were banked in the fission ! bank as prompt neutrons. Since this was weighted by 1/keff, we ! multiply by keff to get the proper score. - score = keff * p % wgt_bank * (1 - sum(p % n_delayed_bank) & - / p % n_bank) + score = keff * p % wgt_bank * (1.0 - sum(p % n_delayed_bank) & + / real(p % n_bank)) end if else diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 3dbb07d3c3..dc2a21f903 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 0.453624 0.021053 - material group in nuclide mean std. dev. -0 10000 1 total 0.400852 0.022858 - material group in nuclide mean std. dev. -0 10000 1 total 0.400852 0.022858 - material group in nuclide mean std. dev. -0 10000 1 total 0.064903 0.004313 - material group in nuclide mean std. dev. -0 10000 1 total 0.028048 0.00458 - material group in nuclide mean std. dev. -0 10000 1 total 0.036855 0.002622 - material group in nuclide mean std. dev. -0 10000 1 total 0.090649 0.00641 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955 0.507364 - material group in nuclide mean std. dev. -0 10000 1 total 0.388721 0.01783 - material group in nuclide mean std. dev. -0 10000 1 total 0.389304 0.023076 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 0.389304 0.023146 -1 10000 1 1 total P1 0.046224 0.005907 -2 10000 1 1 total P2 0.017984 0.002883 -3 10000 1 1 total P3 0.006628 0.002457 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 0.389304 0.023146 -1 10000 1 1 total P1 0.046224 0.005907 -2 10000 1 1 total P2 0.017984 0.002883 -3 10000 1 1 total P3 0.006628 0.002457 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.0 0.066111 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 0.085835 0.005592 - material group out nuclide mean std. dev. -0 10000 1 total 1.0 0.046071 - material group out nuclide mean std. dev. -0 10000 1 total 0.991442 0.050935 - material group in nuclide mean std. dev. -0 10000 1 total 2.001309e+06 146216.555365 - material group in nuclide mean std. dev. -0 10000 1 total 0.090004 0.006367 - material group in nuclide mean std. dev. -0 10001 1 total 0.311594 0.013793 - material group in nuclide mean std. dev. -0 10001 1 total 0.279255 0.02919 - material group in nuclide mean std. dev. -0 10001 1 total 0.279255 0.02919 - material group in nuclide mean std. dev. -0 10001 1 total 0.00221 0.000286 - material group in nuclide mean std. dev. -0 10001 1 total 0.00221 0.000286 - material group in nuclide mean std. dev. -0 10001 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10001 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10001 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10001 1 total 0.309384 0.013551 - material group in nuclide mean std. dev. -0 10001 1 total 0.307987 0.029308 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 0.307987 0.029308 -1 10001 1 1 total P1 0.030617 0.007464 -2 10001 1 1 total P2 0.018911 0.004323 -3 10001 1 1 total P3 0.006235 0.003338 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 0.307987 0.029308 -1 10001 1 1 total P1 0.030617 0.007464 -2 10001 1 1 total P2 0.018911 0.004323 -3 10001 1 1 total P3 0.006235 0.003338 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.0 0.095039 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.0 0.0 - material group out nuclide mean std. dev. -0 10001 1 total 0.0 0.0 - material group out nuclide mean std. dev. -0 10001 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10001 1 total 1.833261e+06 166355.17452 - material group in nuclide mean std. dev. -0 10001 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. -0 10002 1 total 0.499184 0.040914 - material group in nuclide mean std. dev. -0 10002 1 total 0.499184 0.040914 - material group in nuclide mean std. dev. -0 10002 1 total 0.00606 0.000555 - material group in nuclide mean std. dev. -0 10002 1 total 0.00606 0.000555 - material group in nuclide mean std. dev. -0 10002 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10002 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10002 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10002 1 total 0.898938 0.043493 - material group in nuclide mean std. dev. -0 10002 1 total 0.903415 0.043959 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 0.903415 0.043586 -1 10002 1 1 total P1 0.410417 0.015877 -2 10002 1 1 total P2 0.143301 0.007187 -3 10002 1 1 total P3 0.008739 0.003571 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 0.903415 0.043586 -1 10002 1 1 total P1 0.410417 0.015877 -2 10002 1 1 total P2 0.143301 0.007187 -3 10002 1 1 total P3 0.008739 0.003571 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.0 0.056867 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.0 0.0 - material group out nuclide mean std. dev. -0 10002 1 total 0.0 0.0 - material group out nuclide mean std. dev. -0 10002 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 10002 1 total 1.732200e+06 159691.42643 - material group in nuclide mean std. dev. -0 10002 1 total 0.0 0.0 + material group in nuclide mean std. dev. +0 10000 1 total 4.536244E-01 2.105270E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008522E-01 2.285755E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008522E-01 2.285755E-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.490346E-02 4.312761E-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.804807E-02 4.579964E-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.685539E-02 2.622160E-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.064929E-02 6.409875E-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955E+00 5.073638E-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.887210E-01 1.783043E-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.893036E-01 2.307554E-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893036E-01 2.314560E-02 +1 10000 1 1 total P1 4.622442E-02 5.907170E-03 +2 10000 1 1 total P2 1.798359E-02 2.882972E-03 +3 10000 1 1 total P3 6.628374E-03 2.457109E-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893036E-01 2.314560E-02 +1 10000 1 1 total P1 4.622442E-02 5.907170E-03 +2 10000 1 1 total P2 1.798359E-02 2.882972E-03 +3 10000 1 1 total P3 6.628374E-03 2.457109E-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.000000E+00 6.611082E-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.583502E-02 5.591825E-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000E+00 4.607052E-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000E+00 5.147146E-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.001309E+06 1.462166E+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.000398E-02 6.366908E-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.115941E-01 1.379317E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792551E-01 2.918950E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792551E-01 2.918950E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846E-03 2.863341E-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846E-03 2.863341E-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.093843E-01 1.355127E-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.079873E-01 2.930809E-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873E-01 2.930809E-02 +1 10001 1 1 total P1 3.061715E-02 7.464456E-03 +2 10001 1 1 total P2 1.891149E-02 4.322828E-03 +3 10001 1 1 total P3 6.234618E-03 3.338202E-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873E-01 2.930809E-02 +1 10001 1 1 total P1 3.061715E-02 7.464456E-03 +2 10001 1 1 total P2 1.891149E-02 4.322828E-03 +3 10001 1 1 total P3 6.234618E-03 3.338202E-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.000000E+00 9.503872E-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.833261E+06 1.663552E+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.049988E-01 4.396449E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991840E-01 4.091412E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991840E-01 4.091412E-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341E-03 5.545244E-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341E-03 5.545244E-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.989385E-01 4.349298E-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.034147E-01 4.395874E-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034147E-01 4.358599E-02 +1 10002 1 1 total P1 4.104174E-01 1.587722E-02 +2 10002 1 1 total P2 1.433010E-01 7.187378E-03 +3 10002 1 1 total P3 8.739426E-03 3.571441E-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034147E-01 4.358599E-02 +1 10002 1 1 total P1 4.104174E-01 1.587722E-02 +2 10002 1 1 total P2 1.433010E-01 7.187378E-03 +3 10002 1 1 total P3 8.739426E-03 3.571441E-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.000000E+00 5.686673E-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.732200E+06 1.596914E+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000E+00 0.000000E+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index cfbbbce3c5..21525ea8f4 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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 - 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 - 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 - 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.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 - 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 - 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 - 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 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 - 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 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 774245.714482 416397.691599 - 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 1.145934E+00 5.538217E-01 + 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.189192E-01 5.206443E-01 + 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.189192E-01 5.206443E-01 + 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.976221E-02 1.062876E-02 + 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.976221E-02 1.062876E-02 + 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.000000E+00 0.000000E+00 + 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.000000E+00 0.000000E+00 + 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.000000E+00 0.000000E+00 + 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.126172E+00 5.434400E-01 + 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.142547E+00 5.701314E-01 + 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.142547E+00 5.701314E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813E-01 2.163222E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018E-01 6.650377E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827E-02 2.462083E-02 + 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.142547E+00 5.701314E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813E-01 2.163222E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018E-01 6.650377E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827E-02 2.462083E-02 + 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.000000E+00 5.297173E-01 + 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.000000E+00 0.000000E+00 + 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.000000E+00 0.000000E+00 + 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.000000E+00 0.000000E+00 + 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.742457E+05 4.163977E+05 + 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.000000E+00 0.000000E+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 0f83221597..59f3a2f348 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -64,8 +64,8 @@ domain=10000 type=chi [1.000000E+00 0.000000E+00] [4.607052E-02 0.000000E+00] domain=10000 type=chi-prompt -[9.914425E-01 0.000000E+00] -[5.093465E-02 0.000000E+00] +[1.000000E+00 0.000000E+00] +[5.147146E-02 0.000000E+00] domain=10000 type=velocity [1.751521E+07 3.501720E+05] [1.438175E+06 2.994593E+04] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 4d79dbbb3b..c375da69d9 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 0.414825 0.022793 -0 10000 2 total 0.660170 0.047519 - material group in nuclide mean std. dev. -1 10000 1 total 0.356860 0.025494 -0 10000 2 total 0.647648 0.023704 - material group in nuclide mean std. dev. -1 10000 1 total 0.356860 0.025494 -0 10000 2 total 0.647648 0.023704 - material group in nuclide mean std. dev. -1 10000 1 total 0.027408 0.002692 -0 10000 2 total 0.264511 0.023367 - material group in nuclide mean std. dev. -1 10000 1 total 0.019845 0.002643 -0 10000 2 total 0.071719 0.025208 - material group in nuclide mean std. dev. -1 10000 1 total 0.007563 0.000508 -0 10000 2 total 0.192791 0.017106 - material group in nuclide mean std. dev. -1 10000 1 total 0.019432 0.001323 -0 10000 2 total 0.469775 0.041682 - material group in nuclide mean std. dev. -1 10000 1 total 1.474570 0.099235 -0 10000 2 total 37.286896 3.308378 - material group in nuclide mean std. dev. -1 10000 1 total 0.387418 0.020626 -0 10000 2 total 0.395659 0.025125 - material group in nuclide mean std. dev. -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 -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 -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 - 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 -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 -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 - 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 -1 10000 2 1 total 1.0 1.414214 -0 10000 2 2 total 1.0 0.041130 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 0.020142 0.003149 -2 10000 1 2 total 0.000000 0.000000 -1 10000 2 1 total 0.454366 0.027426 -0 10000 2 2 total 0.000000 0.000000 - material group out nuclide mean std. dev. -1 10000 1 total 1.0 0.046071 -0 10000 2 total 0.0 0.000000 - material group out nuclide mean std. dev. -1 10000 1 total 0.991442 0.050935 -0 10000 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10000 1 total 1.751521e+07 1.438175e+06 -0 10000 2 total 3.501720e+05 2.994593e+04 - material group in nuclide mean std. dev. -1 10000 1 total 0.019239 0.001310 -0 10000 2 total 0.466719 0.041411 - material group in nuclide mean std. dev. -1 10001 1 total 0.313738 0.015582 -0 10001 2 total 0.300821 0.028052 - material group in nuclide mean std. dev. -1 10001 1 total 0.273228 0.033115 -0 10001 2 total 0.312375 0.049606 - material group in nuclide mean std. dev. -1 10001 1 total 0.273228 0.033115 -0 10001 2 total 0.312375 0.049606 - material group in nuclide mean std. dev. -1 10001 1 total 0.001575 0.000323 -0 10001 2 total 0.005400 0.000618 - material group in nuclide mean std. dev. -1 10001 1 total 0.001575 0.000323 -0 10001 2 total 0.005400 0.000618 - material group in nuclide mean std. dev. -1 10001 1 total 0.0 0.0 -0 10001 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10001 1 total 0.0 0.0 -0 10001 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10001 1 total 0.0 0.0 -0 10001 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10001 1 total 0.312163 0.015322 -0 10001 2 total 0.295421 0.027445 - material group in nuclide mean std. dev. -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 -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 -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 - 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 -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 -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 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.0 0.108779 -2 10001 1 2 total 0.0 0.000000 -1 10001 2 1 total 0.0 0.000000 -0 10001 2 2 total 1.0 0.142427 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.0 0.0 -2 10001 1 2 total 0.0 0.0 -1 10001 2 1 total 0.0 0.0 -0 10001 2 2 total 0.0 0.0 - material group out nuclide mean std. dev. -1 10001 1 total 0.0 0.0 -0 10001 2 total 0.0 0.0 - material group out nuclide mean std. dev. -1 10001 1 total 0.0 0.0 -0 10001 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10001 1 total 1.667784e+07 1.266444e+06 -0 10001 2 total 3.349534e+05 3.833678e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.0 0.0 -0 10001 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 - material group in nuclide mean std. dev. -1 10002 1 total 0.290565 0.023852 -0 10002 2 total 1.516438 0.235197 - material group in nuclide mean std. dev. -1 10002 1 total 0.290565 0.023852 -0 10002 2 total 1.516438 0.235197 - material group in nuclide mean std. dev. -1 10002 1 total 0.000690 0.000044 -0 10002 2 total 0.031687 0.003747 - material group in nuclide mean std. dev. -1 10002 1 total 0.000690 0.000044 -0 10002 2 total 0.031687 0.003747 - material group in nuclide mean std. dev. -1 10002 1 total 0.0 0.0 -0 10002 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10002 1 total 0.0 0.0 -0 10002 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10002 1 total 0.0 0.0 -0 10002 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10002 1 total 0.663882 0.031173 -0 10002 2 total 2.020697 0.220604 - material group in nuclide mean std. dev. -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 -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 -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 - 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 -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 -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 - 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 -1 10002 2 1 total 1.0 1.414214 -0 10002 2 2 total 1.0 0.135929 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.0 0.0 -2 10002 1 2 total 0.0 0.0 -1 10002 2 1 total 0.0 0.0 -0 10002 2 2 total 0.0 0.0 - material group out nuclide mean std. dev. -1 10002 1 total 0.0 0.0 -0 10002 2 total 0.0 0.0 - material group out nuclide mean std. dev. -1 10002 1 total 0.0 0.0 -0 10002 2 total 0.0 0.0 - material group in nuclide mean std. dev. -1 10002 1 total 1.660556e+07 1.042436e+06 -0 10002 2 total 3.284120e+05 3.882844e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.0 0.0 -0 10002 2 total 0.0 0.0 + material group in nuclide mean std. dev. +1 10000 1 total 4.148255E-01 2.279291E-02 +0 10000 2 total 6.601699E-01 4.751893E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596E-01 2.549360E-02 +0 10000 2 total 6.476477E-01 2.370374E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596E-01 2.549360E-02 +0 10000 2 total 6.476477E-01 2.370374E-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.740784E-02 2.692497E-03 +0 10000 2 total 2.645107E-01 2.336708E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.984455E-02 2.643304E-03 +0 10000 2 total 7.171935E-02 2.520786E-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.563295E-03 5.084837E-04 +0 10000 2 total 1.927914E-01 1.710592E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.943174E-02 1.322976E-03 +0 10000 2 total 4.697748E-01 4.168200E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.474570E+00 9.923532E-02 +0 10000 2 total 3.728690E+01 3.308378E+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.874176E-01 2.062573E-02 +0 10000 2 total 3.956592E-01 2.512506E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.851884E-01 2.694562E-02 +0 10000 2 total 4.123894E-01 1.542528E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841995E-01 2.700101E-02 +13 10000 1 1 total P1 5.187028E-02 6.982549E-03 +14 10000 1 1 total P2 2.006885E-02 2.846495E-03 +15 10000 1 1 total P3 9.477716E-03 2.233520E-03 +8 10000 1 2 total P0 9.889304E-04 4.824194E-04 +9 10000 1 2 total P1 -2.072346E-04 1.490108E-04 +10 10000 1 2 total P2 -1.033662E-04 1.843163E-04 +11 10000 1 2 total P3 2.342906E-04 1.281731E-04 +4 10000 2 1 total P0 9.246399E-04 9.248835E-04 +5 10000 2 1 total P1 -7.677050E-04 7.679072E-04 +6 10000 2 1 total P2 4.937889E-04 4.939189E-04 +7 10000 2 1 total P3 -1.714972E-04 1.715424E-04 +0 10000 2 2 total P0 4.114648E-01 1.524494E-02 +1 10000 2 2 total P1 1.648173E-02 4.501728E-03 +2 10000 2 2 total P2 6.371490E-03 1.055075E-02 +3 10000 2 2 total P3 -1.049912E-02 1.043819E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841995E-01 2.700101E-02 +13 10000 1 1 total P1 5.187028E-02 6.982549E-03 +14 10000 1 1 total P2 2.006885E-02 2.846495E-03 +15 10000 1 1 total P3 9.477716E-03 2.233520E-03 +8 10000 1 2 total P0 9.889304E-04 4.824194E-04 +9 10000 1 2 total P1 -2.072346E-04 1.490108E-04 +10 10000 1 2 total P2 -1.033662E-04 1.843163E-04 +11 10000 1 2 total P3 2.342906E-04 1.281731E-04 +4 10000 2 1 total P0 9.246399E-04 9.248835E-04 +5 10000 2 1 total P1 -7.677050E-04 7.679072E-04 +6 10000 2 1 total P2 4.937889E-04 4.939189E-04 +7 10000 2 1 total P3 -1.714972E-04 1.715424E-04 +0 10000 2 2 total P0 4.114648E-01 1.524494E-02 +1 10000 2 2 total P1 1.648173E-02 4.501728E-03 +2 10000 2 2 total P2 6.371490E-03 1.055075E-02 +3 10000 2 2 total P3 -1.049912E-02 1.043819E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.000000E+00 7.851646E-02 +2 10000 1 2 total 1.000000E+00 6.871843E-01 +1 10000 2 1 total 1.000000E+00 1.414214E+00 +0 10000 2 2 total 1.000000E+00 4.113035E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.014243E-02 3.149092E-03 +2 10000 1 2 total 0.000000E+00 0.000000E+00 +1 10000 2 1 total 4.543665E-01 2.742551E-02 +0 10000 2 2 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000E+00 4.607052E-02 +0 10000 2 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000E+00 5.147146E-02 +0 10000 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.751521E+07 1.438175E+06 +0 10000 2 total 3.501720E+05 2.994593E+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.923922E-02 1.309506E-03 +0 10000 2 total 4.667190E-01 4.141087E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.137377E-01 1.558190E-02 +0 10001 2 total 3.008214E-01 2.805245E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732279E-01 3.311537E-02 +0 10001 2 total 3.123748E-01 4.960583E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732279E-01 3.311537E-02 +0 10001 2 total 3.123748E-01 4.960583E-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991E-03 3.225479E-04 +0 10001 2 total 5.400379E-03 6.181383E-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991E-03 3.225479E-04 +0 10001 2 total 5.400379E-03 6.181383E-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000E+00 0.000000E+00 +0 10001 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000E+00 0.000000E+00 +0 10001 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000E+00 0.000000E+00 +0 10001 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.121627E-01 1.532192E-02 +0 10001 2 total 2.954210E-01 2.744549E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.101207E-01 3.378811E-02 +0 10001 2 total 2.962643E-01 4.379223E-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207E-01 3.378811E-02 +13 10001 1 1 total P1 3.822959E-02 8.483997E-03 +14 10001 1 1 total P2 2.074494E-02 4.695611E-03 +15 10001 1 1 total P3 7.964297E-03 3.731623E-03 +8 10001 1 2 total P0 0.000000E+00 0.000000E+00 +9 10001 1 2 total P1 0.000000E+00 0.000000E+00 +10 10001 1 2 total P2 0.000000E+00 0.000000E+00 +11 10001 1 2 total P3 0.000000E+00 0.000000E+00 +4 10001 2 1 total P0 0.000000E+00 0.000000E+00 +5 10001 2 1 total P1 0.000000E+00 0.000000E+00 +6 10001 2 1 total P2 0.000000E+00 0.000000E+00 +7 10001 2 1 total P3 0.000000E+00 0.000000E+00 +0 10001 2 2 total P0 2.962643E-01 4.379223E-02 +1 10001 2 2 total P1 -1.121364E-02 1.618037E-02 +2 10001 2 2 total P2 8.836566E-03 1.150396E-02 +3 10001 2 2 total P3 -3.270067E-03 7.328846E-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207E-01 3.378811E-02 +13 10001 1 1 total P1 3.822959E-02 8.483997E-03 +14 10001 1 1 total P2 2.074494E-02 4.695611E-03 +15 10001 1 1 total P3 7.964297E-03 3.731623E-03 +8 10001 1 2 total P0 0.000000E+00 0.000000E+00 +9 10001 1 2 total P1 0.000000E+00 0.000000E+00 +10 10001 1 2 total P2 0.000000E+00 0.000000E+00 +11 10001 1 2 total P3 0.000000E+00 0.000000E+00 +4 10001 2 1 total P0 0.000000E+00 0.000000E+00 +5 10001 2 1 total P1 0.000000E+00 0.000000E+00 +6 10001 2 1 total P2 0.000000E+00 0.000000E+00 +7 10001 2 1 total P3 0.000000E+00 0.000000E+00 +0 10001 2 2 total P0 2.962643E-01 4.379223E-02 +1 10001 2 2 total P1 -1.121364E-02 1.618037E-02 +2 10001 2 2 total P2 8.836566E-03 1.150396E-02 +3 10001 2 2 total P3 -3.270067E-03 7.328846E-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.000000E+00 1.087787E-01 +2 10001 1 2 total 0.000000E+00 0.000000E+00 +1 10001 2 1 total 0.000000E+00 0.000000E+00 +0 10001 2 2 total 1.000000E+00 1.424272E-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.000000E+00 0.000000E+00 +2 10001 1 2 total 0.000000E+00 0.000000E+00 +1 10001 2 1 total 0.000000E+00 0.000000E+00 +0 10001 2 2 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000E+00 0.000000E+00 +0 10001 2 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000E+00 0.000000E+00 +0 10001 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.667784E+07 1.266444E+06 +0 10001 2 total 3.349534E+05 3.833678E+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000E+00 0.000000E+00 +0 10001 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.645723E-01 3.121475E-02 +0 10002 2 total 2.052384E+00 2.243429E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905653E-01 2.385185E-02 +0 10002 2 total 1.516438E+00 2.351973E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905653E-01 2.385185E-02 +0 10002 2 total 1.516438E+00 2.351973E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995E-04 4.414757E-05 +0 10002 2 total 3.168726E-02 3.746559E-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995E-04 4.414757E-05 +0 10002 2 total 3.168726E-02 3.746559E-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000E+00 0.000000E+00 +0 10002 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000E+00 0.000000E+00 +0 10002 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000E+00 0.000000E+00 +0 10002 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.638819E-01 3.117268E-02 +0 10002 2 total 2.020697E+00 2.206045E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.712692E-01 2.618637E-02 +0 10002 2 total 2.035388E+00 2.580603E-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399015E-01 2.470912E-02 +13 10002 1 1 total P1 3.811674E-01 1.624326E-02 +14 10002 1 1 total P2 1.523919E-01 8.156278E-03 +15 10002 1 1 total P3 9.148022E-03 3.888562E-03 +8 10002 1 2 total P0 3.136772E-02 1.728113E-03 +9 10002 1 2 total P1 8.757723E-03 9.256705E-04 +10 10002 1 2 total P2 -2.567901E-03 1.013985E-03 +11 10002 1 2 total P3 -3.784803E-03 8.170756E-04 +4 10002 2 1 total P0 4.433431E-04 4.448504E-04 +5 10002 2 1 total P1 3.999604E-04 4.013202E-04 +6 10002 2 1 total P2 3.195627E-04 3.206491E-04 +7 10002 2 1 total P3 2.138470E-04 2.145740E-04 +0 10002 2 2 total P0 2.034945E+00 2.577999E-01 +1 10002 2 2 total P1 5.099405E-01 5.123591E-02 +2 10002 2 2 total P2 1.111746E-01 1.301982E-02 +3 10002 2 2 total P3 2.498844E-02 8.312353E-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399015E-01 2.470912E-02 +13 10002 1 1 total P1 3.811674E-01 1.624326E-02 +14 10002 1 1 total P2 1.523919E-01 8.156278E-03 +15 10002 1 1 total P3 9.148022E-03 3.888562E-03 +8 10002 1 2 total P0 3.136772E-02 1.728113E-03 +9 10002 1 2 total P1 8.757723E-03 9.256705E-04 +10 10002 1 2 total P2 -2.567901E-03 1.013985E-03 +11 10002 1 2 total P3 -3.784803E-03 8.170756E-04 +4 10002 2 1 total P0 4.433431E-04 4.448504E-04 +5 10002 2 1 total P1 3.999604E-04 4.013202E-04 +6 10002 2 1 total P2 3.195627E-04 3.206491E-04 +7 10002 2 1 total P3 2.138470E-04 2.145740E-04 +0 10002 2 2 total P0 2.034945E+00 2.577999E-01 +1 10002 2 2 total P1 5.099405E-01 5.123591E-02 +2 10002 2 2 total P2 1.111746E-01 1.301982E-02 +3 10002 2 2 total P3 2.498844E-02 8.312353E-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.000000E+00 3.860919E-02 +2 10002 1 2 total 1.000000E+00 6.766735E-02 +1 10002 2 1 total 1.000000E+00 1.414214E+00 +0 10002 2 2 total 1.000000E+00 1.359292E-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.000000E+00 0.000000E+00 +2 10002 1 2 total 0.000000E+00 0.000000E+00 +1 10002 2 1 total 0.000000E+00 0.000000E+00 +0 10002 2 2 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000E+00 0.000000E+00 +0 10002 2 total 0.000000E+00 0.000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000E+00 0.000000E+00 +0 10002 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.660556E+07 1.042436E+06 +0 10002 2 total 3.284120E+05 3.882844E+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000E+00 0.000000E+00 +0 10002 2 total 0.000000E+00 0.000000E+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 3a61638ad4..12ffe40ee8 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -30bee5191524167000108e833ae21547c0f6e416ec9367e24c1d1acd6aceead74aef0a0a2aa2968ddb55ef8c19cf7012fb6a4047ffa8b51aa2c2b2f08ccc0ea0 \ No newline at end of file +07e9e894c9896879ff083e148a4a552b496802f7d88965e01eeb8b91d828bf740c17d2926d0fd0dcd457049b362ff10bec6cbe345ddcdf7d4695c0dc75fa7a78 \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index d360184045..a76260cbfd 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -9,6 +9,13 @@ import shutil import sys import numpy as np +import pandas as pd + +# Require numpy and pandas to print output in scientific notation to 6 decimal +# places. This is needed to avoid round off error when large numbers are +# printed, which can cause tests to fail for different build configurations. +np.set_printoptions(formatter={'float': lambda x: format(x, '8.6E')}) +pd.set_option('display.float_format', lambda x: '%8.6E' % x) sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From bc5efa71c77caafdd7ac0fb974dc20f6084549a7 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Sun, 10 Jul 2016 15:01:24 -0600 Subject: [PATCH 27/82] updated formatting for tally slice merge test --- tests/test_tally_slice_merge/test_tally_slice_merge.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tests/test_tally_slice_merge/test_tally_slice_merge.py b/tests/test_tally_slice_merge/test_tally_slice_merge.py index 1472cc75a2..78ea4fe9d5 100644 --- a/tests/test_tally_slice_merge/test_tally_slice_merge.py +++ b/tests/test_tally_slice_merge/test_tally_slice_merge.py @@ -79,12 +79,9 @@ class TallySliceMergeTestHarness(PyAPITestHarness): mesh_tally = openmc.Tally(name='mesh tally') mesh_tally.estimator = 'tracklength' - mesh_tally.add_filter(mesh_filter) - mesh_tally.add_filter(merged_energies) - for score in self.scores: - mesh_tally.add_score(score) - for nuclide in self.nuclides: - mesh_tally.add_nuclide(nuclide) + mesh_tally.filters = [mesh_filter, merged_energies] + mesh_tally.scores = self.scores + mesh_tally.nuclides = self.nuclides # Add tallies to a Tallies object tallies_file = openmc.Tallies((tallies[0], distribcell_tally, From aa401eb9e342f25738d092493472a08a45e4a41f Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Sun, 10 Jul 2016 15:04:40 -0600 Subject: [PATCH 28/82] updated results for tallies test --- tests/test_tallies/results_true.dat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index e8283cb679..76ad489ca1 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1 +1 @@ -b1ef1648128580996df7ace74539e24d1183a0348f0fd9214f76ba495c00e0b54e22d16e4b146d02d152d67a19cd42fce2455384d39146f7fe8648d8f086e96d \ No newline at end of file +7d085e38f331083a8c3f7814eb6025f9457a1a8e3899e7d9a65af1ba92ea75c0182fcc605d4eadd3eb7edfc0949df688d39a3f45683e10cbdcfb6d7954f34129 \ No newline at end of file From 0c48aa18591d98cd7f058cd02064e197710db3f0 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 07:15:36 -0600 Subject: [PATCH 29/82] addressed PR comments --- openmc/mgxs/mgxs.py | 15 +++++---------- src/tally.F90 | 16 +++++++--------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 1933394048..e5be67fa54 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1539,9 +1539,7 @@ class MGXS(object): return df def get_units(self, xs_type='macro'): - r"""Returns the units of a MGXS. - - This method returns the units of a MGXS based on a desired xs_type. + """This method returns the units of a MGXS based on a desired xs_type. Parameters ---------- @@ -1558,10 +1556,7 @@ class MGXS(object): cv.check_value('xs_type', xs_type, ['macro', 'micro']) - if xs_type == 'macro': - return 'cm^-1' - else: - return 'barns' + return 'cm^-1' if xs_type == 'macro' else 'barns' class MatrixMGXS(MGXS): @@ -4651,7 +4646,7 @@ class Chi(MGXS): return df def get_units(self, xs_type='macro'): - r"""Returns the units of Chi. + """Returns the units of Chi. This method returns the units of Chi, which is "%" for both macro and micro xs types. @@ -4928,7 +4923,7 @@ class Velocity(MGXS): return self._xs_tally def get_units(self, xs_type='macro'): - r"""Returns the units of Velocity. + """Returns the units of Velocity. This method returns the units of a Velocity based on a desired xs_type. @@ -4950,7 +4945,7 @@ class Velocity(MGXS): if xs_type == 'macro': return 'cm/second' else: - raise ValueError('Unable to return the units of Velocity for ' + + raise ValueError('Unable to return the units of Velocity for ' 'xs_type other than "macro"') diff --git a/src/tally.F90 b/src/tally.F90 index d1aa36d46b..94143184ae 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -473,8 +473,8 @@ contains ! score the number of particles that were banked in the fission ! bank as prompt neutrons. Since this was weighted by 1/keff, we ! multiply by keff to get the proper score. - score = keff * p % wgt_bank * (1.0 - sum(p % n_delayed_bank) & - / real(p % n_bank)) + score = keff * p % wgt_bank * (ONE - sum(p % n_delayed_bank) & + / real(p % n_bank, 8)) end if else @@ -1627,19 +1627,19 @@ contains matching_bins(i) = binary_search(t % filters(i) % real_bins, n, E_out) ! Case for tallying prompt neutrons - if (score_bin == SCORE_NU_FISSION .OR. \ - (score_bin == SCORE_PROMPT_NU_FISSION .AND. g == 0)) then + if (score_bin == SCORE_NU_FISSION .or. & + (score_bin == SCORE_PROMPT_NU_FISSION .and. g == 0)) then ! determine scoring index i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! Add score to tally - !$omp atomic +!$omp atomic t % results(i_score, i_filter) % value = & t % results(i_score, i_filter) % value + score ! Case for tallying delayed emissions - else if (score_bin == SCORE_DELAYED_NU_FISSION .AND. g /= 0) then + else if (score_bin == SCORE_DELAYED_NU_FISSION .and. g /= 0) then ! Get the index of delayed group filter j = t % find_filter(FILTER_DELAYEDGROUP) @@ -1654,9 +1654,7 @@ contains ! check whether the delayed group of the particle is equal to the ! delayed group of this bin - if (d == g) then - call score_fission_delayed_dg(t, d_bin, score, i_score) - end if + if (d == g) call score_fission_delayed_dg(t, d_bin, score, i_score) end do ! if the delayed group filter is not present, add score to tally From 348503b55a4d83b09e21c138bb3553c5827eefe5 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 07:33:04 -0600 Subject: [PATCH 30/82] changed precision of test results from 6 to 12 digits --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 360 ++++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 3 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 274 ++++++---- tests/testing_harness.py | 4 +- 9 files changed, 806 insertions(+), 691 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index dc2a21f903..4056ff2b9e 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.536244E-01 2.105270E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008522E-01 2.285755E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008522E-01 2.285755E-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.490346E-02 4.312761E-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.804807E-02 4.579964E-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.685539E-02 2.622160E-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.064929E-02 6.409875E-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955E+00 5.073638E-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.887210E-01 1.783043E-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.893036E-01 2.307554E-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893036E-01 2.314560E-02 -1 10000 1 1 total P1 4.622442E-02 5.907170E-03 -2 10000 1 1 total P2 1.798359E-02 2.882972E-03 -3 10000 1 1 total P3 6.628374E-03 2.457109E-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893036E-01 2.314560E-02 -1 10000 1 1 total P1 4.622442E-02 5.907170E-03 -2 10000 1 1 total P2 1.798359E-02 2.882972E-03 -3 10000 1 1 total P3 6.628374E-03 2.457109E-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.000000E+00 6.611082E-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.583502E-02 5.591825E-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000E+00 4.607052E-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000E+00 5.147146E-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.001309E+06 1.462166E+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.000398E-02 6.366908E-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.115941E-01 1.379317E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792551E-01 2.918950E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792551E-01 2.918950E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846E-03 2.863341E-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846E-03 2.863341E-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.093843E-01 1.355127E-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.079873E-01 2.930809E-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873E-01 2.930809E-02 -1 10001 1 1 total P1 3.061715E-02 7.464456E-03 -2 10001 1 1 total P2 1.891149E-02 4.322828E-03 -3 10001 1 1 total P3 6.234618E-03 3.338202E-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873E-01 2.930809E-02 -1 10001 1 1 total P1 3.061715E-02 7.464456E-03 -2 10001 1 1 total P2 1.891149E-02 4.322828E-03 -3 10001 1 1 total P3 6.234618E-03 3.338202E-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.000000E+00 9.503872E-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.833261E+06 1.663552E+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.049988E-01 4.396449E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991840E-01 4.091412E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991840E-01 4.091412E-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341E-03 5.545244E-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341E-03 5.545244E-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.989385E-01 4.349298E-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.034147E-01 4.395874E-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034147E-01 4.358599E-02 -1 10002 1 1 total P1 4.104174E-01 1.587722E-02 -2 10002 1 1 total P2 1.433010E-01 7.187378E-03 -3 10002 1 1 total P3 8.739426E-03 3.571441E-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034147E-01 4.358599E-02 -1 10002 1 1 total P1 4.104174E-01 1.587722E-02 -2 10002 1 1 total P2 1.433010E-01 7.187378E-03 -3 10002 1 1 total P3 8.739426E-03 3.571441E-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.000000E+00 5.686673E-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.732200E+06 1.596914E+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.536244224711E-01 2.105269632534E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008521778843E-01 2.285755400331E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008521778843E-01 2.285755400331E-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.490345583241E-02 4.312761199548E-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.804806603393E-02 4.579963688736E-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.685538979848E-02 2.622159776243E-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.064928985756E-02 6.409874517029E-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955138087E+00 5.073638145538E-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.887209666387E-01 1.783042859910E-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.893035562819E-01 2.307553857261E-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893035562819E-01 2.314560462423E-02 +1 10000 1 1 total P1 4.622441783140E-02 5.907169556819E-03 +2 10000 1 1 total P2 1.798358502027E-02 2.882971981671E-03 +3 10000 1 1 total P3 6.628373513945E-03 2.457108983778E-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893035562819E-01 2.314560462423E-02 +1 10000 1 1 total P1 4.622441783140E-02 5.907169556819E-03 +2 10000 1 1 total P2 1.798358502027E-02 2.882971981671E-03 +3 10000 1 1 total P3 6.628373513945E-03 2.457108983778E-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.000000000000E+00 6.611082017312E-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.583501933699E-02 5.591824860711E-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000000000E+00 4.607052347202E-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000000000E+00 5.147145673440E-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.001308739748E+06 1.462165553647E+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.000397778775E-02 6.366907874267E-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.115941081024E-01 1.379316812822E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792550636912E-01 2.918950098026E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792550636912E-01 2.918950098026E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846401628E-03 2.863341266047E-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846401628E-03 2.863341266047E-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.093842617007E-01 1.355126749065E-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.079873494451E-01 2.930808850442E-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873494451E-01 2.930808850442E-02 +1 10001 1 1 total P1 3.061715325350E-02 7.464456011864E-03 +2 10001 1 1 total P2 1.891149040728E-02 4.322827732396E-03 +3 10001 1 1 total P3 6.234618187211E-03 3.338202280537E-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873494451E-01 2.930808850442E-02 +1 10001 1 1 total P1 3.061715325350E-02 7.464456011864E-03 +2 10001 1 1 total P2 1.891149040728E-02 4.322827732396E-03 +3 10001 1 1 total P3 6.234618187211E-03 3.338202280537E-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.000000000000E+00 9.503872150700E-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.833261152573E+06 1.663551745201E+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.049988333172E-01 4.396448759472E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991839826996E-01 4.091411960472E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991839826996E-01 4.091411960472E-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341157258E-03 5.545244242761E-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341157258E-03 5.545244242761E-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.989384921599E-01 4.349298417271E-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.034146631586E-01 4.395873707643E-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034146631586E-01 4.358599380352E-02 +1 10002 1 1 total P1 4.104174185899E-01 1.587722019436E-02 +2 10002 1 1 total P2 1.433010364745E-01 7.187377663475E-03 +3 10002 1 1 total P3 8.739426340561E-03 3.571441345040E-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034146631586E-01 4.358599380352E-02 +1 10002 1 1 total P1 4.104174185899E-01 1.587722019436E-02 +2 10002 1 1 total P2 1.433010364745E-01 7.187377663475E-03 +3 10002 1 1 total P3 8.739426340561E-03 3.571441345040E-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.000000000000E+00 5.686672530708E-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.732199699466E+06 1.596914264298E+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000000E+00 0.000000000000E+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 21525ea8f4..e7493f4d72 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.145934E+00 5.538217E-01 - 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.189192E-01 5.206443E-01 - 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.189192E-01 5.206443E-01 - 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.976221E-02 1.062876E-02 - 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.976221E-02 1.062876E-02 - 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.000000E+00 0.000000E+00 - 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.000000E+00 0.000000E+00 - 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.000000E+00 0.000000E+00 - 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.126172E+00 5.434400E-01 - 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.142547E+00 5.701314E-01 - 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.142547E+00 5.701314E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813E-01 2.163222E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018E-01 6.650377E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827E-02 2.462083E-02 - 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.142547E+00 5.701314E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813E-01 2.163222E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018E-01 6.650377E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827E-02 2.462083E-02 - 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.000000E+00 5.297173E-01 - 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.000000E+00 0.000000E+00 - 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.000000E+00 0.000000E+00 - 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.000000E+00 0.000000E+00 - 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.742457E+05 4.163977E+05 - 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.000000E+00 0.000000E+00 + 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.145934000527E+00 5.538216946848E-01 + 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.189191989776E-01 5.206442559331E-01 + 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.189191989776E-01 5.206442559331E-01 + 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.976220611460E-02 1.062876409255E-02 + 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.976220611460E-02 1.062876409255E-02 + 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.000000000000E+00 0.000000000000E+00 + 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.000000000000E+00 0.000000000000E+00 + 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.000000000000E+00 0.000000000000E+00 + 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.126171794412E+00 5.434400083985E-01 + 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.142546919110E+00 5.701313898558E-01 + 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.142546919110E+00 5.701313898558E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943346E-01 2.163221683070E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934151E-01 6.650377258083E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827041877E-02 2.462083232034E-02 + 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.142546919110E+00 5.701313898558E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943346E-01 2.163221683070E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934151E-01 6.650377258083E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827041877E-02 2.462083232034E-02 + 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.000000000000E+00 5.297173273743E-01 + 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.000000000000E+00 0.000000000000E+00 + 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.000000000000E+00 0.000000000000E+00 + 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.000000000000E+00 0.000000000000E+00 + 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.742457144820E+05 4.163976915995E+05 + 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.000000000000E+00 0.000000000000E+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 59f3a2f348..05ceb00eb0 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,270 @@ domain=10000 type=total -[4.148255E-01 6.601699E-01] -[2.279291E-02 4.751893E-02] +[4.148254902141E-01 6.601699186276E-01] +[2.279290909378E-02 4.751892790820E-02] domain=10000 type=transport -[3.568596E-01 6.476477E-01] -[2.549360E-02 2.370374E-02] +[3.568596371187E-01 6.476476600786E-01] +[2.549359557809E-02 2.370373520469E-02] domain=10000 type=nu-transport -[3.568596E-01 6.476477E-01] -[2.549360E-02 2.370374E-02] +[3.568596371187E-01 6.476476600786E-01] +[2.549359557809E-02 2.370373520469E-02] domain=10000 type=absorption -[2.740784E-02 2.645107E-01] -[2.692497E-03 2.336708E-02] +[2.740784492005E-02 2.645107416278E-01] +[2.692497109349E-03 2.336707739154E-02] domain=10000 type=capture -[1.984455E-02 7.171935E-02] -[2.643304E-03 2.520786E-02] +[1.984454994118E-02 7.171935292349E-02] +[2.643304328661E-03 2.520785935116E-02] domain=10000 type=fission -[7.563295E-03 1.927914E-01] -[5.084837E-04 1.710592E-02] +[7.563294978869E-03 1.927913887043E-01] +[5.084836779085E-04 1.710592186667E-02] domain=10000 type=nu-fission -[1.943174E-02 4.697748E-01] -[1.322976E-03 4.168200E-02] +[1.943174037197E-02 4.697747770257E-01] +[1.322975612220E-03 4.168199978316E-02] domain=10000 type=kappa-fission -[1.474570E+00 3.728690E+01] -[9.923532E-02 3.308378E+00] +[1.474569822554E+00 3.728689640721E+01] +[9.923532109630E-02 3.308377724530E+00] domain=10000 type=scatter -[3.874176E-01 3.956592E-01] -[2.062573E-02 2.512506E-02] +[3.874176452940E-01 3.956591769999E-01] +[2.062573210211E-02 2.512505678941E-02] domain=10000 type=nu-scatter -[3.851884E-01 4.123894E-01] -[2.694562E-02 1.542528E-02] +[3.851883882025E-01 4.123893993086E-01] +[2.694562106470E-02 1.542527695832E-02] domain=10000 type=scatter matrix -[[[3.841995E-01 5.187028E-02 2.006885E-02 9.477716E-03] - [9.889304E-04 -2.072346E-04 -1.033662E-04 2.342906E-04]] +[[[3.841994578091E-01 5.187028434601E-02 2.006884531999E-02 + 9.477715705594E-03] + [9.889303933311E-04 -2.072345964750E-04 -1.033661805408E-04 + 2.342906230372E-04]] - [[9.246399E-04 -7.677050E-04 4.937889E-04 -1.714972E-04] - [4.114648E-01 1.648173E-02 6.371490E-03 -1.049912E-02]]] -[[[2.700101E-02 6.982549E-03 2.846495E-03 2.233520E-03] - [4.824194E-04 1.490108E-04 1.843163E-04 1.281731E-04]] + [[9.246399087638E-04 -7.677049684393E-04 4.937888718438E-04 + -1.714972293226E-04] + [4.114647593999E-01 1.648172800670E-02 6.371490492824E-03 + -1.049912208975E-02]]] +[[[2.700101356101E-02 6.982548876132E-03 2.846495183290E-03 + 2.233519771809E-03] + [4.824194451197E-04 1.490107753617E-04 1.843163119237E-04 + 1.281731108336E-04]] - [[9.248835E-04 7.679072E-04 4.939189E-04 1.715424E-04] - [1.524494E-02 4.501728E-03 1.055075E-02 1.043819E-02]]] + [[9.248834636439E-04 7.679071858536E-04 4.939189383576E-04 + 1.715424025697E-04] + [1.524493539575E-02 4.501727960784E-03 1.055074934137E-02 + 1.043818771941E-02]]] domain=10000 type=nu-scatter matrix -[[[3.841995E-01 5.187028E-02 2.006885E-02 9.477716E-03] - [9.889304E-04 -2.072346E-04 -1.033662E-04 2.342906E-04]] +[[[3.841994578091E-01 5.187028434601E-02 2.006884531999E-02 + 9.477715705594E-03] + [9.889303933311E-04 -2.072345964750E-04 -1.033661805408E-04 + 2.342906230372E-04]] - [[9.246399E-04 -7.677050E-04 4.937889E-04 -1.714972E-04] - [4.114648E-01 1.648173E-02 6.371490E-03 -1.049912E-02]]] -[[[2.700101E-02 6.982549E-03 2.846495E-03 2.233520E-03] - [4.824194E-04 1.490108E-04 1.843163E-04 1.281731E-04]] + [[9.246399087638E-04 -7.677049684393E-04 4.937888718438E-04 + -1.714972293226E-04] + [4.114647593999E-01 1.648172800670E-02 6.371490492824E-03 + -1.049912208975E-02]]] +[[[2.700101356101E-02 6.982548876132E-03 2.846495183290E-03 + 2.233519771809E-03] + [4.824194451197E-04 1.490107753617E-04 1.843163119237E-04 + 1.281731108336E-04]] - [[9.248835E-04 7.679072E-04 4.939189E-04 1.715424E-04] - [1.524494E-02 4.501728E-03 1.055075E-02 1.043819E-02]]] + [[9.248834636439E-04 7.679071858536E-04 4.939189383576E-04 + 1.715424025697E-04] + [1.524493539575E-02 4.501727960784E-03 1.055074934137E-02 + 1.043818771941E-02]]] domain=10000 type=multiplicity matrix -[[1.000000E+00 1.000000E+00] - [1.000000E+00 1.000000E+00]] -[[7.851646E-02 6.871843E-01] - [1.414214E+00 4.113035E-02]] +[[1.000000000000E+00 1.000000000000E+00] + [1.000000000000E+00 1.000000000000E+00]] +[[7.851645500569E-02 6.871842709363E-01] + [1.414213562373E+00 4.113034880387E-02]] domain=10000 type=nu-fission matrix -[[2.014243E-02 0.000000E+00] - [4.543665E-01 0.000000E+00]] -[[3.149092E-03 0.000000E+00] - [2.742551E-02 0.000000E+00]] +[[2.014242816319E-02 0.000000000000E+00] + [4.543664665592E-01 0.000000000000E+00]] +[[3.149091676274E-03 0.000000000000E+00] + [2.742550692485E-02 0.000000000000E+00]] domain=10000 type=chi -[1.000000E+00 0.000000E+00] -[4.607052E-02 0.000000E+00] +[1.000000000000E+00 0.000000000000E+00] +[4.607052347202E-02 0.000000000000E+00] domain=10000 type=chi-prompt -[1.000000E+00 0.000000E+00] -[5.147146E-02 0.000000E+00] +[1.000000000000E+00 0.000000000000E+00] +[5.147145673440E-02 0.000000000000E+00] domain=10000 type=velocity -[1.751521E+07 3.501720E+05] -[1.438175E+06 2.994593E+04] +[1.751521062040E+07 3.501719951940E+05] +[1.438175273899E+06 2.994593169671E+04] domain=10000 type=prompt-nu-fission -[1.923922E-02 4.667190E-01] -[1.309506E-03 4.141087E-02] +[1.923922154603E-02 4.667190273544E-01] +[1.309505950104E-03 4.141087039944E-02] domain=10001 type=total -[3.137377E-01 3.008214E-01] -[1.558190E-02 2.805245E-02] +[3.137376709068E-01 3.008214016985E-01] +[1.558190235534E-02 2.805244843117E-02] domain=10001 type=transport -[2.732279E-01 3.123748E-01] -[3.311537E-02 4.960583E-02] +[2.732278720196E-01 3.123748362176E-01] +[3.311536644329E-02 4.960583170525E-02] domain=10001 type=nu-transport -[2.732279E-01 3.123748E-01] -[3.311537E-02 4.960583E-02] +[2.732278720196E-01 3.123748362176E-01] +[3.311536644329E-02 4.960583170525E-02] domain=10001 type=absorption -[1.574991E-03 5.400379E-03] -[3.225479E-04 6.181383E-04] +[1.574991390450E-03 5.400378832161E-03] +[3.225478906976E-04 6.181383082294E-04] domain=10001 type=capture -[1.574991E-03 5.400379E-03] -[3.225479E-04 6.181383E-04] +[1.574991390450E-03 5.400378832161E-03] +[3.225478906976E-04 6.181383082294E-04] domain=10001 type=fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10001 type=nu-fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10001 type=kappa-fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10001 type=scatter -[3.121627E-01 2.954210E-01] -[1.532192E-02 2.744549E-02] +[3.121626795163E-01 2.954210228664E-01] +[1.532192309182E-02 2.744548888604E-02] domain=10001 type=nu-scatter -[3.101207E-01 2.962643E-01] -[3.378811E-02 4.379223E-02] +[3.101207350756E-01 2.962642700008E-01] +[3.378810612250E-02 4.379222573274E-02] domain=10001 type=scatter matrix -[[[3.101207E-01 3.822959E-02 2.074494E-02 7.964297E-03] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] +[[[3.101207350756E-01 3.822959036236E-02 2.074494196965E-02 + 7.964296771745E-03] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [2.962643E-01 -1.121364E-02 8.836566E-03 -3.270067E-03]]] -[[[3.378811E-02 8.483997E-03 4.695611E-03 3.731623E-03] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [2.962642700008E-01 -1.121363613411E-02 8.836566298044E-03 + -3.270067308815E-03]]] +[[[3.378810612250E-02 8.483997103450E-03 4.695610677417E-03 + 3.731622609987E-03] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [4.379223E-02 1.618037E-02 1.150396E-02 7.328846E-03]]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [4.379222573274E-02 1.618036648860E-02 1.150396445878E-02 + 7.328845801518E-03]]] domain=10001 type=nu-scatter matrix -[[[3.101207E-01 3.822959E-02 2.074494E-02 7.964297E-03] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] +[[[3.101207350756E-01 3.822959036236E-02 2.074494196965E-02 + 7.964296771745E-03] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [2.962643E-01 -1.121364E-02 8.836566E-03 -3.270067E-03]]] -[[[3.378811E-02 8.483997E-03 4.695611E-03 3.731623E-03] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [2.962642700008E-01 -1.121363613411E-02 8.836566298044E-03 + -3.270067308815E-03]]] +[[[3.378810612250E-02 8.483997103450E-03 4.695610677417E-03 + 3.731622609987E-03] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [4.379223E-02 1.618037E-02 1.150396E-02 7.328846E-03]]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [4.379222573274E-02 1.618036648860E-02 1.150396445878E-02 + 7.328845801518E-03]]] domain=10001 type=multiplicity matrix -[[1.000000E+00 0.000000E+00] - [0.000000E+00 1.000000E+00]] -[[1.087787E-01 0.000000E+00] - [0.000000E+00 1.424272E-01]] +[[1.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 1.000000000000E+00]] +[[1.087786967284E-01 0.000000000000E+00] + [0.000000000000E+00 1.424271730547E-01]] domain=10001 type=nu-fission matrix -[[0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00]] -[[0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00]] +[[0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00]] +[[0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00]] domain=10001 type=chi -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10001 type=chi-prompt -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10001 type=velocity -[1.667784E+07 3.349534E+05] -[1.266444E+06 3.833678E+04] +[1.667783949737E+07 3.349533676013E+05] +[1.266444309518E+06 3.833678162570E+04] domain=10001 type=prompt-nu-fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10002 type=total -[6.645723E-01 2.052384E+00] -[3.121475E-02 2.243429E-01] +[6.645722606166E-01 2.052384013809E+00] +[3.121475191267E-02 2.243429067056E-01] domain=10002 type=transport -[2.905653E-01 1.516438E+00] -[2.385185E-02 2.351973E-01] +[2.905652574249E-01 1.516438012755E+00] +[2.385185464365E-02 2.351972685044E-01] domain=10002 type=nu-transport -[2.905653E-01 1.516438E+00] -[2.385185E-02 2.351973E-01] +[2.905652574249E-01 1.516438012755E+00] +[2.385185464365E-02 2.351972685044E-01] domain=10002 type=absorption -[6.903995E-04 3.168726E-02] -[4.414757E-05 3.746559E-03] +[6.903995221868E-04 3.168725661415E-02] +[4.414756870586E-05 3.746558582378E-03] domain=10002 type=capture -[6.903995E-04 3.168726E-02] -[4.414757E-05 3.746559E-03] +[6.903995221868E-04 3.168725661415E-02] +[4.414756870586E-05 3.746558582378E-03] domain=10002 type=fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10002 type=nu-fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10002 type=kappa-fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10002 type=scatter -[6.638819E-01 2.020697E+00] -[3.117268E-02 2.206045E-01] +[6.638818610944E-01 2.020696757195E+00] +[3.117268400461E-02 2.206044538568E-01] domain=10002 type=nu-scatter -[6.712692E-01 2.035388E+00] -[2.618637E-02 2.580603E-01] +[6.712692047144E-01 2.035388328756E+00] +[2.618637116860E-02 2.580603285630E-01] domain=10002 type=scatter matrix -[[[6.399015E-01 3.811674E-01 1.523919E-01 9.148022E-03] - [3.136772E-02 8.757723E-03 -2.567901E-03 -3.784803E-03]] +[[[6.399014848679E-01 3.811674488646E-01 1.523918978052E-01 + 9.148022288467E-03] + [3.136771984647E-02 8.757723206121E-03 -2.567901059674E-03 + -3.784802881872E-03]] - [[4.433431E-04 3.999604E-04 3.195627E-04 2.138470E-04] - [2.034945E+00 5.099405E-01 1.111746E-01 2.498844E-02]]] -[[[2.470912E-02 1.624326E-02 8.156278E-03 3.888562E-03] - [1.728113E-03 9.256705E-04 1.013985E-03 8.170756E-04]] + [[4.433431341224E-04 3.999604142604E-04 3.195627072398E-04 + 2.138469692300E-04] + [2.034944985622E+00 5.099405131606E-01 1.111746088043E-01 + 2.498843573936E-02]]] +[[[2.470912279767E-02 1.624326492127E-02 8.156277703362E-03 + 3.888562141639E-03] + [1.728112903279E-03 9.256705011983E-04 1.013984752076E-03 + 8.170755708523E-04]] - [[4.448504E-04 4.013202E-04 3.206491E-04 2.145740E-04] - [2.577999E-01 5.123591E-02 1.301982E-02 8.312353E-03]]] + [[4.448503933306E-04 4.013201827353E-04 3.206491429959E-04 + 2.145739970978E-04] + [2.577998889237E-01 5.123590629710E-02 1.301981703882E-02 + 8.312352562357E-03]]] domain=10002 type=nu-scatter matrix -[[[6.399015E-01 3.811674E-01 1.523919E-01 9.148022E-03] - [3.136772E-02 8.757723E-03 -2.567901E-03 -3.784803E-03]] +[[[6.399014848679E-01 3.811674488646E-01 1.523918978052E-01 + 9.148022288467E-03] + [3.136771984647E-02 8.757723206121E-03 -2.567901059674E-03 + -3.784802881872E-03]] - [[4.433431E-04 3.999604E-04 3.195627E-04 2.138470E-04] - [2.034945E+00 5.099405E-01 1.111746E-01 2.498844E-02]]] -[[[2.470912E-02 1.624326E-02 8.156278E-03 3.888562E-03] - [1.728113E-03 9.256705E-04 1.013985E-03 8.170756E-04]] + [[4.433431341224E-04 3.999604142604E-04 3.195627072398E-04 + 2.138469692300E-04] + [2.034944985622E+00 5.099405131606E-01 1.111746088043E-01 + 2.498843573936E-02]]] +[[[2.470912279767E-02 1.624326492127E-02 8.156277703362E-03 + 3.888562141639E-03] + [1.728112903279E-03 9.256705011983E-04 1.013984752076E-03 + 8.170755708523E-04]] - [[4.448504E-04 4.013202E-04 3.206491E-04 2.145740E-04] - [2.577999E-01 5.123591E-02 1.301982E-02 8.312353E-03]]] + [[4.448503933306E-04 4.013201827353E-04 3.206491429959E-04 + 2.145739970978E-04] + [2.577998889237E-01 5.123590629710E-02 1.301981703882E-02 + 8.312352562357E-03]]] domain=10002 type=multiplicity matrix -[[1.000000E+00 1.000000E+00] - [1.000000E+00 1.000000E+00]] -[[3.860919E-02 6.766735E-02] - [1.414214E+00 1.359292E-01]] +[[1.000000000000E+00 1.000000000000E+00] + [1.000000000000E+00 1.000000000000E+00]] +[[3.860919083686E-02 6.766734799959E-02] + [1.414213562373E+00 1.359292066059E-01]] domain=10002 type=nu-fission matrix -[[0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00]] -[[0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00]] +[[0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00]] +[[0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00]] domain=10002 type=chi -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10002 type=chi-prompt -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] domain=10002 type=velocity -[1.660556E+07 3.284120E+05] -[1.042436E+06 3.882844E+04] +[1.660556287323E+07 3.284120386500E+05] +[1.042435523742E+06 3.882843572985E+04] domain=10002 type=prompt-nu-fission -[0.000000E+00 0.000000E+00] -[0.000000E+00 0.000000E+00] +[0.000000000000E+00 0.000000000000E+00] +[0.000000000000E+00 0.000000000000E+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index c375da69d9..453219e04b 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.148255E-01 2.279291E-02 -0 10000 2 total 6.601699E-01 4.751893E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596E-01 2.549360E-02 -0 10000 2 total 6.476477E-01 2.370374E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596E-01 2.549360E-02 -0 10000 2 total 6.476477E-01 2.370374E-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.740784E-02 2.692497E-03 -0 10000 2 total 2.645107E-01 2.336708E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.984455E-02 2.643304E-03 -0 10000 2 total 7.171935E-02 2.520786E-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.563295E-03 5.084837E-04 -0 10000 2 total 1.927914E-01 1.710592E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.943174E-02 1.322976E-03 -0 10000 2 total 4.697748E-01 4.168200E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.474570E+00 9.923532E-02 -0 10000 2 total 3.728690E+01 3.308378E+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.874176E-01 2.062573E-02 -0 10000 2 total 3.956592E-01 2.512506E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.851884E-01 2.694562E-02 -0 10000 2 total 4.123894E-01 1.542528E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841995E-01 2.700101E-02 -13 10000 1 1 total P1 5.187028E-02 6.982549E-03 -14 10000 1 1 total P2 2.006885E-02 2.846495E-03 -15 10000 1 1 total P3 9.477716E-03 2.233520E-03 -8 10000 1 2 total P0 9.889304E-04 4.824194E-04 -9 10000 1 2 total P1 -2.072346E-04 1.490108E-04 -10 10000 1 2 total P2 -1.033662E-04 1.843163E-04 -11 10000 1 2 total P3 2.342906E-04 1.281731E-04 -4 10000 2 1 total P0 9.246399E-04 9.248835E-04 -5 10000 2 1 total P1 -7.677050E-04 7.679072E-04 -6 10000 2 1 total P2 4.937889E-04 4.939189E-04 -7 10000 2 1 total P3 -1.714972E-04 1.715424E-04 -0 10000 2 2 total P0 4.114648E-01 1.524494E-02 -1 10000 2 2 total P1 1.648173E-02 4.501728E-03 -2 10000 2 2 total P2 6.371490E-03 1.055075E-02 -3 10000 2 2 total P3 -1.049912E-02 1.043819E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841995E-01 2.700101E-02 -13 10000 1 1 total P1 5.187028E-02 6.982549E-03 -14 10000 1 1 total P2 2.006885E-02 2.846495E-03 -15 10000 1 1 total P3 9.477716E-03 2.233520E-03 -8 10000 1 2 total P0 9.889304E-04 4.824194E-04 -9 10000 1 2 total P1 -2.072346E-04 1.490108E-04 -10 10000 1 2 total P2 -1.033662E-04 1.843163E-04 -11 10000 1 2 total P3 2.342906E-04 1.281731E-04 -4 10000 2 1 total P0 9.246399E-04 9.248835E-04 -5 10000 2 1 total P1 -7.677050E-04 7.679072E-04 -6 10000 2 1 total P2 4.937889E-04 4.939189E-04 -7 10000 2 1 total P3 -1.714972E-04 1.715424E-04 -0 10000 2 2 total P0 4.114648E-01 1.524494E-02 -1 10000 2 2 total P1 1.648173E-02 4.501728E-03 -2 10000 2 2 total P2 6.371490E-03 1.055075E-02 -3 10000 2 2 total P3 -1.049912E-02 1.043819E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.000000E+00 7.851646E-02 -2 10000 1 2 total 1.000000E+00 6.871843E-01 -1 10000 2 1 total 1.000000E+00 1.414214E+00 -0 10000 2 2 total 1.000000E+00 4.113035E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.014243E-02 3.149092E-03 -2 10000 1 2 total 0.000000E+00 0.000000E+00 -1 10000 2 1 total 4.543665E-01 2.742551E-02 -0 10000 2 2 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000E+00 4.607052E-02 -0 10000 2 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000E+00 5.147146E-02 -0 10000 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.751521E+07 1.438175E+06 -0 10000 2 total 3.501720E+05 2.994593E+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.923922E-02 1.309506E-03 -0 10000 2 total 4.667190E-01 4.141087E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.137377E-01 1.558190E-02 -0 10001 2 total 3.008214E-01 2.805245E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732279E-01 3.311537E-02 -0 10001 2 total 3.123748E-01 4.960583E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732279E-01 3.311537E-02 -0 10001 2 total 3.123748E-01 4.960583E-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991E-03 3.225479E-04 -0 10001 2 total 5.400379E-03 6.181383E-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991E-03 3.225479E-04 -0 10001 2 total 5.400379E-03 6.181383E-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000E+00 0.000000E+00 -0 10001 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000E+00 0.000000E+00 -0 10001 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000E+00 0.000000E+00 -0 10001 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.121627E-01 1.532192E-02 -0 10001 2 total 2.954210E-01 2.744549E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.101207E-01 3.378811E-02 -0 10001 2 total 2.962643E-01 4.379223E-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207E-01 3.378811E-02 -13 10001 1 1 total P1 3.822959E-02 8.483997E-03 -14 10001 1 1 total P2 2.074494E-02 4.695611E-03 -15 10001 1 1 total P3 7.964297E-03 3.731623E-03 -8 10001 1 2 total P0 0.000000E+00 0.000000E+00 -9 10001 1 2 total P1 0.000000E+00 0.000000E+00 -10 10001 1 2 total P2 0.000000E+00 0.000000E+00 -11 10001 1 2 total P3 0.000000E+00 0.000000E+00 -4 10001 2 1 total P0 0.000000E+00 0.000000E+00 -5 10001 2 1 total P1 0.000000E+00 0.000000E+00 -6 10001 2 1 total P2 0.000000E+00 0.000000E+00 -7 10001 2 1 total P3 0.000000E+00 0.000000E+00 -0 10001 2 2 total P0 2.962643E-01 4.379223E-02 -1 10001 2 2 total P1 -1.121364E-02 1.618037E-02 -2 10001 2 2 total P2 8.836566E-03 1.150396E-02 -3 10001 2 2 total P3 -3.270067E-03 7.328846E-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207E-01 3.378811E-02 -13 10001 1 1 total P1 3.822959E-02 8.483997E-03 -14 10001 1 1 total P2 2.074494E-02 4.695611E-03 -15 10001 1 1 total P3 7.964297E-03 3.731623E-03 -8 10001 1 2 total P0 0.000000E+00 0.000000E+00 -9 10001 1 2 total P1 0.000000E+00 0.000000E+00 -10 10001 1 2 total P2 0.000000E+00 0.000000E+00 -11 10001 1 2 total P3 0.000000E+00 0.000000E+00 -4 10001 2 1 total P0 0.000000E+00 0.000000E+00 -5 10001 2 1 total P1 0.000000E+00 0.000000E+00 -6 10001 2 1 total P2 0.000000E+00 0.000000E+00 -7 10001 2 1 total P3 0.000000E+00 0.000000E+00 -0 10001 2 2 total P0 2.962643E-01 4.379223E-02 -1 10001 2 2 total P1 -1.121364E-02 1.618037E-02 -2 10001 2 2 total P2 8.836566E-03 1.150396E-02 -3 10001 2 2 total P3 -3.270067E-03 7.328846E-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.000000E+00 1.087787E-01 -2 10001 1 2 total 0.000000E+00 0.000000E+00 -1 10001 2 1 total 0.000000E+00 0.000000E+00 -0 10001 2 2 total 1.000000E+00 1.424272E-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.000000E+00 0.000000E+00 -2 10001 1 2 total 0.000000E+00 0.000000E+00 -1 10001 2 1 total 0.000000E+00 0.000000E+00 -0 10001 2 2 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000E+00 0.000000E+00 -0 10001 2 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000E+00 0.000000E+00 -0 10001 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.667784E+07 1.266444E+06 -0 10001 2 total 3.349534E+05 3.833678E+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000E+00 0.000000E+00 -0 10001 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.645723E-01 3.121475E-02 -0 10002 2 total 2.052384E+00 2.243429E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905653E-01 2.385185E-02 -0 10002 2 total 1.516438E+00 2.351973E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905653E-01 2.385185E-02 -0 10002 2 total 1.516438E+00 2.351973E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995E-04 4.414757E-05 -0 10002 2 total 3.168726E-02 3.746559E-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995E-04 4.414757E-05 -0 10002 2 total 3.168726E-02 3.746559E-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000E+00 0.000000E+00 -0 10002 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000E+00 0.000000E+00 -0 10002 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000E+00 0.000000E+00 -0 10002 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.638819E-01 3.117268E-02 -0 10002 2 total 2.020697E+00 2.206045E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.712692E-01 2.618637E-02 -0 10002 2 total 2.035388E+00 2.580603E-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399015E-01 2.470912E-02 -13 10002 1 1 total P1 3.811674E-01 1.624326E-02 -14 10002 1 1 total P2 1.523919E-01 8.156278E-03 -15 10002 1 1 total P3 9.148022E-03 3.888562E-03 -8 10002 1 2 total P0 3.136772E-02 1.728113E-03 -9 10002 1 2 total P1 8.757723E-03 9.256705E-04 -10 10002 1 2 total P2 -2.567901E-03 1.013985E-03 -11 10002 1 2 total P3 -3.784803E-03 8.170756E-04 -4 10002 2 1 total P0 4.433431E-04 4.448504E-04 -5 10002 2 1 total P1 3.999604E-04 4.013202E-04 -6 10002 2 1 total P2 3.195627E-04 3.206491E-04 -7 10002 2 1 total P3 2.138470E-04 2.145740E-04 -0 10002 2 2 total P0 2.034945E+00 2.577999E-01 -1 10002 2 2 total P1 5.099405E-01 5.123591E-02 -2 10002 2 2 total P2 1.111746E-01 1.301982E-02 -3 10002 2 2 total P3 2.498844E-02 8.312353E-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399015E-01 2.470912E-02 -13 10002 1 1 total P1 3.811674E-01 1.624326E-02 -14 10002 1 1 total P2 1.523919E-01 8.156278E-03 -15 10002 1 1 total P3 9.148022E-03 3.888562E-03 -8 10002 1 2 total P0 3.136772E-02 1.728113E-03 -9 10002 1 2 total P1 8.757723E-03 9.256705E-04 -10 10002 1 2 total P2 -2.567901E-03 1.013985E-03 -11 10002 1 2 total P3 -3.784803E-03 8.170756E-04 -4 10002 2 1 total P0 4.433431E-04 4.448504E-04 -5 10002 2 1 total P1 3.999604E-04 4.013202E-04 -6 10002 2 1 total P2 3.195627E-04 3.206491E-04 -7 10002 2 1 total P3 2.138470E-04 2.145740E-04 -0 10002 2 2 total P0 2.034945E+00 2.577999E-01 -1 10002 2 2 total P1 5.099405E-01 5.123591E-02 -2 10002 2 2 total P2 1.111746E-01 1.301982E-02 -3 10002 2 2 total P3 2.498844E-02 8.312353E-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.000000E+00 3.860919E-02 -2 10002 1 2 total 1.000000E+00 6.766735E-02 -1 10002 2 1 total 1.000000E+00 1.414214E+00 -0 10002 2 2 total 1.000000E+00 1.359292E-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.000000E+00 0.000000E+00 -2 10002 1 2 total 0.000000E+00 0.000000E+00 -1 10002 2 1 total 0.000000E+00 0.000000E+00 -0 10002 2 2 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000E+00 0.000000E+00 -0 10002 2 total 0.000000E+00 0.000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000E+00 0.000000E+00 -0 10002 2 total 0.000000E+00 0.000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.660556E+07 1.042436E+06 -0 10002 2 total 3.284120E+05 3.882844E+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000E+00 0.000000E+00 -0 10002 2 total 0.000000E+00 0.000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.148254902141E-01 2.279290909378E-02 +0 10000 2 total 6.601699186276E-01 4.751892790820E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596371187E-01 2.549359557809E-02 +0 10000 2 total 6.476476600786E-01 2.370373520469E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596371187E-01 2.549359557809E-02 +0 10000 2 total 6.476476600786E-01 2.370373520469E-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.740784492005E-02 2.692497109349E-03 +0 10000 2 total 2.645107416278E-01 2.336707739154E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.984454994118E-02 2.643304328661E-03 +0 10000 2 total 7.171935292349E-02 2.520785935116E-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.563294978869E-03 5.084836779085E-04 +0 10000 2 total 1.927913887043E-01 1.710592186667E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.943174037197E-02 1.322975612220E-03 +0 10000 2 total 4.697747770257E-01 4.168199978316E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.474569822554E+00 9.923532109630E-02 +0 10000 2 total 3.728689640721E+01 3.308377724530E+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.874176452940E-01 2.062573210211E-02 +0 10000 2 total 3.956591769999E-01 2.512505678941E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.851883882025E-01 2.694562106470E-02 +0 10000 2 total 4.123893993086E-01 1.542527695832E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841994578091E-01 2.700101356101E-02 +13 10000 1 1 total P1 5.187028434601E-02 6.982548876132E-03 +14 10000 1 1 total P2 2.006884531999E-02 2.846495183290E-03 +15 10000 1 1 total P3 9.477715705594E-03 2.233519771809E-03 +8 10000 1 2 total P0 9.889303933311E-04 4.824194451197E-04 +9 10000 1 2 total P1 -2.072345964750E-04 1.490107753617E-04 +10 10000 1 2 total P2 -1.033661805408E-04 1.843163119237E-04 +11 10000 1 2 total P3 2.342906230372E-04 1.281731108336E-04 +4 10000 2 1 total P0 9.246399087638E-04 9.248834636439E-04 +5 10000 2 1 total P1 -7.677049684393E-04 7.679071858536E-04 +6 10000 2 1 total P2 4.937888718438E-04 4.939189383576E-04 +7 10000 2 1 total P3 -1.714972293226E-04 1.715424025697E-04 +0 10000 2 2 total P0 4.114647593999E-01 1.524493539575E-02 +1 10000 2 2 total P1 1.648172800670E-02 4.501727960784E-03 +2 10000 2 2 total P2 6.371490492824E-03 1.055074934137E-02 +3 10000 2 2 total P3 -1.049912208975E-02 1.043818771941E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841994578091E-01 2.700101356101E-02 +13 10000 1 1 total P1 5.187028434601E-02 6.982548876132E-03 +14 10000 1 1 total P2 2.006884531999E-02 2.846495183290E-03 +15 10000 1 1 total P3 9.477715705594E-03 2.233519771809E-03 +8 10000 1 2 total P0 9.889303933311E-04 4.824194451197E-04 +9 10000 1 2 total P1 -2.072345964750E-04 1.490107753617E-04 +10 10000 1 2 total P2 -1.033661805408E-04 1.843163119237E-04 +11 10000 1 2 total P3 2.342906230372E-04 1.281731108336E-04 +4 10000 2 1 total P0 9.246399087638E-04 9.248834636439E-04 +5 10000 2 1 total P1 -7.677049684393E-04 7.679071858536E-04 +6 10000 2 1 total P2 4.937888718438E-04 4.939189383576E-04 +7 10000 2 1 total P3 -1.714972293226E-04 1.715424025697E-04 +0 10000 2 2 total P0 4.114647593999E-01 1.524493539575E-02 +1 10000 2 2 total P1 1.648172800670E-02 4.501727960784E-03 +2 10000 2 2 total P2 6.371490492824E-03 1.055074934137E-02 +3 10000 2 2 total P3 -1.049912208975E-02 1.043818771941E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.000000000000E+00 7.851645500569E-02 +2 10000 1 2 total 1.000000000000E+00 6.871842709363E-01 +1 10000 2 1 total 1.000000000000E+00 1.414213562373E+00 +0 10000 2 2 total 1.000000000000E+00 4.113034880387E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.014242816319E-02 3.149091676274E-03 +2 10000 1 2 total 0.000000000000E+00 0.000000000000E+00 +1 10000 2 1 total 4.543664665592E-01 2.742550692485E-02 +0 10000 2 2 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000000000E+00 4.607052347202E-02 +0 10000 2 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000000000E+00 5.147145673440E-02 +0 10000 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.751521062040E+07 1.438175273899E+06 +0 10000 2 total 3.501719951940E+05 2.994593169671E+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.923922154603E-02 1.309505950104E-03 +0 10000 2 total 4.667190273544E-01 4.141087039944E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.137376709068E-01 1.558190235534E-02 +0 10001 2 total 3.008214016985E-01 2.805244843117E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732278720196E-01 3.311536644329E-02 +0 10001 2 total 3.123748362176E-01 4.960583170525E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732278720196E-01 3.311536644329E-02 +0 10001 2 total 3.123748362176E-01 4.960583170525E-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991390450E-03 3.225478906976E-04 +0 10001 2 total 5.400378832161E-03 6.181383082294E-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991390450E-03 3.225478906976E-04 +0 10001 2 total 5.400378832161E-03 6.181383082294E-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.121626795163E-01 1.532192309182E-02 +0 10001 2 total 2.954210228664E-01 2.744548888604E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.101207350756E-01 3.378810612250E-02 +0 10001 2 total 2.962642700008E-01 4.379222573274E-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207350756E-01 3.378810612250E-02 +13 10001 1 1 total P1 3.822959036236E-02 8.483997103450E-03 +14 10001 1 1 total P2 2.074494196965E-02 4.695610677417E-03 +15 10001 1 1 total P3 7.964296771745E-03 3.731622609987E-03 +8 10001 1 2 total P0 0.000000000000E+00 0.000000000000E+00 +9 10001 1 2 total P1 0.000000000000E+00 0.000000000000E+00 +10 10001 1 2 total P2 0.000000000000E+00 0.000000000000E+00 +11 10001 1 2 total P3 0.000000000000E+00 0.000000000000E+00 +4 10001 2 1 total P0 0.000000000000E+00 0.000000000000E+00 +5 10001 2 1 total P1 0.000000000000E+00 0.000000000000E+00 +6 10001 2 1 total P2 0.000000000000E+00 0.000000000000E+00 +7 10001 2 1 total P3 0.000000000000E+00 0.000000000000E+00 +0 10001 2 2 total P0 2.962642700008E-01 4.379222573274E-02 +1 10001 2 2 total P1 -1.121363613411E-02 1.618036648860E-02 +2 10001 2 2 total P2 8.836566298044E-03 1.150396445878E-02 +3 10001 2 2 total P3 -3.270067308815E-03 7.328845801518E-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207350756E-01 3.378810612250E-02 +13 10001 1 1 total P1 3.822959036236E-02 8.483997103450E-03 +14 10001 1 1 total P2 2.074494196965E-02 4.695610677417E-03 +15 10001 1 1 total P3 7.964296771745E-03 3.731622609987E-03 +8 10001 1 2 total P0 0.000000000000E+00 0.000000000000E+00 +9 10001 1 2 total P1 0.000000000000E+00 0.000000000000E+00 +10 10001 1 2 total P2 0.000000000000E+00 0.000000000000E+00 +11 10001 1 2 total P3 0.000000000000E+00 0.000000000000E+00 +4 10001 2 1 total P0 0.000000000000E+00 0.000000000000E+00 +5 10001 2 1 total P1 0.000000000000E+00 0.000000000000E+00 +6 10001 2 1 total P2 0.000000000000E+00 0.000000000000E+00 +7 10001 2 1 total P3 0.000000000000E+00 0.000000000000E+00 +0 10001 2 2 total P0 2.962642700008E-01 4.379222573274E-02 +1 10001 2 2 total P1 -1.121363613411E-02 1.618036648860E-02 +2 10001 2 2 total P2 8.836566298044E-03 1.150396445878E-02 +3 10001 2 2 total P3 -3.270067308815E-03 7.328845801518E-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.000000000000E+00 1.087786967284E-01 +2 10001 1 2 total 0.000000000000E+00 0.000000000000E+00 +1 10001 2 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 2 total 1.000000000000E+00 1.424271730547E-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.000000000000E+00 0.000000000000E+00 +2 10001 1 2 total 0.000000000000E+00 0.000000000000E+00 +1 10001 2 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 2 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.667783949737E+07 1.266444309518E+06 +0 10001 2 total 3.349533676013E+05 3.833678162570E+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000000E+00 0.000000000000E+00 +0 10001 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.645722606166E-01 3.121475191267E-02 +0 10002 2 total 2.052384013809E+00 2.243429067056E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905652574249E-01 2.385185464365E-02 +0 10002 2 total 1.516438012755E+00 2.351972685044E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905652574249E-01 2.385185464365E-02 +0 10002 2 total 1.516438012755E+00 2.351972685044E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995221868E-04 4.414756870586E-05 +0 10002 2 total 3.168725661415E-02 3.746558582378E-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995221868E-04 4.414756870586E-05 +0 10002 2 total 3.168725661415E-02 3.746558582378E-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000000E+00 0.000000000000E+00 +0 10002 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000000E+00 0.000000000000E+00 +0 10002 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000000E+00 0.000000000000E+00 +0 10002 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.638818610944E-01 3.117268400461E-02 +0 10002 2 total 2.020696757195E+00 2.206044538568E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.712692047144E-01 2.618637116860E-02 +0 10002 2 total 2.035388328756E+00 2.580603285630E-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399014848679E-01 2.470912279767E-02 +13 10002 1 1 total P1 3.811674488646E-01 1.624326492127E-02 +14 10002 1 1 total P2 1.523918978052E-01 8.156277703362E-03 +15 10002 1 1 total P3 9.148022288467E-03 3.888562141639E-03 +8 10002 1 2 total P0 3.136771984647E-02 1.728112903279E-03 +9 10002 1 2 total P1 8.757723206121E-03 9.256705011983E-04 +10 10002 1 2 total P2 -2.567901059674E-03 1.013984752076E-03 +11 10002 1 2 total P3 -3.784802881872E-03 8.170755708523E-04 +4 10002 2 1 total P0 4.433431341224E-04 4.448503933306E-04 +5 10002 2 1 total P1 3.999604142604E-04 4.013201827353E-04 +6 10002 2 1 total P2 3.195627072398E-04 3.206491429959E-04 +7 10002 2 1 total P3 2.138469692300E-04 2.145739970978E-04 +0 10002 2 2 total P0 2.034944985622E+00 2.577998889237E-01 +1 10002 2 2 total P1 5.099405131606E-01 5.123590629710E-02 +2 10002 2 2 total P2 1.111746088043E-01 1.301981703882E-02 +3 10002 2 2 total P3 2.498843573936E-02 8.312352562357E-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399014848679E-01 2.470912279767E-02 +13 10002 1 1 total P1 3.811674488646E-01 1.624326492127E-02 +14 10002 1 1 total P2 1.523918978052E-01 8.156277703362E-03 +15 10002 1 1 total P3 9.148022288467E-03 3.888562141639E-03 +8 10002 1 2 total P0 3.136771984647E-02 1.728112903279E-03 +9 10002 1 2 total P1 8.757723206121E-03 9.256705011983E-04 +10 10002 1 2 total P2 -2.567901059674E-03 1.013984752076E-03 +11 10002 1 2 total P3 -3.784802881872E-03 8.170755708523E-04 +4 10002 2 1 total P0 4.433431341224E-04 4.448503933306E-04 +5 10002 2 1 total P1 3.999604142604E-04 4.013201827353E-04 +6 10002 2 1 total P2 3.195627072398E-04 3.206491429959E-04 +7 10002 2 1 total P3 2.138469692300E-04 2.145739970978E-04 +0 10002 2 2 total P0 2.034944985622E+00 2.577998889237E-01 +1 10002 2 2 total P1 5.099405131606E-01 5.123590629710E-02 +2 10002 2 2 total P2 1.111746088043E-01 1.301981703882E-02 +3 10002 2 2 total P3 2.498843573936E-02 8.312352562357E-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.000000000000E+00 3.860919083686E-02 +2 10002 1 2 total 1.000000000000E+00 6.766734799959E-02 +1 10002 2 1 total 1.000000000000E+00 1.414213562373E+00 +0 10002 2 2 total 1.000000000000E+00 1.359292066059E-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.000000000000E+00 0.000000000000E+00 +2 10002 1 2 total 0.000000000000E+00 0.000000000000E+00 +1 10002 2 1 total 0.000000000000E+00 0.000000000000E+00 +0 10002 2 2 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000000000E+00 0.000000000000E+00 +0 10002 2 total 0.000000000000E+00 0.000000000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000000000E+00 0.000000000000E+00 +0 10002 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.660556287323E+07 1.042435523742E+06 +0 10002 2 total 3.284120386500E+05 3.882843572985E+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000000E+00 0.000000000000E+00 +0 10002 2 total 0.000000000000E+00 0.000000000000E+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 12ffe40ee8..9df9332537 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -07e9e894c9896879ff083e148a4a552b496802f7d88965e01eeb8b91d828bf740c17d2926d0fd0dcd457049b362ff10bec6cbe345ddcdf7d4695c0dc75fa7a78 \ No newline at end of file +77126dd5397ab86f69cbcd5d34949f5f4c1c3e270a7443b86655ec1dfc2db66056f731e4cc09a59bb01d74e17881165005c5ec0bf7b2ce953e39ef9aa336e0e8 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 133140999c..acdfcbc628 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,8 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.000000E+02 0.000000E+00 7.000000E+02 8.000000E+02] + Temperature = [5.000000000000E+02 0.000000000000E+00 7.000000000000E+02 + 8.000000000000E+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 365f1d775e..c42584db17 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -d5c21b44afd44a6e2be483090db0e2525d7d7cdbee1c02bee43621f1889193cc4712d74e28b3961a9ea9be093b33b56633046749a70f40c68982d6ca653d4cc1 \ No newline at end of file +dd7f3e79b255e4bdb9112cb06bb222d8489c597d48dbb310dd05a9f28ed451ade5d4ab65fe6b2ef5b1212d31b3e1942582cd32a3027a05515cc7317a496476bd \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 0f72dafa3c..67da96b247 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,200 @@ -[[[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] +[[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] ..., - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] ..., - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] ..., - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] ..., - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]]][[[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] ..., - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]] + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] - [[0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00] - [0.000000E+00 0.000000E+00 0.000000E+00]]] \ No newline at end of file + [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] + [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index a76260cbfd..097b2e01f7 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -14,8 +14,8 @@ import pandas as pd # Require numpy and pandas to print output in scientific notation to 6 decimal # places. This is needed to avoid round off error when large numbers are # printed, which can cause tests to fail for different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(x, '8.6E')}) -pd.set_option('display.float_format', lambda x: '%8.6E' % x) +np.set_printoptions(formatter={'float': lambda x: format(x, '14.12E')}) +pd.set_option('display.float_format', lambda x: '%14.12E' % x) sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 7e3a8ba44ebb3938d03faad87848c71123f73f59 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 08:10:11 -0600 Subject: [PATCH 31/82] simplified testing_harness.py lines on setting output precision and updated tests --- .../results_true.dat | 252 ++++----- tests/test_mgxs_library_hdf5/results_true.dat | 368 ++++++------- .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 3 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 274 ++++------ tests/testing_harness.py | 11 +- 8 files changed, 661 insertions(+), 767 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 4056ff2b9e..4f40b6b593 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.536244224711E-01 2.105269632534E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008521778843E-01 2.285755400331E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008521778843E-01 2.285755400331E-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.490345583241E-02 4.312761199548E-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.804806603393E-02 4.579963688736E-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.685538979848E-02 2.622159776243E-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.064928985756E-02 6.409874517029E-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955138087E+00 5.073638145538E-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.887209666387E-01 1.783042859910E-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.893035562819E-01 2.307553857261E-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893035562819E-01 2.314560462423E-02 -1 10000 1 1 total P1 4.622441783140E-02 5.907169556819E-03 -2 10000 1 1 total P2 1.798358502027E-02 2.882971981671E-03 -3 10000 1 1 total P3 6.628373513945E-03 2.457108983778E-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893035562819E-01 2.314560462423E-02 -1 10000 1 1 total P1 4.622441783140E-02 5.907169556819E-03 -2 10000 1 1 total P2 1.798358502027E-02 2.882971981671E-03 -3 10000 1 1 total P3 6.628373513945E-03 2.457108983778E-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.000000000000E+00 6.611082017312E-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.583501933699E-02 5.591824860711E-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000000000E+00 4.607052347202E-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000000000E+00 5.147145673440E-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.001308739748E+06 1.462165553647E+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.000397778775E-02 6.366907874267E-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.115941081024E-01 1.379316812822E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792550636912E-01 2.918950098026E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792550636912E-01 2.918950098026E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846401628E-03 2.863341266047E-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846401628E-03 2.863341266047E-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.093842617007E-01 1.355126749065E-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.079873494451E-01 2.930808850442E-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873494451E-01 2.930808850442E-02 -1 10001 1 1 total P1 3.061715325350E-02 7.464456011864E-03 -2 10001 1 1 total P2 1.891149040728E-02 4.322827732396E-03 -3 10001 1 1 total P3 6.234618187211E-03 3.338202280537E-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873494451E-01 2.930808850442E-02 -1 10001 1 1 total P1 3.061715325350E-02 7.464456011864E-03 -2 10001 1 1 total P2 1.891149040728E-02 4.322827732396E-03 -3 10001 1 1 total P3 6.234618187211E-03 3.338202280537E-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.000000000000E+00 9.503872150700E-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.833261152573E+06 1.663551745201E+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.049988333172E-01 4.396448759472E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991839826996E-01 4.091411960472E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991839826996E-01 4.091411960472E-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341157258E-03 5.545244242761E-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341157258E-03 5.545244242761E-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.989384921599E-01 4.349298417271E-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.034146631586E-01 4.395873707643E-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034146631586E-01 4.358599380352E-02 -1 10002 1 1 total P1 4.104174185899E-01 1.587722019436E-02 -2 10002 1 1 total P2 1.433010364745E-01 7.187377663475E-03 -3 10002 1 1 total P3 8.739426340561E-03 3.571441345040E-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034146631586E-01 4.358599380352E-02 -1 10002 1 1 total P1 4.104174185899E-01 1.587722019436E-02 -2 10002 1 1 total P2 1.433010364745E-01 7.187377663475E-03 -3 10002 1 1 total P3 8.739426340561E-03 3.571441345040E-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.000000000000E+00 5.686672530708E-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.732199699466E+06 1.596914264298E+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.53624422471e-01 2.10526963253e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852177884e-01 2.28575540033e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852177884e-01 2.28575540033e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.49034558324e-02 4.31276119955e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.80480660339e-02 4.57996368874e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.68553897985e-02 2.62215977624e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.06492898576e-02 6.40987451703e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.13795513809e+00 5.07363814554e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.88720966639e-01 1.78304285991e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.89303556282e-01 2.30755385726e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 +1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 +2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 +3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 +1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 +2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 +3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.00000000000e+00 6.61108201731e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.58350193370e-02 5.59182486071e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000000e+00 4.60705234720e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000000e+00 5.14714567344e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.00130873975e+06 1.46216555365e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.00039777878e-02 6.36690787427e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.11594108102e-01 1.37931681282e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255063691e-01 2.91895009803e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255063691e-01 2.91895009803e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984640163e-03 2.86334126605e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984640163e-03 2.86334126605e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.09384261701e-01 1.35512674907e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.07987349445e-01 2.93080885044e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 +1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 +2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 +3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 +1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 +2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 +3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.00000000000e+00 9.50387215070e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.83326115257e+06 1.66355174520e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.04998833317e-01 4.39644875947e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183982700e-01 4.09141196047e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183982700e-01 4.09141196047e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034115726e-03 5.54524424276e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034115726e-03 5.54524424276e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.98938492160e-01 4.34929841727e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.03414663159e-01 4.39587370764e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 +1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 +2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 +3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 +1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 +2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 +3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.00000000000e+00 5.68667253071e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.73219969947e+06 1.59691426430e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 05ceb00eb0..8c98999bd1 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,270 +1,230 @@ domain=10000 type=total -[4.148254902141E-01 6.601699186276E-01] -[2.279290909378E-02 4.751892790820E-02] +[4.14825490214e-01 6.60169918628e-01] +[2.27929090938e-02 4.75189279082e-02] domain=10000 type=transport -[3.568596371187E-01 6.476476600786E-01] -[2.549359557809E-02 2.370373520469E-02] +[3.56859637119e-01 6.47647660079e-01] +[2.54935955781e-02 2.37037352047e-02] domain=10000 type=nu-transport -[3.568596371187E-01 6.476476600786E-01] -[2.549359557809E-02 2.370373520469E-02] +[3.56859637119e-01 6.47647660079e-01] +[2.54935955781e-02 2.37037352047e-02] domain=10000 type=absorption -[2.740784492005E-02 2.645107416278E-01] -[2.692497109349E-03 2.336707739154E-02] +[2.74078449200e-02 2.64510741628e-01] +[2.69249710935e-03 2.33670773915e-02] domain=10000 type=capture -[1.984454994118E-02 7.171935292349E-02] -[2.643304328661E-03 2.520785935116E-02] +[1.98445499412e-02 7.17193529235e-02] +[2.64330432866e-03 2.52078593512e-02] domain=10000 type=fission -[7.563294978869E-03 1.927913887043E-01] -[5.084836779085E-04 1.710592186667E-02] +[7.56329497887e-03 1.92791388704e-01] +[5.08483677908e-04 1.71059218667e-02] domain=10000 type=nu-fission -[1.943174037197E-02 4.697747770257E-01] -[1.322975612220E-03 4.168199978316E-02] +[1.94317403720e-02 4.69774777026e-01] +[1.32297561222e-03 4.16819997832e-02] domain=10000 type=kappa-fission -[1.474569822554E+00 3.728689640721E+01] -[9.923532109630E-02 3.308377724530E+00] +[1.47456982255e+00 3.72868964072e+01] +[9.92353210963e-02 3.30837772453e+00] domain=10000 type=scatter -[3.874176452940E-01 3.956591769999E-01] -[2.062573210211E-02 2.512505678941E-02] +[3.87417645294e-01 3.95659177000e-01] +[2.06257321021e-02 2.51250567894e-02] domain=10000 type=nu-scatter -[3.851883882025E-01 4.123893993086E-01] -[2.694562106470E-02 1.542527695832E-02] +[3.85188388202e-01 4.12389399309e-01] +[2.69456210647e-02 1.54252769583e-02] domain=10000 type=scatter matrix -[[[3.841994578091E-01 5.187028434601E-02 2.006884531999E-02 - 9.477715705594E-03] - [9.889303933311E-04 -2.072345964750E-04 -1.033661805408E-04 - 2.342906230372E-04]] +[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] + [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 + 2.34290623037e-04]] - [[9.246399087638E-04 -7.677049684393E-04 4.937888718438E-04 - -1.714972293226E-04] - [4.114647593999E-01 1.648172800670E-02 6.371490492824E-03 - -1.049912208975E-02]]] -[[[2.700101356101E-02 6.982548876132E-03 2.846495183290E-03 - 2.233519771809E-03] - [4.824194451197E-04 1.490107753617E-04 1.843163119237E-04 - 1.281731108336E-04]] + [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 + -1.71497229323e-04] + [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] +[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] + [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] - [[9.248834636439E-04 7.679071858536E-04 4.939189383576E-04 - 1.715424025697E-04] - [1.524493539575E-02 4.501727960784E-03 1.055074934137E-02 - 1.043818771941E-02]]] + [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] + [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] domain=10000 type=nu-scatter matrix -[[[3.841994578091E-01 5.187028434601E-02 2.006884531999E-02 - 9.477715705594E-03] - [9.889303933311E-04 -2.072345964750E-04 -1.033661805408E-04 - 2.342906230372E-04]] +[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] + [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 + 2.34290623037e-04]] - [[9.246399087638E-04 -7.677049684393E-04 4.937888718438E-04 - -1.714972293226E-04] - [4.114647593999E-01 1.648172800670E-02 6.371490492824E-03 - -1.049912208975E-02]]] -[[[2.700101356101E-02 6.982548876132E-03 2.846495183290E-03 - 2.233519771809E-03] - [4.824194451197E-04 1.490107753617E-04 1.843163119237E-04 - 1.281731108336E-04]] + [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 + -1.71497229323e-04] + [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] +[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] + [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] - [[9.248834636439E-04 7.679071858536E-04 4.939189383576E-04 - 1.715424025697E-04] - [1.524493539575E-02 4.501727960784E-03 1.055074934137E-02 - 1.043818771941E-02]]] + [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] + [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] domain=10000 type=multiplicity matrix -[[1.000000000000E+00 1.000000000000E+00] - [1.000000000000E+00 1.000000000000E+00]] -[[7.851645500569E-02 6.871842709363E-01] - [1.414213562373E+00 4.113034880387E-02]] +[[1.00000000000e+00 1.00000000000e+00] + [1.00000000000e+00 1.00000000000e+00]] +[[7.85164550057e-02 6.87184270936e-01] + [1.41421356237e+00 4.11303488039e-02]] domain=10000 type=nu-fission matrix -[[2.014242816319E-02 0.000000000000E+00] - [4.543664665592E-01 0.000000000000E+00]] -[[3.149091676274E-03 0.000000000000E+00] - [2.742550692485E-02 0.000000000000E+00]] +[[2.01424281632e-02 0.00000000000e+00] + [4.54366466559e-01 0.00000000000e+00]] +[[3.14909167627e-03 0.00000000000e+00] + [2.74255069248e-02 0.00000000000e+00]] domain=10000 type=chi -[1.000000000000E+00 0.000000000000E+00] -[4.607052347202E-02 0.000000000000E+00] +[1.00000000000e+00 0.00000000000e+00] +[4.60705234720e-02 0.00000000000e+00] domain=10000 type=chi-prompt -[1.000000000000E+00 0.000000000000E+00] -[5.147145673440E-02 0.000000000000E+00] +[1.00000000000e+00 0.00000000000e+00] +[5.14714567344e-02 0.00000000000e+00] domain=10000 type=velocity -[1.751521062040E+07 3.501719951940E+05] -[1.438175273899E+06 2.994593169671E+04] +[1.75152106204e+07 3.50171995194e+05] +[1.43817527390e+06 2.99459316967e+04] domain=10000 type=prompt-nu-fission -[1.923922154603E-02 4.667190273544E-01] -[1.309505950104E-03 4.141087039944E-02] +[1.92392215460e-02 4.66719027354e-01] +[1.30950595010e-03 4.14108703994e-02] domain=10001 type=total -[3.137376709068E-01 3.008214016985E-01] -[1.558190235534E-02 2.805244843117E-02] +[3.13737670907e-01 3.00821401699e-01] +[1.55819023553e-02 2.80524484312e-02] domain=10001 type=transport -[2.732278720196E-01 3.123748362176E-01] -[3.311536644329E-02 4.960583170525E-02] +[2.73227872020e-01 3.12374836218e-01] +[3.31153664433e-02 4.96058317053e-02] domain=10001 type=nu-transport -[2.732278720196E-01 3.123748362176E-01] -[3.311536644329E-02 4.960583170525E-02] +[2.73227872020e-01 3.12374836218e-01] +[3.31153664433e-02 4.96058317053e-02] domain=10001 type=absorption -[1.574991390450E-03 5.400378832161E-03] -[3.225478906976E-04 6.181383082294E-04] +[1.57499139045e-03 5.40037883216e-03] +[3.22547890698e-04 6.18138308229e-04] domain=10001 type=capture -[1.574991390450E-03 5.400378832161E-03] -[3.225478906976E-04 6.181383082294E-04] +[1.57499139045e-03 5.40037883216e-03] +[3.22547890698e-04 6.18138308229e-04] domain=10001 type=fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=nu-fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=kappa-fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=scatter -[3.121626795163E-01 2.954210228664E-01] -[1.532192309182E-02 2.744548888604E-02] +[3.12162679516e-01 2.95421022866e-01] +[1.53219230918e-02 2.74454888860e-02] domain=10001 type=nu-scatter -[3.101207350756E-01 2.962642700008E-01] -[3.378810612250E-02 4.379222573274E-02] +[3.10120735076e-01 2.96264270001e-01] +[3.37881061225e-02 4.37922257327e-02] domain=10001 type=scatter matrix -[[[3.101207350756E-01 3.822959036236E-02 2.074494196965E-02 - 7.964296771745E-03] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] +[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [2.962642700008E-01 -1.121363613411E-02 8.836566298044E-03 - -3.270067308815E-03]]] -[[[3.378810612250E-02 8.483997103450E-03 4.695610677417E-03 - 3.731622609987E-03] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 + -3.27006730881e-03]]] +[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [4.379222573274E-02 1.618036648860E-02 1.150396445878E-02 - 7.328845801518E-03]]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] domain=10001 type=nu-scatter matrix -[[[3.101207350756E-01 3.822959036236E-02 2.074494196965E-02 - 7.964296771745E-03] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] +[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [2.962642700008E-01 -1.121363613411E-02 8.836566298044E-03 - -3.270067308815E-03]]] -[[[3.378810612250E-02 8.483997103450E-03 4.695610677417E-03 - 3.731622609987E-03] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 + -3.27006730881e-03]]] +[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [4.379222573274E-02 1.618036648860E-02 1.150396445878E-02 - 7.328845801518E-03]]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] domain=10001 type=multiplicity matrix -[[1.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 1.000000000000E+00]] -[[1.087786967284E-01 0.000000000000E+00] - [0.000000000000E+00 1.424271730547E-01]] +[[1.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 1.00000000000e+00]] +[[1.08778696728e-01 0.00000000000e+00] + [0.00000000000e+00 1.42427173055e-01]] domain=10001 type=nu-fission matrix -[[0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00]] -[[0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] domain=10001 type=chi -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=chi-prompt -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=velocity -[1.667783949737E+07 3.349533676013E+05] -[1.266444309518E+06 3.833678162570E+04] +[1.66778394974e+07 3.34953367601e+05] +[1.26644430952e+06 3.83367816257e+04] domain=10001 type=prompt-nu-fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=total -[6.645722606166E-01 2.052384013809E+00] -[3.121475191267E-02 2.243429067056E-01] +[6.64572260617e-01 2.05238401381e+00] +[3.12147519127e-02 2.24342906706e-01] domain=10002 type=transport -[2.905652574249E-01 1.516438012755E+00] -[2.385185464365E-02 2.351972685044E-01] +[2.90565257425e-01 1.51643801275e+00] +[2.38518546437e-02 2.35197268504e-01] domain=10002 type=nu-transport -[2.905652574249E-01 1.516438012755E+00] -[2.385185464365E-02 2.351972685044E-01] +[2.90565257425e-01 1.51643801275e+00] +[2.38518546437e-02 2.35197268504e-01] domain=10002 type=absorption -[6.903995221868E-04 3.168725661415E-02] -[4.414756870586E-05 3.746558582378E-03] +[6.90399522187e-04 3.16872566141e-02] +[4.41475687059e-05 3.74655858238e-03] domain=10002 type=capture -[6.903995221868E-04 3.168725661415E-02] -[4.414756870586E-05 3.746558582378E-03] +[6.90399522187e-04 3.16872566141e-02] +[4.41475687059e-05 3.74655858238e-03] domain=10002 type=fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=nu-fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=kappa-fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=scatter -[6.638818610944E-01 2.020696757195E+00] -[3.117268400461E-02 2.206044538568E-01] +[6.63881861094e-01 2.02069675720e+00] +[3.11726840046e-02 2.20604453857e-01] domain=10002 type=nu-scatter -[6.712692047144E-01 2.035388328756E+00] -[2.618637116860E-02 2.580603285630E-01] +[6.71269204714e-01 2.03538832876e+00] +[2.61863711686e-02 2.58060328563e-01] domain=10002 type=scatter matrix -[[[6.399014848679E-01 3.811674488646E-01 1.523918978052E-01 - 9.148022288467E-03] - [3.136771984647E-02 8.757723206121E-03 -2.567901059674E-03 - -3.784802881872E-03]] +[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] + [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 + -3.78480288187e-03]] - [[4.433431341224E-04 3.999604142604E-04 3.195627072398E-04 - 2.138469692300E-04] - [2.034944985622E+00 5.099405131606E-01 1.111746088043E-01 - 2.498843573936E-02]]] -[[[2.470912279767E-02 1.624326492127E-02 8.156277703362E-03 - 3.888562141639E-03] - [1.728112903279E-03 9.256705011983E-04 1.013984752076E-03 - 8.170755708523E-04]] + [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] + [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] +[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] + [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] - [[4.448503933306E-04 4.013201827353E-04 3.206491429959E-04 - 2.145739970978E-04] - [2.577998889237E-01 5.123590629710E-02 1.301981703882E-02 - 8.312352562357E-03]]] + [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] + [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] domain=10002 type=nu-scatter matrix -[[[6.399014848679E-01 3.811674488646E-01 1.523918978052E-01 - 9.148022288467E-03] - [3.136771984647E-02 8.757723206121E-03 -2.567901059674E-03 - -3.784802881872E-03]] +[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] + [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 + -3.78480288187e-03]] - [[4.433431341224E-04 3.999604142604E-04 3.195627072398E-04 - 2.138469692300E-04] - [2.034944985622E+00 5.099405131606E-01 1.111746088043E-01 - 2.498843573936E-02]]] -[[[2.470912279767E-02 1.624326492127E-02 8.156277703362E-03 - 3.888562141639E-03] - [1.728112903279E-03 9.256705011983E-04 1.013984752076E-03 - 8.170755708523E-04]] + [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] + [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] +[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] + [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] - [[4.448503933306E-04 4.013201827353E-04 3.206491429959E-04 - 2.145739970978E-04] - [2.577998889237E-01 5.123590629710E-02 1.301981703882E-02 - 8.312352562357E-03]]] + [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] + [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] domain=10002 type=multiplicity matrix -[[1.000000000000E+00 1.000000000000E+00] - [1.000000000000E+00 1.000000000000E+00]] -[[3.860919083686E-02 6.766734799959E-02] - [1.414213562373E+00 1.359292066059E-01]] +[[1.00000000000e+00 1.00000000000e+00] + [1.00000000000e+00 1.00000000000e+00]] +[[3.86091908369e-02 6.76673479996e-02] + [1.41421356237e+00 1.35929206606e-01]] domain=10002 type=nu-fission matrix -[[0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00]] -[[0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] domain=10002 type=chi -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=chi-prompt -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=velocity -[1.660556287323E+07 3.284120386500E+05] -[1.042435523742E+06 3.882843572985E+04] +[1.66055628732e+07 3.28412038650e+05] +[1.04243552374e+06 3.88284357298e+04] domain=10002 type=prompt-nu-fission -[0.000000000000E+00 0.000000000000E+00] -[0.000000000000E+00 0.000000000000E+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 453219e04b..d3b0cc0810 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.148254902141E-01 2.279290909378E-02 -0 10000 2 total 6.601699186276E-01 4.751892790820E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596371187E-01 2.549359557809E-02 -0 10000 2 total 6.476476600786E-01 2.370373520469E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596371187E-01 2.549359557809E-02 -0 10000 2 total 6.476476600786E-01 2.370373520469E-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.740784492005E-02 2.692497109349E-03 -0 10000 2 total 2.645107416278E-01 2.336707739154E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.984454994118E-02 2.643304328661E-03 -0 10000 2 total 7.171935292349E-02 2.520785935116E-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.563294978869E-03 5.084836779085E-04 -0 10000 2 total 1.927913887043E-01 1.710592186667E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.943174037197E-02 1.322975612220E-03 -0 10000 2 total 4.697747770257E-01 4.168199978316E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.474569822554E+00 9.923532109630E-02 -0 10000 2 total 3.728689640721E+01 3.308377724530E+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.874176452940E-01 2.062573210211E-02 -0 10000 2 total 3.956591769999E-01 2.512505678941E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.851883882025E-01 2.694562106470E-02 -0 10000 2 total 4.123893993086E-01 1.542527695832E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841994578091E-01 2.700101356101E-02 -13 10000 1 1 total P1 5.187028434601E-02 6.982548876132E-03 -14 10000 1 1 total P2 2.006884531999E-02 2.846495183290E-03 -15 10000 1 1 total P3 9.477715705594E-03 2.233519771809E-03 -8 10000 1 2 total P0 9.889303933311E-04 4.824194451197E-04 -9 10000 1 2 total P1 -2.072345964750E-04 1.490107753617E-04 -10 10000 1 2 total P2 -1.033661805408E-04 1.843163119237E-04 -11 10000 1 2 total P3 2.342906230372E-04 1.281731108336E-04 -4 10000 2 1 total P0 9.246399087638E-04 9.248834636439E-04 -5 10000 2 1 total P1 -7.677049684393E-04 7.679071858536E-04 -6 10000 2 1 total P2 4.937888718438E-04 4.939189383576E-04 -7 10000 2 1 total P3 -1.714972293226E-04 1.715424025697E-04 -0 10000 2 2 total P0 4.114647593999E-01 1.524493539575E-02 -1 10000 2 2 total P1 1.648172800670E-02 4.501727960784E-03 -2 10000 2 2 total P2 6.371490492824E-03 1.055074934137E-02 -3 10000 2 2 total P3 -1.049912208975E-02 1.043818771941E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841994578091E-01 2.700101356101E-02 -13 10000 1 1 total P1 5.187028434601E-02 6.982548876132E-03 -14 10000 1 1 total P2 2.006884531999E-02 2.846495183290E-03 -15 10000 1 1 total P3 9.477715705594E-03 2.233519771809E-03 -8 10000 1 2 total P0 9.889303933311E-04 4.824194451197E-04 -9 10000 1 2 total P1 -2.072345964750E-04 1.490107753617E-04 -10 10000 1 2 total P2 -1.033661805408E-04 1.843163119237E-04 -11 10000 1 2 total P3 2.342906230372E-04 1.281731108336E-04 -4 10000 2 1 total P0 9.246399087638E-04 9.248834636439E-04 -5 10000 2 1 total P1 -7.677049684393E-04 7.679071858536E-04 -6 10000 2 1 total P2 4.937888718438E-04 4.939189383576E-04 -7 10000 2 1 total P3 -1.714972293226E-04 1.715424025697E-04 -0 10000 2 2 total P0 4.114647593999E-01 1.524493539575E-02 -1 10000 2 2 total P1 1.648172800670E-02 4.501727960784E-03 -2 10000 2 2 total P2 6.371490492824E-03 1.055074934137E-02 -3 10000 2 2 total P3 -1.049912208975E-02 1.043818771941E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.000000000000E+00 7.851645500569E-02 -2 10000 1 2 total 1.000000000000E+00 6.871842709363E-01 -1 10000 2 1 total 1.000000000000E+00 1.414213562373E+00 -0 10000 2 2 total 1.000000000000E+00 4.113034880387E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.014242816319E-02 3.149091676274E-03 -2 10000 1 2 total 0.000000000000E+00 0.000000000000E+00 -1 10000 2 1 total 4.543664665592E-01 2.742550692485E-02 -0 10000 2 2 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000000000E+00 4.607052347202E-02 -0 10000 2 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000000000E+00 5.147145673440E-02 -0 10000 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.751521062040E+07 1.438175273899E+06 -0 10000 2 total 3.501719951940E+05 2.994593169671E+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.923922154603E-02 1.309505950104E-03 -0 10000 2 total 4.667190273544E-01 4.141087039944E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.137376709068E-01 1.558190235534E-02 -0 10001 2 total 3.008214016985E-01 2.805244843117E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732278720196E-01 3.311536644329E-02 -0 10001 2 total 3.123748362176E-01 4.960583170525E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732278720196E-01 3.311536644329E-02 -0 10001 2 total 3.123748362176E-01 4.960583170525E-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991390450E-03 3.225478906976E-04 -0 10001 2 total 5.400378832161E-03 6.181383082294E-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991390450E-03 3.225478906976E-04 -0 10001 2 total 5.400378832161E-03 6.181383082294E-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.121626795163E-01 1.532192309182E-02 -0 10001 2 total 2.954210228664E-01 2.744548888604E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.101207350756E-01 3.378810612250E-02 -0 10001 2 total 2.962642700008E-01 4.379222573274E-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207350756E-01 3.378810612250E-02 -13 10001 1 1 total P1 3.822959036236E-02 8.483997103450E-03 -14 10001 1 1 total P2 2.074494196965E-02 4.695610677417E-03 -15 10001 1 1 total P3 7.964296771745E-03 3.731622609987E-03 -8 10001 1 2 total P0 0.000000000000E+00 0.000000000000E+00 -9 10001 1 2 total P1 0.000000000000E+00 0.000000000000E+00 -10 10001 1 2 total P2 0.000000000000E+00 0.000000000000E+00 -11 10001 1 2 total P3 0.000000000000E+00 0.000000000000E+00 -4 10001 2 1 total P0 0.000000000000E+00 0.000000000000E+00 -5 10001 2 1 total P1 0.000000000000E+00 0.000000000000E+00 -6 10001 2 1 total P2 0.000000000000E+00 0.000000000000E+00 -7 10001 2 1 total P3 0.000000000000E+00 0.000000000000E+00 -0 10001 2 2 total P0 2.962642700008E-01 4.379222573274E-02 -1 10001 2 2 total P1 -1.121363613411E-02 1.618036648860E-02 -2 10001 2 2 total P2 8.836566298044E-03 1.150396445878E-02 -3 10001 2 2 total P3 -3.270067308815E-03 7.328845801518E-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207350756E-01 3.378810612250E-02 -13 10001 1 1 total P1 3.822959036236E-02 8.483997103450E-03 -14 10001 1 1 total P2 2.074494196965E-02 4.695610677417E-03 -15 10001 1 1 total P3 7.964296771745E-03 3.731622609987E-03 -8 10001 1 2 total P0 0.000000000000E+00 0.000000000000E+00 -9 10001 1 2 total P1 0.000000000000E+00 0.000000000000E+00 -10 10001 1 2 total P2 0.000000000000E+00 0.000000000000E+00 -11 10001 1 2 total P3 0.000000000000E+00 0.000000000000E+00 -4 10001 2 1 total P0 0.000000000000E+00 0.000000000000E+00 -5 10001 2 1 total P1 0.000000000000E+00 0.000000000000E+00 -6 10001 2 1 total P2 0.000000000000E+00 0.000000000000E+00 -7 10001 2 1 total P3 0.000000000000E+00 0.000000000000E+00 -0 10001 2 2 total P0 2.962642700008E-01 4.379222573274E-02 -1 10001 2 2 total P1 -1.121363613411E-02 1.618036648860E-02 -2 10001 2 2 total P2 8.836566298044E-03 1.150396445878E-02 -3 10001 2 2 total P3 -3.270067308815E-03 7.328845801518E-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.000000000000E+00 1.087786967284E-01 -2 10001 1 2 total 0.000000000000E+00 0.000000000000E+00 -1 10001 2 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 2 total 1.000000000000E+00 1.424271730547E-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.000000000000E+00 0.000000000000E+00 -2 10001 1 2 total 0.000000000000E+00 0.000000000000E+00 -1 10001 2 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 2 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.667783949737E+07 1.266444309518E+06 -0 10001 2 total 3.349533676013E+05 3.833678162570E+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000000E+00 0.000000000000E+00 -0 10001 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.645722606166E-01 3.121475191267E-02 -0 10002 2 total 2.052384013809E+00 2.243429067056E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905652574249E-01 2.385185464365E-02 -0 10002 2 total 1.516438012755E+00 2.351972685044E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905652574249E-01 2.385185464365E-02 -0 10002 2 total 1.516438012755E+00 2.351972685044E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995221868E-04 4.414756870586E-05 -0 10002 2 total 3.168725661415E-02 3.746558582378E-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995221868E-04 4.414756870586E-05 -0 10002 2 total 3.168725661415E-02 3.746558582378E-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000000E+00 0.000000000000E+00 -0 10002 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000000E+00 0.000000000000E+00 -0 10002 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000000E+00 0.000000000000E+00 -0 10002 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.638818610944E-01 3.117268400461E-02 -0 10002 2 total 2.020696757195E+00 2.206044538568E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.712692047144E-01 2.618637116860E-02 -0 10002 2 total 2.035388328756E+00 2.580603285630E-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399014848679E-01 2.470912279767E-02 -13 10002 1 1 total P1 3.811674488646E-01 1.624326492127E-02 -14 10002 1 1 total P2 1.523918978052E-01 8.156277703362E-03 -15 10002 1 1 total P3 9.148022288467E-03 3.888562141639E-03 -8 10002 1 2 total P0 3.136771984647E-02 1.728112903279E-03 -9 10002 1 2 total P1 8.757723206121E-03 9.256705011983E-04 -10 10002 1 2 total P2 -2.567901059674E-03 1.013984752076E-03 -11 10002 1 2 total P3 -3.784802881872E-03 8.170755708523E-04 -4 10002 2 1 total P0 4.433431341224E-04 4.448503933306E-04 -5 10002 2 1 total P1 3.999604142604E-04 4.013201827353E-04 -6 10002 2 1 total P2 3.195627072398E-04 3.206491429959E-04 -7 10002 2 1 total P3 2.138469692300E-04 2.145739970978E-04 -0 10002 2 2 total P0 2.034944985622E+00 2.577998889237E-01 -1 10002 2 2 total P1 5.099405131606E-01 5.123590629710E-02 -2 10002 2 2 total P2 1.111746088043E-01 1.301981703882E-02 -3 10002 2 2 total P3 2.498843573936E-02 8.312352562357E-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399014848679E-01 2.470912279767E-02 -13 10002 1 1 total P1 3.811674488646E-01 1.624326492127E-02 -14 10002 1 1 total P2 1.523918978052E-01 8.156277703362E-03 -15 10002 1 1 total P3 9.148022288467E-03 3.888562141639E-03 -8 10002 1 2 total P0 3.136771984647E-02 1.728112903279E-03 -9 10002 1 2 total P1 8.757723206121E-03 9.256705011983E-04 -10 10002 1 2 total P2 -2.567901059674E-03 1.013984752076E-03 -11 10002 1 2 total P3 -3.784802881872E-03 8.170755708523E-04 -4 10002 2 1 total P0 4.433431341224E-04 4.448503933306E-04 -5 10002 2 1 total P1 3.999604142604E-04 4.013201827353E-04 -6 10002 2 1 total P2 3.195627072398E-04 3.206491429959E-04 -7 10002 2 1 total P3 2.138469692300E-04 2.145739970978E-04 -0 10002 2 2 total P0 2.034944985622E+00 2.577998889237E-01 -1 10002 2 2 total P1 5.099405131606E-01 5.123590629710E-02 -2 10002 2 2 total P2 1.111746088043E-01 1.301981703882E-02 -3 10002 2 2 total P3 2.498843573936E-02 8.312352562357E-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.000000000000E+00 3.860919083686E-02 -2 10002 1 2 total 1.000000000000E+00 6.766734799959E-02 -1 10002 2 1 total 1.000000000000E+00 1.414213562373E+00 -0 10002 2 2 total 1.000000000000E+00 1.359292066059E-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.000000000000E+00 0.000000000000E+00 -2 10002 1 2 total 0.000000000000E+00 0.000000000000E+00 -1 10002 2 1 total 0.000000000000E+00 0.000000000000E+00 -0 10002 2 2 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000000000E+00 0.000000000000E+00 -0 10002 2 total 0.000000000000E+00 0.000000000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000000000E+00 0.000000000000E+00 -0 10002 2 total 0.000000000000E+00 0.000000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.660556287323E+07 1.042435523742E+06 -0 10002 2 total 3.284120386500E+05 3.882843572985E+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000000E+00 0.000000000000E+00 -0 10002 2 total 0.000000000000E+00 0.000000000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.14825490214e-01 2.27929090938e-02 +0 10000 2 total 6.60169918628e-01 4.75189279082e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637119e-01 2.54935955781e-02 +0 10000 2 total 6.47647660079e-01 2.37037352047e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637119e-01 2.54935955781e-02 +0 10000 2 total 6.47647660079e-01 2.37037352047e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.74078449200e-02 2.69249710935e-03 +0 10000 2 total 2.64510741628e-01 2.33670773915e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.98445499412e-02 2.64330432866e-03 +0 10000 2 total 7.17193529235e-02 2.52078593512e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.56329497887e-03 5.08483677908e-04 +0 10000 2 total 1.92791388704e-01 1.71059218667e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.94317403720e-02 1.32297561222e-03 +0 10000 2 total 4.69774777026e-01 4.16819997832e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.47456982255e+00 9.92353210963e-02 +0 10000 2 total 3.72868964072e+01 3.30837772453e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.87417645294e-01 2.06257321021e-02 +0 10000 2 total 3.95659177000e-01 2.51250567894e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.85188388202e-01 2.69456210647e-02 +0 10000 2 total 4.12389399309e-01 1.54252769583e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 +13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 +14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 +15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 +8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 +9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 +10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 +11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 +4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 +5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 +6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 +7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 +0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 +1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 +2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 +3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 +13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 +14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 +15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 +8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 +9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 +10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 +11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 +4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 +5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 +6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 +7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 +0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 +1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 +2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 +3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.00000000000e+00 7.85164550057e-02 +2 10000 1 2 total 1.00000000000e+00 6.87184270936e-01 +1 10000 2 1 total 1.00000000000e+00 1.41421356237e+00 +0 10000 2 2 total 1.00000000000e+00 4.11303488039e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.01424281632e-02 3.14909167627e-03 +2 10000 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10000 2 1 total 4.54366466559e-01 2.74255069248e-02 +0 10000 2 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000000e+00 4.60705234720e-02 +0 10000 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000000e+00 5.14714567344e-02 +0 10000 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.75152106204e+07 1.43817527390e+06 +0 10000 2 total 3.50171995194e+05 2.99459316967e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.92392215460e-02 1.30950595010e-03 +0 10000 2 total 4.66719027354e-01 4.14108703994e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.13737670907e-01 1.55819023553e-02 +0 10001 2 total 3.00821401699e-01 2.80524484312e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872020e-01 3.31153664433e-02 +0 10001 2 total 3.12374836218e-01 4.96058317053e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872020e-01 3.31153664433e-02 +0 10001 2 total 3.12374836218e-01 4.96058317053e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499139045e-03 3.22547890698e-04 +0 10001 2 total 5.40037883216e-03 6.18138308229e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499139045e-03 3.22547890698e-04 +0 10001 2 total 5.40037883216e-03 6.18138308229e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.12162679516e-01 1.53219230918e-02 +0 10001 2 total 2.95421022866e-01 2.74454888860e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.10120735076e-01 3.37881061225e-02 +0 10001 2 total 2.96264270001e-01 4.37922257327e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 +13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 +14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 +15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 +8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 +9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 +10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 +11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 +4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 +5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 +6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 +7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 +1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 +2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 +3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 +13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 +14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 +15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 +8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 +9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 +10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 +11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 +4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 +5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 +6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 +7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 +1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 +2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 +3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.00000000000e+00 1.08778696728e-01 +2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total 1.00000000000e+00 1.42427173055e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 +2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.66778394974e+07 1.26644430952e+06 +0 10001 2 total 3.34953367601e+05 3.83367816257e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.64572260617e-01 3.12147519127e-02 +0 10002 2 total 2.05238401381e+00 2.24342906706e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257425e-01 2.38518546437e-02 +0 10002 2 total 1.51643801275e+00 2.35197268504e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257425e-01 2.38518546437e-02 +0 10002 2 total 1.51643801275e+00 2.35197268504e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.90399522187e-04 4.41475687059e-05 +0 10002 2 total 3.16872566141e-02 3.74655858238e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.90399522187e-04 4.41475687059e-05 +0 10002 2 total 3.16872566141e-02 3.74655858238e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.63881861094e-01 3.11726840046e-02 +0 10002 2 total 2.02069675720e+00 2.20604453857e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.71269204714e-01 2.61863711686e-02 +0 10002 2 total 2.03538832876e+00 2.58060328563e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 +13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 +14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 +15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 +8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 +9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 +10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 +11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 +4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 +5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 +6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 +7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 +0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 +1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 +2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 +3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 +13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 +14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 +15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 +8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 +9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 +10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 +11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 +4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 +5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 +6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 +7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 +0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 +1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 +2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 +3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.00000000000e+00 3.86091908369e-02 +2 10002 1 2 total 1.00000000000e+00 6.76673479996e-02 +1 10002 2 1 total 1.00000000000e+00 1.41421356237e+00 +0 10002 2 2 total 1.00000000000e+00 1.35929206606e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 +2 10002 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10002 2 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.66055628732e+07 1.04243552374e+06 +0 10002 2 total 3.28412038650e+05 3.88284357298e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 9df9332537..bb7af4b914 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -77126dd5397ab86f69cbcd5d34949f5f4c1c3e270a7443b86655ec1dfc2db66056f731e4cc09a59bb01d74e17881165005c5ec0bf7b2ce953e39ef9aa336e0e8 \ No newline at end of file +22b9df6898dbc9b229e25613a082c6efafa9bd64927788b3f2600ad5c900c91cf2367eb80bf58573306a4fcda21aad04c2705cb7e35a444e306bbb2b88d3f823 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index acdfcbc628..cbb1a86543 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,8 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.000000000000E+02 0.000000000000E+00 7.000000000000E+02 - 8.000000000000E+02] + Temperature = [5.00000000000e+02 0.00000000000e+00 7.00000000000e+02 8.00000000000e+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index c42584db17..e012e108ab 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -dd7f3e79b255e4bdb9112cb06bb222d8489c597d48dbb310dd05a9f28ed451ade5d4ab65fe6b2ef5b1212d31b3e1942582cd32a3027a05515cc7317a496476bd \ No newline at end of file +baf9c5d2cea02655d4810cbe345b43ef7bd91aa5760d82561396eac4ca2b5e71d1505a2e3f0f741e50fd621c479b0b2c059bb837b11841abb972a2554fc5020d \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 67da96b247..369c061d41 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,200 +1,134 @@ -[[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] +[[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 - 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]]][[[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00] - [0.000000000000E+00 0.000000000000E+00 0.000000000000E+00]]] \ No newline at end of file + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 097b2e01f7..e0add432af 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,11 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation to 6 decimal -# places. This is needed to avoid round off error when large numbers are -# printed, which can cause tests to fail for different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(x, '14.12E')}) -pd.set_option('display.float_format', lambda x: '%14.12E' % x) +# Require numpy and pandas to print output in scientific notation with 12 +# significant figures. This is needed to avoid round off error when large +# numbers are printed, which can cause tests to fail for different build +# configurations. +np.set_printoptions(formatter={'float': '{:.11e}'.format}) +pd.options.display.float_format = '{:.11e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 4ca1b7de81a6d56cce6be8bd4cd6a178922d7953 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 08:37:33 -0600 Subject: [PATCH 32/82] changed number of sig figs in testing harness from 12 to 10 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 320 ++++++----- .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 6 +- 8 files changed, 691 insertions(+), 699 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 4f40b6b593..c15db2fdaa 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.53624422471e-01 2.10526963253e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852177884e-01 2.28575540033e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852177884e-01 2.28575540033e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.49034558324e-02 4.31276119955e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.80480660339e-02 4.57996368874e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.68553897985e-02 2.62215977624e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.06492898576e-02 6.40987451703e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.13795513809e+00 5.07363814554e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.88720966639e-01 1.78304285991e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.89303556282e-01 2.30755385726e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 -1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 -2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 -3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 -1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 -2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 -3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.00000000000e+00 6.61108201731e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.58350193370e-02 5.59182486071e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000000e+00 4.60705234720e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000000e+00 5.14714567344e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.00130873975e+06 1.46216555365e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.00039777878e-02 6.36690787427e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.11594108102e-01 1.37931681282e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255063691e-01 2.91895009803e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255063691e-01 2.91895009803e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984640163e-03 2.86334126605e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984640163e-03 2.86334126605e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.09384261701e-01 1.35512674907e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.07987349445e-01 2.93080885044e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 -1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 -2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 -3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 -1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 -2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 -3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.00000000000e+00 9.50387215070e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.83326115257e+06 1.66355174520e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.04998833317e-01 4.39644875947e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183982700e-01 4.09141196047e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183982700e-01 4.09141196047e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034115726e-03 5.54524424276e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034115726e-03 5.54524424276e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.98938492160e-01 4.34929841727e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.03414663159e-01 4.39587370764e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 -1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 -2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 -3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 -1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 -2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 -3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.00000000000e+00 5.68667253071e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.73219969947e+06 1.59691426430e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.536244225e-01 2.105269633e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008521779e-01 2.285755400e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008521779e-01 2.285755400e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.490345583e-02 4.312761200e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.804806603e-02 4.579963689e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.685538980e-02 2.622159776e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.064928986e-02 6.409874517e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955138e+00 5.073638146e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.887209666e-01 1.783042860e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.893035563e-01 2.307553857e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893035563e-01 2.314560462e-02 +1 10000 1 1 total P1 4.622441783e-02 5.907169557e-03 +2 10000 1 1 total P2 1.798358502e-02 2.882971982e-03 +3 10000 1 1 total P3 6.628373514e-03 2.457108984e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893035563e-01 2.314560462e-02 +1 10000 1 1 total P1 4.622441783e-02 5.907169557e-03 +2 10000 1 1 total P2 1.798358502e-02 2.882971982e-03 +3 10000 1 1 total P3 6.628373514e-03 2.457108984e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.000000000e+00 6.611082017e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.583501934e-02 5.591824861e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000000e+00 4.607052347e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000000e+00 5.147145673e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.001308740e+06 1.462165554e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.000397779e-02 6.366907874e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.115941081e-01 1.379316813e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792550637e-01 2.918950098e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792550637e-01 2.918950098e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846402e-03 2.863341266e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846402e-03 2.863341266e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.093842617e-01 1.355126749e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.079873494e-01 2.930808850e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873494e-01 2.930808850e-02 +1 10001 1 1 total P1 3.061715325e-02 7.464456012e-03 +2 10001 1 1 total P2 1.891149041e-02 4.322827732e-03 +3 10001 1 1 total P3 6.234618187e-03 3.338202281e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873494e-01 2.930808850e-02 +1 10001 1 1 total P1 3.061715325e-02 7.464456012e-03 +2 10001 1 1 total P2 1.891149041e-02 4.322827732e-03 +3 10001 1 1 total P3 6.234618187e-03 3.338202281e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.000000000e+00 9.503872151e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.833261153e+06 1.663551745e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.049988333e-01 4.396448759e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991839827e-01 4.091411960e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991839827e-01 4.091411960e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341157e-03 5.545244243e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341157e-03 5.545244243e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.989384922e-01 4.349298417e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.034146632e-01 4.395873708e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034146632e-01 4.358599380e-02 +1 10002 1 1 total P1 4.104174186e-01 1.587722019e-02 +2 10002 1 1 total P2 1.433010365e-01 7.187377663e-03 +3 10002 1 1 total P3 8.739426341e-03 3.571441345e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034146632e-01 4.358599380e-02 +1 10002 1 1 total P1 4.104174186e-01 1.587722019e-02 +2 10002 1 1 total P2 1.433010365e-01 7.187377663e-03 +3 10002 1 1 total P3 8.739426341e-03 3.571441345e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.000000000e+00 5.686672531e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.732199699e+06 1.596914264e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000e+00 0.000000000e+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index e7493f4d72..9908bb1a00 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.145934000527E+00 5.538216946848E-01 - 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.189191989776E-01 5.206442559331E-01 - 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.189191989776E-01 5.206442559331E-01 - 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.976220611460E-02 1.062876409255E-02 - 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.976220611460E-02 1.062876409255E-02 - 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.000000000000E+00 0.000000000000E+00 - 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.000000000000E+00 0.000000000000E+00 - 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.000000000000E+00 0.000000000000E+00 - 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.126171794412E+00 5.434400083985E-01 - 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.142546919110E+00 5.701313898558E-01 - 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.142546919110E+00 5.701313898558E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943346E-01 2.163221683070E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934151E-01 6.650377258083E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827041877E-02 2.462083232034E-02 - 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.142546919110E+00 5.701313898558E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943346E-01 2.163221683070E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934151E-01 6.650377258083E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827041877E-02 2.462083232034E-02 - 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.000000000000E+00 5.297173273743E-01 - 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.000000000000E+00 0.000000000000E+00 - 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.000000000000E+00 0.000000000000E+00 - 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.000000000000E+00 0.000000000000E+00 - 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.742457144820E+05 4.163976915995E+05 - 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.000000000000E+00 0.000000000000E+00 + 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.145934001e+00 5.538216947e-01 + 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.189191990e-01 5.206442559e-01 + 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.189191990e-01 5.206442559e-01 + 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.976220611e-02 1.062876409e-02 + 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.976220611e-02 1.062876409e-02 + 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.000000000e+00 0.000000000e+00 + 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.000000000e+00 0.000000000e+00 + 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.000000000e+00 0.000000000e+00 + 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.126171794e+00 5.434400084e-01 + 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.142546919e+00 5.701313899e-01 + 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.142546919e+00 5.701313899e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943e-01 2.163221683e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934e-01 6.650377258e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827042e-02 2.462083232e-02 + 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.142546919e+00 5.701313899e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943e-01 2.163221683e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934e-01 6.650377258e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827042e-02 2.462083232e-02 + 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.000000000e+00 5.297173274e-01 + 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.000000000e+00 0.000000000e+00 + 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.000000000e+00 0.000000000e+00 + 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.000000000e+00 0.000000000e+00 + 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.742457145e+05 4.163976916e+05 + 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.000000000e+00 0.000000000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 8c98999bd1..fa0f37f4c5 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,230 +1,222 @@ domain=10000 type=total -[4.14825490214e-01 6.60169918628e-01] -[2.27929090938e-02 4.75189279082e-02] +[4.148254902e-01 6.601699186e-01] +[2.279290909e-02 4.751892791e-02] domain=10000 type=transport -[3.56859637119e-01 6.47647660079e-01] -[2.54935955781e-02 2.37037352047e-02] +[3.568596371e-01 6.476476601e-01] +[2.549359558e-02 2.370373520e-02] domain=10000 type=nu-transport -[3.56859637119e-01 6.47647660079e-01] -[2.54935955781e-02 2.37037352047e-02] +[3.568596371e-01 6.476476601e-01] +[2.549359558e-02 2.370373520e-02] domain=10000 type=absorption -[2.74078449200e-02 2.64510741628e-01] -[2.69249710935e-03 2.33670773915e-02] +[2.740784492e-02 2.645107416e-01] +[2.692497109e-03 2.336707739e-02] domain=10000 type=capture -[1.98445499412e-02 7.17193529235e-02] -[2.64330432866e-03 2.52078593512e-02] +[1.984454994e-02 7.171935292e-02] +[2.643304329e-03 2.520785935e-02] domain=10000 type=fission -[7.56329497887e-03 1.92791388704e-01] -[5.08483677908e-04 1.71059218667e-02] +[7.563294979e-03 1.927913887e-01] +[5.084836779e-04 1.710592187e-02] domain=10000 type=nu-fission -[1.94317403720e-02 4.69774777026e-01] -[1.32297561222e-03 4.16819997832e-02] +[1.943174037e-02 4.697747770e-01] +[1.322975612e-03 4.168199978e-02] domain=10000 type=kappa-fission -[1.47456982255e+00 3.72868964072e+01] -[9.92353210963e-02 3.30837772453e+00] +[1.474569823e+00 3.728689641e+01] +[9.923532110e-02 3.308377725e+00] domain=10000 type=scatter -[3.87417645294e-01 3.95659177000e-01] -[2.06257321021e-02 2.51250567894e-02] +[3.874176453e-01 3.956591770e-01] +[2.062573210e-02 2.512505679e-02] domain=10000 type=nu-scatter -[3.85188388202e-01 4.12389399309e-01] -[2.69456210647e-02 1.54252769583e-02] +[3.851883882e-01 4.123893993e-01] +[2.694562106e-02 1.542527696e-02] domain=10000 type=scatter matrix -[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] - [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 - 2.34290623037e-04]] +[[[3.841994578e-01 5.187028435e-02 2.006884532e-02 9.477715706e-03] + [9.889303933e-04 -2.072345965e-04 -1.033661805e-04 2.342906230e-04]] - [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 - -1.71497229323e-04] - [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] -[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] - [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] + [[9.246399088e-04 -7.677049684e-04 4.937888718e-04 -1.714972293e-04] + [4.114647594e-01 1.648172801e-02 6.371490493e-03 -1.049912209e-02]]] +[[[2.700101356e-02 6.982548876e-03 2.846495183e-03 2.233519772e-03] + [4.824194451e-04 1.490107754e-04 1.843163119e-04 1.281731108e-04]] - [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] - [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] + [[9.248834636e-04 7.679071859e-04 4.939189384e-04 1.715424026e-04] + [1.524493540e-02 4.501727961e-03 1.055074934e-02 1.043818772e-02]]] domain=10000 type=nu-scatter matrix -[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] - [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 - 2.34290623037e-04]] +[[[3.841994578e-01 5.187028435e-02 2.006884532e-02 9.477715706e-03] + [9.889303933e-04 -2.072345965e-04 -1.033661805e-04 2.342906230e-04]] - [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 - -1.71497229323e-04] - [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] -[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] - [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] + [[9.246399088e-04 -7.677049684e-04 4.937888718e-04 -1.714972293e-04] + [4.114647594e-01 1.648172801e-02 6.371490493e-03 -1.049912209e-02]]] +[[[2.700101356e-02 6.982548876e-03 2.846495183e-03 2.233519772e-03] + [4.824194451e-04 1.490107754e-04 1.843163119e-04 1.281731108e-04]] - [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] - [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] + [[9.248834636e-04 7.679071859e-04 4.939189384e-04 1.715424026e-04] + [1.524493540e-02 4.501727961e-03 1.055074934e-02 1.043818772e-02]]] domain=10000 type=multiplicity matrix -[[1.00000000000e+00 1.00000000000e+00] - [1.00000000000e+00 1.00000000000e+00]] -[[7.85164550057e-02 6.87184270936e-01] - [1.41421356237e+00 4.11303488039e-02]] +[[1.000000000e+00 1.000000000e+00] + [1.000000000e+00 1.000000000e+00]] +[[7.851645501e-02 6.871842709e-01] + [1.414213562e+00 4.113034880e-02]] domain=10000 type=nu-fission matrix -[[2.01424281632e-02 0.00000000000e+00] - [4.54366466559e-01 0.00000000000e+00]] -[[3.14909167627e-03 0.00000000000e+00] - [2.74255069248e-02 0.00000000000e+00]] +[[2.014242816e-02 0.000000000e+00] + [4.543664666e-01 0.000000000e+00]] +[[3.149091676e-03 0.000000000e+00] + [2.742550692e-02 0.000000000e+00]] domain=10000 type=chi -[1.00000000000e+00 0.00000000000e+00] -[4.60705234720e-02 0.00000000000e+00] +[1.000000000e+00 0.000000000e+00] +[4.607052347e-02 0.000000000e+00] domain=10000 type=chi-prompt -[1.00000000000e+00 0.00000000000e+00] -[5.14714567344e-02 0.00000000000e+00] +[1.000000000e+00 0.000000000e+00] +[5.147145673e-02 0.000000000e+00] domain=10000 type=velocity -[1.75152106204e+07 3.50171995194e+05] -[1.43817527390e+06 2.99459316967e+04] +[1.751521062e+07 3.501719952e+05] +[1.438175274e+06 2.994593170e+04] domain=10000 type=prompt-nu-fission -[1.92392215460e-02 4.66719027354e-01] -[1.30950595010e-03 4.14108703994e-02] +[1.923922155e-02 4.667190274e-01] +[1.309505950e-03 4.141087040e-02] domain=10001 type=total -[3.13737670907e-01 3.00821401699e-01] -[1.55819023553e-02 2.80524484312e-02] +[3.137376709e-01 3.008214017e-01] +[1.558190236e-02 2.805244843e-02] domain=10001 type=transport -[2.73227872020e-01 3.12374836218e-01] -[3.31153664433e-02 4.96058317053e-02] +[2.732278720e-01 3.123748362e-01] +[3.311536644e-02 4.960583171e-02] domain=10001 type=nu-transport -[2.73227872020e-01 3.12374836218e-01] -[3.31153664433e-02 4.96058317053e-02] +[2.732278720e-01 3.123748362e-01] +[3.311536644e-02 4.960583171e-02] domain=10001 type=absorption -[1.57499139045e-03 5.40037883216e-03] -[3.22547890698e-04 6.18138308229e-04] +[1.574991390e-03 5.400378832e-03] +[3.225478907e-04 6.181383082e-04] domain=10001 type=capture -[1.57499139045e-03 5.40037883216e-03] -[3.22547890698e-04 6.18138308229e-04] +[1.574991390e-03 5.400378832e-03] +[3.225478907e-04 6.181383082e-04] domain=10001 type=fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10001 type=nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10001 type=kappa-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10001 type=scatter -[3.12162679516e-01 2.95421022866e-01] -[1.53219230918e-02 2.74454888860e-02] +[3.121626795e-01 2.954210229e-01] +[1.532192309e-02 2.744548889e-02] domain=10001 type=nu-scatter -[3.10120735076e-01 2.96264270001e-01] -[3.37881061225e-02 4.37922257327e-02] +[3.101207351e-01 2.962642700e-01] +[3.378810612e-02 4.379222573e-02] domain=10001 type=scatter matrix -[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] +[[[3.101207351e-01 3.822959036e-02 2.074494197e-02 7.964296772e-03] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 - -3.27006730881e-03]]] -[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [2.962642700e-01 -1.121363613e-02 8.836566298e-03 -3.270067309e-03]]] +[[[3.378810612e-02 8.483997103e-03 4.695610677e-03 3.731622610e-03] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [4.379222573e-02 1.618036649e-02 1.150396446e-02 7.328845802e-03]]] domain=10001 type=nu-scatter matrix -[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] +[[[3.101207351e-01 3.822959036e-02 2.074494197e-02 7.964296772e-03] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 - -3.27006730881e-03]]] -[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [2.962642700e-01 -1.121363613e-02 8.836566298e-03 -3.270067309e-03]]] +[[[3.378810612e-02 8.483997103e-03 4.695610677e-03 3.731622610e-03] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [4.379222573e-02 1.618036649e-02 1.150396446e-02 7.328845802e-03]]] domain=10001 type=multiplicity matrix -[[1.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 1.00000000000e+00]] -[[1.08778696728e-01 0.00000000000e+00] - [0.00000000000e+00 1.42427173055e-01]] +[[1.000000000e+00 0.000000000e+00] + [0.000000000e+00 1.000000000e+00]] +[[1.087786967e-01 0.000000000e+00] + [0.000000000e+00 1.424271731e-01]] domain=10001 type=nu-fission matrix -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] +[[0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00]] +[[0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00]] domain=10001 type=chi -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10001 type=chi-prompt -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10001 type=velocity -[1.66778394974e+07 3.34953367601e+05] -[1.26644430952e+06 3.83367816257e+04] +[1.667783950e+07 3.349533676e+05] +[1.266444310e+06 3.833678163e+04] domain=10001 type=prompt-nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10002 type=total -[6.64572260617e-01 2.05238401381e+00] -[3.12147519127e-02 2.24342906706e-01] +[6.645722606e-01 2.052384014e+00] +[3.121475191e-02 2.243429067e-01] domain=10002 type=transport -[2.90565257425e-01 1.51643801275e+00] -[2.38518546437e-02 2.35197268504e-01] +[2.905652574e-01 1.516438013e+00] +[2.385185464e-02 2.351972685e-01] domain=10002 type=nu-transport -[2.90565257425e-01 1.51643801275e+00] -[2.38518546437e-02 2.35197268504e-01] +[2.905652574e-01 1.516438013e+00] +[2.385185464e-02 2.351972685e-01] domain=10002 type=absorption -[6.90399522187e-04 3.16872566141e-02] -[4.41475687059e-05 3.74655858238e-03] +[6.903995222e-04 3.168725661e-02] +[4.414756871e-05 3.746558582e-03] domain=10002 type=capture -[6.90399522187e-04 3.16872566141e-02] -[4.41475687059e-05 3.74655858238e-03] +[6.903995222e-04 3.168725661e-02] +[4.414756871e-05 3.746558582e-03] domain=10002 type=fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10002 type=nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10002 type=kappa-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10002 type=scatter -[6.63881861094e-01 2.02069675720e+00] -[3.11726840046e-02 2.20604453857e-01] +[6.638818611e-01 2.020696757e+00] +[3.117268400e-02 2.206044539e-01] domain=10002 type=nu-scatter -[6.71269204714e-01 2.03538832876e+00] -[2.61863711686e-02 2.58060328563e-01] +[6.712692047e-01 2.035388329e+00] +[2.618637117e-02 2.580603286e-01] domain=10002 type=scatter matrix -[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] - [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 - -3.78480288187e-03]] +[[[6.399014849e-01 3.811674489e-01 1.523918978e-01 9.148022288e-03] + [3.136771985e-02 8.757723206e-03 -2.567901060e-03 -3.784802882e-03]] - [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] - [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] -[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] - [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] + [[4.433431341e-04 3.999604143e-04 3.195627072e-04 2.138469692e-04] + [2.034944986e+00 5.099405132e-01 1.111746088e-01 2.498843574e-02]]] +[[[2.470912280e-02 1.624326492e-02 8.156277703e-03 3.888562142e-03] + [1.728112903e-03 9.256705012e-04 1.013984752e-03 8.170755709e-04]] - [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] - [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] + [[4.448503933e-04 4.013201827e-04 3.206491430e-04 2.145739971e-04] + [2.577998889e-01 5.123590630e-02 1.301981704e-02 8.312352562e-03]]] domain=10002 type=nu-scatter matrix -[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] - [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 - -3.78480288187e-03]] +[[[6.399014849e-01 3.811674489e-01 1.523918978e-01 9.148022288e-03] + [3.136771985e-02 8.757723206e-03 -2.567901060e-03 -3.784802882e-03]] - [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] - [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] -[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] - [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] + [[4.433431341e-04 3.999604143e-04 3.195627072e-04 2.138469692e-04] + [2.034944986e+00 5.099405132e-01 1.111746088e-01 2.498843574e-02]]] +[[[2.470912280e-02 1.624326492e-02 8.156277703e-03 3.888562142e-03] + [1.728112903e-03 9.256705012e-04 1.013984752e-03 8.170755709e-04]] - [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] - [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] + [[4.448503933e-04 4.013201827e-04 3.206491430e-04 2.145739971e-04] + [2.577998889e-01 5.123590630e-02 1.301981704e-02 8.312352562e-03]]] domain=10002 type=multiplicity matrix -[[1.00000000000e+00 1.00000000000e+00] - [1.00000000000e+00 1.00000000000e+00]] -[[3.86091908369e-02 6.76673479996e-02] - [1.41421356237e+00 1.35929206606e-01]] +[[1.000000000e+00 1.000000000e+00] + [1.000000000e+00 1.000000000e+00]] +[[3.860919084e-02 6.766734800e-02] + [1.414213562e+00 1.359292066e-01]] domain=10002 type=nu-fission matrix -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] +[[0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00]] +[[0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00]] domain=10002 type=chi -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10002 type=chi-prompt -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] domain=10002 type=velocity -[1.66055628732e+07 3.28412038650e+05] -[1.04243552374e+06 3.88284357298e+04] +[1.660556287e+07 3.284120387e+05] +[1.042435524e+06 3.882843573e+04] domain=10002 type=prompt-nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000000e+00 0.000000000e+00] +[0.000000000e+00 0.000000000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index d3b0cc0810..298ded20f8 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.14825490214e-01 2.27929090938e-02 -0 10000 2 total 6.60169918628e-01 4.75189279082e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637119e-01 2.54935955781e-02 -0 10000 2 total 6.47647660079e-01 2.37037352047e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637119e-01 2.54935955781e-02 -0 10000 2 total 6.47647660079e-01 2.37037352047e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.74078449200e-02 2.69249710935e-03 -0 10000 2 total 2.64510741628e-01 2.33670773915e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.98445499412e-02 2.64330432866e-03 -0 10000 2 total 7.17193529235e-02 2.52078593512e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.56329497887e-03 5.08483677908e-04 -0 10000 2 total 1.92791388704e-01 1.71059218667e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.94317403720e-02 1.32297561222e-03 -0 10000 2 total 4.69774777026e-01 4.16819997832e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.47456982255e+00 9.92353210963e-02 -0 10000 2 total 3.72868964072e+01 3.30837772453e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.87417645294e-01 2.06257321021e-02 -0 10000 2 total 3.95659177000e-01 2.51250567894e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.85188388202e-01 2.69456210647e-02 -0 10000 2 total 4.12389399309e-01 1.54252769583e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 -13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 -14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 -15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 -8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 -9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 -10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 -11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 -4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 -5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 -6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 -7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 -0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 -1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 -2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 -3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 -13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 -14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 -15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 -8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 -9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 -10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 -11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 -4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 -5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 -6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 -7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 -0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 -1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 -2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 -3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.00000000000e+00 7.85164550057e-02 -2 10000 1 2 total 1.00000000000e+00 6.87184270936e-01 -1 10000 2 1 total 1.00000000000e+00 1.41421356237e+00 -0 10000 2 2 total 1.00000000000e+00 4.11303488039e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.01424281632e-02 3.14909167627e-03 -2 10000 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10000 2 1 total 4.54366466559e-01 2.74255069248e-02 -0 10000 2 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000000e+00 4.60705234720e-02 -0 10000 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000000e+00 5.14714567344e-02 -0 10000 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.75152106204e+07 1.43817527390e+06 -0 10000 2 total 3.50171995194e+05 2.99459316967e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.92392215460e-02 1.30950595010e-03 -0 10000 2 total 4.66719027354e-01 4.14108703994e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.13737670907e-01 1.55819023553e-02 -0 10001 2 total 3.00821401699e-01 2.80524484312e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872020e-01 3.31153664433e-02 -0 10001 2 total 3.12374836218e-01 4.96058317053e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872020e-01 3.31153664433e-02 -0 10001 2 total 3.12374836218e-01 4.96058317053e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499139045e-03 3.22547890698e-04 -0 10001 2 total 5.40037883216e-03 6.18138308229e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499139045e-03 3.22547890698e-04 -0 10001 2 total 5.40037883216e-03 6.18138308229e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.12162679516e-01 1.53219230918e-02 -0 10001 2 total 2.95421022866e-01 2.74454888860e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.10120735076e-01 3.37881061225e-02 -0 10001 2 total 2.96264270001e-01 4.37922257327e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 -13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 -14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 -15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 -8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 -9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 -10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 -11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 -4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 -5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 -6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 -7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 -1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 -2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 -3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 -13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 -14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 -15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 -8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 -9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 -10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 -11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 -4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 -5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 -6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 -7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 -1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 -2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 -3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.00000000000e+00 1.08778696728e-01 -2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total 1.00000000000e+00 1.42427173055e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 -2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.66778394974e+07 1.26644430952e+06 -0 10001 2 total 3.34953367601e+05 3.83367816257e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.64572260617e-01 3.12147519127e-02 -0 10002 2 total 2.05238401381e+00 2.24342906706e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257425e-01 2.38518546437e-02 -0 10002 2 total 1.51643801275e+00 2.35197268504e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257425e-01 2.38518546437e-02 -0 10002 2 total 1.51643801275e+00 2.35197268504e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.90399522187e-04 4.41475687059e-05 -0 10002 2 total 3.16872566141e-02 3.74655858238e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.90399522187e-04 4.41475687059e-05 -0 10002 2 total 3.16872566141e-02 3.74655858238e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.63881861094e-01 3.11726840046e-02 -0 10002 2 total 2.02069675720e+00 2.20604453857e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.71269204714e-01 2.61863711686e-02 -0 10002 2 total 2.03538832876e+00 2.58060328563e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 -13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 -14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 -15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 -8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 -9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 -10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 -11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 -4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 -5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 -6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 -7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 -0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 -1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 -2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 -3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 -13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 -14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 -15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 -8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 -9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 -10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 -11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 -4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 -5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 -6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 -7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 -0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 -1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 -2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 -3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.00000000000e+00 3.86091908369e-02 -2 10002 1 2 total 1.00000000000e+00 6.76673479996e-02 -1 10002 2 1 total 1.00000000000e+00 1.41421356237e+00 -0 10002 2 2 total 1.00000000000e+00 1.35929206606e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 -2 10002 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10002 2 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.66055628732e+07 1.04243552374e+06 -0 10002 2 total 3.28412038650e+05 3.88284357298e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.148254902e-01 2.279290909e-02 +0 10000 2 total 6.601699186e-01 4.751892791e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596371e-01 2.549359558e-02 +0 10000 2 total 6.476476601e-01 2.370373520e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596371e-01 2.549359558e-02 +0 10000 2 total 6.476476601e-01 2.370373520e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.740784492e-02 2.692497109e-03 +0 10000 2 total 2.645107416e-01 2.336707739e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.984454994e-02 2.643304329e-03 +0 10000 2 total 7.171935292e-02 2.520785935e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.563294979e-03 5.084836779e-04 +0 10000 2 total 1.927913887e-01 1.710592187e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.943174037e-02 1.322975612e-03 +0 10000 2 total 4.697747770e-01 4.168199978e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.474569823e+00 9.923532110e-02 +0 10000 2 total 3.728689641e+01 3.308377725e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.874176453e-01 2.062573210e-02 +0 10000 2 total 3.956591770e-01 2.512505679e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.851883882e-01 2.694562106e-02 +0 10000 2 total 4.123893993e-01 1.542527696e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841994578e-01 2.700101356e-02 +13 10000 1 1 total P1 5.187028435e-02 6.982548876e-03 +14 10000 1 1 total P2 2.006884532e-02 2.846495183e-03 +15 10000 1 1 total P3 9.477715706e-03 2.233519772e-03 +8 10000 1 2 total P0 9.889303933e-04 4.824194451e-04 +9 10000 1 2 total P1 -2.072345965e-04 1.490107754e-04 +10 10000 1 2 total P2 -1.033661805e-04 1.843163119e-04 +11 10000 1 2 total P3 2.342906230e-04 1.281731108e-04 +4 10000 2 1 total P0 9.246399088e-04 9.248834636e-04 +5 10000 2 1 total P1 -7.677049684e-04 7.679071859e-04 +6 10000 2 1 total P2 4.937888718e-04 4.939189384e-04 +7 10000 2 1 total P3 -1.714972293e-04 1.715424026e-04 +0 10000 2 2 total P0 4.114647594e-01 1.524493540e-02 +1 10000 2 2 total P1 1.648172801e-02 4.501727961e-03 +2 10000 2 2 total P2 6.371490493e-03 1.055074934e-02 +3 10000 2 2 total P3 -1.049912209e-02 1.043818772e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841994578e-01 2.700101356e-02 +13 10000 1 1 total P1 5.187028435e-02 6.982548876e-03 +14 10000 1 1 total P2 2.006884532e-02 2.846495183e-03 +15 10000 1 1 total P3 9.477715706e-03 2.233519772e-03 +8 10000 1 2 total P0 9.889303933e-04 4.824194451e-04 +9 10000 1 2 total P1 -2.072345965e-04 1.490107754e-04 +10 10000 1 2 total P2 -1.033661805e-04 1.843163119e-04 +11 10000 1 2 total P3 2.342906230e-04 1.281731108e-04 +4 10000 2 1 total P0 9.246399088e-04 9.248834636e-04 +5 10000 2 1 total P1 -7.677049684e-04 7.679071859e-04 +6 10000 2 1 total P2 4.937888718e-04 4.939189384e-04 +7 10000 2 1 total P3 -1.714972293e-04 1.715424026e-04 +0 10000 2 2 total P0 4.114647594e-01 1.524493540e-02 +1 10000 2 2 total P1 1.648172801e-02 4.501727961e-03 +2 10000 2 2 total P2 6.371490493e-03 1.055074934e-02 +3 10000 2 2 total P3 -1.049912209e-02 1.043818772e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.000000000e+00 7.851645501e-02 +2 10000 1 2 total 1.000000000e+00 6.871842709e-01 +1 10000 2 1 total 1.000000000e+00 1.414213562e+00 +0 10000 2 2 total 1.000000000e+00 4.113034880e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.014242816e-02 3.149091676e-03 +2 10000 1 2 total 0.000000000e+00 0.000000000e+00 +1 10000 2 1 total 4.543664666e-01 2.742550692e-02 +0 10000 2 2 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000000e+00 4.607052347e-02 +0 10000 2 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000000e+00 5.147145673e-02 +0 10000 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.751521062e+07 1.438175274e+06 +0 10000 2 total 3.501719952e+05 2.994593170e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.923922155e-02 1.309505950e-03 +0 10000 2 total 4.667190274e-01 4.141087040e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.137376709e-01 1.558190236e-02 +0 10001 2 total 3.008214017e-01 2.805244843e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732278720e-01 3.311536644e-02 +0 10001 2 total 3.123748362e-01 4.960583171e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732278720e-01 3.311536644e-02 +0 10001 2 total 3.123748362e-01 4.960583171e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991390e-03 3.225478907e-04 +0 10001 2 total 5.400378832e-03 6.181383082e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991390e-03 3.225478907e-04 +0 10001 2 total 5.400378832e-03 6.181383082e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.121626795e-01 1.532192309e-02 +0 10001 2 total 2.954210229e-01 2.744548889e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.101207351e-01 3.378810612e-02 +0 10001 2 total 2.962642700e-01 4.379222573e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207351e-01 3.378810612e-02 +13 10001 1 1 total P1 3.822959036e-02 8.483997103e-03 +14 10001 1 1 total P2 2.074494197e-02 4.695610677e-03 +15 10001 1 1 total P3 7.964296772e-03 3.731622610e-03 +8 10001 1 2 total P0 0.000000000e+00 0.000000000e+00 +9 10001 1 2 total P1 0.000000000e+00 0.000000000e+00 +10 10001 1 2 total P2 0.000000000e+00 0.000000000e+00 +11 10001 1 2 total P3 0.000000000e+00 0.000000000e+00 +4 10001 2 1 total P0 0.000000000e+00 0.000000000e+00 +5 10001 2 1 total P1 0.000000000e+00 0.000000000e+00 +6 10001 2 1 total P2 0.000000000e+00 0.000000000e+00 +7 10001 2 1 total P3 0.000000000e+00 0.000000000e+00 +0 10001 2 2 total P0 2.962642700e-01 4.379222573e-02 +1 10001 2 2 total P1 -1.121363613e-02 1.618036649e-02 +2 10001 2 2 total P2 8.836566298e-03 1.150396446e-02 +3 10001 2 2 total P3 -3.270067309e-03 7.328845802e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207351e-01 3.378810612e-02 +13 10001 1 1 total P1 3.822959036e-02 8.483997103e-03 +14 10001 1 1 total P2 2.074494197e-02 4.695610677e-03 +15 10001 1 1 total P3 7.964296772e-03 3.731622610e-03 +8 10001 1 2 total P0 0.000000000e+00 0.000000000e+00 +9 10001 1 2 total P1 0.000000000e+00 0.000000000e+00 +10 10001 1 2 total P2 0.000000000e+00 0.000000000e+00 +11 10001 1 2 total P3 0.000000000e+00 0.000000000e+00 +4 10001 2 1 total P0 0.000000000e+00 0.000000000e+00 +5 10001 2 1 total P1 0.000000000e+00 0.000000000e+00 +6 10001 2 1 total P2 0.000000000e+00 0.000000000e+00 +7 10001 2 1 total P3 0.000000000e+00 0.000000000e+00 +0 10001 2 2 total P0 2.962642700e-01 4.379222573e-02 +1 10001 2 2 total P1 -1.121363613e-02 1.618036649e-02 +2 10001 2 2 total P2 8.836566298e-03 1.150396446e-02 +3 10001 2 2 total P3 -3.270067309e-03 7.328845802e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.000000000e+00 1.087786967e-01 +2 10001 1 2 total 0.000000000e+00 0.000000000e+00 +1 10001 2 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 2 total 1.000000000e+00 1.424271731e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.000000000e+00 0.000000000e+00 +2 10001 1 2 total 0.000000000e+00 0.000000000e+00 +1 10001 2 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 2 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.667783950e+07 1.266444310e+06 +0 10001 2 total 3.349533676e+05 3.833678163e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000e+00 0.000000000e+00 +0 10001 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.645722606e-01 3.121475191e-02 +0 10002 2 total 2.052384014e+00 2.243429067e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905652574e-01 2.385185464e-02 +0 10002 2 total 1.516438013e+00 2.351972685e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905652574e-01 2.385185464e-02 +0 10002 2 total 1.516438013e+00 2.351972685e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995222e-04 4.414756871e-05 +0 10002 2 total 3.168725661e-02 3.746558582e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995222e-04 4.414756871e-05 +0 10002 2 total 3.168725661e-02 3.746558582e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000e+00 0.000000000e+00 +0 10002 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000e+00 0.000000000e+00 +0 10002 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000e+00 0.000000000e+00 +0 10002 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.638818611e-01 3.117268400e-02 +0 10002 2 total 2.020696757e+00 2.206044539e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.712692047e-01 2.618637117e-02 +0 10002 2 total 2.035388329e+00 2.580603286e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399014849e-01 2.470912280e-02 +13 10002 1 1 total P1 3.811674489e-01 1.624326492e-02 +14 10002 1 1 total P2 1.523918978e-01 8.156277703e-03 +15 10002 1 1 total P3 9.148022288e-03 3.888562142e-03 +8 10002 1 2 total P0 3.136771985e-02 1.728112903e-03 +9 10002 1 2 total P1 8.757723206e-03 9.256705012e-04 +10 10002 1 2 total P2 -2.567901060e-03 1.013984752e-03 +11 10002 1 2 total P3 -3.784802882e-03 8.170755709e-04 +4 10002 2 1 total P0 4.433431341e-04 4.448503933e-04 +5 10002 2 1 total P1 3.999604143e-04 4.013201827e-04 +6 10002 2 1 total P2 3.195627072e-04 3.206491430e-04 +7 10002 2 1 total P3 2.138469692e-04 2.145739971e-04 +0 10002 2 2 total P0 2.034944986e+00 2.577998889e-01 +1 10002 2 2 total P1 5.099405132e-01 5.123590630e-02 +2 10002 2 2 total P2 1.111746088e-01 1.301981704e-02 +3 10002 2 2 total P3 2.498843574e-02 8.312352562e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399014849e-01 2.470912280e-02 +13 10002 1 1 total P1 3.811674489e-01 1.624326492e-02 +14 10002 1 1 total P2 1.523918978e-01 8.156277703e-03 +15 10002 1 1 total P3 9.148022288e-03 3.888562142e-03 +8 10002 1 2 total P0 3.136771985e-02 1.728112903e-03 +9 10002 1 2 total P1 8.757723206e-03 9.256705012e-04 +10 10002 1 2 total P2 -2.567901060e-03 1.013984752e-03 +11 10002 1 2 total P3 -3.784802882e-03 8.170755709e-04 +4 10002 2 1 total P0 4.433431341e-04 4.448503933e-04 +5 10002 2 1 total P1 3.999604143e-04 4.013201827e-04 +6 10002 2 1 total P2 3.195627072e-04 3.206491430e-04 +7 10002 2 1 total P3 2.138469692e-04 2.145739971e-04 +0 10002 2 2 total P0 2.034944986e+00 2.577998889e-01 +1 10002 2 2 total P1 5.099405132e-01 5.123590630e-02 +2 10002 2 2 total P2 1.111746088e-01 1.301981704e-02 +3 10002 2 2 total P3 2.498843574e-02 8.312352562e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.000000000e+00 3.860919084e-02 +2 10002 1 2 total 1.000000000e+00 6.766734800e-02 +1 10002 2 1 total 1.000000000e+00 1.414213562e+00 +0 10002 2 2 total 1.000000000e+00 1.359292066e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.000000000e+00 0.000000000e+00 +2 10002 1 2 total 0.000000000e+00 0.000000000e+00 +1 10002 2 1 total 0.000000000e+00 0.000000000e+00 +0 10002 2 2 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000000e+00 0.000000000e+00 +0 10002 2 total 0.000000000e+00 0.000000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000000e+00 0.000000000e+00 +0 10002 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.660556287e+07 1.042435524e+06 +0 10002 2 total 3.284120387e+05 3.882843573e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000e+00 0.000000000e+00 +0 10002 2 total 0.000000000e+00 0.000000000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index bb7af4b914..907c223bfc 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -22b9df6898dbc9b229e25613a082c6efafa9bd64927788b3f2600ad5c900c91cf2367eb80bf58573306a4fcda21aad04c2705cb7e35a444e306bbb2b88d3f823 \ No newline at end of file +0acca7db0372f24bfa984e055c4dc706ce2b069dffd7124bc0c45cdf6f151d56435cc92aad67fa068c88ae14afe44aadf13d76b32a18eee17affc92ae3498b8d \ No newline at end of file diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index e012e108ab..fce4790688 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -baf9c5d2cea02655d4810cbe345b43ef7bd91aa5760d82561396eac4ca2b5e71d1505a2e3f0f741e50fd621c479b0b2c059bb837b11841abb972a2554fc5020d \ No newline at end of file +3fb1940a428b77249d1df7dbe44f8edb6b34b9ef7002343b423416def12ccdb8dac35b154a9f1d603f54587492320211613959ed5c1b6bea91cd095b7d98e56c \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 369c061d41..0d0a8f2171 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] +[[[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]] \ No newline at end of file + [[0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00] + [0.000000000e+00 0.000000000e+00 0.000000000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index e0add432af..7ad20ad843 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation with 12 +# Require numpy and pandas to print output in scientific notation with 10 # significant figures. This is needed to avoid round off error when large # numbers are printed, which can cause tests to fail for different build # configurations. -np.set_printoptions(formatter={'float': '{:.11e}'.format}) -pd.options.display.float_format = '{:.11e}'.format +np.set_printoptions(formatter={'float': '{:.9e}'.format}) +pd.options.display.float_format = '{:.9e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From a63203ab6050e4e5a4e6803e125181de9285805d Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 09:19:19 -0600 Subject: [PATCH 33/82] updated results for multipole test --- tests/test_multipole/results_true.dat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index cbb1a86543..76de7e3f25 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.00000000000e+02 0.00000000000e+00 7.00000000000e+02 8.00000000000e+02] + Temperature = [5.000000000e+02 0.000000000e+00 7.000000000e+02 8.000000000e+02] Translation = None Offset = None Distribcell index= 1 From acce64ce40ce839f5350290af97e3d5b83f0dd56 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 09:49:37 -0600 Subject: [PATCH 34/82] changed testing harness to round to 12 decimal places before converting to scientific notation --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 320 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- .../test_tally_aggregation.py | 2 + tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 12 +- 10 files changed, 705 insertions(+), 695 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index c15db2fdaa..06dbe0c143 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.536244225e-01 2.105269633e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008521779e-01 2.285755400e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008521779e-01 2.285755400e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.490345583e-02 4.312761200e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.804806603e-02 4.579963689e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.685538980e-02 2.622159776e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.064928986e-02 6.409874517e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955138e+00 5.073638146e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.887209666e-01 1.783042860e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.893035563e-01 2.307553857e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893035563e-01 2.314560462e-02 -1 10000 1 1 total P1 4.622441783e-02 5.907169557e-03 -2 10000 1 1 total P2 1.798358502e-02 2.882971982e-03 -3 10000 1 1 total P3 6.628373514e-03 2.457108984e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893035563e-01 2.314560462e-02 -1 10000 1 1 total P1 4.622441783e-02 5.907169557e-03 -2 10000 1 1 total P2 1.798358502e-02 2.882971982e-03 -3 10000 1 1 total P3 6.628373514e-03 2.457108984e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.000000000e+00 6.611082017e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.583501934e-02 5.591824861e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000000e+00 4.607052347e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000000e+00 5.147145673e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.001308740e+06 1.462165554e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.000397779e-02 6.366907874e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.115941081e-01 1.379316813e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792550637e-01 2.918950098e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792550637e-01 2.918950098e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846402e-03 2.863341266e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846402e-03 2.863341266e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.093842617e-01 1.355126749e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.079873494e-01 2.930808850e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873494e-01 2.930808850e-02 -1 10001 1 1 total P1 3.061715325e-02 7.464456012e-03 -2 10001 1 1 total P2 1.891149041e-02 4.322827732e-03 -3 10001 1 1 total P3 6.234618187e-03 3.338202281e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873494e-01 2.930808850e-02 -1 10001 1 1 total P1 3.061715325e-02 7.464456012e-03 -2 10001 1 1 total P2 1.891149041e-02 4.322827732e-03 -3 10001 1 1 total P3 6.234618187e-03 3.338202281e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.000000000e+00 9.503872151e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.833261153e+06 1.663551745e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.049988333e-01 4.396448759e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991839827e-01 4.091411960e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991839827e-01 4.091411960e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341157e-03 5.545244243e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341157e-03 5.545244243e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.989384922e-01 4.349298417e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.034146632e-01 4.395873708e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034146632e-01 4.358599380e-02 -1 10002 1 1 total P1 4.104174186e-01 1.587722019e-02 -2 10002 1 1 total P2 1.433010365e-01 7.187377663e-03 -3 10002 1 1 total P3 8.739426341e-03 3.571441345e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034146632e-01 4.358599380e-02 -1 10002 1 1 total P1 4.104174186e-01 1.587722019e-02 -2 10002 1 1 total P2 1.433010365e-01 7.187377663e-03 -3 10002 1 1 total P3 8.739426341e-03 3.571441345e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.000000000e+00 5.686672531e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.732199699e+06 1.596914264e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.53624422471E-01 2.10526963250E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852177884E-01 2.28575540030E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852177884E-01 2.28575540030E-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.49034558320E-02 4.31276120000E-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.80480660340E-02 4.57996368900E-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.68553897980E-02 2.62215977600E-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.06492898580E-02 6.40987451700E-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.13795513809E+00 5.07363814554E-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.88720966639E-01 1.78304285990E-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.89303556282E-01 2.30755385730E-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556282E-01 2.31456046240E-02 +1 10000 1 1 total P1 4.62244178310E-02 5.90716955700E-03 +2 10000 1 1 total P2 1.79835850200E-02 2.88297198200E-03 +3 10000 1 1 total P3 6.62837351400E-03 2.45710898400E-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556282E-01 2.31456046240E-02 +1 10000 1 1 total P1 4.62244178310E-02 5.90716955700E-03 +2 10000 1 1 total P2 1.79835850200E-02 2.88297198200E-03 +3 10000 1 1 total P3 6.62837351400E-03 2.45710898400E-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.00000000000E+00 6.61108201730E-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.58350193370E-02 5.59182486100E-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000000E+00 4.60705234720E-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000000E+00 5.14714567340E-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.00130873975E+06 1.46216555365E+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.00039777880E-02 6.36690787400E-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.11594108102E-01 1.37931681280E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255063691E-01 2.91895009800E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255063691E-01 2.91895009800E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984640200E-03 2.86334127000E-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984640200E-03 2.86334127000E-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.09384261701E-01 1.35512674910E-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.07987349445E-01 2.93080885040E-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349445E-01 2.93080885040E-02 +1 10001 1 1 total P1 3.06171532540E-02 7.46445601200E-03 +2 10001 1 1 total P2 1.89114904070E-02 4.32282773200E-03 +3 10001 1 1 total P3 6.23461818700E-03 3.33820228100E-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349445E-01 2.93080885040E-02 +1 10001 1 1 total P1 3.06171532540E-02 7.46445601200E-03 +2 10001 1 1 total P2 1.89114904070E-02 4.32282773200E-03 +3 10001 1 1 total P3 6.23461818700E-03 3.33820228100E-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.00000000000E+00 9.50387215070E-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.83326115257E+06 1.66355174520E+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.04998833317E-01 4.39644875950E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183982700E-01 4.09141196050E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183982700E-01 4.09141196050E-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034115700E-03 5.54524424000E-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034115700E-03 5.54524424000E-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.98938492160E-01 4.34929841730E-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.03414663159E-01 4.39587370760E-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663159E-01 4.35859938040E-02 +1 10002 1 1 total P1 4.10417418590E-01 1.58772201940E-02 +2 10002 1 1 total P2 1.43301036475E-01 7.18737766300E-03 +3 10002 1 1 total P3 8.73942634100E-03 3.57144134500E-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663159E-01 4.35859938040E-02 +1 10002 1 1 total P1 4.10417418590E-01 1.58772201940E-02 +2 10002 1 1 total P2 1.43301036475E-01 7.18737766300E-03 +3 10002 1 1 total P3 8.73942634100E-03 3.57144134500E-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.00000000000E+00 5.68667253070E-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.73219969947E+06 1.59691426430E+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000E+00 0.00000000000E+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 9908bb1a00..1bb49ceb39 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.145934001e+00 5.538216947e-01 - 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.189191990e-01 5.206442559e-01 - 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.189191990e-01 5.206442559e-01 - 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.976220611e-02 1.062876409e-02 - 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.976220611e-02 1.062876409e-02 - 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.000000000e+00 0.000000000e+00 - 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.000000000e+00 0.000000000e+00 - 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.000000000e+00 0.000000000e+00 - 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.126171794e+00 5.434400084e-01 - 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.142546919e+00 5.701313899e-01 - 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.142546919e+00 5.701313899e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943e-01 2.163221683e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934e-01 6.650377258e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827042e-02 2.462083232e-02 - 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.142546919e+00 5.701313899e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943e-01 2.163221683e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934e-01 6.650377258e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827042e-02 2.462083232e-02 - 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.000000000e+00 5.297173274e-01 - 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.000000000e+00 0.000000000e+00 - 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.000000000e+00 0.000000000e+00 - 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.000000000e+00 0.000000000e+00 - 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.742457145e+05 4.163976916e+05 - 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.000000000e+00 0.000000000e+00 + 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.14593400053E+00 5.53821694685E-01 + 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.18919198978E-01 5.20644255933E-01 + 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.18919198978E-01 5.20644255933E-01 + 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.97622061150E-02 1.06287640930E-02 + 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.97622061150E-02 1.06287640930E-02 + 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.00000000000E+00 0.00000000000E+00 + 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.00000000000E+00 0.00000000000E+00 + 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.00000000000E+00 0.00000000000E+00 + 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.12617179441E+00 5.43440008398E-01 + 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.14254691911E+00 5.70131389856E-01 + 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.14254691911E+00 5.70131389856E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335E-01 2.16322168307E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415E-01 6.65037725810E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704190E-02 2.46208323200E-02 + 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.14254691911E+00 5.70131389856E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335E-01 2.16322168307E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415E-01 6.65037725810E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704190E-02 2.46208323200E-02 + 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.00000000000E+00 5.29717327374E-01 + 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.00000000000E+00 0.00000000000E+00 + 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.00000000000E+00 0.00000000000E+00 + 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.00000000000E+00 0.00000000000E+00 + 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.74245714482E+05 4.16397691599E+05 + 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.00000000000E+00 0.00000000000E+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index fa0f37f4c5..28e1aef4ee 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,230 @@ domain=10000 type=total -[4.148254902e-01 6.601699186e-01] -[2.279290909e-02 4.751892791e-02] +[4.14825490214E-01 6.60169918628E-01] +[2.27929090940E-02 4.75189279080E-02] domain=10000 type=transport -[3.568596371e-01 6.476476601e-01] -[2.549359558e-02 2.370373520e-02] +[3.56859637119E-01 6.47647660079E-01] +[2.54935955780E-02 2.37037352050E-02] domain=10000 type=nu-transport -[3.568596371e-01 6.476476601e-01] -[2.549359558e-02 2.370373520e-02] +[3.56859637119E-01 6.47647660079E-01] +[2.54935955780E-02 2.37037352050E-02] domain=10000 type=absorption -[2.740784492e-02 2.645107416e-01] -[2.692497109e-03 2.336707739e-02] +[2.74078449200E-02 2.64510741628E-01] +[2.69249710900E-03 2.33670773920E-02] domain=10000 type=capture -[1.984454994e-02 7.171935292e-02] -[2.643304329e-03 2.520785935e-02] +[1.98445499410E-02 7.17193529230E-02] +[2.64330432900E-03 2.52078593510E-02] domain=10000 type=fission -[7.563294979e-03 1.927913887e-01] -[5.084836779e-04 1.710592187e-02] +[7.56329497900E-03 1.92791388704E-01] +[5.08483678000E-04 1.71059218670E-02] domain=10000 type=nu-fission -[1.943174037e-02 4.697747770e-01] -[1.322975612e-03 4.168199978e-02] +[1.94317403720E-02 4.69774777026E-01] +[1.32297561200E-03 4.16819997830E-02] domain=10000 type=kappa-fission -[1.474569823e+00 3.728689641e+01] -[9.923532110e-02 3.308377725e+00] +[1.47456982255E+00 3.72868964072E+01] +[9.92353210960E-02 3.30837772453E+00] domain=10000 type=scatter -[3.874176453e-01 3.956591770e-01] -[2.062573210e-02 2.512505679e-02] +[3.87417645294E-01 3.95659177000E-01] +[2.06257321020E-02 2.51250567890E-02] domain=10000 type=nu-scatter -[3.851883882e-01 4.123893993e-01] -[2.694562106e-02 1.542527696e-02] +[3.85188388202E-01 4.12389399309E-01] +[2.69456210650E-02 1.54252769580E-02] domain=10000 type=scatter matrix -[[[3.841994578e-01 5.187028435e-02 2.006884532e-02 9.477715706e-03] - [9.889303933e-04 -2.072345965e-04 -1.033661805e-04 2.342906230e-04]] +[[[3.84199457809E-01 5.18702843460E-02 2.00688453200E-02 9.47771570600E-03] + [9.88930393000E-04 -2.07234596000E-04 -1.03366181000E-04 + 2.34290623000E-04]] - [[9.246399088e-04 -7.677049684e-04 4.937888718e-04 -1.714972293e-04] - [4.114647594e-01 1.648172801e-02 6.371490493e-03 -1.049912209e-02]]] -[[[2.700101356e-02 6.982548876e-03 2.846495183e-03 2.233519772e-03] - [4.824194451e-04 1.490107754e-04 1.843163119e-04 1.281731108e-04]] + [[9.24639909000E-04 -7.67704968000E-04 4.93788872000E-04 + -1.71497229000E-04] + [4.11464759400E-01 1.64817280070E-02 6.37149049300E-03 -1.04991220900E-02]]] +[[[2.70010135610E-02 6.98254887600E-03 2.84649518300E-03 2.23351977200E-03] + [4.82419445000E-04 1.49010775000E-04 1.84316312000E-04 1.28173111000E-04]] - [[9.248834636e-04 7.679071859e-04 4.939189384e-04 1.715424026e-04] - [1.524493540e-02 4.501727961e-03 1.055074934e-02 1.043818772e-02]]] + [[9.24883464000E-04 7.67907186000E-04 4.93918938000E-04 1.71542403000E-04] + [1.52449353960E-02 4.50172796100E-03 1.05507493410E-02 1.04381877190E-02]]] domain=10000 type=nu-scatter matrix -[[[3.841994578e-01 5.187028435e-02 2.006884532e-02 9.477715706e-03] - [9.889303933e-04 -2.072345965e-04 -1.033661805e-04 2.342906230e-04]] +[[[3.84199457809E-01 5.18702843460E-02 2.00688453200E-02 9.47771570600E-03] + [9.88930393000E-04 -2.07234596000E-04 -1.03366181000E-04 + 2.34290623000E-04]] - [[9.246399088e-04 -7.677049684e-04 4.937888718e-04 -1.714972293e-04] - [4.114647594e-01 1.648172801e-02 6.371490493e-03 -1.049912209e-02]]] -[[[2.700101356e-02 6.982548876e-03 2.846495183e-03 2.233519772e-03] - [4.824194451e-04 1.490107754e-04 1.843163119e-04 1.281731108e-04]] + [[9.24639909000E-04 -7.67704968000E-04 4.93788872000E-04 + -1.71497229000E-04] + [4.11464759400E-01 1.64817280070E-02 6.37149049300E-03 -1.04991220900E-02]]] +[[[2.70010135610E-02 6.98254887600E-03 2.84649518300E-03 2.23351977200E-03] + [4.82419445000E-04 1.49010775000E-04 1.84316312000E-04 1.28173111000E-04]] - [[9.248834636e-04 7.679071859e-04 4.939189384e-04 1.715424026e-04] - [1.524493540e-02 4.501727961e-03 1.055074934e-02 1.043818772e-02]]] + [[9.24883464000E-04 7.67907186000E-04 4.93918938000E-04 1.71542403000E-04] + [1.52449353960E-02 4.50172796100E-03 1.05507493410E-02 1.04381877190E-02]]] domain=10000 type=multiplicity matrix -[[1.000000000e+00 1.000000000e+00] - [1.000000000e+00 1.000000000e+00]] -[[7.851645501e-02 6.871842709e-01] - [1.414213562e+00 4.113034880e-02]] +[[1.00000000000E+00 1.00000000000E+00] + [1.00000000000E+00 1.00000000000E+00]] +[[7.85164550060E-02 6.87184270936E-01] + [1.41421356237E+00 4.11303488040E-02]] domain=10000 type=nu-fission matrix -[[2.014242816e-02 0.000000000e+00] - [4.543664666e-01 0.000000000e+00]] -[[3.149091676e-03 0.000000000e+00] - [2.742550692e-02 0.000000000e+00]] +[[2.01424281630E-02 0.00000000000E+00] + [4.54366466559E-01 0.00000000000E+00]] +[[3.14909167600E-03 0.00000000000E+00] + [2.74255069250E-02 0.00000000000E+00]] domain=10000 type=chi -[1.000000000e+00 0.000000000e+00] -[4.607052347e-02 0.000000000e+00] +[1.00000000000E+00 0.00000000000E+00] +[4.60705234720E-02 0.00000000000E+00] domain=10000 type=chi-prompt -[1.000000000e+00 0.000000000e+00] -[5.147145673e-02 0.000000000e+00] +[1.00000000000E+00 0.00000000000E+00] +[5.14714567340E-02 0.00000000000E+00] domain=10000 type=velocity -[1.751521062e+07 3.501719952e+05] -[1.438175274e+06 2.994593170e+04] +[1.75152106204E+07 3.50171995194E+05] +[1.43817527390E+06 2.99459316967E+04] domain=10000 type=prompt-nu-fission -[1.923922155e-02 4.667190274e-01] -[1.309505950e-03 4.141087040e-02] +[1.92392215460E-02 4.66719027354E-01] +[1.30950595000E-03 4.14108703990E-02] domain=10001 type=total -[3.137376709e-01 3.008214017e-01] -[1.558190236e-02 2.805244843e-02] +[3.13737670907E-01 3.00821401699E-01] +[1.55819023550E-02 2.80524484310E-02] domain=10001 type=transport -[2.732278720e-01 3.123748362e-01] -[3.311536644e-02 4.960583171e-02] +[2.73227872020E-01 3.12374836218E-01] +[3.31153664430E-02 4.96058317050E-02] domain=10001 type=nu-transport -[2.732278720e-01 3.123748362e-01] -[3.311536644e-02 4.960583171e-02] +[2.73227872020E-01 3.12374836218E-01] +[3.31153664430E-02 4.96058317050E-02] domain=10001 type=absorption -[1.574991390e-03 5.400378832e-03] -[3.225478907e-04 6.181383082e-04] +[1.57499139000E-03 5.40037883200E-03] +[3.22547891000E-04 6.18138308000E-04] domain=10001 type=capture -[1.574991390e-03 5.400378832e-03] -[3.225478907e-04 6.181383082e-04] +[1.57499139000E-03 5.40037883200E-03] +[3.22547891000E-04 6.18138308000E-04] domain=10001 type=fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10001 type=nu-fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10001 type=kappa-fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10001 type=scatter -[3.121626795e-01 2.954210229e-01] -[1.532192309e-02 2.744548889e-02] +[3.12162679516E-01 2.95421022866E-01] +[1.53219230920E-02 2.74454888860E-02] domain=10001 type=nu-scatter -[3.101207351e-01 2.962642700e-01] -[3.378810612e-02 4.379222573e-02] +[3.10120735076E-01 2.96264270001E-01] +[3.37881061230E-02 4.37922257330E-02] domain=10001 type=scatter matrix -[[[3.101207351e-01 3.822959036e-02 2.074494197e-02 7.964296772e-03] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] +[[[3.10120735076E-01 3.82295903620E-02 2.07449419700E-02 7.96429677200E-03] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [2.962642700e-01 -1.121363613e-02 8.836566298e-03 -3.270067309e-03]]] -[[[3.378810612e-02 8.483997103e-03 4.695610677e-03 3.731622610e-03] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [2.96264270001E-01 -1.12136361340E-02 8.83656629800E-03 + -3.27006730900E-03]]] +[[[3.37881061230E-02 8.48399710300E-03 4.69561067700E-03 3.73162261000E-03] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [4.379222573e-02 1.618036649e-02 1.150396446e-02 7.328845802e-03]]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [4.37922257330E-02 1.61803664890E-02 1.15039644590E-02 7.32884580200E-03]]] domain=10001 type=nu-scatter matrix -[[[3.101207351e-01 3.822959036e-02 2.074494197e-02 7.964296772e-03] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] +[[[3.10120735076E-01 3.82295903620E-02 2.07449419700E-02 7.96429677200E-03] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [2.962642700e-01 -1.121363613e-02 8.836566298e-03 -3.270067309e-03]]] -[[[3.378810612e-02 8.483997103e-03 4.695610677e-03 3.731622610e-03] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [2.96264270001E-01 -1.12136361340E-02 8.83656629800E-03 + -3.27006730900E-03]]] +[[[3.37881061230E-02 8.48399710300E-03 4.69561067700E-03 3.73162261000E-03] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [4.379222573e-02 1.618036649e-02 1.150396446e-02 7.328845802e-03]]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [4.37922257330E-02 1.61803664890E-02 1.15039644590E-02 7.32884580200E-03]]] domain=10001 type=multiplicity matrix -[[1.000000000e+00 0.000000000e+00] - [0.000000000e+00 1.000000000e+00]] -[[1.087786967e-01 0.000000000e+00] - [0.000000000e+00 1.424271731e-01]] +[[1.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 1.00000000000E+00]] +[[1.08778696728E-01 0.00000000000E+00] + [0.00000000000E+00 1.42427173055E-01]] domain=10001 type=nu-fission matrix -[[0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00]] -[[0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00]] +[[0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00]] +[[0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00]] domain=10001 type=chi -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10001 type=chi-prompt -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10001 type=velocity -[1.667783950e+07 3.349533676e+05] -[1.266444310e+06 3.833678163e+04] +[1.66778394974E+07 3.34953367601E+05] +[1.26644430952E+06 3.83367816257E+04] domain=10001 type=prompt-nu-fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10002 type=total -[6.645722606e-01 2.052384014e+00] -[3.121475191e-02 2.243429067e-01] +[6.64572260617E-01 2.05238401381E+00] +[3.12147519130E-02 2.24342906706E-01] domain=10002 type=transport -[2.905652574e-01 1.516438013e+00] -[2.385185464e-02 2.351972685e-01] +[2.90565257425E-01 1.51643801275E+00] +[2.38518546440E-02 2.35197268504E-01] domain=10002 type=nu-transport -[2.905652574e-01 1.516438013e+00] -[2.385185464e-02 2.351972685e-01] +[2.90565257425E-01 1.51643801275E+00] +[2.38518546440E-02 2.35197268504E-01] domain=10002 type=absorption -[6.903995222e-04 3.168725661e-02] -[4.414756871e-05 3.746558582e-03] +[6.90399522000E-04 3.16872566140E-02] +[4.41475690000E-05 3.74655858200E-03] domain=10002 type=capture -[6.903995222e-04 3.168725661e-02] -[4.414756871e-05 3.746558582e-03] +[6.90399522000E-04 3.16872566140E-02] +[4.41475690000E-05 3.74655858200E-03] domain=10002 type=fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10002 type=nu-fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10002 type=kappa-fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10002 type=scatter -[6.638818611e-01 2.020696757e+00] -[3.117268400e-02 2.206044539e-01] +[6.63881861094E-01 2.02069675720E+00] +[3.11726840050E-02 2.20604453857E-01] domain=10002 type=nu-scatter -[6.712692047e-01 2.035388329e+00] -[2.618637117e-02 2.580603286e-01] +[6.71269204714E-01 2.03538832876E+00] +[2.61863711690E-02 2.58060328563E-01] domain=10002 type=scatter matrix -[[[6.399014849e-01 3.811674489e-01 1.523918978e-01 9.148022288e-03] - [3.136771985e-02 8.757723206e-03 -2.567901060e-03 -3.784802882e-03]] +[[[6.39901484868E-01 3.81167448865E-01 1.52391897805E-01 9.14802228800E-03] + [3.13677198460E-02 8.75772320600E-03 -2.56790106000E-03 + -3.78480288200E-03]] - [[4.433431341e-04 3.999604143e-04 3.195627072e-04 2.138469692e-04] - [2.034944986e+00 5.099405132e-01 1.111746088e-01 2.498843574e-02]]] -[[[2.470912280e-02 1.624326492e-02 8.156277703e-03 3.888562142e-03] - [1.728112903e-03 9.256705012e-04 1.013984752e-03 8.170755709e-04]] + [[4.43343134000E-04 3.99960414000E-04 3.19562707000E-04 2.13846969000E-04] + [2.03494498562E+00 5.09940513161E-01 1.11174608804E-01 2.49884357390E-02]]] +[[[2.47091227980E-02 1.62432649210E-02 8.15627770300E-03 3.88856214200E-03] + [1.72811290300E-03 9.25670501000E-04 1.01398475200E-03 8.17075571000E-04]] - [[4.448503933e-04 4.013201827e-04 3.206491430e-04 2.145739971e-04] - [2.577998889e-01 5.123590630e-02 1.301981704e-02 8.312352562e-03]]] + [[4.44850393000E-04 4.01320183000E-04 3.20649143000E-04 2.14573997000E-04] + [2.57799888924E-01 5.12359062970E-02 1.30198170390E-02 8.31235256200E-03]]] domain=10002 type=nu-scatter matrix -[[[6.399014849e-01 3.811674489e-01 1.523918978e-01 9.148022288e-03] - [3.136771985e-02 8.757723206e-03 -2.567901060e-03 -3.784802882e-03]] +[[[6.39901484868E-01 3.81167448865E-01 1.52391897805E-01 9.14802228800E-03] + [3.13677198460E-02 8.75772320600E-03 -2.56790106000E-03 + -3.78480288200E-03]] - [[4.433431341e-04 3.999604143e-04 3.195627072e-04 2.138469692e-04] - [2.034944986e+00 5.099405132e-01 1.111746088e-01 2.498843574e-02]]] -[[[2.470912280e-02 1.624326492e-02 8.156277703e-03 3.888562142e-03] - [1.728112903e-03 9.256705012e-04 1.013984752e-03 8.170755709e-04]] + [[4.43343134000E-04 3.99960414000E-04 3.19562707000E-04 2.13846969000E-04] + [2.03494498562E+00 5.09940513161E-01 1.11174608804E-01 2.49884357390E-02]]] +[[[2.47091227980E-02 1.62432649210E-02 8.15627770300E-03 3.88856214200E-03] + [1.72811290300E-03 9.25670501000E-04 1.01398475200E-03 8.17075571000E-04]] - [[4.448503933e-04 4.013201827e-04 3.206491430e-04 2.145739971e-04] - [2.577998889e-01 5.123590630e-02 1.301981704e-02 8.312352562e-03]]] + [[4.44850393000E-04 4.01320183000E-04 3.20649143000E-04 2.14573997000E-04] + [2.57799888924E-01 5.12359062970E-02 1.30198170390E-02 8.31235256200E-03]]] domain=10002 type=multiplicity matrix -[[1.000000000e+00 1.000000000e+00] - [1.000000000e+00 1.000000000e+00]] -[[3.860919084e-02 6.766734800e-02] - [1.414213562e+00 1.359292066e-01]] +[[1.00000000000E+00 1.00000000000E+00] + [1.00000000000E+00 1.00000000000E+00]] +[[3.86091908370E-02 6.76673480000E-02] + [1.41421356237E+00 1.35929206606E-01]] domain=10002 type=nu-fission matrix -[[0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00]] -[[0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00]] +[[0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00]] +[[0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00]] domain=10002 type=chi -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10002 type=chi-prompt -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] domain=10002 type=velocity -[1.660556287e+07 3.284120387e+05] -[1.042435524e+06 3.882843573e+04] +[1.66055628732E+07 3.28412038650E+05] +[1.04243552374E+06 3.88284357298E+04] domain=10002 type=prompt-nu-fission -[0.000000000e+00 0.000000000e+00] -[0.000000000e+00 0.000000000e+00] +[0.00000000000E+00 0.00000000000E+00] +[0.00000000000E+00 0.00000000000E+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 298ded20f8..7a6e8dda0e 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.148254902e-01 2.279290909e-02 -0 10000 2 total 6.601699186e-01 4.751892791e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596371e-01 2.549359558e-02 -0 10000 2 total 6.476476601e-01 2.370373520e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596371e-01 2.549359558e-02 -0 10000 2 total 6.476476601e-01 2.370373520e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.740784492e-02 2.692497109e-03 -0 10000 2 total 2.645107416e-01 2.336707739e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.984454994e-02 2.643304329e-03 -0 10000 2 total 7.171935292e-02 2.520785935e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.563294979e-03 5.084836779e-04 -0 10000 2 total 1.927913887e-01 1.710592187e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.943174037e-02 1.322975612e-03 -0 10000 2 total 4.697747770e-01 4.168199978e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.474569823e+00 9.923532110e-02 -0 10000 2 total 3.728689641e+01 3.308377725e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.874176453e-01 2.062573210e-02 -0 10000 2 total 3.956591770e-01 2.512505679e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.851883882e-01 2.694562106e-02 -0 10000 2 total 4.123893993e-01 1.542527696e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841994578e-01 2.700101356e-02 -13 10000 1 1 total P1 5.187028435e-02 6.982548876e-03 -14 10000 1 1 total P2 2.006884532e-02 2.846495183e-03 -15 10000 1 1 total P3 9.477715706e-03 2.233519772e-03 -8 10000 1 2 total P0 9.889303933e-04 4.824194451e-04 -9 10000 1 2 total P1 -2.072345965e-04 1.490107754e-04 -10 10000 1 2 total P2 -1.033661805e-04 1.843163119e-04 -11 10000 1 2 total P3 2.342906230e-04 1.281731108e-04 -4 10000 2 1 total P0 9.246399088e-04 9.248834636e-04 -5 10000 2 1 total P1 -7.677049684e-04 7.679071859e-04 -6 10000 2 1 total P2 4.937888718e-04 4.939189384e-04 -7 10000 2 1 total P3 -1.714972293e-04 1.715424026e-04 -0 10000 2 2 total P0 4.114647594e-01 1.524493540e-02 -1 10000 2 2 total P1 1.648172801e-02 4.501727961e-03 -2 10000 2 2 total P2 6.371490493e-03 1.055074934e-02 -3 10000 2 2 total P3 -1.049912209e-02 1.043818772e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841994578e-01 2.700101356e-02 -13 10000 1 1 total P1 5.187028435e-02 6.982548876e-03 -14 10000 1 1 total P2 2.006884532e-02 2.846495183e-03 -15 10000 1 1 total P3 9.477715706e-03 2.233519772e-03 -8 10000 1 2 total P0 9.889303933e-04 4.824194451e-04 -9 10000 1 2 total P1 -2.072345965e-04 1.490107754e-04 -10 10000 1 2 total P2 -1.033661805e-04 1.843163119e-04 -11 10000 1 2 total P3 2.342906230e-04 1.281731108e-04 -4 10000 2 1 total P0 9.246399088e-04 9.248834636e-04 -5 10000 2 1 total P1 -7.677049684e-04 7.679071859e-04 -6 10000 2 1 total P2 4.937888718e-04 4.939189384e-04 -7 10000 2 1 total P3 -1.714972293e-04 1.715424026e-04 -0 10000 2 2 total P0 4.114647594e-01 1.524493540e-02 -1 10000 2 2 total P1 1.648172801e-02 4.501727961e-03 -2 10000 2 2 total P2 6.371490493e-03 1.055074934e-02 -3 10000 2 2 total P3 -1.049912209e-02 1.043818772e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.000000000e+00 7.851645501e-02 -2 10000 1 2 total 1.000000000e+00 6.871842709e-01 -1 10000 2 1 total 1.000000000e+00 1.414213562e+00 -0 10000 2 2 total 1.000000000e+00 4.113034880e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.014242816e-02 3.149091676e-03 -2 10000 1 2 total 0.000000000e+00 0.000000000e+00 -1 10000 2 1 total 4.543664666e-01 2.742550692e-02 -0 10000 2 2 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000000e+00 4.607052347e-02 -0 10000 2 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000000e+00 5.147145673e-02 -0 10000 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.751521062e+07 1.438175274e+06 -0 10000 2 total 3.501719952e+05 2.994593170e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.923922155e-02 1.309505950e-03 -0 10000 2 total 4.667190274e-01 4.141087040e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.137376709e-01 1.558190236e-02 -0 10001 2 total 3.008214017e-01 2.805244843e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732278720e-01 3.311536644e-02 -0 10001 2 total 3.123748362e-01 4.960583171e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732278720e-01 3.311536644e-02 -0 10001 2 total 3.123748362e-01 4.960583171e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991390e-03 3.225478907e-04 -0 10001 2 total 5.400378832e-03 6.181383082e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991390e-03 3.225478907e-04 -0 10001 2 total 5.400378832e-03 6.181383082e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.121626795e-01 1.532192309e-02 -0 10001 2 total 2.954210229e-01 2.744548889e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.101207351e-01 3.378810612e-02 -0 10001 2 total 2.962642700e-01 4.379222573e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207351e-01 3.378810612e-02 -13 10001 1 1 total P1 3.822959036e-02 8.483997103e-03 -14 10001 1 1 total P2 2.074494197e-02 4.695610677e-03 -15 10001 1 1 total P3 7.964296772e-03 3.731622610e-03 -8 10001 1 2 total P0 0.000000000e+00 0.000000000e+00 -9 10001 1 2 total P1 0.000000000e+00 0.000000000e+00 -10 10001 1 2 total P2 0.000000000e+00 0.000000000e+00 -11 10001 1 2 total P3 0.000000000e+00 0.000000000e+00 -4 10001 2 1 total P0 0.000000000e+00 0.000000000e+00 -5 10001 2 1 total P1 0.000000000e+00 0.000000000e+00 -6 10001 2 1 total P2 0.000000000e+00 0.000000000e+00 -7 10001 2 1 total P3 0.000000000e+00 0.000000000e+00 -0 10001 2 2 total P0 2.962642700e-01 4.379222573e-02 -1 10001 2 2 total P1 -1.121363613e-02 1.618036649e-02 -2 10001 2 2 total P2 8.836566298e-03 1.150396446e-02 -3 10001 2 2 total P3 -3.270067309e-03 7.328845802e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207351e-01 3.378810612e-02 -13 10001 1 1 total P1 3.822959036e-02 8.483997103e-03 -14 10001 1 1 total P2 2.074494197e-02 4.695610677e-03 -15 10001 1 1 total P3 7.964296772e-03 3.731622610e-03 -8 10001 1 2 total P0 0.000000000e+00 0.000000000e+00 -9 10001 1 2 total P1 0.000000000e+00 0.000000000e+00 -10 10001 1 2 total P2 0.000000000e+00 0.000000000e+00 -11 10001 1 2 total P3 0.000000000e+00 0.000000000e+00 -4 10001 2 1 total P0 0.000000000e+00 0.000000000e+00 -5 10001 2 1 total P1 0.000000000e+00 0.000000000e+00 -6 10001 2 1 total P2 0.000000000e+00 0.000000000e+00 -7 10001 2 1 total P3 0.000000000e+00 0.000000000e+00 -0 10001 2 2 total P0 2.962642700e-01 4.379222573e-02 -1 10001 2 2 total P1 -1.121363613e-02 1.618036649e-02 -2 10001 2 2 total P2 8.836566298e-03 1.150396446e-02 -3 10001 2 2 total P3 -3.270067309e-03 7.328845802e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.000000000e+00 1.087786967e-01 -2 10001 1 2 total 0.000000000e+00 0.000000000e+00 -1 10001 2 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 2 total 1.000000000e+00 1.424271731e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.000000000e+00 0.000000000e+00 -2 10001 1 2 total 0.000000000e+00 0.000000000e+00 -1 10001 2 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 2 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.667783950e+07 1.266444310e+06 -0 10001 2 total 3.349533676e+05 3.833678163e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000e+00 0.000000000e+00 -0 10001 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.645722606e-01 3.121475191e-02 -0 10002 2 total 2.052384014e+00 2.243429067e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905652574e-01 2.385185464e-02 -0 10002 2 total 1.516438013e+00 2.351972685e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905652574e-01 2.385185464e-02 -0 10002 2 total 1.516438013e+00 2.351972685e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995222e-04 4.414756871e-05 -0 10002 2 total 3.168725661e-02 3.746558582e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995222e-04 4.414756871e-05 -0 10002 2 total 3.168725661e-02 3.746558582e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000e+00 0.000000000e+00 -0 10002 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000e+00 0.000000000e+00 -0 10002 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000e+00 0.000000000e+00 -0 10002 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.638818611e-01 3.117268400e-02 -0 10002 2 total 2.020696757e+00 2.206044539e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.712692047e-01 2.618637117e-02 -0 10002 2 total 2.035388329e+00 2.580603286e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399014849e-01 2.470912280e-02 -13 10002 1 1 total P1 3.811674489e-01 1.624326492e-02 -14 10002 1 1 total P2 1.523918978e-01 8.156277703e-03 -15 10002 1 1 total P3 9.148022288e-03 3.888562142e-03 -8 10002 1 2 total P0 3.136771985e-02 1.728112903e-03 -9 10002 1 2 total P1 8.757723206e-03 9.256705012e-04 -10 10002 1 2 total P2 -2.567901060e-03 1.013984752e-03 -11 10002 1 2 total P3 -3.784802882e-03 8.170755709e-04 -4 10002 2 1 total P0 4.433431341e-04 4.448503933e-04 -5 10002 2 1 total P1 3.999604143e-04 4.013201827e-04 -6 10002 2 1 total P2 3.195627072e-04 3.206491430e-04 -7 10002 2 1 total P3 2.138469692e-04 2.145739971e-04 -0 10002 2 2 total P0 2.034944986e+00 2.577998889e-01 -1 10002 2 2 total P1 5.099405132e-01 5.123590630e-02 -2 10002 2 2 total P2 1.111746088e-01 1.301981704e-02 -3 10002 2 2 total P3 2.498843574e-02 8.312352562e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399014849e-01 2.470912280e-02 -13 10002 1 1 total P1 3.811674489e-01 1.624326492e-02 -14 10002 1 1 total P2 1.523918978e-01 8.156277703e-03 -15 10002 1 1 total P3 9.148022288e-03 3.888562142e-03 -8 10002 1 2 total P0 3.136771985e-02 1.728112903e-03 -9 10002 1 2 total P1 8.757723206e-03 9.256705012e-04 -10 10002 1 2 total P2 -2.567901060e-03 1.013984752e-03 -11 10002 1 2 total P3 -3.784802882e-03 8.170755709e-04 -4 10002 2 1 total P0 4.433431341e-04 4.448503933e-04 -5 10002 2 1 total P1 3.999604143e-04 4.013201827e-04 -6 10002 2 1 total P2 3.195627072e-04 3.206491430e-04 -7 10002 2 1 total P3 2.138469692e-04 2.145739971e-04 -0 10002 2 2 total P0 2.034944986e+00 2.577998889e-01 -1 10002 2 2 total P1 5.099405132e-01 5.123590630e-02 -2 10002 2 2 total P2 1.111746088e-01 1.301981704e-02 -3 10002 2 2 total P3 2.498843574e-02 8.312352562e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.000000000e+00 3.860919084e-02 -2 10002 1 2 total 1.000000000e+00 6.766734800e-02 -1 10002 2 1 total 1.000000000e+00 1.414213562e+00 -0 10002 2 2 total 1.000000000e+00 1.359292066e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.000000000e+00 0.000000000e+00 -2 10002 1 2 total 0.000000000e+00 0.000000000e+00 -1 10002 2 1 total 0.000000000e+00 0.000000000e+00 -0 10002 2 2 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000000e+00 0.000000000e+00 -0 10002 2 total 0.000000000e+00 0.000000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000000e+00 0.000000000e+00 -0 10002 2 total 0.000000000e+00 0.000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.660556287e+07 1.042435524e+06 -0 10002 2 total 3.284120387e+05 3.882843573e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000e+00 0.000000000e+00 -0 10002 2 total 0.000000000e+00 0.000000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.14825490214E-01 2.27929090940E-02 +0 10000 2 total 6.60169918628E-01 4.75189279080E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637119E-01 2.54935955780E-02 +0 10000 2 total 6.47647660079E-01 2.37037352050E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637119E-01 2.54935955780E-02 +0 10000 2 total 6.47647660079E-01 2.37037352050E-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.74078449200E-02 2.69249710900E-03 +0 10000 2 total 2.64510741628E-01 2.33670773920E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.98445499410E-02 2.64330432900E-03 +0 10000 2 total 7.17193529230E-02 2.52078593510E-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.56329497900E-03 5.08483678000E-04 +0 10000 2 total 1.92791388704E-01 1.71059218670E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.94317403720E-02 1.32297561200E-03 +0 10000 2 total 4.69774777026E-01 4.16819997830E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.47456982255E+00 9.92353210960E-02 +0 10000 2 total 3.72868964072E+01 3.30837772453E+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.87417645294E-01 2.06257321020E-02 +0 10000 2 total 3.95659177000E-01 2.51250567890E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.85188388202E-01 2.69456210650E-02 +0 10000 2 total 4.12389399309E-01 1.54252769580E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199457809E-01 2.70010135610E-02 +13 10000 1 1 total P1 5.18702843460E-02 6.98254887600E-03 +14 10000 1 1 total P2 2.00688453200E-02 2.84649518300E-03 +15 10000 1 1 total P3 9.47771570600E-03 2.23351977200E-03 +8 10000 1 2 total P0 9.88930393000E-04 4.82419445000E-04 +9 10000 1 2 total P1 -2.07234596000E-04 1.49010775000E-04 +10 10000 1 2 total P2 -1.03366181000E-04 1.84316312000E-04 +11 10000 1 2 total P3 2.34290623000E-04 1.28173111000E-04 +4 10000 2 1 total P0 9.24639909000E-04 9.24883464000E-04 +5 10000 2 1 total P1 -7.67704968000E-04 7.67907186000E-04 +6 10000 2 1 total P2 4.93788872000E-04 4.93918938000E-04 +7 10000 2 1 total P3 -1.71497229000E-04 1.71542403000E-04 +0 10000 2 2 total P0 4.11464759400E-01 1.52449353960E-02 +1 10000 2 2 total P1 1.64817280070E-02 4.50172796100E-03 +2 10000 2 2 total P2 6.37149049300E-03 1.05507493410E-02 +3 10000 2 2 total P3 -1.04991220900E-02 1.04381877190E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199457809E-01 2.70010135610E-02 +13 10000 1 1 total P1 5.18702843460E-02 6.98254887600E-03 +14 10000 1 1 total P2 2.00688453200E-02 2.84649518300E-03 +15 10000 1 1 total P3 9.47771570600E-03 2.23351977200E-03 +8 10000 1 2 total P0 9.88930393000E-04 4.82419445000E-04 +9 10000 1 2 total P1 -2.07234596000E-04 1.49010775000E-04 +10 10000 1 2 total P2 -1.03366181000E-04 1.84316312000E-04 +11 10000 1 2 total P3 2.34290623000E-04 1.28173111000E-04 +4 10000 2 1 total P0 9.24639909000E-04 9.24883464000E-04 +5 10000 2 1 total P1 -7.67704968000E-04 7.67907186000E-04 +6 10000 2 1 total P2 4.93788872000E-04 4.93918938000E-04 +7 10000 2 1 total P3 -1.71497229000E-04 1.71542403000E-04 +0 10000 2 2 total P0 4.11464759400E-01 1.52449353960E-02 +1 10000 2 2 total P1 1.64817280070E-02 4.50172796100E-03 +2 10000 2 2 total P2 6.37149049300E-03 1.05507493410E-02 +3 10000 2 2 total P3 -1.04991220900E-02 1.04381877190E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.00000000000E+00 7.85164550060E-02 +2 10000 1 2 total 1.00000000000E+00 6.87184270936E-01 +1 10000 2 1 total 1.00000000000E+00 1.41421356237E+00 +0 10000 2 2 total 1.00000000000E+00 4.11303488040E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.01424281630E-02 3.14909167600E-03 +2 10000 1 2 total 0.00000000000E+00 0.00000000000E+00 +1 10000 2 1 total 4.54366466559E-01 2.74255069250E-02 +0 10000 2 2 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000000E+00 4.60705234720E-02 +0 10000 2 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000000E+00 5.14714567340E-02 +0 10000 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.75152106204E+07 1.43817527390E+06 +0 10000 2 total 3.50171995194E+05 2.99459316967E+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.92392215460E-02 1.30950595000E-03 +0 10000 2 total 4.66719027354E-01 4.14108703990E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.13737670907E-01 1.55819023550E-02 +0 10001 2 total 3.00821401699E-01 2.80524484310E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872020E-01 3.31153664430E-02 +0 10001 2 total 3.12374836218E-01 4.96058317050E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872020E-01 3.31153664430E-02 +0 10001 2 total 3.12374836218E-01 4.96058317050E-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499139000E-03 3.22547891000E-04 +0 10001 2 total 5.40037883200E-03 6.18138308000E-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499139000E-03 3.22547891000E-04 +0 10001 2 total 5.40037883200E-03 6.18138308000E-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.12162679516E-01 1.53219230920E-02 +0 10001 2 total 2.95421022866E-01 2.74454888860E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.10120735076E-01 3.37881061230E-02 +0 10001 2 total 2.96264270001E-01 4.37922257330E-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735076E-01 3.37881061230E-02 +13 10001 1 1 total P1 3.82295903620E-02 8.48399710300E-03 +14 10001 1 1 total P2 2.07449419700E-02 4.69561067700E-03 +15 10001 1 1 total P3 7.96429677200E-03 3.73162261000E-03 +8 10001 1 2 total P0 0.00000000000E+00 0.00000000000E+00 +9 10001 1 2 total P1 0.00000000000E+00 0.00000000000E+00 +10 10001 1 2 total P2 0.00000000000E+00 0.00000000000E+00 +11 10001 1 2 total P3 0.00000000000E+00 0.00000000000E+00 +4 10001 2 1 total P0 0.00000000000E+00 0.00000000000E+00 +5 10001 2 1 total P1 0.00000000000E+00 0.00000000000E+00 +6 10001 2 1 total P2 0.00000000000E+00 0.00000000000E+00 +7 10001 2 1 total P3 0.00000000000E+00 0.00000000000E+00 +0 10001 2 2 total P0 2.96264270001E-01 4.37922257330E-02 +1 10001 2 2 total P1 -1.12136361340E-02 1.61803664890E-02 +2 10001 2 2 total P2 8.83656629800E-03 1.15039644590E-02 +3 10001 2 2 total P3 -3.27006730900E-03 7.32884580200E-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735076E-01 3.37881061230E-02 +13 10001 1 1 total P1 3.82295903620E-02 8.48399710300E-03 +14 10001 1 1 total P2 2.07449419700E-02 4.69561067700E-03 +15 10001 1 1 total P3 7.96429677200E-03 3.73162261000E-03 +8 10001 1 2 total P0 0.00000000000E+00 0.00000000000E+00 +9 10001 1 2 total P1 0.00000000000E+00 0.00000000000E+00 +10 10001 1 2 total P2 0.00000000000E+00 0.00000000000E+00 +11 10001 1 2 total P3 0.00000000000E+00 0.00000000000E+00 +4 10001 2 1 total P0 0.00000000000E+00 0.00000000000E+00 +5 10001 2 1 total P1 0.00000000000E+00 0.00000000000E+00 +6 10001 2 1 total P2 0.00000000000E+00 0.00000000000E+00 +7 10001 2 1 total P3 0.00000000000E+00 0.00000000000E+00 +0 10001 2 2 total P0 2.96264270001E-01 4.37922257330E-02 +1 10001 2 2 total P1 -1.12136361340E-02 1.61803664890E-02 +2 10001 2 2 total P2 8.83656629800E-03 1.15039644590E-02 +3 10001 2 2 total P3 -3.27006730900E-03 7.32884580200E-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.00000000000E+00 1.08778696728E-01 +2 10001 1 2 total 0.00000000000E+00 0.00000000000E+00 +1 10001 2 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 2 total 1.00000000000E+00 1.42427173055E-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.00000000000E+00 0.00000000000E+00 +2 10001 1 2 total 0.00000000000E+00 0.00000000000E+00 +1 10001 2 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 2 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.66778394974E+07 1.26644430952E+06 +0 10001 2 total 3.34953367601E+05 3.83367816257E+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000E+00 0.00000000000E+00 +0 10001 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.64572260617E-01 3.12147519130E-02 +0 10002 2 total 2.05238401381E+00 2.24342906706E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257425E-01 2.38518546440E-02 +0 10002 2 total 1.51643801275E+00 2.35197268504E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257425E-01 2.38518546440E-02 +0 10002 2 total 1.51643801275E+00 2.35197268504E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.90399522000E-04 4.41475690000E-05 +0 10002 2 total 3.16872566140E-02 3.74655858200E-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.90399522000E-04 4.41475690000E-05 +0 10002 2 total 3.16872566140E-02 3.74655858200E-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000E+00 0.00000000000E+00 +0 10002 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000E+00 0.00000000000E+00 +0 10002 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000E+00 0.00000000000E+00 +0 10002 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.63881861094E-01 3.11726840050E-02 +0 10002 2 total 2.02069675720E+00 2.20604453857E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.71269204714E-01 2.61863711690E-02 +0 10002 2 total 2.03538832876E+00 2.58060328563E-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901484868E-01 2.47091227980E-02 +13 10002 1 1 total P1 3.81167448865E-01 1.62432649210E-02 +14 10002 1 1 total P2 1.52391897805E-01 8.15627770300E-03 +15 10002 1 1 total P3 9.14802228800E-03 3.88856214200E-03 +8 10002 1 2 total P0 3.13677198460E-02 1.72811290300E-03 +9 10002 1 2 total P1 8.75772320600E-03 9.25670501000E-04 +10 10002 1 2 total P2 -2.56790106000E-03 1.01398475200E-03 +11 10002 1 2 total P3 -3.78480288200E-03 8.17075571000E-04 +4 10002 2 1 total P0 4.43343134000E-04 4.44850393000E-04 +5 10002 2 1 total P1 3.99960414000E-04 4.01320183000E-04 +6 10002 2 1 total P2 3.19562707000E-04 3.20649143000E-04 +7 10002 2 1 total P3 2.13846969000E-04 2.14573997000E-04 +0 10002 2 2 total P0 2.03494498562E+00 2.57799888924E-01 +1 10002 2 2 total P1 5.09940513161E-01 5.12359062970E-02 +2 10002 2 2 total P2 1.11174608804E-01 1.30198170390E-02 +3 10002 2 2 total P3 2.49884357390E-02 8.31235256200E-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901484868E-01 2.47091227980E-02 +13 10002 1 1 total P1 3.81167448865E-01 1.62432649210E-02 +14 10002 1 1 total P2 1.52391897805E-01 8.15627770300E-03 +15 10002 1 1 total P3 9.14802228800E-03 3.88856214200E-03 +8 10002 1 2 total P0 3.13677198460E-02 1.72811290300E-03 +9 10002 1 2 total P1 8.75772320600E-03 9.25670501000E-04 +10 10002 1 2 total P2 -2.56790106000E-03 1.01398475200E-03 +11 10002 1 2 total P3 -3.78480288200E-03 8.17075571000E-04 +4 10002 2 1 total P0 4.43343134000E-04 4.44850393000E-04 +5 10002 2 1 total P1 3.99960414000E-04 4.01320183000E-04 +6 10002 2 1 total P2 3.19562707000E-04 3.20649143000E-04 +7 10002 2 1 total P3 2.13846969000E-04 2.14573997000E-04 +0 10002 2 2 total P0 2.03494498562E+00 2.57799888924E-01 +1 10002 2 2 total P1 5.09940513161E-01 5.12359062970E-02 +2 10002 2 2 total P2 1.11174608804E-01 1.30198170390E-02 +3 10002 2 2 total P3 2.49884357390E-02 8.31235256200E-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.00000000000E+00 3.86091908370E-02 +2 10002 1 2 total 1.00000000000E+00 6.76673480000E-02 +1 10002 2 1 total 1.00000000000E+00 1.41421356237E+00 +0 10002 2 2 total 1.00000000000E+00 1.35929206606E-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.00000000000E+00 0.00000000000E+00 +2 10002 1 2 total 0.00000000000E+00 0.00000000000E+00 +1 10002 2 1 total 0.00000000000E+00 0.00000000000E+00 +0 10002 2 2 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000000E+00 0.00000000000E+00 +0 10002 2 total 0.00000000000E+00 0.00000000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000000E+00 0.00000000000E+00 +0 10002 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.66055628732E+07 1.04243552374E+06 +0 10002 2 total 3.28412038650E+05 3.88284357298E+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000E+00 0.00000000000E+00 +0 10002 2 total 0.00000000000E+00 0.00000000000E+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 907c223bfc..13c79782ed 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -0acca7db0372f24bfa984e055c4dc706ce2b069dffd7124bc0c45cdf6f151d56435cc92aad67fa068c88ae14afe44aadf13d76b32a18eee17affc92ae3498b8d \ No newline at end of file +14ebc83b998b90376a733c80a25c54ed334606cb4eb7a3c13ff3bda041ade473d3e9c8499a04fce92f2096300b026ed331b00e14b233c4ea4c6e9a3305c3e77b \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 76de7e3f25..83d8428510 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.000000000e+02 0.000000000e+00 7.000000000e+02 8.000000000e+02] + Temperature = [5.00000000000E+02 0.00000000000E+00 7.00000000000E+02 8.00000000000E+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index fce4790688..19e72aab2a 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -3fb1940a428b77249d1df7dbe44f8edb6b34b9ef7002343b423416def12ccdb8dac35b154a9f1d603f54587492320211613959ed5c1b6bea91cd095b7d98e56c \ No newline at end of file +d3ed1243d3e7a30a7b353539596ccb23cfb7293f6495e75644ff28868f629f34aa8e23023bad0c54aa2f2c048e6c89a47f454b8cffa90042669eb269f7ada74e \ No newline at end of file diff --git a/tests/test_tally_aggregation/test_tally_aggregation.py b/tests/test_tally_aggregation/test_tally_aggregation.py index fdc086e682..53bc96d4aa 100644 --- a/tests/test_tally_aggregation/test_tally_aggregation.py +++ b/tests/test_tally_aggregation/test_tally_aggregation.py @@ -69,6 +69,8 @@ class TallyAggregationTestHarness(PyAPITestHarness): outstr += ', '.join(map(str, tally_sum.mean)) outstr += ', '.join(map(str, tally_sum.std_dev)) + print(outstr) + # Hash the results if necessary if hash_output: sha512 = hashlib.sha512() diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 0d0a8f2171..62680ce639 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] +[[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] ..., - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] ..., - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] ..., - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] ..., - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]]][[[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] ..., - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]] + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] - [[0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00] - [0.000000000e+00 0.000000000e+00 0.000000000e+00]]] \ No newline at end of file + [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] + [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 7ad20ad843..4667fe731d 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation with 10 -# significant figures. This is needed to avoid round off error when large -# numbers are printed, which can cause tests to fail for different build -# configurations. -np.set_printoptions(formatter={'float': '{:.9e}'.format}) -pd.options.display.float_format = '{:.9e}'.format +# Require numpy and pandas to print output rounded to 12 decimal places and in +# scientific notation with 12 significant figures. This is needed to avoid round +# off error when large numbers are printed, which can cause tests to fail for +# different build configurations. +np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 12), '13.11E')}) +pd.set_option('display.float_format', lambda x: '%13.11E' % np.around(x,12)) sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 880a0055484831924b5d340efe123af9b9e251c5 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 09:50:51 -0600 Subject: [PATCH 35/82] removed print statement in tally aggregation test --- tests/test_tally_aggregation/test_tally_aggregation.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_tally_aggregation/test_tally_aggregation.py b/tests/test_tally_aggregation/test_tally_aggregation.py index 53bc96d4aa..fdc086e682 100644 --- a/tests/test_tally_aggregation/test_tally_aggregation.py +++ b/tests/test_tally_aggregation/test_tally_aggregation.py @@ -69,8 +69,6 @@ class TallyAggregationTestHarness(PyAPITestHarness): outstr += ', '.join(map(str, tally_sum.mean)) outstr += ', '.join(map(str, tally_sum.std_dev)) - print(outstr) - # Hash the results if necessary if hash_output: sha512 = hashlib.sha512() From 5876511038559a3f5f3c5fd7a0d34a6903fcb3a0 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 10:07:59 -0600 Subject: [PATCH 36/82] changed number of sig figs in testing harness from 12 to 10 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 320 ++++++----- .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 8 +- 9 files changed, 693 insertions(+), 701 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 06dbe0c143..de6f408248 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.53624422471E-01 2.10526963250E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852177884E-01 2.28575540030E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852177884E-01 2.28575540030E-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.49034558320E-02 4.31276120000E-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.80480660340E-02 4.57996368900E-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.68553897980E-02 2.62215977600E-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.06492898580E-02 6.40987451700E-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.13795513809E+00 5.07363814554E-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.88720966639E-01 1.78304285990E-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.89303556282E-01 2.30755385730E-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556282E-01 2.31456046240E-02 -1 10000 1 1 total P1 4.62244178310E-02 5.90716955700E-03 -2 10000 1 1 total P2 1.79835850200E-02 2.88297198200E-03 -3 10000 1 1 total P3 6.62837351400E-03 2.45710898400E-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556282E-01 2.31456046240E-02 -1 10000 1 1 total P1 4.62244178310E-02 5.90716955700E-03 -2 10000 1 1 total P2 1.79835850200E-02 2.88297198200E-03 -3 10000 1 1 total P3 6.62837351400E-03 2.45710898400E-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.00000000000E+00 6.61108201730E-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.58350193370E-02 5.59182486100E-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000000E+00 4.60705234720E-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000000E+00 5.14714567340E-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.00130873975E+06 1.46216555365E+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.00039777880E-02 6.36690787400E-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.11594108102E-01 1.37931681280E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255063691E-01 2.91895009800E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255063691E-01 2.91895009800E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984640200E-03 2.86334127000E-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984640200E-03 2.86334127000E-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.09384261701E-01 1.35512674910E-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.07987349445E-01 2.93080885040E-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349445E-01 2.93080885040E-02 -1 10001 1 1 total P1 3.06171532540E-02 7.46445601200E-03 -2 10001 1 1 total P2 1.89114904070E-02 4.32282773200E-03 -3 10001 1 1 total P3 6.23461818700E-03 3.33820228100E-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349445E-01 2.93080885040E-02 -1 10001 1 1 total P1 3.06171532540E-02 7.46445601200E-03 -2 10001 1 1 total P2 1.89114904070E-02 4.32282773200E-03 -3 10001 1 1 total P3 6.23461818700E-03 3.33820228100E-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.00000000000E+00 9.50387215070E-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.83326115257E+06 1.66355174520E+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.04998833317E-01 4.39644875950E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183982700E-01 4.09141196050E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183982700E-01 4.09141196050E-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034115700E-03 5.54524424000E-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034115700E-03 5.54524424000E-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.98938492160E-01 4.34929841730E-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.03414663159E-01 4.39587370760E-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663159E-01 4.35859938040E-02 -1 10002 1 1 total P1 4.10417418590E-01 1.58772201940E-02 -2 10002 1 1 total P2 1.43301036475E-01 7.18737766300E-03 -3 10002 1 1 total P3 8.73942634100E-03 3.57144134500E-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663159E-01 4.35859938040E-02 -1 10002 1 1 total P1 4.10417418590E-01 1.58772201940E-02 -2 10002 1 1 total P2 1.43301036475E-01 7.18737766300E-03 -3 10002 1 1 total P3 8.73942634100E-03 3.57144134500E-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.00000000000E+00 5.68667253070E-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.73219969947E+06 1.59691426430E+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.536244225E-01 2.105269630E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008521779E-01 2.285755400E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008521779E-01 2.285755400E-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.490345580E-02 4.312761200E-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.804806600E-02 4.579963700E-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.685538980E-02 2.622159800E-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.064928990E-02 6.409874500E-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955138E+00 5.073638146E-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.887209666E-01 1.783042860E-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.893035563E-01 2.307553860E-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893035563E-01 2.314560460E-02 +1 10000 1 1 total P1 4.622441780E-02 5.907169600E-03 +2 10000 1 1 total P2 1.798358500E-02 2.882972000E-03 +3 10000 1 1 total P3 6.628373500E-03 2.457109000E-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893035563E-01 2.314560460E-02 +1 10000 1 1 total P1 4.622441780E-02 5.907169600E-03 +2 10000 1 1 total P2 1.798358500E-02 2.882972000E-03 +3 10000 1 1 total P3 6.628373500E-03 2.457109000E-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.000000000E+00 6.611082020E-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.583501930E-02 5.591824900E-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000000E+00 4.607052350E-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000000E+00 5.147145670E-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.001308740E+06 1.462165554E+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.000397780E-02 6.366907900E-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.115941081E-01 1.379316810E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792550637E-01 2.918950100E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792550637E-01 2.918950100E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846400E-03 2.863341000E-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846400E-03 2.863341000E-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.093842617E-01 1.355126750E-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.079873494E-01 2.930808850E-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873494E-01 2.930808850E-02 +1 10001 1 1 total P1 3.061715330E-02 7.464456000E-03 +2 10001 1 1 total P2 1.891149040E-02 4.322827700E-03 +3 10001 1 1 total P3 6.234618200E-03 3.338202300E-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873494E-01 2.930808850E-02 +1 10001 1 1 total P1 3.061715330E-02 7.464456000E-03 +2 10001 1 1 total P2 1.891149040E-02 4.322827700E-03 +3 10001 1 1 total P3 6.234618200E-03 3.338202300E-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.000000000E+00 9.503872150E-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.833261153E+06 1.663551745E+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.049988333E-01 4.396448760E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991839827E-01 4.091411960E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991839827E-01 4.091411960E-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341200E-03 5.545244000E-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341200E-03 5.545244000E-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.989384922E-01 4.349298420E-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.034146632E-01 4.395873710E-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034146632E-01 4.358599380E-02 +1 10002 1 1 total P1 4.104174186E-01 1.587722020E-02 +2 10002 1 1 total P2 1.433010365E-01 7.187377700E-03 +3 10002 1 1 total P3 8.739426300E-03 3.571441300E-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034146632E-01 4.358599380E-02 +1 10002 1 1 total P1 4.104174186E-01 1.587722020E-02 +2 10002 1 1 total P2 1.433010365E-01 7.187377700E-03 +3 10002 1 1 total P3 8.739426300E-03 3.571441300E-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.000000000E+00 5.686672530E-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.732199699E+06 1.596914264E+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000000E+00 0.000000000E+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 1bb49ceb39..5b2385cd8b 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.14593400053E+00 5.53821694685E-01 - 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.18919198978E-01 5.20644255933E-01 - 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.18919198978E-01 5.20644255933E-01 - 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.97622061150E-02 1.06287640930E-02 - 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.97622061150E-02 1.06287640930E-02 - 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.00000000000E+00 0.00000000000E+00 - 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.00000000000E+00 0.00000000000E+00 - 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.00000000000E+00 0.00000000000E+00 - 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.12617179441E+00 5.43440008398E-01 - 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.14254691911E+00 5.70131389856E-01 - 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.14254691911E+00 5.70131389856E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335E-01 2.16322168307E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415E-01 6.65037725810E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704190E-02 2.46208323200E-02 - 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.14254691911E+00 5.70131389856E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335E-01 2.16322168307E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415E-01 6.65037725810E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704190E-02 2.46208323200E-02 - 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.00000000000E+00 5.29717327374E-01 - 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.00000000000E+00 0.00000000000E+00 - 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.00000000000E+00 0.00000000000E+00 - 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.00000000000E+00 0.00000000000E+00 - 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.74245714482E+05 4.16397691599E+05 - 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.00000000000E+00 0.00000000000E+00 + 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.145934001E+00 5.538216947E-01 + 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.189191990E-01 5.206442559E-01 + 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.189191990E-01 5.206442559E-01 + 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.976220610E-02 1.062876410E-02 + 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.976220610E-02 1.062876410E-02 + 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.000000000E+00 0.000000000E+00 + 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.000000000E+00 0.000000000E+00 + 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.000000000E+00 0.000000000E+00 + 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.126171794E+00 5.434400084E-01 + 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.142546919E+00 5.701313899E-01 + 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.142546919E+00 5.701313899E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943E-01 2.163221683E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934E-01 6.650377260E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827040E-02 2.462083230E-02 + 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.142546919E+00 5.701313899E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943E-01 2.163221683E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934E-01 6.650377260E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827040E-02 2.462083230E-02 + 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.000000000E+00 5.297173274E-01 + 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.000000000E+00 0.000000000E+00 + 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.000000000E+00 0.000000000E+00 + 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.000000000E+00 0.000000000E+00 + 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.742457145E+05 4.163976916E+05 + 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.000000000E+00 0.000000000E+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 28e1aef4ee..9a042191f8 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,230 +1,222 @@ domain=10000 type=total -[4.14825490214E-01 6.60169918628E-01] -[2.27929090940E-02 4.75189279080E-02] +[4.148254902E-01 6.601699186E-01] +[2.279290910E-02 4.751892790E-02] domain=10000 type=transport -[3.56859637119E-01 6.47647660079E-01] -[2.54935955780E-02 2.37037352050E-02] +[3.568596371E-01 6.476476601E-01] +[2.549359560E-02 2.370373520E-02] domain=10000 type=nu-transport -[3.56859637119E-01 6.47647660079E-01] -[2.54935955780E-02 2.37037352050E-02] +[3.568596371E-01 6.476476601E-01] +[2.549359560E-02 2.370373520E-02] domain=10000 type=absorption -[2.74078449200E-02 2.64510741628E-01] -[2.69249710900E-03 2.33670773920E-02] +[2.740784490E-02 2.645107416E-01] +[2.692497100E-03 2.336707740E-02] domain=10000 type=capture -[1.98445499410E-02 7.17193529230E-02] -[2.64330432900E-03 2.52078593510E-02] +[1.984454990E-02 7.171935290E-02] +[2.643304300E-03 2.520785940E-02] domain=10000 type=fission -[7.56329497900E-03 1.92791388704E-01] -[5.08483678000E-04 1.71059218670E-02] +[7.563295000E-03 1.927913887E-01] +[5.084837000E-04 1.710592190E-02] domain=10000 type=nu-fission -[1.94317403720E-02 4.69774777026E-01] -[1.32297561200E-03 4.16819997830E-02] +[1.943174040E-02 4.697747770E-01] +[1.322975600E-03 4.168199980E-02] domain=10000 type=kappa-fission -[1.47456982255E+00 3.72868964072E+01] -[9.92353210960E-02 3.30837772453E+00] +[1.474569823E+00 3.728689641E+01] +[9.923532110E-02 3.308377725E+00] domain=10000 type=scatter -[3.87417645294E-01 3.95659177000E-01] -[2.06257321020E-02 2.51250567890E-02] +[3.874176453E-01 3.956591770E-01] +[2.062573210E-02 2.512505680E-02] domain=10000 type=nu-scatter -[3.85188388202E-01 4.12389399309E-01] -[2.69456210650E-02 1.54252769580E-02] +[3.851883882E-01 4.123893993E-01] +[2.694562110E-02 1.542527700E-02] domain=10000 type=scatter matrix -[[[3.84199457809E-01 5.18702843460E-02 2.00688453200E-02 9.47771570600E-03] - [9.88930393000E-04 -2.07234596000E-04 -1.03366181000E-04 - 2.34290623000E-04]] +[[[3.841994578E-01 5.187028430E-02 2.006884530E-02 9.477715700E-03] + [9.889304000E-04 -2.072346000E-04 -1.033662000E-04 2.342906000E-04]] - [[9.24639909000E-04 -7.67704968000E-04 4.93788872000E-04 - -1.71497229000E-04] - [4.11464759400E-01 1.64817280070E-02 6.37149049300E-03 -1.04991220900E-02]]] -[[[2.70010135610E-02 6.98254887600E-03 2.84649518300E-03 2.23351977200E-03] - [4.82419445000E-04 1.49010775000E-04 1.84316312000E-04 1.28173111000E-04]] + [[9.246399000E-04 -7.677050000E-04 4.937889000E-04 -1.714972000E-04] + [4.114647594E-01 1.648172800E-02 6.371490500E-03 -1.049912210E-02]]] +[[[2.700101360E-02 6.982548900E-03 2.846495200E-03 2.233519800E-03] + [4.824194000E-04 1.490108000E-04 1.843163000E-04 1.281731000E-04]] - [[9.24883464000E-04 7.67907186000E-04 4.93918938000E-04 1.71542403000E-04] - [1.52449353960E-02 4.50172796100E-03 1.05507493410E-02 1.04381877190E-02]]] + [[9.248835000E-04 7.679072000E-04 4.939189000E-04 1.715424000E-04] + [1.524493540E-02 4.501728000E-03 1.055074930E-02 1.043818770E-02]]] domain=10000 type=nu-scatter matrix -[[[3.84199457809E-01 5.18702843460E-02 2.00688453200E-02 9.47771570600E-03] - [9.88930393000E-04 -2.07234596000E-04 -1.03366181000E-04 - 2.34290623000E-04]] +[[[3.841994578E-01 5.187028430E-02 2.006884530E-02 9.477715700E-03] + [9.889304000E-04 -2.072346000E-04 -1.033662000E-04 2.342906000E-04]] - [[9.24639909000E-04 -7.67704968000E-04 4.93788872000E-04 - -1.71497229000E-04] - [4.11464759400E-01 1.64817280070E-02 6.37149049300E-03 -1.04991220900E-02]]] -[[[2.70010135610E-02 6.98254887600E-03 2.84649518300E-03 2.23351977200E-03] - [4.82419445000E-04 1.49010775000E-04 1.84316312000E-04 1.28173111000E-04]] + [[9.246399000E-04 -7.677050000E-04 4.937889000E-04 -1.714972000E-04] + [4.114647594E-01 1.648172800E-02 6.371490500E-03 -1.049912210E-02]]] +[[[2.700101360E-02 6.982548900E-03 2.846495200E-03 2.233519800E-03] + [4.824194000E-04 1.490108000E-04 1.843163000E-04 1.281731000E-04]] - [[9.24883464000E-04 7.67907186000E-04 4.93918938000E-04 1.71542403000E-04] - [1.52449353960E-02 4.50172796100E-03 1.05507493410E-02 1.04381877190E-02]]] + [[9.248835000E-04 7.679072000E-04 4.939189000E-04 1.715424000E-04] + [1.524493540E-02 4.501728000E-03 1.055074930E-02 1.043818770E-02]]] domain=10000 type=multiplicity matrix -[[1.00000000000E+00 1.00000000000E+00] - [1.00000000000E+00 1.00000000000E+00]] -[[7.85164550060E-02 6.87184270936E-01] - [1.41421356237E+00 4.11303488040E-02]] +[[1.000000000E+00 1.000000000E+00] + [1.000000000E+00 1.000000000E+00]] +[[7.851645500E-02 6.871842709E-01] + [1.414213562E+00 4.113034880E-02]] domain=10000 type=nu-fission matrix -[[2.01424281630E-02 0.00000000000E+00] - [4.54366466559E-01 0.00000000000E+00]] -[[3.14909167600E-03 0.00000000000E+00] - [2.74255069250E-02 0.00000000000E+00]] +[[2.014242820E-02 0.000000000E+00] + [4.543664666E-01 0.000000000E+00]] +[[3.149091700E-03 0.000000000E+00] + [2.742550690E-02 0.000000000E+00]] domain=10000 type=chi -[1.00000000000E+00 0.00000000000E+00] -[4.60705234720E-02 0.00000000000E+00] +[1.000000000E+00 0.000000000E+00] +[4.607052350E-02 0.000000000E+00] domain=10000 type=chi-prompt -[1.00000000000E+00 0.00000000000E+00] -[5.14714567340E-02 0.00000000000E+00] +[1.000000000E+00 0.000000000E+00] +[5.147145670E-02 0.000000000E+00] domain=10000 type=velocity -[1.75152106204E+07 3.50171995194E+05] -[1.43817527390E+06 2.99459316967E+04] +[1.751521062E+07 3.501719952E+05] +[1.438175274E+06 2.994593170E+04] domain=10000 type=prompt-nu-fission -[1.92392215460E-02 4.66719027354E-01] -[1.30950595000E-03 4.14108703990E-02] +[1.923922150E-02 4.667190274E-01] +[1.309506000E-03 4.141087040E-02] domain=10001 type=total -[3.13737670907E-01 3.00821401699E-01] -[1.55819023550E-02 2.80524484310E-02] +[3.137376709E-01 3.008214017E-01] +[1.558190240E-02 2.805244840E-02] domain=10001 type=transport -[2.73227872020E-01 3.12374836218E-01] -[3.31153664430E-02 4.96058317050E-02] +[2.732278720E-01 3.123748362E-01] +[3.311536640E-02 4.960583170E-02] domain=10001 type=nu-transport -[2.73227872020E-01 3.12374836218E-01] -[3.31153664430E-02 4.96058317050E-02] +[2.732278720E-01 3.123748362E-01] +[3.311536640E-02 4.960583170E-02] domain=10001 type=absorption -[1.57499139000E-03 5.40037883200E-03] -[3.22547891000E-04 6.18138308000E-04] +[1.574991400E-03 5.400378800E-03] +[3.225479000E-04 6.181383000E-04] domain=10001 type=capture -[1.57499139000E-03 5.40037883200E-03] -[3.22547891000E-04 6.18138308000E-04] +[1.574991400E-03 5.400378800E-03] +[3.225479000E-04 6.181383000E-04] domain=10001 type=fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10001 type=nu-fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10001 type=kappa-fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10001 type=scatter -[3.12162679516E-01 2.95421022866E-01] -[1.53219230920E-02 2.74454888860E-02] +[3.121626795E-01 2.954210229E-01] +[1.532192310E-02 2.744548890E-02] domain=10001 type=nu-scatter -[3.10120735076E-01 2.96264270001E-01] -[3.37881061230E-02 4.37922257330E-02] +[3.101207351E-01 2.962642700E-01] +[3.378810610E-02 4.379222570E-02] domain=10001 type=scatter matrix -[[[3.10120735076E-01 3.82295903620E-02 2.07449419700E-02 7.96429677200E-03] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] +[[[3.101207351E-01 3.822959040E-02 2.074494200E-02 7.964296800E-03] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [2.96264270001E-01 -1.12136361340E-02 8.83656629800E-03 - -3.27006730900E-03]]] -[[[3.37881061230E-02 8.48399710300E-03 4.69561067700E-03 3.73162261000E-03] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [2.962642700E-01 -1.121363610E-02 8.836566300E-03 -3.270067300E-03]]] +[[[3.378810610E-02 8.483997100E-03 4.695610700E-03 3.731622600E-03] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [4.37922257330E-02 1.61803664890E-02 1.15039644590E-02 7.32884580200E-03]]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [4.379222570E-02 1.618036650E-02 1.150396450E-02 7.328845800E-03]]] domain=10001 type=nu-scatter matrix -[[[3.10120735076E-01 3.82295903620E-02 2.07449419700E-02 7.96429677200E-03] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] +[[[3.101207351E-01 3.822959040E-02 2.074494200E-02 7.964296800E-03] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [2.96264270001E-01 -1.12136361340E-02 8.83656629800E-03 - -3.27006730900E-03]]] -[[[3.37881061230E-02 8.48399710300E-03 4.69561067700E-03 3.73162261000E-03] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [2.962642700E-01 -1.121363610E-02 8.836566300E-03 -3.270067300E-03]]] +[[[3.378810610E-02 8.483997100E-03 4.695610700E-03 3.731622600E-03] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [4.37922257330E-02 1.61803664890E-02 1.15039644590E-02 7.32884580200E-03]]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [4.379222570E-02 1.618036650E-02 1.150396450E-02 7.328845800E-03]]] domain=10001 type=multiplicity matrix -[[1.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 1.00000000000E+00]] -[[1.08778696728E-01 0.00000000000E+00] - [0.00000000000E+00 1.42427173055E-01]] +[[1.000000000E+00 0.000000000E+00] + [0.000000000E+00 1.000000000E+00]] +[[1.087786967E-01 0.000000000E+00] + [0.000000000E+00 1.424271731E-01]] domain=10001 type=nu-fission matrix -[[0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00]] -[[0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00]] +[[0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00]] +[[0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00]] domain=10001 type=chi -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10001 type=chi-prompt -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10001 type=velocity -[1.66778394974E+07 3.34953367601E+05] -[1.26644430952E+06 3.83367816257E+04] +[1.667783950E+07 3.349533676E+05] +[1.266444310E+06 3.833678163E+04] domain=10001 type=prompt-nu-fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10002 type=total -[6.64572260617E-01 2.05238401381E+00] -[3.12147519130E-02 2.24342906706E-01] +[6.645722606E-01 2.052384014E+00] +[3.121475190E-02 2.243429067E-01] domain=10002 type=transport -[2.90565257425E-01 1.51643801275E+00] -[2.38518546440E-02 2.35197268504E-01] +[2.905652574E-01 1.516438013E+00] +[2.385185460E-02 2.351972685E-01] domain=10002 type=nu-transport -[2.90565257425E-01 1.51643801275E+00] -[2.38518546440E-02 2.35197268504E-01] +[2.905652574E-01 1.516438013E+00] +[2.385185460E-02 2.351972685E-01] domain=10002 type=absorption -[6.90399522000E-04 3.16872566140E-02] -[4.41475690000E-05 3.74655858200E-03] +[6.903995000E-04 3.168725660E-02] +[4.414760000E-05 3.746558600E-03] domain=10002 type=capture -[6.90399522000E-04 3.16872566140E-02] -[4.41475690000E-05 3.74655858200E-03] +[6.903995000E-04 3.168725660E-02] +[4.414760000E-05 3.746558600E-03] domain=10002 type=fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10002 type=nu-fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10002 type=kappa-fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10002 type=scatter -[6.63881861094E-01 2.02069675720E+00] -[3.11726840050E-02 2.20604453857E-01] +[6.638818611E-01 2.020696757E+00] +[3.117268400E-02 2.206044539E-01] domain=10002 type=nu-scatter -[6.71269204714E-01 2.03538832876E+00] -[2.61863711690E-02 2.58060328563E-01] +[6.712692047E-01 2.035388329E+00] +[2.618637120E-02 2.580603286E-01] domain=10002 type=scatter matrix -[[[6.39901484868E-01 3.81167448865E-01 1.52391897805E-01 9.14802228800E-03] - [3.13677198460E-02 8.75772320600E-03 -2.56790106000E-03 - -3.78480288200E-03]] +[[[6.399014849E-01 3.811674489E-01 1.523918978E-01 9.148022300E-03] + [3.136771980E-02 8.757723200E-03 -2.567901100E-03 -3.784802900E-03]] - [[4.43343134000E-04 3.99960414000E-04 3.19562707000E-04 2.13846969000E-04] - [2.03494498562E+00 5.09940513161E-01 1.11174608804E-01 2.49884357390E-02]]] -[[[2.47091227980E-02 1.62432649210E-02 8.15627770300E-03 3.88856214200E-03] - [1.72811290300E-03 9.25670501000E-04 1.01398475200E-03 8.17075571000E-04]] + [[4.433431000E-04 3.999604000E-04 3.195627000E-04 2.138470000E-04] + [2.034944986E+00 5.099405132E-01 1.111746088E-01 2.498843570E-02]]] +[[[2.470912280E-02 1.624326490E-02 8.156277700E-03 3.888562100E-03] + [1.728112900E-03 9.256705000E-04 1.013984800E-03 8.170756000E-04]] - [[4.44850393000E-04 4.01320183000E-04 3.20649143000E-04 2.14573997000E-04] - [2.57799888924E-01 5.12359062970E-02 1.30198170390E-02 8.31235256200E-03]]] + [[4.448504000E-04 4.013202000E-04 3.206491000E-04 2.145740000E-04] + [2.577998889E-01 5.123590630E-02 1.301981700E-02 8.312352600E-03]]] domain=10002 type=nu-scatter matrix -[[[6.39901484868E-01 3.81167448865E-01 1.52391897805E-01 9.14802228800E-03] - [3.13677198460E-02 8.75772320600E-03 -2.56790106000E-03 - -3.78480288200E-03]] +[[[6.399014849E-01 3.811674489E-01 1.523918978E-01 9.148022300E-03] + [3.136771980E-02 8.757723200E-03 -2.567901100E-03 -3.784802900E-03]] - [[4.43343134000E-04 3.99960414000E-04 3.19562707000E-04 2.13846969000E-04] - [2.03494498562E+00 5.09940513161E-01 1.11174608804E-01 2.49884357390E-02]]] -[[[2.47091227980E-02 1.62432649210E-02 8.15627770300E-03 3.88856214200E-03] - [1.72811290300E-03 9.25670501000E-04 1.01398475200E-03 8.17075571000E-04]] + [[4.433431000E-04 3.999604000E-04 3.195627000E-04 2.138470000E-04] + [2.034944986E+00 5.099405132E-01 1.111746088E-01 2.498843570E-02]]] +[[[2.470912280E-02 1.624326490E-02 8.156277700E-03 3.888562100E-03] + [1.728112900E-03 9.256705000E-04 1.013984800E-03 8.170756000E-04]] - [[4.44850393000E-04 4.01320183000E-04 3.20649143000E-04 2.14573997000E-04] - [2.57799888924E-01 5.12359062970E-02 1.30198170390E-02 8.31235256200E-03]]] + [[4.448504000E-04 4.013202000E-04 3.206491000E-04 2.145740000E-04] + [2.577998889E-01 5.123590630E-02 1.301981700E-02 8.312352600E-03]]] domain=10002 type=multiplicity matrix -[[1.00000000000E+00 1.00000000000E+00] - [1.00000000000E+00 1.00000000000E+00]] -[[3.86091908370E-02 6.76673480000E-02] - [1.41421356237E+00 1.35929206606E-01]] +[[1.000000000E+00 1.000000000E+00] + [1.000000000E+00 1.000000000E+00]] +[[3.860919080E-02 6.766734800E-02] + [1.414213562E+00 1.359292066E-01]] domain=10002 type=nu-fission matrix -[[0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00]] -[[0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00]] +[[0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00]] +[[0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00]] domain=10002 type=chi -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10002 type=chi-prompt -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] domain=10002 type=velocity -[1.66055628732E+07 3.28412038650E+05] -[1.04243552374E+06 3.88284357298E+04] +[1.660556287E+07 3.284120387E+05] +[1.042435524E+06 3.882843573E+04] domain=10002 type=prompt-nu-fission -[0.00000000000E+00 0.00000000000E+00] -[0.00000000000E+00 0.00000000000E+00] +[0.000000000E+00 0.000000000E+00] +[0.000000000E+00 0.000000000E+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 7a6e8dda0e..2cc679c690 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.14825490214E-01 2.27929090940E-02 -0 10000 2 total 6.60169918628E-01 4.75189279080E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637119E-01 2.54935955780E-02 -0 10000 2 total 6.47647660079E-01 2.37037352050E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637119E-01 2.54935955780E-02 -0 10000 2 total 6.47647660079E-01 2.37037352050E-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.74078449200E-02 2.69249710900E-03 -0 10000 2 total 2.64510741628E-01 2.33670773920E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.98445499410E-02 2.64330432900E-03 -0 10000 2 total 7.17193529230E-02 2.52078593510E-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.56329497900E-03 5.08483678000E-04 -0 10000 2 total 1.92791388704E-01 1.71059218670E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.94317403720E-02 1.32297561200E-03 -0 10000 2 total 4.69774777026E-01 4.16819997830E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.47456982255E+00 9.92353210960E-02 -0 10000 2 total 3.72868964072E+01 3.30837772453E+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.87417645294E-01 2.06257321020E-02 -0 10000 2 total 3.95659177000E-01 2.51250567890E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.85188388202E-01 2.69456210650E-02 -0 10000 2 total 4.12389399309E-01 1.54252769580E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199457809E-01 2.70010135610E-02 -13 10000 1 1 total P1 5.18702843460E-02 6.98254887600E-03 -14 10000 1 1 total P2 2.00688453200E-02 2.84649518300E-03 -15 10000 1 1 total P3 9.47771570600E-03 2.23351977200E-03 -8 10000 1 2 total P0 9.88930393000E-04 4.82419445000E-04 -9 10000 1 2 total P1 -2.07234596000E-04 1.49010775000E-04 -10 10000 1 2 total P2 -1.03366181000E-04 1.84316312000E-04 -11 10000 1 2 total P3 2.34290623000E-04 1.28173111000E-04 -4 10000 2 1 total P0 9.24639909000E-04 9.24883464000E-04 -5 10000 2 1 total P1 -7.67704968000E-04 7.67907186000E-04 -6 10000 2 1 total P2 4.93788872000E-04 4.93918938000E-04 -7 10000 2 1 total P3 -1.71497229000E-04 1.71542403000E-04 -0 10000 2 2 total P0 4.11464759400E-01 1.52449353960E-02 -1 10000 2 2 total P1 1.64817280070E-02 4.50172796100E-03 -2 10000 2 2 total P2 6.37149049300E-03 1.05507493410E-02 -3 10000 2 2 total P3 -1.04991220900E-02 1.04381877190E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199457809E-01 2.70010135610E-02 -13 10000 1 1 total P1 5.18702843460E-02 6.98254887600E-03 -14 10000 1 1 total P2 2.00688453200E-02 2.84649518300E-03 -15 10000 1 1 total P3 9.47771570600E-03 2.23351977200E-03 -8 10000 1 2 total P0 9.88930393000E-04 4.82419445000E-04 -9 10000 1 2 total P1 -2.07234596000E-04 1.49010775000E-04 -10 10000 1 2 total P2 -1.03366181000E-04 1.84316312000E-04 -11 10000 1 2 total P3 2.34290623000E-04 1.28173111000E-04 -4 10000 2 1 total P0 9.24639909000E-04 9.24883464000E-04 -5 10000 2 1 total P1 -7.67704968000E-04 7.67907186000E-04 -6 10000 2 1 total P2 4.93788872000E-04 4.93918938000E-04 -7 10000 2 1 total P3 -1.71497229000E-04 1.71542403000E-04 -0 10000 2 2 total P0 4.11464759400E-01 1.52449353960E-02 -1 10000 2 2 total P1 1.64817280070E-02 4.50172796100E-03 -2 10000 2 2 total P2 6.37149049300E-03 1.05507493410E-02 -3 10000 2 2 total P3 -1.04991220900E-02 1.04381877190E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.00000000000E+00 7.85164550060E-02 -2 10000 1 2 total 1.00000000000E+00 6.87184270936E-01 -1 10000 2 1 total 1.00000000000E+00 1.41421356237E+00 -0 10000 2 2 total 1.00000000000E+00 4.11303488040E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.01424281630E-02 3.14909167600E-03 -2 10000 1 2 total 0.00000000000E+00 0.00000000000E+00 -1 10000 2 1 total 4.54366466559E-01 2.74255069250E-02 -0 10000 2 2 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000000E+00 4.60705234720E-02 -0 10000 2 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000000E+00 5.14714567340E-02 -0 10000 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.75152106204E+07 1.43817527390E+06 -0 10000 2 total 3.50171995194E+05 2.99459316967E+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.92392215460E-02 1.30950595000E-03 -0 10000 2 total 4.66719027354E-01 4.14108703990E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.13737670907E-01 1.55819023550E-02 -0 10001 2 total 3.00821401699E-01 2.80524484310E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872020E-01 3.31153664430E-02 -0 10001 2 total 3.12374836218E-01 4.96058317050E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872020E-01 3.31153664430E-02 -0 10001 2 total 3.12374836218E-01 4.96058317050E-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499139000E-03 3.22547891000E-04 -0 10001 2 total 5.40037883200E-03 6.18138308000E-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499139000E-03 3.22547891000E-04 -0 10001 2 total 5.40037883200E-03 6.18138308000E-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.12162679516E-01 1.53219230920E-02 -0 10001 2 total 2.95421022866E-01 2.74454888860E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.10120735076E-01 3.37881061230E-02 -0 10001 2 total 2.96264270001E-01 4.37922257330E-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735076E-01 3.37881061230E-02 -13 10001 1 1 total P1 3.82295903620E-02 8.48399710300E-03 -14 10001 1 1 total P2 2.07449419700E-02 4.69561067700E-03 -15 10001 1 1 total P3 7.96429677200E-03 3.73162261000E-03 -8 10001 1 2 total P0 0.00000000000E+00 0.00000000000E+00 -9 10001 1 2 total P1 0.00000000000E+00 0.00000000000E+00 -10 10001 1 2 total P2 0.00000000000E+00 0.00000000000E+00 -11 10001 1 2 total P3 0.00000000000E+00 0.00000000000E+00 -4 10001 2 1 total P0 0.00000000000E+00 0.00000000000E+00 -5 10001 2 1 total P1 0.00000000000E+00 0.00000000000E+00 -6 10001 2 1 total P2 0.00000000000E+00 0.00000000000E+00 -7 10001 2 1 total P3 0.00000000000E+00 0.00000000000E+00 -0 10001 2 2 total P0 2.96264270001E-01 4.37922257330E-02 -1 10001 2 2 total P1 -1.12136361340E-02 1.61803664890E-02 -2 10001 2 2 total P2 8.83656629800E-03 1.15039644590E-02 -3 10001 2 2 total P3 -3.27006730900E-03 7.32884580200E-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735076E-01 3.37881061230E-02 -13 10001 1 1 total P1 3.82295903620E-02 8.48399710300E-03 -14 10001 1 1 total P2 2.07449419700E-02 4.69561067700E-03 -15 10001 1 1 total P3 7.96429677200E-03 3.73162261000E-03 -8 10001 1 2 total P0 0.00000000000E+00 0.00000000000E+00 -9 10001 1 2 total P1 0.00000000000E+00 0.00000000000E+00 -10 10001 1 2 total P2 0.00000000000E+00 0.00000000000E+00 -11 10001 1 2 total P3 0.00000000000E+00 0.00000000000E+00 -4 10001 2 1 total P0 0.00000000000E+00 0.00000000000E+00 -5 10001 2 1 total P1 0.00000000000E+00 0.00000000000E+00 -6 10001 2 1 total P2 0.00000000000E+00 0.00000000000E+00 -7 10001 2 1 total P3 0.00000000000E+00 0.00000000000E+00 -0 10001 2 2 total P0 2.96264270001E-01 4.37922257330E-02 -1 10001 2 2 total P1 -1.12136361340E-02 1.61803664890E-02 -2 10001 2 2 total P2 8.83656629800E-03 1.15039644590E-02 -3 10001 2 2 total P3 -3.27006730900E-03 7.32884580200E-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.00000000000E+00 1.08778696728E-01 -2 10001 1 2 total 0.00000000000E+00 0.00000000000E+00 -1 10001 2 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 2 total 1.00000000000E+00 1.42427173055E-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.00000000000E+00 0.00000000000E+00 -2 10001 1 2 total 0.00000000000E+00 0.00000000000E+00 -1 10001 2 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 2 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.66778394974E+07 1.26644430952E+06 -0 10001 2 total 3.34953367601E+05 3.83367816257E+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000E+00 0.00000000000E+00 -0 10001 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.64572260617E-01 3.12147519130E-02 -0 10002 2 total 2.05238401381E+00 2.24342906706E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257425E-01 2.38518546440E-02 -0 10002 2 total 1.51643801275E+00 2.35197268504E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257425E-01 2.38518546440E-02 -0 10002 2 total 1.51643801275E+00 2.35197268504E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.90399522000E-04 4.41475690000E-05 -0 10002 2 total 3.16872566140E-02 3.74655858200E-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.90399522000E-04 4.41475690000E-05 -0 10002 2 total 3.16872566140E-02 3.74655858200E-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000E+00 0.00000000000E+00 -0 10002 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000E+00 0.00000000000E+00 -0 10002 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000E+00 0.00000000000E+00 -0 10002 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.63881861094E-01 3.11726840050E-02 -0 10002 2 total 2.02069675720E+00 2.20604453857E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.71269204714E-01 2.61863711690E-02 -0 10002 2 total 2.03538832876E+00 2.58060328563E-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901484868E-01 2.47091227980E-02 -13 10002 1 1 total P1 3.81167448865E-01 1.62432649210E-02 -14 10002 1 1 total P2 1.52391897805E-01 8.15627770300E-03 -15 10002 1 1 total P3 9.14802228800E-03 3.88856214200E-03 -8 10002 1 2 total P0 3.13677198460E-02 1.72811290300E-03 -9 10002 1 2 total P1 8.75772320600E-03 9.25670501000E-04 -10 10002 1 2 total P2 -2.56790106000E-03 1.01398475200E-03 -11 10002 1 2 total P3 -3.78480288200E-03 8.17075571000E-04 -4 10002 2 1 total P0 4.43343134000E-04 4.44850393000E-04 -5 10002 2 1 total P1 3.99960414000E-04 4.01320183000E-04 -6 10002 2 1 total P2 3.19562707000E-04 3.20649143000E-04 -7 10002 2 1 total P3 2.13846969000E-04 2.14573997000E-04 -0 10002 2 2 total P0 2.03494498562E+00 2.57799888924E-01 -1 10002 2 2 total P1 5.09940513161E-01 5.12359062970E-02 -2 10002 2 2 total P2 1.11174608804E-01 1.30198170390E-02 -3 10002 2 2 total P3 2.49884357390E-02 8.31235256200E-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901484868E-01 2.47091227980E-02 -13 10002 1 1 total P1 3.81167448865E-01 1.62432649210E-02 -14 10002 1 1 total P2 1.52391897805E-01 8.15627770300E-03 -15 10002 1 1 total P3 9.14802228800E-03 3.88856214200E-03 -8 10002 1 2 total P0 3.13677198460E-02 1.72811290300E-03 -9 10002 1 2 total P1 8.75772320600E-03 9.25670501000E-04 -10 10002 1 2 total P2 -2.56790106000E-03 1.01398475200E-03 -11 10002 1 2 total P3 -3.78480288200E-03 8.17075571000E-04 -4 10002 2 1 total P0 4.43343134000E-04 4.44850393000E-04 -5 10002 2 1 total P1 3.99960414000E-04 4.01320183000E-04 -6 10002 2 1 total P2 3.19562707000E-04 3.20649143000E-04 -7 10002 2 1 total P3 2.13846969000E-04 2.14573997000E-04 -0 10002 2 2 total P0 2.03494498562E+00 2.57799888924E-01 -1 10002 2 2 total P1 5.09940513161E-01 5.12359062970E-02 -2 10002 2 2 total P2 1.11174608804E-01 1.30198170390E-02 -3 10002 2 2 total P3 2.49884357390E-02 8.31235256200E-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.00000000000E+00 3.86091908370E-02 -2 10002 1 2 total 1.00000000000E+00 6.76673480000E-02 -1 10002 2 1 total 1.00000000000E+00 1.41421356237E+00 -0 10002 2 2 total 1.00000000000E+00 1.35929206606E-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.00000000000E+00 0.00000000000E+00 -2 10002 1 2 total 0.00000000000E+00 0.00000000000E+00 -1 10002 2 1 total 0.00000000000E+00 0.00000000000E+00 -0 10002 2 2 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000000E+00 0.00000000000E+00 -0 10002 2 total 0.00000000000E+00 0.00000000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000000E+00 0.00000000000E+00 -0 10002 2 total 0.00000000000E+00 0.00000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.66055628732E+07 1.04243552374E+06 -0 10002 2 total 3.28412038650E+05 3.88284357298E+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000E+00 0.00000000000E+00 -0 10002 2 total 0.00000000000E+00 0.00000000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.148254902E-01 2.279290910E-02 +0 10000 2 total 6.601699186E-01 4.751892790E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596371E-01 2.549359560E-02 +0 10000 2 total 6.476476601E-01 2.370373520E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596371E-01 2.549359560E-02 +0 10000 2 total 6.476476601E-01 2.370373520E-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.740784490E-02 2.692497100E-03 +0 10000 2 total 2.645107416E-01 2.336707740E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.984454990E-02 2.643304300E-03 +0 10000 2 total 7.171935290E-02 2.520785940E-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.563295000E-03 5.084837000E-04 +0 10000 2 total 1.927913887E-01 1.710592190E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.943174040E-02 1.322975600E-03 +0 10000 2 total 4.697747770E-01 4.168199980E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.474569823E+00 9.923532110E-02 +0 10000 2 total 3.728689641E+01 3.308377725E+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.874176453E-01 2.062573210E-02 +0 10000 2 total 3.956591770E-01 2.512505680E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.851883882E-01 2.694562110E-02 +0 10000 2 total 4.123893993E-01 1.542527700E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841994578E-01 2.700101360E-02 +13 10000 1 1 total P1 5.187028430E-02 6.982548900E-03 +14 10000 1 1 total P2 2.006884530E-02 2.846495200E-03 +15 10000 1 1 total P3 9.477715700E-03 2.233519800E-03 +8 10000 1 2 total P0 9.889304000E-04 4.824194000E-04 +9 10000 1 2 total P1 -2.072346000E-04 1.490108000E-04 +10 10000 1 2 total P2 -1.033662000E-04 1.843163000E-04 +11 10000 1 2 total P3 2.342906000E-04 1.281731000E-04 +4 10000 2 1 total P0 9.246399000E-04 9.248835000E-04 +5 10000 2 1 total P1 -7.677050000E-04 7.679072000E-04 +6 10000 2 1 total P2 4.937889000E-04 4.939189000E-04 +7 10000 2 1 total P3 -1.714972000E-04 1.715424000E-04 +0 10000 2 2 total P0 4.114647594E-01 1.524493540E-02 +1 10000 2 2 total P1 1.648172800E-02 4.501728000E-03 +2 10000 2 2 total P2 6.371490500E-03 1.055074930E-02 +3 10000 2 2 total P3 -1.049912210E-02 1.043818770E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841994578E-01 2.700101360E-02 +13 10000 1 1 total P1 5.187028430E-02 6.982548900E-03 +14 10000 1 1 total P2 2.006884530E-02 2.846495200E-03 +15 10000 1 1 total P3 9.477715700E-03 2.233519800E-03 +8 10000 1 2 total P0 9.889304000E-04 4.824194000E-04 +9 10000 1 2 total P1 -2.072346000E-04 1.490108000E-04 +10 10000 1 2 total P2 -1.033662000E-04 1.843163000E-04 +11 10000 1 2 total P3 2.342906000E-04 1.281731000E-04 +4 10000 2 1 total P0 9.246399000E-04 9.248835000E-04 +5 10000 2 1 total P1 -7.677050000E-04 7.679072000E-04 +6 10000 2 1 total P2 4.937889000E-04 4.939189000E-04 +7 10000 2 1 total P3 -1.714972000E-04 1.715424000E-04 +0 10000 2 2 total P0 4.114647594E-01 1.524493540E-02 +1 10000 2 2 total P1 1.648172800E-02 4.501728000E-03 +2 10000 2 2 total P2 6.371490500E-03 1.055074930E-02 +3 10000 2 2 total P3 -1.049912210E-02 1.043818770E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.000000000E+00 7.851645500E-02 +2 10000 1 2 total 1.000000000E+00 6.871842709E-01 +1 10000 2 1 total 1.000000000E+00 1.414213562E+00 +0 10000 2 2 total 1.000000000E+00 4.113034880E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.014242820E-02 3.149091700E-03 +2 10000 1 2 total 0.000000000E+00 0.000000000E+00 +1 10000 2 1 total 4.543664666E-01 2.742550690E-02 +0 10000 2 2 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000000E+00 4.607052350E-02 +0 10000 2 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000000E+00 5.147145670E-02 +0 10000 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.751521062E+07 1.438175274E+06 +0 10000 2 total 3.501719952E+05 2.994593170E+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.923922150E-02 1.309506000E-03 +0 10000 2 total 4.667190274E-01 4.141087040E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.137376709E-01 1.558190240E-02 +0 10001 2 total 3.008214017E-01 2.805244840E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732278720E-01 3.311536640E-02 +0 10001 2 total 3.123748362E-01 4.960583170E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732278720E-01 3.311536640E-02 +0 10001 2 total 3.123748362E-01 4.960583170E-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991400E-03 3.225479000E-04 +0 10001 2 total 5.400378800E-03 6.181383000E-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991400E-03 3.225479000E-04 +0 10001 2 total 5.400378800E-03 6.181383000E-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.121626795E-01 1.532192310E-02 +0 10001 2 total 2.954210229E-01 2.744548890E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.101207351E-01 3.378810610E-02 +0 10001 2 total 2.962642700E-01 4.379222570E-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207351E-01 3.378810610E-02 +13 10001 1 1 total P1 3.822959040E-02 8.483997100E-03 +14 10001 1 1 total P2 2.074494200E-02 4.695610700E-03 +15 10001 1 1 total P3 7.964296800E-03 3.731622600E-03 +8 10001 1 2 total P0 0.000000000E+00 0.000000000E+00 +9 10001 1 2 total P1 0.000000000E+00 0.000000000E+00 +10 10001 1 2 total P2 0.000000000E+00 0.000000000E+00 +11 10001 1 2 total P3 0.000000000E+00 0.000000000E+00 +4 10001 2 1 total P0 0.000000000E+00 0.000000000E+00 +5 10001 2 1 total P1 0.000000000E+00 0.000000000E+00 +6 10001 2 1 total P2 0.000000000E+00 0.000000000E+00 +7 10001 2 1 total P3 0.000000000E+00 0.000000000E+00 +0 10001 2 2 total P0 2.962642700E-01 4.379222570E-02 +1 10001 2 2 total P1 -1.121363610E-02 1.618036650E-02 +2 10001 2 2 total P2 8.836566300E-03 1.150396450E-02 +3 10001 2 2 total P3 -3.270067300E-03 7.328845800E-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207351E-01 3.378810610E-02 +13 10001 1 1 total P1 3.822959040E-02 8.483997100E-03 +14 10001 1 1 total P2 2.074494200E-02 4.695610700E-03 +15 10001 1 1 total P3 7.964296800E-03 3.731622600E-03 +8 10001 1 2 total P0 0.000000000E+00 0.000000000E+00 +9 10001 1 2 total P1 0.000000000E+00 0.000000000E+00 +10 10001 1 2 total P2 0.000000000E+00 0.000000000E+00 +11 10001 1 2 total P3 0.000000000E+00 0.000000000E+00 +4 10001 2 1 total P0 0.000000000E+00 0.000000000E+00 +5 10001 2 1 total P1 0.000000000E+00 0.000000000E+00 +6 10001 2 1 total P2 0.000000000E+00 0.000000000E+00 +7 10001 2 1 total P3 0.000000000E+00 0.000000000E+00 +0 10001 2 2 total P0 2.962642700E-01 4.379222570E-02 +1 10001 2 2 total P1 -1.121363610E-02 1.618036650E-02 +2 10001 2 2 total P2 8.836566300E-03 1.150396450E-02 +3 10001 2 2 total P3 -3.270067300E-03 7.328845800E-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.000000000E+00 1.087786967E-01 +2 10001 1 2 total 0.000000000E+00 0.000000000E+00 +1 10001 2 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 2 total 1.000000000E+00 1.424271731E-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.000000000E+00 0.000000000E+00 +2 10001 1 2 total 0.000000000E+00 0.000000000E+00 +1 10001 2 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 2 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.667783950E+07 1.266444310E+06 +0 10001 2 total 3.349533676E+05 3.833678163E+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000000E+00 0.000000000E+00 +0 10001 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.645722606E-01 3.121475190E-02 +0 10002 2 total 2.052384014E+00 2.243429067E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905652574E-01 2.385185460E-02 +0 10002 2 total 1.516438013E+00 2.351972685E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905652574E-01 2.385185460E-02 +0 10002 2 total 1.516438013E+00 2.351972685E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995000E-04 4.414760000E-05 +0 10002 2 total 3.168725660E-02 3.746558600E-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995000E-04 4.414760000E-05 +0 10002 2 total 3.168725660E-02 3.746558600E-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000E+00 0.000000000E+00 +0 10002 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000E+00 0.000000000E+00 +0 10002 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000E+00 0.000000000E+00 +0 10002 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.638818611E-01 3.117268400E-02 +0 10002 2 total 2.020696757E+00 2.206044539E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.712692047E-01 2.618637120E-02 +0 10002 2 total 2.035388329E+00 2.580603286E-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399014849E-01 2.470912280E-02 +13 10002 1 1 total P1 3.811674489E-01 1.624326490E-02 +14 10002 1 1 total P2 1.523918978E-01 8.156277700E-03 +15 10002 1 1 total P3 9.148022300E-03 3.888562100E-03 +8 10002 1 2 total P0 3.136771980E-02 1.728112900E-03 +9 10002 1 2 total P1 8.757723200E-03 9.256705000E-04 +10 10002 1 2 total P2 -2.567901100E-03 1.013984800E-03 +11 10002 1 2 total P3 -3.784802900E-03 8.170756000E-04 +4 10002 2 1 total P0 4.433431000E-04 4.448504000E-04 +5 10002 2 1 total P1 3.999604000E-04 4.013202000E-04 +6 10002 2 1 total P2 3.195627000E-04 3.206491000E-04 +7 10002 2 1 total P3 2.138470000E-04 2.145740000E-04 +0 10002 2 2 total P0 2.034944986E+00 2.577998889E-01 +1 10002 2 2 total P1 5.099405132E-01 5.123590630E-02 +2 10002 2 2 total P2 1.111746088E-01 1.301981700E-02 +3 10002 2 2 total P3 2.498843570E-02 8.312352600E-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399014849E-01 2.470912280E-02 +13 10002 1 1 total P1 3.811674489E-01 1.624326490E-02 +14 10002 1 1 total P2 1.523918978E-01 8.156277700E-03 +15 10002 1 1 total P3 9.148022300E-03 3.888562100E-03 +8 10002 1 2 total P0 3.136771980E-02 1.728112900E-03 +9 10002 1 2 total P1 8.757723200E-03 9.256705000E-04 +10 10002 1 2 total P2 -2.567901100E-03 1.013984800E-03 +11 10002 1 2 total P3 -3.784802900E-03 8.170756000E-04 +4 10002 2 1 total P0 4.433431000E-04 4.448504000E-04 +5 10002 2 1 total P1 3.999604000E-04 4.013202000E-04 +6 10002 2 1 total P2 3.195627000E-04 3.206491000E-04 +7 10002 2 1 total P3 2.138470000E-04 2.145740000E-04 +0 10002 2 2 total P0 2.034944986E+00 2.577998889E-01 +1 10002 2 2 total P1 5.099405132E-01 5.123590630E-02 +2 10002 2 2 total P2 1.111746088E-01 1.301981700E-02 +3 10002 2 2 total P3 2.498843570E-02 8.312352600E-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.000000000E+00 3.860919080E-02 +2 10002 1 2 total 1.000000000E+00 6.766734800E-02 +1 10002 2 1 total 1.000000000E+00 1.414213562E+00 +0 10002 2 2 total 1.000000000E+00 1.359292066E-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.000000000E+00 0.000000000E+00 +2 10002 1 2 total 0.000000000E+00 0.000000000E+00 +1 10002 2 1 total 0.000000000E+00 0.000000000E+00 +0 10002 2 2 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000000E+00 0.000000000E+00 +0 10002 2 total 0.000000000E+00 0.000000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000000E+00 0.000000000E+00 +0 10002 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.660556287E+07 1.042435524E+06 +0 10002 2 total 3.284120387E+05 3.882843573E+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000000E+00 0.000000000E+00 +0 10002 2 total 0.000000000E+00 0.000000000E+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 13c79782ed..62a0b202d8 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -14ebc83b998b90376a733c80a25c54ed334606cb4eb7a3c13ff3bda041ade473d3e9c8499a04fce92f2096300b026ed331b00e14b233c4ea4c6e9a3305c3e77b \ No newline at end of file +ed74bb8e0a7fdab7e5f5f371973c59ca723037c9f9bf0db5bd542896bc605f60712031e3379798e9f13c1dae19dba8bdc28dc81f4acf9f9d8a7bf0b2dea07660 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 83d8428510..1a787f5982 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.00000000000E+02 0.00000000000E+00 7.00000000000E+02 8.00000000000E+02] + Temperature = [5.000000000E+02 0.000000000E+00 7.000000000E+02 8.000000000E+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 19e72aab2a..c5230e1f9c 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -d3ed1243d3e7a30a7b353539596ccb23cfb7293f6495e75644ff28868f629f34aa8e23023bad0c54aa2f2c048e6c89a47f454b8cffa90042669eb269f7ada74e \ No newline at end of file +048dbc5027cfc34c8659086fe1a9aeed76b6a3b0c91e6c7a2790dc83234aacc39e4825d2ac25800f8ff2e3d5317c7da085fcfdb3b5e5a6d99fd625efa1b5b77d \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 62680ce639..e6f42244f6 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] +[[[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] ..., - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] ..., - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] ..., - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] ..., - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]][[[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] ..., - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]] + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]] - [[0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00] - [0.00000000000E+00 0.00000000000E+00 0.00000000000E+00]]] \ No newline at end of file + [[0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00] + [0.000000000E+00 0.000000000E+00 0.000000000E+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 4667fe731d..94fa15ad57 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output rounded to 12 decimal places and in -# scientific notation with 12 significant figures. This is needed to avoid round +# Require numpy and pandas to print output rounded to 10 decimal places and in +# scientific notation with 10 significant figures. This is needed to avoid round # off error when large numbers are printed, which can cause tests to fail for # different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 12), '13.11E')}) -pd.set_option('display.float_format', lambda x: '%13.11E' % np.around(x,12)) +np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 10), '11.9E')}) +pd.set_option('display.float_format', lambda x: '%11.9E' % np.around(x,10)) sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 01b8f75b6c59ac4b152cb615cad10deb2dcf529e Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 17:09:52 -0600 Subject: [PATCH 37/82] changed number of sig figs in testing harness from 10 to 9 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 312 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 4 +- 9 files changed, 691 insertions(+), 691 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index de6f408248..6d94eda7b4 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.536244225E-01 2.105269630E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008521779E-01 2.285755400E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008521779E-01 2.285755400E-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.490345580E-02 4.312761200E-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.804806600E-02 4.579963700E-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.685538980E-02 2.622159800E-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.064928990E-02 6.409874500E-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955138E+00 5.073638146E-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.887209666E-01 1.783042860E-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.893035563E-01 2.307553860E-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893035563E-01 2.314560460E-02 -1 10000 1 1 total P1 4.622441780E-02 5.907169600E-03 -2 10000 1 1 total P2 1.798358500E-02 2.882972000E-03 -3 10000 1 1 total P3 6.628373500E-03 2.457109000E-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893035563E-01 2.314560460E-02 -1 10000 1 1 total P1 4.622441780E-02 5.907169600E-03 -2 10000 1 1 total P2 1.798358500E-02 2.882972000E-03 -3 10000 1 1 total P3 6.628373500E-03 2.457109000E-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.000000000E+00 6.611082020E-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.583501930E-02 5.591824900E-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000000E+00 4.607052350E-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000000E+00 5.147145670E-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.001308740E+06 1.462165554E+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.000397780E-02 6.366907900E-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.115941081E-01 1.379316810E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792550637E-01 2.918950100E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792550637E-01 2.918950100E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846400E-03 2.863341000E-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846400E-03 2.863341000E-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.093842617E-01 1.355126750E-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.079873494E-01 2.930808850E-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873494E-01 2.930808850E-02 -1 10001 1 1 total P1 3.061715330E-02 7.464456000E-03 -2 10001 1 1 total P2 1.891149040E-02 4.322827700E-03 -3 10001 1 1 total P3 6.234618200E-03 3.338202300E-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873494E-01 2.930808850E-02 -1 10001 1 1 total P1 3.061715330E-02 7.464456000E-03 -2 10001 1 1 total P2 1.891149040E-02 4.322827700E-03 -3 10001 1 1 total P3 6.234618200E-03 3.338202300E-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.000000000E+00 9.503872150E-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.833261153E+06 1.663551745E+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.049988333E-01 4.396448760E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991839827E-01 4.091411960E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991839827E-01 4.091411960E-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341200E-03 5.545244000E-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341200E-03 5.545244000E-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.989384922E-01 4.349298420E-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.034146632E-01 4.395873710E-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034146632E-01 4.358599380E-02 -1 10002 1 1 total P1 4.104174186E-01 1.587722020E-02 -2 10002 1 1 total P2 1.433010365E-01 7.187377700E-03 -3 10002 1 1 total P3 8.739426300E-03 3.571441300E-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034146632E-01 4.358599380E-02 -1 10002 1 1 total P1 4.104174186E-01 1.587722020E-02 -2 10002 1 1 total P2 1.433010365E-01 7.187377700E-03 -3 10002 1 1 total P3 8.739426300E-03 3.571441300E-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.000000000E+00 5.686672530E-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.732199699E+06 1.596914264E+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.53624422E-01 2.10526960E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852178E-01 2.28575540E-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852178E-01 2.28575540E-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.49034560E-02 4.31276100E-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.80480660E-02 4.57996400E-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.68553900E-02 2.62216000E-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.06492900E-02 6.40987500E-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.13795514E+00 5.07363815E-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.88720967E-01 1.78304290E-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.89303556E-01 2.30755390E-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556E-01 2.31456050E-02 +1 10000 1 1 total P1 4.62244180E-02 5.90717000E-03 +2 10000 1 1 total P2 1.79835850E-02 2.88297200E-03 +3 10000 1 1 total P3 6.62837400E-03 2.45710900E-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556E-01 2.31456050E-02 +1 10000 1 1 total P1 4.62244180E-02 5.90717000E-03 +2 10000 1 1 total P2 1.79835850E-02 2.88297200E-03 +3 10000 1 1 total P3 6.62837400E-03 2.45710900E-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.00000000E+00 6.61108200E-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.58350190E-02 5.59182500E-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000E+00 4.60705230E-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000E+00 5.14714570E-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.00130874E+06 1.46216555E+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.00039780E-02 6.36690800E-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.11594108E-01 1.37931680E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255064E-01 2.91895010E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255064E-01 2.91895010E-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984600E-03 2.86334000E-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984600E-03 2.86334000E-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.09384262E-01 1.35512670E-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.07987349E-01 2.93080890E-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349E-01 2.93080890E-02 +1 10001 1 1 total P1 3.06171530E-02 7.46445600E-03 +2 10001 1 1 total P2 1.89114900E-02 4.32282800E-03 +3 10001 1 1 total P3 6.23461800E-03 3.33820200E-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349E-01 2.93080890E-02 +1 10001 1 1 total P1 3.06171530E-02 7.46445600E-03 +2 10001 1 1 total P2 1.89114900E-02 4.32282800E-03 +3 10001 1 1 total P3 6.23461800E-03 3.33820200E-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.00000000E+00 9.50387220E-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.83326115E+06 1.66355175E+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.04998833E-01 4.39644880E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183983E-01 4.09141200E-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183983E-01 4.09141200E-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034100E-03 5.54524000E-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034100E-03 5.54524000E-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.98938492E-01 4.34929840E-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.03414663E-01 4.39587370E-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663E-01 4.35859940E-02 +1 10002 1 1 total P1 4.10417419E-01 1.58772200E-02 +2 10002 1 1 total P2 1.43301036E-01 7.18737800E-03 +3 10002 1 1 total P3 8.73942600E-03 3.57144100E-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663E-01 4.35859940E-02 +1 10002 1 1 total P1 4.10417419E-01 1.58772200E-02 +2 10002 1 1 total P2 1.43301036E-01 7.18737800E-03 +3 10002 1 1 total P3 8.73942600E-03 3.57144100E-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.00000000E+00 5.68667250E-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.73219970E+06 1.59691426E+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000E+00 0.00000000E+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 5b2385cd8b..e66bf16c1e 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.145934001E+00 5.538216947E-01 - 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.189191990E-01 5.206442559E-01 - 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.189191990E-01 5.206442559E-01 - 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.976220610E-02 1.062876410E-02 - 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.976220610E-02 1.062876410E-02 - 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.000000000E+00 0.000000000E+00 - 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.000000000E+00 0.000000000E+00 - 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.000000000E+00 0.000000000E+00 - 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.126171794E+00 5.434400084E-01 - 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.142546919E+00 5.701313899E-01 - 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.142546919E+00 5.701313899E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943E-01 2.163221683E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934E-01 6.650377260E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827040E-02 2.462083230E-02 - 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.142546919E+00 5.701313899E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473812943E-01 2.163221683E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412017934E-01 6.650377260E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827040E-02 2.462083230E-02 - 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.000000000E+00 5.297173274E-01 - 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.000000000E+00 0.000000000E+00 - 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.000000000E+00 0.000000000E+00 - 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.000000000E+00 0.000000000E+00 - 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.742457145E+05 4.163976916E+05 - 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.000000000E+00 0.000000000E+00 + 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.14593400E+00 5.53821695E-01 + 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.18919199E-01 5.20644256E-01 + 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.18919199E-01 5.20644256E-01 + 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.97622060E-02 1.06287640E-02 + 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.97622060E-02 1.06287640E-02 + 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.00000000E+00 0.00000000E+00 + 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.00000000E+00 0.00000000E+00 + 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.00000000E+00 0.00000000E+00 + 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.12617179E+00 5.43440008E-01 + 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.14254692E+00 5.70131390E-01 + 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.14254692E+00 5.70131390E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294E-01 2.16322168E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793E-01 6.65037730E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282700E-02 2.46208320E-02 + 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.14254692E+00 5.70131390E-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294E-01 2.16322168E-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793E-01 6.65037730E-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282700E-02 2.46208320E-02 + 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.00000000E+00 5.29717327E-01 + 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.00000000E+00 0.00000000E+00 + 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.00000000E+00 0.00000000E+00 + 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.00000000E+00 0.00000000E+00 + 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.74245714E+05 4.16397692E+05 + 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.00000000E+00 0.00000000E+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 9a042191f8..54fb97b991 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[4.148254902E-01 6.601699186E-01] -[2.279290910E-02 4.751892790E-02] +[4.14825490E-01 6.60169919E-01] +[2.27929090E-02 4.75189280E-02] domain=10000 type=transport -[3.568596371E-01 6.476476601E-01] -[2.549359560E-02 2.370373520E-02] +[3.56859637E-01 6.47647660E-01] +[2.54935960E-02 2.37037350E-02] domain=10000 type=nu-transport -[3.568596371E-01 6.476476601E-01] -[2.549359560E-02 2.370373520E-02] +[3.56859637E-01 6.47647660E-01] +[2.54935960E-02 2.37037350E-02] domain=10000 type=absorption -[2.740784490E-02 2.645107416E-01] -[2.692497100E-03 2.336707740E-02] +[2.74078450E-02 2.64510742E-01] +[2.69249700E-03 2.33670770E-02] domain=10000 type=capture -[1.984454990E-02 7.171935290E-02] -[2.643304300E-03 2.520785940E-02] +[1.98445500E-02 7.17193530E-02] +[2.64330400E-03 2.52078590E-02] domain=10000 type=fission -[7.563295000E-03 1.927913887E-01] -[5.084837000E-04 1.710592190E-02] +[7.56329500E-03 1.92791389E-01] +[5.08484000E-04 1.71059220E-02] domain=10000 type=nu-fission -[1.943174040E-02 4.697747770E-01] -[1.322975600E-03 4.168199980E-02] +[1.94317400E-02 4.69774777E-01] +[1.32297600E-03 4.16820000E-02] domain=10000 type=kappa-fission -[1.474569823E+00 3.728689641E+01] -[9.923532110E-02 3.308377725E+00] +[1.47456982E+00 3.72868964E+01] +[9.92353210E-02 3.30837773E+00] domain=10000 type=scatter -[3.874176453E-01 3.956591770E-01] -[2.062573210E-02 2.512505680E-02] +[3.87417645E-01 3.95659177E-01] +[2.06257320E-02 2.51250570E-02] domain=10000 type=nu-scatter -[3.851883882E-01 4.123893993E-01] -[2.694562110E-02 1.542527700E-02] +[3.85188388E-01 4.12389399E-01] +[2.69456210E-02 1.54252770E-02] domain=10000 type=scatter matrix -[[[3.841994578E-01 5.187028430E-02 2.006884530E-02 9.477715700E-03] - [9.889304000E-04 -2.072346000E-04 -1.033662000E-04 2.342906000E-04]] +[[[3.84199458E-01 5.18702840E-02 2.00688450E-02 9.47771600E-03] + [9.88930000E-04 -2.07235000E-04 -1.03366000E-04 2.34291000E-04]] - [[9.246399000E-04 -7.677050000E-04 4.937889000E-04 -1.714972000E-04] - [4.114647594E-01 1.648172800E-02 6.371490500E-03 -1.049912210E-02]]] -[[[2.700101360E-02 6.982548900E-03 2.846495200E-03 2.233519800E-03] - [4.824194000E-04 1.490108000E-04 1.843163000E-04 1.281731000E-04]] + [[9.24640000E-04 -7.67705000E-04 4.93789000E-04 -1.71497000E-04] + [4.11464759E-01 1.64817280E-02 6.37149000E-03 -1.04991220E-02]]] +[[[2.70010140E-02 6.98254900E-03 2.84649500E-03 2.23352000E-03] + [4.82419000E-04 1.49011000E-04 1.84316000E-04 1.28173000E-04]] - [[9.248835000E-04 7.679072000E-04 4.939189000E-04 1.715424000E-04] - [1.524493540E-02 4.501728000E-03 1.055074930E-02 1.043818770E-02]]] + [[9.24883000E-04 7.67907000E-04 4.93919000E-04 1.71542000E-04] + [1.52449350E-02 4.50172800E-03 1.05507490E-02 1.04381880E-02]]] domain=10000 type=nu-scatter matrix -[[[3.841994578E-01 5.187028430E-02 2.006884530E-02 9.477715700E-03] - [9.889304000E-04 -2.072346000E-04 -1.033662000E-04 2.342906000E-04]] +[[[3.84199458E-01 5.18702840E-02 2.00688450E-02 9.47771600E-03] + [9.88930000E-04 -2.07235000E-04 -1.03366000E-04 2.34291000E-04]] - [[9.246399000E-04 -7.677050000E-04 4.937889000E-04 -1.714972000E-04] - [4.114647594E-01 1.648172800E-02 6.371490500E-03 -1.049912210E-02]]] -[[[2.700101360E-02 6.982548900E-03 2.846495200E-03 2.233519800E-03] - [4.824194000E-04 1.490108000E-04 1.843163000E-04 1.281731000E-04]] + [[9.24640000E-04 -7.67705000E-04 4.93789000E-04 -1.71497000E-04] + [4.11464759E-01 1.64817280E-02 6.37149000E-03 -1.04991220E-02]]] +[[[2.70010140E-02 6.98254900E-03 2.84649500E-03 2.23352000E-03] + [4.82419000E-04 1.49011000E-04 1.84316000E-04 1.28173000E-04]] - [[9.248835000E-04 7.679072000E-04 4.939189000E-04 1.715424000E-04] - [1.524493540E-02 4.501728000E-03 1.055074930E-02 1.043818770E-02]]] + [[9.24883000E-04 7.67907000E-04 4.93919000E-04 1.71542000E-04] + [1.52449350E-02 4.50172800E-03 1.05507490E-02 1.04381880E-02]]] domain=10000 type=multiplicity matrix -[[1.000000000E+00 1.000000000E+00] - [1.000000000E+00 1.000000000E+00]] -[[7.851645500E-02 6.871842709E-01] - [1.414213562E+00 4.113034880E-02]] +[[1.00000000E+00 1.00000000E+00] + [1.00000000E+00 1.00000000E+00]] +[[7.85164550E-02 6.87184271E-01] + [1.41421356E+00 4.11303490E-02]] domain=10000 type=nu-fission matrix -[[2.014242820E-02 0.000000000E+00] - [4.543664666E-01 0.000000000E+00]] -[[3.149091700E-03 0.000000000E+00] - [2.742550690E-02 0.000000000E+00]] +[[2.01424280E-02 0.00000000E+00] + [4.54366467E-01 0.00000000E+00]] +[[3.14909200E-03 0.00000000E+00] + [2.74255070E-02 0.00000000E+00]] domain=10000 type=chi -[1.000000000E+00 0.000000000E+00] -[4.607052350E-02 0.000000000E+00] +[1.00000000E+00 0.00000000E+00] +[4.60705230E-02 0.00000000E+00] domain=10000 type=chi-prompt -[1.000000000E+00 0.000000000E+00] -[5.147145670E-02 0.000000000E+00] +[1.00000000E+00 0.00000000E+00] +[5.14714570E-02 0.00000000E+00] domain=10000 type=velocity -[1.751521062E+07 3.501719952E+05] -[1.438175274E+06 2.994593170E+04] +[1.75152106E+07 3.50171995E+05] +[1.43817527E+06 2.99459317E+04] domain=10000 type=prompt-nu-fission -[1.923922150E-02 4.667190274E-01] -[1.309506000E-03 4.141087040E-02] +[1.92392220E-02 4.66719027E-01] +[1.30950600E-03 4.14108700E-02] domain=10001 type=total -[3.137376709E-01 3.008214017E-01] -[1.558190240E-02 2.805244840E-02] +[3.13737671E-01 3.00821402E-01] +[1.55819020E-02 2.80524480E-02] domain=10001 type=transport -[2.732278720E-01 3.123748362E-01] -[3.311536640E-02 4.960583170E-02] +[2.73227872E-01 3.12374836E-01] +[3.31153660E-02 4.96058320E-02] domain=10001 type=nu-transport -[2.732278720E-01 3.123748362E-01] -[3.311536640E-02 4.960583170E-02] +[2.73227872E-01 3.12374836E-01] +[3.31153660E-02 4.96058320E-02] domain=10001 type=absorption -[1.574991400E-03 5.400378800E-03] -[3.225479000E-04 6.181383000E-04] +[1.57499100E-03 5.40037900E-03] +[3.22548000E-04 6.18138000E-04] domain=10001 type=capture -[1.574991400E-03 5.400378800E-03] -[3.225479000E-04 6.181383000E-04] +[1.57499100E-03 5.40037900E-03] +[3.22548000E-04 6.18138000E-04] domain=10001 type=fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10001 type=nu-fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10001 type=kappa-fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10001 type=scatter -[3.121626795E-01 2.954210229E-01] -[1.532192310E-02 2.744548890E-02] +[3.12162680E-01 2.95421023E-01] +[1.53219230E-02 2.74454890E-02] domain=10001 type=nu-scatter -[3.101207351E-01 2.962642700E-01] -[3.378810610E-02 4.379222570E-02] +[3.10120735E-01 2.96264270E-01] +[3.37881060E-02 4.37922260E-02] domain=10001 type=scatter matrix -[[[3.101207351E-01 3.822959040E-02 2.074494200E-02 7.964296800E-03] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] +[[[3.10120735E-01 3.82295900E-02 2.07449420E-02 7.96429700E-03] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [2.962642700E-01 -1.121363610E-02 8.836566300E-03 -3.270067300E-03]]] -[[[3.378810610E-02 8.483997100E-03 4.695610700E-03 3.731622600E-03] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [2.96264270E-01 -1.12136360E-02 8.83656600E-03 -3.27006700E-03]]] +[[[3.37881060E-02 8.48399700E-03 4.69561100E-03 3.73162300E-03] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [4.379222570E-02 1.618036650E-02 1.150396450E-02 7.328845800E-03]]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [4.37922260E-02 1.61803660E-02 1.15039640E-02 7.32884600E-03]]] domain=10001 type=nu-scatter matrix -[[[3.101207351E-01 3.822959040E-02 2.074494200E-02 7.964296800E-03] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] +[[[3.10120735E-01 3.82295900E-02 2.07449420E-02 7.96429700E-03] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [2.962642700E-01 -1.121363610E-02 8.836566300E-03 -3.270067300E-03]]] -[[[3.378810610E-02 8.483997100E-03 4.695610700E-03 3.731622600E-03] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [2.96264270E-01 -1.12136360E-02 8.83656600E-03 -3.27006700E-03]]] +[[[3.37881060E-02 8.48399700E-03 4.69561100E-03 3.73162300E-03] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [4.379222570E-02 1.618036650E-02 1.150396450E-02 7.328845800E-03]]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [4.37922260E-02 1.61803660E-02 1.15039640E-02 7.32884600E-03]]] domain=10001 type=multiplicity matrix -[[1.000000000E+00 0.000000000E+00] - [0.000000000E+00 1.000000000E+00]] -[[1.087786967E-01 0.000000000E+00] - [0.000000000E+00 1.424271731E-01]] +[[1.00000000E+00 0.00000000E+00] + [0.00000000E+00 1.00000000E+00]] +[[1.08778697E-01 0.00000000E+00] + [0.00000000E+00 1.42427173E-01]] domain=10001 type=nu-fission matrix -[[0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00]] -[[0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00]] +[[0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00]] +[[0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00]] domain=10001 type=chi -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10001 type=chi-prompt -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10001 type=velocity -[1.667783950E+07 3.349533676E+05] -[1.266444310E+06 3.833678163E+04] +[1.66778395E+07 3.34953368E+05] +[1.26644431E+06 3.83367816E+04] domain=10001 type=prompt-nu-fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10002 type=total -[6.645722606E-01 2.052384014E+00] -[3.121475190E-02 2.243429067E-01] +[6.64572261E-01 2.05238401E+00] +[3.12147520E-02 2.24342907E-01] domain=10002 type=transport -[2.905652574E-01 1.516438013E+00] -[2.385185460E-02 2.351972685E-01] +[2.90565257E-01 1.51643801E+00] +[2.38518550E-02 2.35197269E-01] domain=10002 type=nu-transport -[2.905652574E-01 1.516438013E+00] -[2.385185460E-02 2.351972685E-01] +[2.90565257E-01 1.51643801E+00] +[2.38518550E-02 2.35197269E-01] domain=10002 type=absorption -[6.903995000E-04 3.168725660E-02] -[4.414760000E-05 3.746558600E-03] +[6.90400000E-04 3.16872570E-02] +[4.41480000E-05 3.74655900E-03] domain=10002 type=capture -[6.903995000E-04 3.168725660E-02] -[4.414760000E-05 3.746558600E-03] +[6.90400000E-04 3.16872570E-02] +[4.41480000E-05 3.74655900E-03] domain=10002 type=fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10002 type=nu-fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10002 type=kappa-fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10002 type=scatter -[6.638818611E-01 2.020696757E+00] -[3.117268400E-02 2.206044539E-01] +[6.63881861E-01 2.02069676E+00] +[3.11726840E-02 2.20604454E-01] domain=10002 type=nu-scatter -[6.712692047E-01 2.035388329E+00] -[2.618637120E-02 2.580603286E-01] +[6.71269205E-01 2.03538833E+00] +[2.61863710E-02 2.58060329E-01] domain=10002 type=scatter matrix -[[[6.399014849E-01 3.811674489E-01 1.523918978E-01 9.148022300E-03] - [3.136771980E-02 8.757723200E-03 -2.567901100E-03 -3.784802900E-03]] +[[[6.39901485E-01 3.81167449E-01 1.52391898E-01 9.14802200E-03] + [3.13677200E-02 8.75772300E-03 -2.56790100E-03 -3.78480300E-03]] - [[4.433431000E-04 3.999604000E-04 3.195627000E-04 2.138470000E-04] - [2.034944986E+00 5.099405132E-01 1.111746088E-01 2.498843570E-02]]] -[[[2.470912280E-02 1.624326490E-02 8.156277700E-03 3.888562100E-03] - [1.728112900E-03 9.256705000E-04 1.013984800E-03 8.170756000E-04]] + [[4.43343000E-04 3.99960000E-04 3.19563000E-04 2.13847000E-04] + [2.03494499E+00 5.09940513E-01 1.11174609E-01 2.49884360E-02]]] +[[[2.47091230E-02 1.62432650E-02 8.15627800E-03 3.88856200E-03] + [1.72811300E-03 9.25671000E-04 1.01398500E-03 8.17076000E-04]] - [[4.448504000E-04 4.013202000E-04 3.206491000E-04 2.145740000E-04] - [2.577998889E-01 5.123590630E-02 1.301981700E-02 8.312352600E-03]]] + [[4.44850000E-04 4.01320000E-04 3.20649000E-04 2.14574000E-04] + [2.57799889E-01 5.12359060E-02 1.30198170E-02 8.31235300E-03]]] domain=10002 type=nu-scatter matrix -[[[6.399014849E-01 3.811674489E-01 1.523918978E-01 9.148022300E-03] - [3.136771980E-02 8.757723200E-03 -2.567901100E-03 -3.784802900E-03]] +[[[6.39901485E-01 3.81167449E-01 1.52391898E-01 9.14802200E-03] + [3.13677200E-02 8.75772300E-03 -2.56790100E-03 -3.78480300E-03]] - [[4.433431000E-04 3.999604000E-04 3.195627000E-04 2.138470000E-04] - [2.034944986E+00 5.099405132E-01 1.111746088E-01 2.498843570E-02]]] -[[[2.470912280E-02 1.624326490E-02 8.156277700E-03 3.888562100E-03] - [1.728112900E-03 9.256705000E-04 1.013984800E-03 8.170756000E-04]] + [[4.43343000E-04 3.99960000E-04 3.19563000E-04 2.13847000E-04] + [2.03494499E+00 5.09940513E-01 1.11174609E-01 2.49884360E-02]]] +[[[2.47091230E-02 1.62432650E-02 8.15627800E-03 3.88856200E-03] + [1.72811300E-03 9.25671000E-04 1.01398500E-03 8.17076000E-04]] - [[4.448504000E-04 4.013202000E-04 3.206491000E-04 2.145740000E-04] - [2.577998889E-01 5.123590630E-02 1.301981700E-02 8.312352600E-03]]] + [[4.44850000E-04 4.01320000E-04 3.20649000E-04 2.14574000E-04] + [2.57799889E-01 5.12359060E-02 1.30198170E-02 8.31235300E-03]]] domain=10002 type=multiplicity matrix -[[1.000000000E+00 1.000000000E+00] - [1.000000000E+00 1.000000000E+00]] -[[3.860919080E-02 6.766734800E-02] - [1.414213562E+00 1.359292066E-01]] +[[1.00000000E+00 1.00000000E+00] + [1.00000000E+00 1.00000000E+00]] +[[3.86091910E-02 6.76673480E-02] + [1.41421356E+00 1.35929207E-01]] domain=10002 type=nu-fission matrix -[[0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00]] -[[0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00]] +[[0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00]] +[[0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00]] domain=10002 type=chi -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10002 type=chi-prompt -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] domain=10002 type=velocity -[1.660556287E+07 3.284120387E+05] -[1.042435524E+06 3.882843573E+04] +[1.66055629E+07 3.28412039E+05] +[1.04243552E+06 3.88284357E+04] domain=10002 type=prompt-nu-fission -[0.000000000E+00 0.000000000E+00] -[0.000000000E+00 0.000000000E+00] +[0.00000000E+00 0.00000000E+00] +[0.00000000E+00 0.00000000E+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 2cc679c690..5a02811a9f 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.148254902E-01 2.279290910E-02 -0 10000 2 total 6.601699186E-01 4.751892790E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596371E-01 2.549359560E-02 -0 10000 2 total 6.476476601E-01 2.370373520E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596371E-01 2.549359560E-02 -0 10000 2 total 6.476476601E-01 2.370373520E-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.740784490E-02 2.692497100E-03 -0 10000 2 total 2.645107416E-01 2.336707740E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.984454990E-02 2.643304300E-03 -0 10000 2 total 7.171935290E-02 2.520785940E-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.563295000E-03 5.084837000E-04 -0 10000 2 total 1.927913887E-01 1.710592190E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.943174040E-02 1.322975600E-03 -0 10000 2 total 4.697747770E-01 4.168199980E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.474569823E+00 9.923532110E-02 -0 10000 2 total 3.728689641E+01 3.308377725E+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.874176453E-01 2.062573210E-02 -0 10000 2 total 3.956591770E-01 2.512505680E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.851883882E-01 2.694562110E-02 -0 10000 2 total 4.123893993E-01 1.542527700E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841994578E-01 2.700101360E-02 -13 10000 1 1 total P1 5.187028430E-02 6.982548900E-03 -14 10000 1 1 total P2 2.006884530E-02 2.846495200E-03 -15 10000 1 1 total P3 9.477715700E-03 2.233519800E-03 -8 10000 1 2 total P0 9.889304000E-04 4.824194000E-04 -9 10000 1 2 total P1 -2.072346000E-04 1.490108000E-04 -10 10000 1 2 total P2 -1.033662000E-04 1.843163000E-04 -11 10000 1 2 total P3 2.342906000E-04 1.281731000E-04 -4 10000 2 1 total P0 9.246399000E-04 9.248835000E-04 -5 10000 2 1 total P1 -7.677050000E-04 7.679072000E-04 -6 10000 2 1 total P2 4.937889000E-04 4.939189000E-04 -7 10000 2 1 total P3 -1.714972000E-04 1.715424000E-04 -0 10000 2 2 total P0 4.114647594E-01 1.524493540E-02 -1 10000 2 2 total P1 1.648172800E-02 4.501728000E-03 -2 10000 2 2 total P2 6.371490500E-03 1.055074930E-02 -3 10000 2 2 total P3 -1.049912210E-02 1.043818770E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841994578E-01 2.700101360E-02 -13 10000 1 1 total P1 5.187028430E-02 6.982548900E-03 -14 10000 1 1 total P2 2.006884530E-02 2.846495200E-03 -15 10000 1 1 total P3 9.477715700E-03 2.233519800E-03 -8 10000 1 2 total P0 9.889304000E-04 4.824194000E-04 -9 10000 1 2 total P1 -2.072346000E-04 1.490108000E-04 -10 10000 1 2 total P2 -1.033662000E-04 1.843163000E-04 -11 10000 1 2 total P3 2.342906000E-04 1.281731000E-04 -4 10000 2 1 total P0 9.246399000E-04 9.248835000E-04 -5 10000 2 1 total P1 -7.677050000E-04 7.679072000E-04 -6 10000 2 1 total P2 4.937889000E-04 4.939189000E-04 -7 10000 2 1 total P3 -1.714972000E-04 1.715424000E-04 -0 10000 2 2 total P0 4.114647594E-01 1.524493540E-02 -1 10000 2 2 total P1 1.648172800E-02 4.501728000E-03 -2 10000 2 2 total P2 6.371490500E-03 1.055074930E-02 -3 10000 2 2 total P3 -1.049912210E-02 1.043818770E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.000000000E+00 7.851645500E-02 -2 10000 1 2 total 1.000000000E+00 6.871842709E-01 -1 10000 2 1 total 1.000000000E+00 1.414213562E+00 -0 10000 2 2 total 1.000000000E+00 4.113034880E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.014242820E-02 3.149091700E-03 -2 10000 1 2 total 0.000000000E+00 0.000000000E+00 -1 10000 2 1 total 4.543664666E-01 2.742550690E-02 -0 10000 2 2 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000000E+00 4.607052350E-02 -0 10000 2 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000000E+00 5.147145670E-02 -0 10000 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.751521062E+07 1.438175274E+06 -0 10000 2 total 3.501719952E+05 2.994593170E+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.923922150E-02 1.309506000E-03 -0 10000 2 total 4.667190274E-01 4.141087040E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.137376709E-01 1.558190240E-02 -0 10001 2 total 3.008214017E-01 2.805244840E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732278720E-01 3.311536640E-02 -0 10001 2 total 3.123748362E-01 4.960583170E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732278720E-01 3.311536640E-02 -0 10001 2 total 3.123748362E-01 4.960583170E-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991400E-03 3.225479000E-04 -0 10001 2 total 5.400378800E-03 6.181383000E-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991400E-03 3.225479000E-04 -0 10001 2 total 5.400378800E-03 6.181383000E-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.121626795E-01 1.532192310E-02 -0 10001 2 total 2.954210229E-01 2.744548890E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.101207351E-01 3.378810610E-02 -0 10001 2 total 2.962642700E-01 4.379222570E-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207351E-01 3.378810610E-02 -13 10001 1 1 total P1 3.822959040E-02 8.483997100E-03 -14 10001 1 1 total P2 2.074494200E-02 4.695610700E-03 -15 10001 1 1 total P3 7.964296800E-03 3.731622600E-03 -8 10001 1 2 total P0 0.000000000E+00 0.000000000E+00 -9 10001 1 2 total P1 0.000000000E+00 0.000000000E+00 -10 10001 1 2 total P2 0.000000000E+00 0.000000000E+00 -11 10001 1 2 total P3 0.000000000E+00 0.000000000E+00 -4 10001 2 1 total P0 0.000000000E+00 0.000000000E+00 -5 10001 2 1 total P1 0.000000000E+00 0.000000000E+00 -6 10001 2 1 total P2 0.000000000E+00 0.000000000E+00 -7 10001 2 1 total P3 0.000000000E+00 0.000000000E+00 -0 10001 2 2 total P0 2.962642700E-01 4.379222570E-02 -1 10001 2 2 total P1 -1.121363610E-02 1.618036650E-02 -2 10001 2 2 total P2 8.836566300E-03 1.150396450E-02 -3 10001 2 2 total P3 -3.270067300E-03 7.328845800E-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207351E-01 3.378810610E-02 -13 10001 1 1 total P1 3.822959040E-02 8.483997100E-03 -14 10001 1 1 total P2 2.074494200E-02 4.695610700E-03 -15 10001 1 1 total P3 7.964296800E-03 3.731622600E-03 -8 10001 1 2 total P0 0.000000000E+00 0.000000000E+00 -9 10001 1 2 total P1 0.000000000E+00 0.000000000E+00 -10 10001 1 2 total P2 0.000000000E+00 0.000000000E+00 -11 10001 1 2 total P3 0.000000000E+00 0.000000000E+00 -4 10001 2 1 total P0 0.000000000E+00 0.000000000E+00 -5 10001 2 1 total P1 0.000000000E+00 0.000000000E+00 -6 10001 2 1 total P2 0.000000000E+00 0.000000000E+00 -7 10001 2 1 total P3 0.000000000E+00 0.000000000E+00 -0 10001 2 2 total P0 2.962642700E-01 4.379222570E-02 -1 10001 2 2 total P1 -1.121363610E-02 1.618036650E-02 -2 10001 2 2 total P2 8.836566300E-03 1.150396450E-02 -3 10001 2 2 total P3 -3.270067300E-03 7.328845800E-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.000000000E+00 1.087786967E-01 -2 10001 1 2 total 0.000000000E+00 0.000000000E+00 -1 10001 2 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 2 total 1.000000000E+00 1.424271731E-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.000000000E+00 0.000000000E+00 -2 10001 1 2 total 0.000000000E+00 0.000000000E+00 -1 10001 2 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 2 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.667783950E+07 1.266444310E+06 -0 10001 2 total 3.349533676E+05 3.833678163E+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000000E+00 0.000000000E+00 -0 10001 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.645722606E-01 3.121475190E-02 -0 10002 2 total 2.052384014E+00 2.243429067E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905652574E-01 2.385185460E-02 -0 10002 2 total 1.516438013E+00 2.351972685E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905652574E-01 2.385185460E-02 -0 10002 2 total 1.516438013E+00 2.351972685E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995000E-04 4.414760000E-05 -0 10002 2 total 3.168725660E-02 3.746558600E-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995000E-04 4.414760000E-05 -0 10002 2 total 3.168725660E-02 3.746558600E-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000E+00 0.000000000E+00 -0 10002 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000E+00 0.000000000E+00 -0 10002 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000E+00 0.000000000E+00 -0 10002 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.638818611E-01 3.117268400E-02 -0 10002 2 total 2.020696757E+00 2.206044539E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.712692047E-01 2.618637120E-02 -0 10002 2 total 2.035388329E+00 2.580603286E-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399014849E-01 2.470912280E-02 -13 10002 1 1 total P1 3.811674489E-01 1.624326490E-02 -14 10002 1 1 total P2 1.523918978E-01 8.156277700E-03 -15 10002 1 1 total P3 9.148022300E-03 3.888562100E-03 -8 10002 1 2 total P0 3.136771980E-02 1.728112900E-03 -9 10002 1 2 total P1 8.757723200E-03 9.256705000E-04 -10 10002 1 2 total P2 -2.567901100E-03 1.013984800E-03 -11 10002 1 2 total P3 -3.784802900E-03 8.170756000E-04 -4 10002 2 1 total P0 4.433431000E-04 4.448504000E-04 -5 10002 2 1 total P1 3.999604000E-04 4.013202000E-04 -6 10002 2 1 total P2 3.195627000E-04 3.206491000E-04 -7 10002 2 1 total P3 2.138470000E-04 2.145740000E-04 -0 10002 2 2 total P0 2.034944986E+00 2.577998889E-01 -1 10002 2 2 total P1 5.099405132E-01 5.123590630E-02 -2 10002 2 2 total P2 1.111746088E-01 1.301981700E-02 -3 10002 2 2 total P3 2.498843570E-02 8.312352600E-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399014849E-01 2.470912280E-02 -13 10002 1 1 total P1 3.811674489E-01 1.624326490E-02 -14 10002 1 1 total P2 1.523918978E-01 8.156277700E-03 -15 10002 1 1 total P3 9.148022300E-03 3.888562100E-03 -8 10002 1 2 total P0 3.136771980E-02 1.728112900E-03 -9 10002 1 2 total P1 8.757723200E-03 9.256705000E-04 -10 10002 1 2 total P2 -2.567901100E-03 1.013984800E-03 -11 10002 1 2 total P3 -3.784802900E-03 8.170756000E-04 -4 10002 2 1 total P0 4.433431000E-04 4.448504000E-04 -5 10002 2 1 total P1 3.999604000E-04 4.013202000E-04 -6 10002 2 1 total P2 3.195627000E-04 3.206491000E-04 -7 10002 2 1 total P3 2.138470000E-04 2.145740000E-04 -0 10002 2 2 total P0 2.034944986E+00 2.577998889E-01 -1 10002 2 2 total P1 5.099405132E-01 5.123590630E-02 -2 10002 2 2 total P2 1.111746088E-01 1.301981700E-02 -3 10002 2 2 total P3 2.498843570E-02 8.312352600E-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.000000000E+00 3.860919080E-02 -2 10002 1 2 total 1.000000000E+00 6.766734800E-02 -1 10002 2 1 total 1.000000000E+00 1.414213562E+00 -0 10002 2 2 total 1.000000000E+00 1.359292066E-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.000000000E+00 0.000000000E+00 -2 10002 1 2 total 0.000000000E+00 0.000000000E+00 -1 10002 2 1 total 0.000000000E+00 0.000000000E+00 -0 10002 2 2 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000000E+00 0.000000000E+00 -0 10002 2 total 0.000000000E+00 0.000000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000000E+00 0.000000000E+00 -0 10002 2 total 0.000000000E+00 0.000000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.660556287E+07 1.042435524E+06 -0 10002 2 total 3.284120387E+05 3.882843573E+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000000E+00 0.000000000E+00 -0 10002 2 total 0.000000000E+00 0.000000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.14825490E-01 2.27929090E-02 +0 10000 2 total 6.60169919E-01 4.75189280E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637E-01 2.54935960E-02 +0 10000 2 total 6.47647660E-01 2.37037350E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637E-01 2.54935960E-02 +0 10000 2 total 6.47647660E-01 2.37037350E-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.74078450E-02 2.69249700E-03 +0 10000 2 total 2.64510742E-01 2.33670770E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.98445500E-02 2.64330400E-03 +0 10000 2 total 7.17193530E-02 2.52078590E-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.56329500E-03 5.08484000E-04 +0 10000 2 total 1.92791389E-01 1.71059220E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.94317400E-02 1.32297600E-03 +0 10000 2 total 4.69774777E-01 4.16820000E-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.47456982E+00 9.92353210E-02 +0 10000 2 total 3.72868964E+01 3.30837773E+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.87417645E-01 2.06257320E-02 +0 10000 2 total 3.95659177E-01 2.51250570E-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.85188388E-01 2.69456210E-02 +0 10000 2 total 4.12389399E-01 1.54252770E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199458E-01 2.70010140E-02 +13 10000 1 1 total P1 5.18702840E-02 6.98254900E-03 +14 10000 1 1 total P2 2.00688450E-02 2.84649500E-03 +15 10000 1 1 total P3 9.47771600E-03 2.23352000E-03 +8 10000 1 2 total P0 9.88930000E-04 4.82419000E-04 +9 10000 1 2 total P1 -2.07235000E-04 1.49011000E-04 +10 10000 1 2 total P2 -1.03366000E-04 1.84316000E-04 +11 10000 1 2 total P3 2.34291000E-04 1.28173000E-04 +4 10000 2 1 total P0 9.24640000E-04 9.24883000E-04 +5 10000 2 1 total P1 -7.67705000E-04 7.67907000E-04 +6 10000 2 1 total P2 4.93789000E-04 4.93919000E-04 +7 10000 2 1 total P3 -1.71497000E-04 1.71542000E-04 +0 10000 2 2 total P0 4.11464759E-01 1.52449350E-02 +1 10000 2 2 total P1 1.64817280E-02 4.50172800E-03 +2 10000 2 2 total P2 6.37149000E-03 1.05507490E-02 +3 10000 2 2 total P3 -1.04991220E-02 1.04381880E-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199458E-01 2.70010140E-02 +13 10000 1 1 total P1 5.18702840E-02 6.98254900E-03 +14 10000 1 1 total P2 2.00688450E-02 2.84649500E-03 +15 10000 1 1 total P3 9.47771600E-03 2.23352000E-03 +8 10000 1 2 total P0 9.88930000E-04 4.82419000E-04 +9 10000 1 2 total P1 -2.07235000E-04 1.49011000E-04 +10 10000 1 2 total P2 -1.03366000E-04 1.84316000E-04 +11 10000 1 2 total P3 2.34291000E-04 1.28173000E-04 +4 10000 2 1 total P0 9.24640000E-04 9.24883000E-04 +5 10000 2 1 total P1 -7.67705000E-04 7.67907000E-04 +6 10000 2 1 total P2 4.93789000E-04 4.93919000E-04 +7 10000 2 1 total P3 -1.71497000E-04 1.71542000E-04 +0 10000 2 2 total P0 4.11464759E-01 1.52449350E-02 +1 10000 2 2 total P1 1.64817280E-02 4.50172800E-03 +2 10000 2 2 total P2 6.37149000E-03 1.05507490E-02 +3 10000 2 2 total P3 -1.04991220E-02 1.04381880E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.00000000E+00 7.85164550E-02 +2 10000 1 2 total 1.00000000E+00 6.87184271E-01 +1 10000 2 1 total 1.00000000E+00 1.41421356E+00 +0 10000 2 2 total 1.00000000E+00 4.11303490E-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.01424280E-02 3.14909200E-03 +2 10000 1 2 total 0.00000000E+00 0.00000000E+00 +1 10000 2 1 total 4.54366467E-01 2.74255070E-02 +0 10000 2 2 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000E+00 4.60705230E-02 +0 10000 2 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000E+00 5.14714570E-02 +0 10000 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.75152106E+07 1.43817527E+06 +0 10000 2 total 3.50171995E+05 2.99459317E+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.92392220E-02 1.30950600E-03 +0 10000 2 total 4.66719027E-01 4.14108700E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.13737671E-01 1.55819020E-02 +0 10001 2 total 3.00821402E-01 2.80524480E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872E-01 3.31153660E-02 +0 10001 2 total 3.12374836E-01 4.96058320E-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872E-01 3.31153660E-02 +0 10001 2 total 3.12374836E-01 4.96058320E-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499100E-03 3.22548000E-04 +0 10001 2 total 5.40037900E-03 6.18138000E-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499100E-03 3.22548000E-04 +0 10001 2 total 5.40037900E-03 6.18138000E-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.12162680E-01 1.53219230E-02 +0 10001 2 total 2.95421023E-01 2.74454890E-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.10120735E-01 3.37881060E-02 +0 10001 2 total 2.96264270E-01 4.37922260E-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735E-01 3.37881060E-02 +13 10001 1 1 total P1 3.82295900E-02 8.48399700E-03 +14 10001 1 1 total P2 2.07449420E-02 4.69561100E-03 +15 10001 1 1 total P3 7.96429700E-03 3.73162300E-03 +8 10001 1 2 total P0 0.00000000E+00 0.00000000E+00 +9 10001 1 2 total P1 0.00000000E+00 0.00000000E+00 +10 10001 1 2 total P2 0.00000000E+00 0.00000000E+00 +11 10001 1 2 total P3 0.00000000E+00 0.00000000E+00 +4 10001 2 1 total P0 0.00000000E+00 0.00000000E+00 +5 10001 2 1 total P1 0.00000000E+00 0.00000000E+00 +6 10001 2 1 total P2 0.00000000E+00 0.00000000E+00 +7 10001 2 1 total P3 0.00000000E+00 0.00000000E+00 +0 10001 2 2 total P0 2.96264270E-01 4.37922260E-02 +1 10001 2 2 total P1 -1.12136360E-02 1.61803660E-02 +2 10001 2 2 total P2 8.83656600E-03 1.15039640E-02 +3 10001 2 2 total P3 -3.27006700E-03 7.32884600E-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735E-01 3.37881060E-02 +13 10001 1 1 total P1 3.82295900E-02 8.48399700E-03 +14 10001 1 1 total P2 2.07449420E-02 4.69561100E-03 +15 10001 1 1 total P3 7.96429700E-03 3.73162300E-03 +8 10001 1 2 total P0 0.00000000E+00 0.00000000E+00 +9 10001 1 2 total P1 0.00000000E+00 0.00000000E+00 +10 10001 1 2 total P2 0.00000000E+00 0.00000000E+00 +11 10001 1 2 total P3 0.00000000E+00 0.00000000E+00 +4 10001 2 1 total P0 0.00000000E+00 0.00000000E+00 +5 10001 2 1 total P1 0.00000000E+00 0.00000000E+00 +6 10001 2 1 total P2 0.00000000E+00 0.00000000E+00 +7 10001 2 1 total P3 0.00000000E+00 0.00000000E+00 +0 10001 2 2 total P0 2.96264270E-01 4.37922260E-02 +1 10001 2 2 total P1 -1.12136360E-02 1.61803660E-02 +2 10001 2 2 total P2 8.83656600E-03 1.15039640E-02 +3 10001 2 2 total P3 -3.27006700E-03 7.32884600E-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.00000000E+00 1.08778697E-01 +2 10001 1 2 total 0.00000000E+00 0.00000000E+00 +1 10001 2 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 2 total 1.00000000E+00 1.42427173E-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.00000000E+00 0.00000000E+00 +2 10001 1 2 total 0.00000000E+00 0.00000000E+00 +1 10001 2 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 2 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.66778395E+07 1.26644431E+06 +0 10001 2 total 3.34953368E+05 3.83367816E+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000E+00 0.00000000E+00 +0 10001 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.64572261E-01 3.12147520E-02 +0 10002 2 total 2.05238401E+00 2.24342907E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257E-01 2.38518550E-02 +0 10002 2 total 1.51643801E+00 2.35197269E-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257E-01 2.38518550E-02 +0 10002 2 total 1.51643801E+00 2.35197269E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.90400000E-04 4.41480000E-05 +0 10002 2 total 3.16872570E-02 3.74655900E-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.90400000E-04 4.41480000E-05 +0 10002 2 total 3.16872570E-02 3.74655900E-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000E+00 0.00000000E+00 +0 10002 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000E+00 0.00000000E+00 +0 10002 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000E+00 0.00000000E+00 +0 10002 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.63881861E-01 3.11726840E-02 +0 10002 2 total 2.02069676E+00 2.20604454E-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.71269205E-01 2.61863710E-02 +0 10002 2 total 2.03538833E+00 2.58060329E-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901485E-01 2.47091230E-02 +13 10002 1 1 total P1 3.81167449E-01 1.62432650E-02 +14 10002 1 1 total P2 1.52391898E-01 8.15627800E-03 +15 10002 1 1 total P3 9.14802200E-03 3.88856200E-03 +8 10002 1 2 total P0 3.13677200E-02 1.72811300E-03 +9 10002 1 2 total P1 8.75772300E-03 9.25671000E-04 +10 10002 1 2 total P2 -2.56790100E-03 1.01398500E-03 +11 10002 1 2 total P3 -3.78480300E-03 8.17076000E-04 +4 10002 2 1 total P0 4.43343000E-04 4.44850000E-04 +5 10002 2 1 total P1 3.99960000E-04 4.01320000E-04 +6 10002 2 1 total P2 3.19563000E-04 3.20649000E-04 +7 10002 2 1 total P3 2.13847000E-04 2.14574000E-04 +0 10002 2 2 total P0 2.03494499E+00 2.57799889E-01 +1 10002 2 2 total P1 5.09940513E-01 5.12359060E-02 +2 10002 2 2 total P2 1.11174609E-01 1.30198170E-02 +3 10002 2 2 total P3 2.49884360E-02 8.31235300E-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901485E-01 2.47091230E-02 +13 10002 1 1 total P1 3.81167449E-01 1.62432650E-02 +14 10002 1 1 total P2 1.52391898E-01 8.15627800E-03 +15 10002 1 1 total P3 9.14802200E-03 3.88856200E-03 +8 10002 1 2 total P0 3.13677200E-02 1.72811300E-03 +9 10002 1 2 total P1 8.75772300E-03 9.25671000E-04 +10 10002 1 2 total P2 -2.56790100E-03 1.01398500E-03 +11 10002 1 2 total P3 -3.78480300E-03 8.17076000E-04 +4 10002 2 1 total P0 4.43343000E-04 4.44850000E-04 +5 10002 2 1 total P1 3.99960000E-04 4.01320000E-04 +6 10002 2 1 total P2 3.19563000E-04 3.20649000E-04 +7 10002 2 1 total P3 2.13847000E-04 2.14574000E-04 +0 10002 2 2 total P0 2.03494499E+00 2.57799889E-01 +1 10002 2 2 total P1 5.09940513E-01 5.12359060E-02 +2 10002 2 2 total P2 1.11174609E-01 1.30198170E-02 +3 10002 2 2 total P3 2.49884360E-02 8.31235300E-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.00000000E+00 3.86091910E-02 +2 10002 1 2 total 1.00000000E+00 6.76673480E-02 +1 10002 2 1 total 1.00000000E+00 1.41421356E+00 +0 10002 2 2 total 1.00000000E+00 1.35929207E-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.00000000E+00 0.00000000E+00 +2 10002 1 2 total 0.00000000E+00 0.00000000E+00 +1 10002 2 1 total 0.00000000E+00 0.00000000E+00 +0 10002 2 2 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000E+00 0.00000000E+00 +0 10002 2 total 0.00000000E+00 0.00000000E+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000E+00 0.00000000E+00 +0 10002 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.66055629E+07 1.04243552E+06 +0 10002 2 total 3.28412039E+05 3.88284357E+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000E+00 0.00000000E+00 +0 10002 2 total 0.00000000E+00 0.00000000E+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 62a0b202d8..9a77145394 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -ed74bb8e0a7fdab7e5f5f371973c59ca723037c9f9bf0db5bd542896bc605f60712031e3379798e9f13c1dae19dba8bdc28dc81f4acf9f9d8a7bf0b2dea07660 \ No newline at end of file +7579f6368d2046d33c506d3a43d46703bf8151e16256787bac963be127d9000be272941fbaa2a1ee91f2abe3d619c2202f21db9bc1f78e064634aa065eb891c5 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 1a787f5982..243e160989 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.000000000E+02 0.000000000E+00 7.000000000E+02 8.000000000E+02] + Temperature = [5.00000000E+02 0.00000000E+00 7.00000000E+02 8.00000000E+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index c5230e1f9c..71febfaed1 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -048dbc5027cfc34c8659086fe1a9aeed76b6a3b0c91e6c7a2790dc83234aacc39e4825d2ac25800f8ff2e3d5317c7da085fcfdb3b5e5a6d99fd625efa1b5b77d \ No newline at end of file +0f9d70b87ee321e8202ecb344439a0194c25ea7d0e772eec59bde11857426da894c6b2d85a953c6ca15372ab0f6d48b44a00874366129158fc341140bff049d1 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index e6f42244f6..d677d69f5c 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] +[[[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] ..., - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] ..., - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] ..., - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] ..., - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]]][[[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] ..., - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]] + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]] - [[0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00] - [0.000000000E+00 0.000000000E+00 0.000000000E+00]]] \ No newline at end of file + [[0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00] + [0.00000000E+00 0.00000000E+00 0.00000000E+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 94fa15ad57..e8251cfc62 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -15,8 +15,8 @@ import pandas as pd # scientific notation with 10 significant figures. This is needed to avoid round # off error when large numbers are printed, which can cause tests to fail for # different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 10), '11.9E')}) -pd.set_option('display.float_format', lambda x: '%11.9E' % np.around(x,10)) +np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 9), '10.8E')}) +pd.set_option('display.float_format', lambda x: '%10.8E' % np.around(x, 9)) sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 37b103073bb6fa011fd7c48a3e032e8cdb8edee0 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 17:19:55 -0600 Subject: [PATCH 38/82] changed num sig figs from 9 to 7 in tally aggregation test --- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_aggregation/test_tally_aggregation.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 71febfaed1..ad113d8fa2 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -0f9d70b87ee321e8202ecb344439a0194c25ea7d0e772eec59bde11857426da894c6b2d85a953c6ca15372ab0f6d48b44a00874366129158fc341140bff049d1 \ No newline at end of file +b47e2f499c20b824b987ee1c5126de38cf86754b1abe3c7d0f19046a1d7a5eadebedee4b074ff25c1ffb9e147bd9f55d1e5f11e57aaf5804cb248f21dfbec3b1 \ No newline at end of file diff --git a/tests/test_tally_aggregation/test_tally_aggregation.py b/tests/test_tally_aggregation/test_tally_aggregation.py index fdc086e682..3b9aec4d38 100644 --- a/tests/test_tally_aggregation/test_tally_aggregation.py +++ b/tests/test_tally_aggregation/test_tally_aggregation.py @@ -8,6 +8,16 @@ sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness import openmc +import numpy as np +import pandas as pd + +# Require numpy and pandas to print output rounded to 10 decimal places and in +# scientific notation with 10 significant figures. This is needed to avoid round +# off error when large numbers are printed, which can cause tests to fail for +# different build configurations. +np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 7), '8.6E')}) +pd.set_option('display.float_format', lambda x: '%8.6E' % np.around(x, 7)) + class TallyAggregationTestHarness(PyAPITestHarness): def _build_inputs(self): From a175551d3ea2bfa232e8f31b431585fd6dc9c2e2 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 11 Jul 2016 17:41:33 -0600 Subject: [PATCH 39/82] removed pandas and numpy requirement to print values in scientific notation --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 312 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- .../test_tally_aggregation.py | 10 - tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 4 +- 10 files changed, 691 insertions(+), 701 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 6d94eda7b4..b6cd1e380e 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.53624422E-01 2.10526960E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852178E-01 2.28575540E-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852178E-01 2.28575540E-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.49034560E-02 4.31276100E-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.80480660E-02 4.57996400E-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.68553900E-02 2.62216000E-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.06492900E-02 6.40987500E-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.13795514E+00 5.07363815E-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.88720967E-01 1.78304290E-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.89303556E-01 2.30755390E-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556E-01 2.31456050E-02 -1 10000 1 1 total P1 4.62244180E-02 5.90717000E-03 -2 10000 1 1 total P2 1.79835850E-02 2.88297200E-03 -3 10000 1 1 total P3 6.62837400E-03 2.45710900E-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556E-01 2.31456050E-02 -1 10000 1 1 total P1 4.62244180E-02 5.90717000E-03 -2 10000 1 1 total P2 1.79835850E-02 2.88297200E-03 -3 10000 1 1 total P3 6.62837400E-03 2.45710900E-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.00000000E+00 6.61108200E-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.58350190E-02 5.59182500E-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000E+00 4.60705230E-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000E+00 5.14714570E-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.00130874E+06 1.46216555E+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.00039780E-02 6.36690800E-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.11594108E-01 1.37931680E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255064E-01 2.91895010E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255064E-01 2.91895010E-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984600E-03 2.86334000E-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984600E-03 2.86334000E-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.09384262E-01 1.35512670E-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.07987349E-01 2.93080890E-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349E-01 2.93080890E-02 -1 10001 1 1 total P1 3.06171530E-02 7.46445600E-03 -2 10001 1 1 total P2 1.89114900E-02 4.32282800E-03 -3 10001 1 1 total P3 6.23461800E-03 3.33820200E-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349E-01 2.93080890E-02 -1 10001 1 1 total P1 3.06171530E-02 7.46445600E-03 -2 10001 1 1 total P2 1.89114900E-02 4.32282800E-03 -3 10001 1 1 total P3 6.23461800E-03 3.33820200E-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.00000000E+00 9.50387220E-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.83326115E+06 1.66355175E+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.04998833E-01 4.39644880E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183983E-01 4.09141200E-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183983E-01 4.09141200E-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034100E-03 5.54524000E-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034100E-03 5.54524000E-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.98938492E-01 4.34929840E-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.03414663E-01 4.39587370E-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663E-01 4.35859940E-02 -1 10002 1 1 total P1 4.10417419E-01 1.58772200E-02 -2 10002 1 1 total P2 1.43301036E-01 7.18737800E-03 -3 10002 1 1 total P3 8.73942600E-03 3.57144100E-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663E-01 4.35859940E-02 -1 10002 1 1 total P1 4.10417419E-01 1.58772200E-02 -2 10002 1 1 total P2 1.43301036E-01 7.18737800E-03 -3 10002 1 1 total P3 8.73942600E-03 3.57144100E-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.00000000E+00 5.68667250E-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.73219970E+06 1.59691426E+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +0 10000 1 total 0.453624 0.021053 + material group in nuclide mean std. dev. +0 10000 1 total 0.400852 0.022858 + material group in nuclide mean std. dev. +0 10000 1 total 0.400852 0.022858 + material group in nuclide mean std. dev. +0 10000 1 total 0.064903 0.004313 + material group in nuclide mean std. dev. +0 10000 1 total 0.028048 0.004580 + material group in nuclide mean std. dev. +0 10000 1 total 0.036855 0.002622 + material group in nuclide mean std. dev. +0 10000 1 total 0.090649 0.006410 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955 0.507364 + material group in nuclide mean std. dev. +0 10000 1 total 0.388721 0.017830 + material group in nuclide mean std. dev. +0 10000 1 total 0.389304 0.023076 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 0.389304 0.023146 +1 10000 1 1 total P1 0.046224 0.005907 +2 10000 1 1 total P2 0.017984 0.002883 +3 10000 1 1 total P3 0.006628 0.002457 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 0.389304 0.023146 +1 10000 1 1 total P1 0.046224 0.005907 +2 10000 1 1 total P2 0.017984 0.002883 +3 10000 1 1 total P3 0.006628 0.002457 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.000000 0.066111 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 0.085835 0.005592 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000 0.046071 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000 0.051471 + material group in nuclide mean std. dev. +0 10000 1 total 2001308.739748 146216.555365 + material group in nuclide mean std. dev. +0 10000 1 total 0.090004 0.006367 + material group in nuclide mean std. dev. +0 10001 1 total 0.311594 0.013793 + material group in nuclide mean std. dev. +0 10001 1 total 0.279255 0.029190 + material group in nuclide mean std. dev. +0 10001 1 total 0.279255 0.029190 + material group in nuclide mean std. dev. +0 10001 1 total 0.002210 0.000286 + material group in nuclide mean std. dev. +0 10001 1 total 0.002210 0.000286 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10001 1 total 0.309384 0.013551 + material group in nuclide mean std. dev. +0 10001 1 total 0.307987 0.029308 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 0.307987 0.029308 +1 10001 1 1 total P1 0.030617 0.007464 +2 10001 1 1 total P2 0.018911 0.004323 +3 10001 1 1 total P3 0.006235 0.003338 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 0.307987 0.029308 +1 10001 1 1 total P1 0.030617 0.007464 +2 10001 1 1 total P2 0.018911 0.004323 +3 10001 1 1 total P3 0.006235 0.003338 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.000000 0.095039 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.000000 0.000000 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000 0.000000 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10001 1 total 1833261.152573 166355.174520 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10002 1 total 0.904999 0.043964 + material group in nuclide mean std. dev. +0 10002 1 total 0.499184 0.040914 + material group in nuclide mean std. dev. +0 10002 1 total 0.499184 0.040914 + material group in nuclide mean std. dev. +0 10002 1 total 0.006060 0.000555 + material group in nuclide mean std. dev. +0 10002 1 total 0.006060 0.000555 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10002 1 total 0.898938 0.043493 + material group in nuclide mean std. dev. +0 10002 1 total 0.903415 0.043959 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 0.903415 0.043586 +1 10002 1 1 total P1 0.410417 0.015877 +2 10002 1 1 total P2 0.143301 0.007187 +3 10002 1 1 total P3 0.008739 0.003571 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 0.903415 0.043586 +1 10002 1 1 total P1 0.410417 0.015877 +2 10002 1 1 total P2 0.143301 0.007187 +3 10002 1 1 total P3 0.008739 0.003571 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.000000 0.056867 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.000000 0.000000 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000 0.000000 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10002 1 total 1732199.699466 159691.426430 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000 0.000000 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index e66bf16c1e..bb53bc81c8 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.14593400E+00 5.53821695E-01 - 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.18919199E-01 5.20644256E-01 - 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.18919199E-01 5.20644256E-01 - 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.97622060E-02 1.06287640E-02 - 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.97622060E-02 1.06287640E-02 - 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.00000000E+00 0.00000000E+00 - 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.00000000E+00 0.00000000E+00 - 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.00000000E+00 0.00000000E+00 - 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.12617179E+00 5.43440008E-01 - 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.14254692E+00 5.70131390E-01 - 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.14254692E+00 5.70131390E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294E-01 2.16322168E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793E-01 6.65037730E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282700E-02 2.46208320E-02 - 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.14254692E+00 5.70131390E-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294E-01 2.16322168E-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793E-01 6.65037730E-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282700E-02 2.46208320E-02 - 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.00000000E+00 5.29717327E-01 - 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.00000000E+00 0.00000000E+00 - 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.00000000E+00 0.00000000E+00 - 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.00000000E+00 0.00000000E+00 - 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.74245714E+05 4.16397692E+05 - 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.00000000E+00 0.00000000E+00 + 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 + 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 + 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 + 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.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.000000 0.000000 + 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.000000 0.000000 + 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.000000 0.000000 + 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.543440 + 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 + 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 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.000000 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.000000 0.000000 + 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.000000 0.000000 + 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.000000 0.000000 + 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 774245.714482 416397.691599 + 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.000000 0.000000 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 54fb97b991..cc8d6a6b04 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[4.14825490E-01 6.60169919E-01] -[2.27929090E-02 4.75189280E-02] +[0.414825 0.660170] +[0.022793 0.047519] domain=10000 type=transport -[3.56859637E-01 6.47647660E-01] -[2.54935960E-02 2.37037350E-02] +[0.356860 0.647648] +[0.025494 0.023704] domain=10000 type=nu-transport -[3.56859637E-01 6.47647660E-01] -[2.54935960E-02 2.37037350E-02] +[0.356860 0.647648] +[0.025494 0.023704] domain=10000 type=absorption -[2.74078450E-02 2.64510742E-01] -[2.69249700E-03 2.33670770E-02] +[0.027408 0.264511] +[0.002692 0.023367] domain=10000 type=capture -[1.98445500E-02 7.17193530E-02] -[2.64330400E-03 2.52078590E-02] +[0.019845 0.071719] +[0.002643 0.025208] domain=10000 type=fission -[7.56329500E-03 1.92791389E-01] -[5.08484000E-04 1.71059220E-02] +[0.007563 0.192791] +[0.000508 0.017106] domain=10000 type=nu-fission -[1.94317400E-02 4.69774777E-01] -[1.32297600E-03 4.16820000E-02] +[0.019432 0.469775] +[0.001323 0.041682] domain=10000 type=kappa-fission -[1.47456982E+00 3.72868964E+01] -[9.92353210E-02 3.30837773E+00] +[1.474570 37.286896] +[0.099235 3.308378] domain=10000 type=scatter -[3.87417645E-01 3.95659177E-01] -[2.06257320E-02 2.51250570E-02] +[0.387418 0.395659] +[0.020626 0.025125] domain=10000 type=nu-scatter -[3.85188388E-01 4.12389399E-01] -[2.69456210E-02 1.54252770E-02] +[0.385188 0.412389] +[0.026946 0.015425] domain=10000 type=scatter matrix -[[[3.84199458E-01 5.18702840E-02 2.00688450E-02 9.47771600E-03] - [9.88930000E-04 -2.07235000E-04 -1.03366000E-04 2.34291000E-04]] +[[[0.384199 0.051870 0.020069 0.009478] + [0.000989 -0.000207 -0.000103 0.000234]] - [[9.24640000E-04 -7.67705000E-04 4.93789000E-04 -1.71497000E-04] - [4.11464759E-01 1.64817280E-02 6.37149000E-03 -1.04991220E-02]]] -[[[2.70010140E-02 6.98254900E-03 2.84649500E-03 2.23352000E-03] - [4.82419000E-04 1.49011000E-04 1.84316000E-04 1.28173000E-04]] + [[0.000925 -0.000768 0.000494 -0.000171] + [0.411465 0.016482 0.006371 -0.010499]]] +[[[0.027001 0.006983 0.002846 0.002234] + [0.000482 0.000149 0.000184 0.000128]] - [[9.24883000E-04 7.67907000E-04 4.93919000E-04 1.71542000E-04] - [1.52449350E-02 4.50172800E-03 1.05507490E-02 1.04381880E-02]]] + [[0.000925 0.000768 0.000494 0.000172] + [0.015245 0.004502 0.010551 0.010438]]] domain=10000 type=nu-scatter matrix -[[[3.84199458E-01 5.18702840E-02 2.00688450E-02 9.47771600E-03] - [9.88930000E-04 -2.07235000E-04 -1.03366000E-04 2.34291000E-04]] +[[[0.384199 0.051870 0.020069 0.009478] + [0.000989 -0.000207 -0.000103 0.000234]] - [[9.24640000E-04 -7.67705000E-04 4.93789000E-04 -1.71497000E-04] - [4.11464759E-01 1.64817280E-02 6.37149000E-03 -1.04991220E-02]]] -[[[2.70010140E-02 6.98254900E-03 2.84649500E-03 2.23352000E-03] - [4.82419000E-04 1.49011000E-04 1.84316000E-04 1.28173000E-04]] + [[0.000925 -0.000768 0.000494 -0.000171] + [0.411465 0.016482 0.006371 -0.010499]]] +[[[0.027001 0.006983 0.002846 0.002234] + [0.000482 0.000149 0.000184 0.000128]] - [[9.24883000E-04 7.67907000E-04 4.93919000E-04 1.71542000E-04] - [1.52449350E-02 4.50172800E-03 1.05507490E-02 1.04381880E-02]]] + [[0.000925 0.000768 0.000494 0.000172] + [0.015245 0.004502 0.010551 0.010438]]] domain=10000 type=multiplicity matrix -[[1.00000000E+00 1.00000000E+00] - [1.00000000E+00 1.00000000E+00]] -[[7.85164550E-02 6.87184271E-01] - [1.41421356E+00 4.11303490E-02]] +[[1.000000 1.000000] + [1.000000 1.000000]] +[[0.078516 0.687184] + [1.414214 0.041130]] domain=10000 type=nu-fission matrix -[[2.01424280E-02 0.00000000E+00] - [4.54366467E-01 0.00000000E+00]] -[[3.14909200E-03 0.00000000E+00] - [2.74255070E-02 0.00000000E+00]] +[[0.020142 0.000000] + [0.454366 0.000000]] +[[0.003149 0.000000] + [0.027426 0.000000]] domain=10000 type=chi -[1.00000000E+00 0.00000000E+00] -[4.60705230E-02 0.00000000E+00] +[1.000000 0.000000] +[0.046071 0.000000] domain=10000 type=chi-prompt -[1.00000000E+00 0.00000000E+00] -[5.14714570E-02 0.00000000E+00] +[1.000000 0.000000] +[0.051471 0.000000] domain=10000 type=velocity -[1.75152106E+07 3.50171995E+05] -[1.43817527E+06 2.99459317E+04] +[17515210.620397 350171.995194] +[1438175.273899 29945.931697] domain=10000 type=prompt-nu-fission -[1.92392220E-02 4.66719027E-01] -[1.30950600E-03 4.14108700E-02] +[0.019239 0.466719] +[0.001310 0.041411] domain=10001 type=total -[3.13737671E-01 3.00821402E-01] -[1.55819020E-02 2.80524480E-02] +[0.313738 0.300821] +[0.015582 0.028052] domain=10001 type=transport -[2.73227872E-01 3.12374836E-01] -[3.31153660E-02 4.96058320E-02] +[0.273228 0.312375] +[0.033115 0.049606] domain=10001 type=nu-transport -[2.73227872E-01 3.12374836E-01] -[3.31153660E-02 4.96058320E-02] +[0.273228 0.312375] +[0.033115 0.049606] domain=10001 type=absorption -[1.57499100E-03 5.40037900E-03] -[3.22548000E-04 6.18138000E-04] +[0.001575 0.005400] +[0.000323 0.000618] domain=10001 type=capture -[1.57499100E-03 5.40037900E-03] -[3.22548000E-04 6.18138000E-04] +[0.001575 0.005400] +[0.000323 0.000618] domain=10001 type=fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10001 type=nu-fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10001 type=kappa-fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10001 type=scatter -[3.12162680E-01 2.95421023E-01] -[1.53219230E-02 2.74454890E-02] +[0.312163 0.295421] +[0.015322 0.027445] domain=10001 type=nu-scatter -[3.10120735E-01 2.96264270E-01] -[3.37881060E-02 4.37922260E-02] +[0.310121 0.296264] +[0.033788 0.043792] domain=10001 type=scatter matrix -[[[3.10120735E-01 3.82295900E-02 2.07449420E-02 7.96429700E-03] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] +[[[0.310121 0.038230 0.020745 0.007964] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [2.96264270E-01 -1.12136360E-02 8.83656600E-03 -3.27006700E-03]]] -[[[3.37881060E-02 8.48399700E-03 4.69561100E-03 3.73162300E-03] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.296264 -0.011214 0.008837 -0.003270]]] +[[[0.033788 0.008484 0.004696 0.003732] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [4.37922260E-02 1.61803660E-02 1.15039640E-02 7.32884600E-03]]] + [[0.000000 0.000000 0.000000 0.000000] + [0.043792 0.016180 0.011504 0.007329]]] domain=10001 type=nu-scatter matrix -[[[3.10120735E-01 3.82295900E-02 2.07449420E-02 7.96429700E-03] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] +[[[0.310121 0.038230 0.020745 0.007964] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [2.96264270E-01 -1.12136360E-02 8.83656600E-03 -3.27006700E-03]]] -[[[3.37881060E-02 8.48399700E-03 4.69561100E-03 3.73162300E-03] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.296264 -0.011214 0.008837 -0.003270]]] +[[[0.033788 0.008484 0.004696 0.003732] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [4.37922260E-02 1.61803660E-02 1.15039640E-02 7.32884600E-03]]] + [[0.000000 0.000000 0.000000 0.000000] + [0.043792 0.016180 0.011504 0.007329]]] domain=10001 type=multiplicity matrix -[[1.00000000E+00 0.00000000E+00] - [0.00000000E+00 1.00000000E+00]] -[[1.08778697E-01 0.00000000E+00] - [0.00000000E+00 1.42427173E-01]] +[[1.000000 0.000000] + [0.000000 1.000000]] +[[0.108779 0.000000] + [0.000000 0.142427]] domain=10001 type=nu-fission matrix -[[0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00]] -[[0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00]] +[[0.000000 0.000000] + [0.000000 0.000000]] +[[0.000000 0.000000] + [0.000000 0.000000]] domain=10001 type=chi -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10001 type=chi-prompt -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10001 type=velocity -[1.66778395E+07 3.34953368E+05] -[1.26644431E+06 3.83367816E+04] +[16677839.497365 334953.367601] +[1266444.309518 38336.781626] domain=10001 type=prompt-nu-fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10002 type=total -[6.64572261E-01 2.05238401E+00] -[3.12147520E-02 2.24342907E-01] +[0.664572 2.052384] +[0.031215 0.224343] domain=10002 type=transport -[2.90565257E-01 1.51643801E+00] -[2.38518550E-02 2.35197269E-01] +[0.290565 1.516438] +[0.023852 0.235197] domain=10002 type=nu-transport -[2.90565257E-01 1.51643801E+00] -[2.38518550E-02 2.35197269E-01] +[0.290565 1.516438] +[0.023852 0.235197] domain=10002 type=absorption -[6.90400000E-04 3.16872570E-02] -[4.41480000E-05 3.74655900E-03] +[0.000690 0.031687] +[0.000044 0.003747] domain=10002 type=capture -[6.90400000E-04 3.16872570E-02] -[4.41480000E-05 3.74655900E-03] +[0.000690 0.031687] +[0.000044 0.003747] domain=10002 type=fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10002 type=nu-fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10002 type=kappa-fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10002 type=scatter -[6.63881861E-01 2.02069676E+00] -[3.11726840E-02 2.20604454E-01] +[0.663882 2.020697] +[0.031173 0.220604] domain=10002 type=nu-scatter -[6.71269205E-01 2.03538833E+00] -[2.61863710E-02 2.58060329E-01] +[0.671269 2.035388] +[0.026186 0.258060] domain=10002 type=scatter matrix -[[[6.39901485E-01 3.81167449E-01 1.52391898E-01 9.14802200E-03] - [3.13677200E-02 8.75772300E-03 -2.56790100E-03 -3.78480300E-03]] +[[[0.639901 0.381167 0.152392 0.009148] + [0.031368 0.008758 -0.002568 -0.003785]] - [[4.43343000E-04 3.99960000E-04 3.19563000E-04 2.13847000E-04] - [2.03494499E+00 5.09940513E-01 1.11174609E-01 2.49884360E-02]]] -[[[2.47091230E-02 1.62432650E-02 8.15627800E-03 3.88856200E-03] - [1.72811300E-03 9.25671000E-04 1.01398500E-03 8.17076000E-04]] + [[0.000443 0.000400 0.000320 0.000214] + [2.034945 0.509941 0.111175 0.024988]]] +[[[0.024709 0.016243 0.008156 0.003889] + [0.001728 0.000926 0.001014 0.000817]] - [[4.44850000E-04 4.01320000E-04 3.20649000E-04 2.14574000E-04] - [2.57799889E-01 5.12359060E-02 1.30198170E-02 8.31235300E-03]]] + [[0.000445 0.000401 0.000321 0.000215] + [0.257800 0.051236 0.013020 0.008312]]] domain=10002 type=nu-scatter matrix -[[[6.39901485E-01 3.81167449E-01 1.52391898E-01 9.14802200E-03] - [3.13677200E-02 8.75772300E-03 -2.56790100E-03 -3.78480300E-03]] +[[[0.639901 0.381167 0.152392 0.009148] + [0.031368 0.008758 -0.002568 -0.003785]] - [[4.43343000E-04 3.99960000E-04 3.19563000E-04 2.13847000E-04] - [2.03494499E+00 5.09940513E-01 1.11174609E-01 2.49884360E-02]]] -[[[2.47091230E-02 1.62432650E-02 8.15627800E-03 3.88856200E-03] - [1.72811300E-03 9.25671000E-04 1.01398500E-03 8.17076000E-04]] + [[0.000443 0.000400 0.000320 0.000214] + [2.034945 0.509941 0.111175 0.024988]]] +[[[0.024709 0.016243 0.008156 0.003889] + [0.001728 0.000926 0.001014 0.000817]] - [[4.44850000E-04 4.01320000E-04 3.20649000E-04 2.14574000E-04] - [2.57799889E-01 5.12359060E-02 1.30198170E-02 8.31235300E-03]]] + [[0.000445 0.000401 0.000321 0.000215] + [0.257800 0.051236 0.013020 0.008312]]] domain=10002 type=multiplicity matrix -[[1.00000000E+00 1.00000000E+00] - [1.00000000E+00 1.00000000E+00]] -[[3.86091910E-02 6.76673480E-02] - [1.41421356E+00 1.35929207E-01]] +[[1.000000 1.000000] + [1.000000 1.000000]] +[[0.038609 0.067667] + [1.414214 0.135929]] domain=10002 type=nu-fission matrix -[[0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00]] -[[0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00]] +[[0.000000 0.000000] + [0.000000 0.000000]] +[[0.000000 0.000000] + [0.000000 0.000000]] domain=10002 type=chi -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10002 type=chi-prompt -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] domain=10002 type=velocity -[1.66055629E+07 3.28412039E+05] -[1.04243552E+06 3.88284357E+04] +[16605562.873227 328412.038650] +[1042435.523742 38828.435730] domain=10002 type=prompt-nu-fission -[0.00000000E+00 0.00000000E+00] -[0.00000000E+00 0.00000000E+00] +[0.000000 0.000000] +[0.000000 0.000000] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 5a02811a9f..a3186b28dc 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.14825490E-01 2.27929090E-02 -0 10000 2 total 6.60169919E-01 4.75189280E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637E-01 2.54935960E-02 -0 10000 2 total 6.47647660E-01 2.37037350E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637E-01 2.54935960E-02 -0 10000 2 total 6.47647660E-01 2.37037350E-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.74078450E-02 2.69249700E-03 -0 10000 2 total 2.64510742E-01 2.33670770E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.98445500E-02 2.64330400E-03 -0 10000 2 total 7.17193530E-02 2.52078590E-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.56329500E-03 5.08484000E-04 -0 10000 2 total 1.92791389E-01 1.71059220E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.94317400E-02 1.32297600E-03 -0 10000 2 total 4.69774777E-01 4.16820000E-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.47456982E+00 9.92353210E-02 -0 10000 2 total 3.72868964E+01 3.30837773E+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.87417645E-01 2.06257320E-02 -0 10000 2 total 3.95659177E-01 2.51250570E-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.85188388E-01 2.69456210E-02 -0 10000 2 total 4.12389399E-01 1.54252770E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199458E-01 2.70010140E-02 -13 10000 1 1 total P1 5.18702840E-02 6.98254900E-03 -14 10000 1 1 total P2 2.00688450E-02 2.84649500E-03 -15 10000 1 1 total P3 9.47771600E-03 2.23352000E-03 -8 10000 1 2 total P0 9.88930000E-04 4.82419000E-04 -9 10000 1 2 total P1 -2.07235000E-04 1.49011000E-04 -10 10000 1 2 total P2 -1.03366000E-04 1.84316000E-04 -11 10000 1 2 total P3 2.34291000E-04 1.28173000E-04 -4 10000 2 1 total P0 9.24640000E-04 9.24883000E-04 -5 10000 2 1 total P1 -7.67705000E-04 7.67907000E-04 -6 10000 2 1 total P2 4.93789000E-04 4.93919000E-04 -7 10000 2 1 total P3 -1.71497000E-04 1.71542000E-04 -0 10000 2 2 total P0 4.11464759E-01 1.52449350E-02 -1 10000 2 2 total P1 1.64817280E-02 4.50172800E-03 -2 10000 2 2 total P2 6.37149000E-03 1.05507490E-02 -3 10000 2 2 total P3 -1.04991220E-02 1.04381880E-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199458E-01 2.70010140E-02 -13 10000 1 1 total P1 5.18702840E-02 6.98254900E-03 -14 10000 1 1 total P2 2.00688450E-02 2.84649500E-03 -15 10000 1 1 total P3 9.47771600E-03 2.23352000E-03 -8 10000 1 2 total P0 9.88930000E-04 4.82419000E-04 -9 10000 1 2 total P1 -2.07235000E-04 1.49011000E-04 -10 10000 1 2 total P2 -1.03366000E-04 1.84316000E-04 -11 10000 1 2 total P3 2.34291000E-04 1.28173000E-04 -4 10000 2 1 total P0 9.24640000E-04 9.24883000E-04 -5 10000 2 1 total P1 -7.67705000E-04 7.67907000E-04 -6 10000 2 1 total P2 4.93789000E-04 4.93919000E-04 -7 10000 2 1 total P3 -1.71497000E-04 1.71542000E-04 -0 10000 2 2 total P0 4.11464759E-01 1.52449350E-02 -1 10000 2 2 total P1 1.64817280E-02 4.50172800E-03 -2 10000 2 2 total P2 6.37149000E-03 1.05507490E-02 -3 10000 2 2 total P3 -1.04991220E-02 1.04381880E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.00000000E+00 7.85164550E-02 -2 10000 1 2 total 1.00000000E+00 6.87184271E-01 -1 10000 2 1 total 1.00000000E+00 1.41421356E+00 -0 10000 2 2 total 1.00000000E+00 4.11303490E-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.01424280E-02 3.14909200E-03 -2 10000 1 2 total 0.00000000E+00 0.00000000E+00 -1 10000 2 1 total 4.54366467E-01 2.74255070E-02 -0 10000 2 2 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000E+00 4.60705230E-02 -0 10000 2 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000E+00 5.14714570E-02 -0 10000 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.75152106E+07 1.43817527E+06 -0 10000 2 total 3.50171995E+05 2.99459317E+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.92392220E-02 1.30950600E-03 -0 10000 2 total 4.66719027E-01 4.14108700E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.13737671E-01 1.55819020E-02 -0 10001 2 total 3.00821402E-01 2.80524480E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872E-01 3.31153660E-02 -0 10001 2 total 3.12374836E-01 4.96058320E-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872E-01 3.31153660E-02 -0 10001 2 total 3.12374836E-01 4.96058320E-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499100E-03 3.22548000E-04 -0 10001 2 total 5.40037900E-03 6.18138000E-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499100E-03 3.22548000E-04 -0 10001 2 total 5.40037900E-03 6.18138000E-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.12162680E-01 1.53219230E-02 -0 10001 2 total 2.95421023E-01 2.74454890E-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.10120735E-01 3.37881060E-02 -0 10001 2 total 2.96264270E-01 4.37922260E-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735E-01 3.37881060E-02 -13 10001 1 1 total P1 3.82295900E-02 8.48399700E-03 -14 10001 1 1 total P2 2.07449420E-02 4.69561100E-03 -15 10001 1 1 total P3 7.96429700E-03 3.73162300E-03 -8 10001 1 2 total P0 0.00000000E+00 0.00000000E+00 -9 10001 1 2 total P1 0.00000000E+00 0.00000000E+00 -10 10001 1 2 total P2 0.00000000E+00 0.00000000E+00 -11 10001 1 2 total P3 0.00000000E+00 0.00000000E+00 -4 10001 2 1 total P0 0.00000000E+00 0.00000000E+00 -5 10001 2 1 total P1 0.00000000E+00 0.00000000E+00 -6 10001 2 1 total P2 0.00000000E+00 0.00000000E+00 -7 10001 2 1 total P3 0.00000000E+00 0.00000000E+00 -0 10001 2 2 total P0 2.96264270E-01 4.37922260E-02 -1 10001 2 2 total P1 -1.12136360E-02 1.61803660E-02 -2 10001 2 2 total P2 8.83656600E-03 1.15039640E-02 -3 10001 2 2 total P3 -3.27006700E-03 7.32884600E-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735E-01 3.37881060E-02 -13 10001 1 1 total P1 3.82295900E-02 8.48399700E-03 -14 10001 1 1 total P2 2.07449420E-02 4.69561100E-03 -15 10001 1 1 total P3 7.96429700E-03 3.73162300E-03 -8 10001 1 2 total P0 0.00000000E+00 0.00000000E+00 -9 10001 1 2 total P1 0.00000000E+00 0.00000000E+00 -10 10001 1 2 total P2 0.00000000E+00 0.00000000E+00 -11 10001 1 2 total P3 0.00000000E+00 0.00000000E+00 -4 10001 2 1 total P0 0.00000000E+00 0.00000000E+00 -5 10001 2 1 total P1 0.00000000E+00 0.00000000E+00 -6 10001 2 1 total P2 0.00000000E+00 0.00000000E+00 -7 10001 2 1 total P3 0.00000000E+00 0.00000000E+00 -0 10001 2 2 total P0 2.96264270E-01 4.37922260E-02 -1 10001 2 2 total P1 -1.12136360E-02 1.61803660E-02 -2 10001 2 2 total P2 8.83656600E-03 1.15039640E-02 -3 10001 2 2 total P3 -3.27006700E-03 7.32884600E-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.00000000E+00 1.08778697E-01 -2 10001 1 2 total 0.00000000E+00 0.00000000E+00 -1 10001 2 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 2 total 1.00000000E+00 1.42427173E-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.00000000E+00 0.00000000E+00 -2 10001 1 2 total 0.00000000E+00 0.00000000E+00 -1 10001 2 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 2 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.66778395E+07 1.26644431E+06 -0 10001 2 total 3.34953368E+05 3.83367816E+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000E+00 0.00000000E+00 -0 10001 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.64572261E-01 3.12147520E-02 -0 10002 2 total 2.05238401E+00 2.24342907E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257E-01 2.38518550E-02 -0 10002 2 total 1.51643801E+00 2.35197269E-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257E-01 2.38518550E-02 -0 10002 2 total 1.51643801E+00 2.35197269E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.90400000E-04 4.41480000E-05 -0 10002 2 total 3.16872570E-02 3.74655900E-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.90400000E-04 4.41480000E-05 -0 10002 2 total 3.16872570E-02 3.74655900E-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000E+00 0.00000000E+00 -0 10002 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000E+00 0.00000000E+00 -0 10002 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000E+00 0.00000000E+00 -0 10002 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.63881861E-01 3.11726840E-02 -0 10002 2 total 2.02069676E+00 2.20604454E-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.71269205E-01 2.61863710E-02 -0 10002 2 total 2.03538833E+00 2.58060329E-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901485E-01 2.47091230E-02 -13 10002 1 1 total P1 3.81167449E-01 1.62432650E-02 -14 10002 1 1 total P2 1.52391898E-01 8.15627800E-03 -15 10002 1 1 total P3 9.14802200E-03 3.88856200E-03 -8 10002 1 2 total P0 3.13677200E-02 1.72811300E-03 -9 10002 1 2 total P1 8.75772300E-03 9.25671000E-04 -10 10002 1 2 total P2 -2.56790100E-03 1.01398500E-03 -11 10002 1 2 total P3 -3.78480300E-03 8.17076000E-04 -4 10002 2 1 total P0 4.43343000E-04 4.44850000E-04 -5 10002 2 1 total P1 3.99960000E-04 4.01320000E-04 -6 10002 2 1 total P2 3.19563000E-04 3.20649000E-04 -7 10002 2 1 total P3 2.13847000E-04 2.14574000E-04 -0 10002 2 2 total P0 2.03494499E+00 2.57799889E-01 -1 10002 2 2 total P1 5.09940513E-01 5.12359060E-02 -2 10002 2 2 total P2 1.11174609E-01 1.30198170E-02 -3 10002 2 2 total P3 2.49884360E-02 8.31235300E-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901485E-01 2.47091230E-02 -13 10002 1 1 total P1 3.81167449E-01 1.62432650E-02 -14 10002 1 1 total P2 1.52391898E-01 8.15627800E-03 -15 10002 1 1 total P3 9.14802200E-03 3.88856200E-03 -8 10002 1 2 total P0 3.13677200E-02 1.72811300E-03 -9 10002 1 2 total P1 8.75772300E-03 9.25671000E-04 -10 10002 1 2 total P2 -2.56790100E-03 1.01398500E-03 -11 10002 1 2 total P3 -3.78480300E-03 8.17076000E-04 -4 10002 2 1 total P0 4.43343000E-04 4.44850000E-04 -5 10002 2 1 total P1 3.99960000E-04 4.01320000E-04 -6 10002 2 1 total P2 3.19563000E-04 3.20649000E-04 -7 10002 2 1 total P3 2.13847000E-04 2.14574000E-04 -0 10002 2 2 total P0 2.03494499E+00 2.57799889E-01 -1 10002 2 2 total P1 5.09940513E-01 5.12359060E-02 -2 10002 2 2 total P2 1.11174609E-01 1.30198170E-02 -3 10002 2 2 total P3 2.49884360E-02 8.31235300E-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.00000000E+00 3.86091910E-02 -2 10002 1 2 total 1.00000000E+00 6.76673480E-02 -1 10002 2 1 total 1.00000000E+00 1.41421356E+00 -0 10002 2 2 total 1.00000000E+00 1.35929207E-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.00000000E+00 0.00000000E+00 -2 10002 1 2 total 0.00000000E+00 0.00000000E+00 -1 10002 2 1 total 0.00000000E+00 0.00000000E+00 -0 10002 2 2 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000E+00 0.00000000E+00 -0 10002 2 total 0.00000000E+00 0.00000000E+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000E+00 0.00000000E+00 -0 10002 2 total 0.00000000E+00 0.00000000E+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.66055629E+07 1.04243552E+06 -0 10002 2 total 3.28412039E+05 3.88284357E+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000E+00 0.00000000E+00 -0 10002 2 total 0.00000000E+00 0.00000000E+00 + material group in nuclide mean std. dev. +1 10000 1 total 0.414825 0.022793 +0 10000 2 total 0.660170 0.047519 + material group in nuclide mean std. dev. +1 10000 1 total 0.356860 0.025494 +0 10000 2 total 0.647648 0.023704 + material group in nuclide mean std. dev. +1 10000 1 total 0.356860 0.025494 +0 10000 2 total 0.647648 0.023704 + material group in nuclide mean std. dev. +1 10000 1 total 0.027408 0.002692 +0 10000 2 total 0.264511 0.023367 + material group in nuclide mean std. dev. +1 10000 1 total 0.019845 0.002643 +0 10000 2 total 0.071719 0.025208 + material group in nuclide mean std. dev. +1 10000 1 total 0.007563 0.000508 +0 10000 2 total 0.192791 0.017106 + material group in nuclide mean std. dev. +1 10000 1 total 0.019432 0.001323 +0 10000 2 total 0.469775 0.041682 + material group in nuclide mean std. dev. +1 10000 1 total 1.474570 0.099235 +0 10000 2 total 37.286896 3.308378 + material group in nuclide mean std. dev. +1 10000 1 total 0.387418 0.020626 +0 10000 2 total 0.395659 0.025125 + material group in nuclide mean std. dev. +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 +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 +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 + 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 +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 +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 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.000000 0.078516 +2 10000 1 2 total 1.000000 0.687184 +1 10000 2 1 total 1.000000 1.414214 +0 10000 2 2 total 1.000000 0.041130 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 0.020142 0.003149 +2 10000 1 2 total 0.000000 0.000000 +1 10000 2 1 total 0.454366 0.027426 +0 10000 2 2 total 0.000000 0.000000 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000 0.046071 +0 10000 2 total 0.000000 0.000000 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000 0.051471 +0 10000 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10000 1 total 17515210.620397 1438175.273899 +0 10000 2 total 350171.995194 29945.931697 + material group in nuclide mean std. dev. +1 10000 1 total 0.019239 0.001310 +0 10000 2 total 0.466719 0.041411 + material group in nuclide mean std. dev. +1 10001 1 total 0.313738 0.015582 +0 10001 2 total 0.300821 0.028052 + material group in nuclide mean std. dev. +1 10001 1 total 0.273228 0.033115 +0 10001 2 total 0.312375 0.049606 + material group in nuclide mean std. dev. +1 10001 1 total 0.273228 0.033115 +0 10001 2 total 0.312375 0.049606 + material group in nuclide mean std. dev. +1 10001 1 total 0.001575 0.000323 +0 10001 2 total 0.005400 0.000618 + material group in nuclide mean std. dev. +1 10001 1 total 0.001575 0.000323 +0 10001 2 total 0.005400 0.000618 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000 0.000000 +0 10001 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000 0.000000 +0 10001 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000 0.000000 +0 10001 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10001 1 total 0.312163 0.015322 +0 10001 2 total 0.295421 0.027445 + material group in nuclide mean std. dev. +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 +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 +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 + 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 +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 +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 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.000000 0.108779 +2 10001 1 2 total 0.000000 0.000000 +1 10001 2 1 total 0.000000 0.000000 +0 10001 2 2 total 1.000000 0.142427 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.000000 0.000000 +2 10001 1 2 total 0.000000 0.000000 +1 10001 2 1 total 0.000000 0.000000 +0 10001 2 2 total 0.000000 0.000000 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000 0.000000 +0 10001 2 total 0.000000 0.000000 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000 0.000000 +0 10001 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10001 1 total 16677839.497365 1266444.309518 +0 10001 2 total 334953.367601 38336.781626 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000 0.000000 +0 10001 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10002 1 total 0.664572 0.031215 +0 10002 2 total 2.052384 0.224343 + material group in nuclide mean std. dev. +1 10002 1 total 0.290565 0.023852 +0 10002 2 total 1.516438 0.235197 + material group in nuclide mean std. dev. +1 10002 1 total 0.290565 0.023852 +0 10002 2 total 1.516438 0.235197 + material group in nuclide mean std. dev. +1 10002 1 total 0.000690 0.000044 +0 10002 2 total 0.031687 0.003747 + material group in nuclide mean std. dev. +1 10002 1 total 0.000690 0.000044 +0 10002 2 total 0.031687 0.003747 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000 0.000000 +0 10002 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000 0.000000 +0 10002 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000 0.000000 +0 10002 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10002 1 total 0.663882 0.031173 +0 10002 2 total 2.020697 0.220604 + material group in nuclide mean std. dev. +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 +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 +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 + 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 +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 +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 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.000000 0.038609 +2 10002 1 2 total 1.000000 0.067667 +1 10002 2 1 total 1.000000 1.414214 +0 10002 2 2 total 1.000000 0.135929 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.000000 0.000000 +2 10002 1 2 total 0.000000 0.000000 +1 10002 2 1 total 0.000000 0.000000 +0 10002 2 2 total 0.000000 0.000000 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000 0.000000 +0 10002 2 total 0.000000 0.000000 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000 0.000000 +0 10002 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10002 1 total 16605562.873227 1042435.523742 +0 10002 2 total 328412.038650 38828.435730 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000 0.000000 +0 10002 2 total 0.000000 0.000000 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 9a77145394..724cb45cdc 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -7579f6368d2046d33c506d3a43d46703bf8151e16256787bac963be127d9000be272941fbaa2a1ee91f2abe3d619c2202f21db9bc1f78e064634aa065eb891c5 \ No newline at end of file +9e7bc573568b1b441d43c406a8fddcd3db0c4ae5bd5a6577e2abb9abf452d9d2acd006c330e62f0d774e133e9f484d3c2f6d8c00b23274608b1e214da5737b20 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 243e160989..a53cd33007 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.00000000E+02 0.00000000E+00 7.00000000E+02 8.00000000E+02] + Temperature = [500.000000 0.000000 700.000000 800.000000] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index ad113d8fa2..a54027886f 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -b47e2f499c20b824b987ee1c5126de38cf86754b1abe3c7d0f19046a1d7a5eadebedee4b074ff25c1ffb9e147bd9f55d1e5f11e57aaf5804cb248f21dfbec3b1 \ No newline at end of file +cc0d5f0a7c0cf36d9fca0cb73726f78e90c5e17d1b5565940097182af4dc15c0b159ee2a0d3bc9ef395ab852335d2e370e35b6ac2f4e97c6b9ba9758af530fbb \ No newline at end of file diff --git a/tests/test_tally_aggregation/test_tally_aggregation.py b/tests/test_tally_aggregation/test_tally_aggregation.py index 3b9aec4d38..fdc086e682 100644 --- a/tests/test_tally_aggregation/test_tally_aggregation.py +++ b/tests/test_tally_aggregation/test_tally_aggregation.py @@ -8,16 +8,6 @@ sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness import openmc -import numpy as np -import pandas as pd - -# Require numpy and pandas to print output rounded to 10 decimal places and in -# scientific notation with 10 significant figures. This is needed to avoid round -# off error when large numbers are printed, which can cause tests to fail for -# different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 7), '8.6E')}) -pd.set_option('display.float_format', lambda x: '%8.6E' % np.around(x, 7)) - class TallyAggregationTestHarness(PyAPITestHarness): def _build_inputs(self): diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index d677d69f5c..d2bad24d0f 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] +[[[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] ..., - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] ..., - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] ..., - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] ..., - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]]][[[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] ..., - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]] + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]] - [[0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00] - [0.00000000E+00 0.00000000E+00 0.00000000E+00]]] \ No newline at end of file + [[0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000] + [0.000000 0.000000 0.000000]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index e8251cfc62..cb717707c6 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -15,8 +15,8 @@ import pandas as pd # scientific notation with 10 significant figures. This is needed to avoid round # off error when large numbers are printed, which can cause tests to fail for # different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 9), '10.8E')}) -pd.set_option('display.float_format', lambda x: '%10.8E' % np.around(x, 9)) +np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 10), 'f')}) +pd.set_option('display.float_format', lambda x: '%f' % np.around(x, 10)) sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 4821b830461ac651f2d022c469078770901bc07c Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Wed, 13 Jul 2016 10:01:52 -0600 Subject: [PATCH 40/82] changed number of sig figs to 8 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 82 +-- tests/test_mgxs_library_hdf5/results_true.dat | 312 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 12 +- 9 files changed, 694 insertions(+), 694 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index b6cd1e380e..f8353aa667 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 0.453624 0.021053 - material group in nuclide mean std. dev. -0 10000 1 total 0.400852 0.022858 - material group in nuclide mean std. dev. -0 10000 1 total 0.400852 0.022858 - material group in nuclide mean std. dev. -0 10000 1 total 0.064903 0.004313 - material group in nuclide mean std. dev. -0 10000 1 total 0.028048 0.004580 - material group in nuclide mean std. dev. -0 10000 1 total 0.036855 0.002622 - material group in nuclide mean std. dev. -0 10000 1 total 0.090649 0.006410 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955 0.507364 - material group in nuclide mean std. dev. -0 10000 1 total 0.388721 0.017830 - material group in nuclide mean std. dev. -0 10000 1 total 0.389304 0.023076 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 0.389304 0.023146 -1 10000 1 1 total P1 0.046224 0.005907 -2 10000 1 1 total P2 0.017984 0.002883 -3 10000 1 1 total P3 0.006628 0.002457 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 0.389304 0.023146 -1 10000 1 1 total P1 0.046224 0.005907 -2 10000 1 1 total P2 0.017984 0.002883 -3 10000 1 1 total P3 0.006628 0.002457 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.000000 0.066111 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 0.085835 0.005592 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000 0.046071 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000 0.051471 - material group in nuclide mean std. dev. -0 10000 1 total 2001308.739748 146216.555365 - material group in nuclide mean std. dev. -0 10000 1 total 0.090004 0.006367 - material group in nuclide mean std. dev. -0 10001 1 total 0.311594 0.013793 - material group in nuclide mean std. dev. -0 10001 1 total 0.279255 0.029190 - material group in nuclide mean std. dev. -0 10001 1 total 0.279255 0.029190 - material group in nuclide mean std. dev. -0 10001 1 total 0.002210 0.000286 - material group in nuclide mean std. dev. -0 10001 1 total 0.002210 0.000286 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10001 1 total 0.309384 0.013551 - material group in nuclide mean std. dev. -0 10001 1 total 0.307987 0.029308 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 0.307987 0.029308 -1 10001 1 1 total P1 0.030617 0.007464 -2 10001 1 1 total P2 0.018911 0.004323 -3 10001 1 1 total P3 0.006235 0.003338 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 0.307987 0.029308 -1 10001 1 1 total P1 0.030617 0.007464 -2 10001 1 1 total P2 0.018911 0.004323 -3 10001 1 1 total P3 0.006235 0.003338 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.000000 0.095039 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.000000 0.000000 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000 0.000000 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10001 1 total 1833261.152573 166355.174520 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10002 1 total 0.904999 0.043964 - material group in nuclide mean std. dev. -0 10002 1 total 0.499184 0.040914 - material group in nuclide mean std. dev. -0 10002 1 total 0.499184 0.040914 - material group in nuclide mean std. dev. -0 10002 1 total 0.006060 0.000555 - material group in nuclide mean std. dev. -0 10002 1 total 0.006060 0.000555 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10002 1 total 0.898938 0.043493 - material group in nuclide mean std. dev. -0 10002 1 total 0.903415 0.043959 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 0.903415 0.043586 -1 10002 1 1 total P1 0.410417 0.015877 -2 10002 1 1 total P2 0.143301 0.007187 -3 10002 1 1 total P3 0.008739 0.003571 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 0.903415 0.043586 -1 10002 1 1 total P1 0.410417 0.015877 -2 10002 1 1 total P2 0.143301 0.007187 -3 10002 1 1 total P3 0.008739 0.003571 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.000000 0.056867 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.000000 0.000000 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000 0.000000 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 10002 1 total 1732199.699466 159691.426430 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000 0.000000 + material group in nuclide mean std. dev. +0 10000 1 total 4.5362442e-01 2.1052696e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.0085218e-01 2.2857554e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.0085218e-01 2.2857554e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.4903456e-02 4.3127612e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.8048066e-02 4.5799637e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.6855390e-02 2.6221598e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.0649290e-02 6.4098745e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.1379551e+00 5.0736381e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.8872097e-01 1.7830429e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.8930356e-01 2.3075539e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 +1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 +2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 +3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 +1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 +2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 +3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.0000000e+00 6.6110820e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.5835019e-02 5.5918249e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.0000000e+00 4.6070523e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.0000000e+00 5.1471457e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.0013087e+06 1.4621656e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.0003978e-02 6.3669079e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.1159411e-01 1.3793168e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.7925506e-01 2.9189501e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.7925506e-01 2.9189501e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.2098464e-03 2.8633413e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.2098464e-03 2.8633413e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.0938426e-01 1.3551267e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.0798735e-01 2.9308089e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 +1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 +2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 +3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 +1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 +2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 +3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.0000000e+00 9.5038722e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.8332612e+06 1.6635517e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.0499883e-01 4.3964488e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.9918398e-01 4.0914120e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.9918398e-01 4.0914120e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.0603412e-03 5.5452442e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.0603412e-03 5.5452442e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.9893849e-01 4.3492984e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.0341466e-01 4.3958737e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 +1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 +2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 +3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 +1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 +2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 +3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.0000000e+00 5.6866725e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.7321997e+06 1.5969143e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index bb53bc81c8..70c7134536 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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 - 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 - 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 - 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.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.000000 0.000000 - 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.000000 0.000000 - 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.000000 0.000000 - 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.543440 - 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 - 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 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.000000 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.000000 0.000000 - 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.000000 0.000000 - 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.000000 0.000000 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 774245.714482 416397.691599 - 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.000000 0.000000 +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.1459340e+00 5.5382169e-01 + 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.1891920e-01 5.2064426e-01 + 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.1891920e-01 5.2064426e-01 + 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.9762206e-02 1.0628764e-02 + 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.9762206e-02 1.0628764e-02 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.1261718e+00 5.4344001e-01 + 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.1425469e+00 5.7013139e-01 + 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.1425469e+00 5.7013139e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 + 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.1425469e+00 5.7013139e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 + 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.0000000e+00 5.2971733e-01 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.7424571e+05 4.1639769e+05 + 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.0000000e+00 0.0000000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index cc8d6a6b04..ca424dc6b7 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[0.414825 0.660170] -[0.022793 0.047519] +[4.1482549e-01 6.6016992e-01] +[2.2792909e-02 4.7518928e-02] domain=10000 type=transport -[0.356860 0.647648] -[0.025494 0.023704] +[3.5685964e-01 6.4764766e-01] +[2.5493596e-02 2.3703735e-02] domain=10000 type=nu-transport -[0.356860 0.647648] -[0.025494 0.023704] +[3.5685964e-01 6.4764766e-01] +[2.5493596e-02 2.3703735e-02] domain=10000 type=absorption -[0.027408 0.264511] -[0.002692 0.023367] +[2.7407845e-02 2.6451074e-01] +[2.6924971e-03 2.3367077e-02] domain=10000 type=capture -[0.019845 0.071719] -[0.002643 0.025208] +[1.9844550e-02 7.1719353e-02] +[2.6433043e-03 2.5207859e-02] domain=10000 type=fission -[0.007563 0.192791] -[0.000508 0.017106] +[7.5632950e-03 1.9279139e-01] +[5.0848368e-04 1.7105922e-02] domain=10000 type=nu-fission -[0.019432 0.469775] -[0.001323 0.041682] +[1.9431740e-02 4.6977478e-01] +[1.3229756e-03 4.1682000e-02] domain=10000 type=kappa-fission -[1.474570 37.286896] -[0.099235 3.308378] +[1.4745698e+00 3.7286896e+01] +[9.9235321e-02 3.3083777e+00] domain=10000 type=scatter -[0.387418 0.395659] -[0.020626 0.025125] +[3.8741765e-01 3.9565918e-01] +[2.0625732e-02 2.5125057e-02] domain=10000 type=nu-scatter -[0.385188 0.412389] -[0.026946 0.015425] +[3.8518839e-01 4.1238940e-01] +[2.6945621e-02 1.5425277e-02] domain=10000 type=scatter matrix -[[[0.384199 0.051870 0.020069 0.009478] - [0.000989 -0.000207 -0.000103 0.000234]] +[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] + [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] - [[0.000925 -0.000768 0.000494 -0.000171] - [0.411465 0.016482 0.006371 -0.010499]]] -[[[0.027001 0.006983 0.002846 0.002234] - [0.000482 0.000149 0.000184 0.000128]] + [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] + [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] +[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] + [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] - [[0.000925 0.000768 0.000494 0.000172] - [0.015245 0.004502 0.010551 0.010438]]] + [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] + [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] domain=10000 type=nu-scatter matrix -[[[0.384199 0.051870 0.020069 0.009478] - [0.000989 -0.000207 -0.000103 0.000234]] +[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] + [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] - [[0.000925 -0.000768 0.000494 -0.000171] - [0.411465 0.016482 0.006371 -0.010499]]] -[[[0.027001 0.006983 0.002846 0.002234] - [0.000482 0.000149 0.000184 0.000128]] + [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] + [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] +[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] + [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] - [[0.000925 0.000768 0.000494 0.000172] - [0.015245 0.004502 0.010551 0.010438]]] + [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] + [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] domain=10000 type=multiplicity matrix -[[1.000000 1.000000] - [1.000000 1.000000]] -[[0.078516 0.687184] - [1.414214 0.041130]] +[[1.0000000e+00 1.0000000e+00] + [1.0000000e+00 1.0000000e+00]] +[[7.8516455e-02 6.8718427e-01] + [1.4142136e+00 4.1130349e-02]] domain=10000 type=nu-fission matrix -[[0.020142 0.000000] - [0.454366 0.000000]] -[[0.003149 0.000000] - [0.027426 0.000000]] +[[2.0142428e-02 0.0000000e+00] + [4.5436647e-01 0.0000000e+00]] +[[3.1490917e-03 0.0000000e+00] + [2.7425507e-02 0.0000000e+00]] domain=10000 type=chi -[1.000000 0.000000] -[0.046071 0.000000] +[1.0000000e+00 0.0000000e+00] +[4.6070523e-02 0.0000000e+00] domain=10000 type=chi-prompt -[1.000000 0.000000] -[0.051471 0.000000] +[1.0000000e+00 0.0000000e+00] +[5.1471457e-02 0.0000000e+00] domain=10000 type=velocity -[17515210.620397 350171.995194] -[1438175.273899 29945.931697] +[1.7515211e+07 3.5017200e+05] +[1.4381753e+06 2.9945932e+04] domain=10000 type=prompt-nu-fission -[0.019239 0.466719] -[0.001310 0.041411] +[1.9239222e-02 4.6671903e-01] +[1.3095060e-03 4.1410870e-02] domain=10001 type=total -[0.313738 0.300821] -[0.015582 0.028052] +[3.1373767e-01 3.0082140e-01] +[1.5581902e-02 2.8052448e-02] domain=10001 type=transport -[0.273228 0.312375] -[0.033115 0.049606] +[2.7322787e-01 3.1237484e-01] +[3.3115366e-02 4.9605832e-02] domain=10001 type=nu-transport -[0.273228 0.312375] -[0.033115 0.049606] +[2.7322787e-01 3.1237484e-01] +[3.3115366e-02 4.9605832e-02] domain=10001 type=absorption -[0.001575 0.005400] -[0.000323 0.000618] +[1.5749914e-03 5.4003788e-03] +[3.2254789e-04 6.1813831e-04] domain=10001 type=capture -[0.001575 0.005400] -[0.000323 0.000618] +[1.5749914e-03 5.4003788e-03] +[3.2254789e-04 6.1813831e-04] domain=10001 type=fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=nu-fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=kappa-fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=scatter -[0.312163 0.295421] -[0.015322 0.027445] +[3.1216268e-01 2.9542102e-01] +[1.5321923e-02 2.7445489e-02] domain=10001 type=nu-scatter -[0.310121 0.296264] -[0.033788 0.043792] +[3.1012074e-01 2.9626427e-01] +[3.3788106e-02 4.3792226e-02] domain=10001 type=scatter matrix -[[[0.310121 0.038230 0.020745 0.007964] - [0.000000 0.000000 0.000000 0.000000]] +[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.296264 -0.011214 0.008837 -0.003270]]] -[[[0.033788 0.008484 0.004696 0.003732] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] +[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.043792 0.016180 0.011504 0.007329]]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] domain=10001 type=nu-scatter matrix -[[[0.310121 0.038230 0.020745 0.007964] - [0.000000 0.000000 0.000000 0.000000]] +[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.296264 -0.011214 0.008837 -0.003270]]] -[[[0.033788 0.008484 0.004696 0.003732] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] +[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.043792 0.016180 0.011504 0.007329]]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] domain=10001 type=multiplicity matrix -[[1.000000 0.000000] - [0.000000 1.000000]] -[[0.108779 0.000000] - [0.000000 0.142427]] +[[1.0000000e+00 0.0000000e+00] + [0.0000000e+00 1.0000000e+00]] +[[1.0877870e-01 0.0000000e+00] + [0.0000000e+00 1.4242717e-01]] domain=10001 type=nu-fission matrix -[[0.000000 0.000000] - [0.000000 0.000000]] -[[0.000000 0.000000] - [0.000000 0.000000]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] domain=10001 type=chi -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=chi-prompt -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=velocity -[16677839.497365 334953.367601] -[1266444.309518 38336.781626] +[1.6677839e+07 3.3495337e+05] +[1.2664443e+06 3.8336782e+04] domain=10001 type=prompt-nu-fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=total -[0.664572 2.052384] -[0.031215 0.224343] +[6.6457226e-01 2.0523840e+00] +[3.1214752e-02 2.2434291e-01] domain=10002 type=transport -[0.290565 1.516438] -[0.023852 0.235197] +[2.9056526e-01 1.5164380e+00] +[2.3851855e-02 2.3519727e-01] domain=10002 type=nu-transport -[0.290565 1.516438] -[0.023852 0.235197] +[2.9056526e-01 1.5164380e+00] +[2.3851855e-02 2.3519727e-01] domain=10002 type=absorption -[0.000690 0.031687] -[0.000044 0.003747] +[6.9039952e-04 3.1687257e-02] +[4.4147569e-05 3.7465586e-03] domain=10002 type=capture -[0.000690 0.031687] -[0.000044 0.003747] +[6.9039952e-04 3.1687257e-02] +[4.4147569e-05 3.7465586e-03] domain=10002 type=fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=nu-fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=kappa-fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=scatter -[0.663882 2.020697] -[0.031173 0.220604] +[6.6388186e-01 2.0206968e+00] +[3.1172684e-02 2.2060445e-01] domain=10002 type=nu-scatter -[0.671269 2.035388] -[0.026186 0.258060] +[6.7126920e-01 2.0353883e+00] +[2.6186371e-02 2.5806033e-01] domain=10002 type=scatter matrix -[[[0.639901 0.381167 0.152392 0.009148] - [0.031368 0.008758 -0.002568 -0.003785]] +[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] + [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] - [[0.000443 0.000400 0.000320 0.000214] - [2.034945 0.509941 0.111175 0.024988]]] -[[[0.024709 0.016243 0.008156 0.003889] - [0.001728 0.000926 0.001014 0.000817]] + [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] + [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] +[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] + [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] - [[0.000445 0.000401 0.000321 0.000215] - [0.257800 0.051236 0.013020 0.008312]]] + [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] + [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] domain=10002 type=nu-scatter matrix -[[[0.639901 0.381167 0.152392 0.009148] - [0.031368 0.008758 -0.002568 -0.003785]] +[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] + [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] - [[0.000443 0.000400 0.000320 0.000214] - [2.034945 0.509941 0.111175 0.024988]]] -[[[0.024709 0.016243 0.008156 0.003889] - [0.001728 0.000926 0.001014 0.000817]] + [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] + [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] +[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] + [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] - [[0.000445 0.000401 0.000321 0.000215] - [0.257800 0.051236 0.013020 0.008312]]] + [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] + [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] domain=10002 type=multiplicity matrix -[[1.000000 1.000000] - [1.000000 1.000000]] -[[0.038609 0.067667] - [1.414214 0.135929]] +[[1.0000000e+00 1.0000000e+00] + [1.0000000e+00 1.0000000e+00]] +[[3.8609191e-02 6.7667348e-02] + [1.4142136e+00 1.3592921e-01]] domain=10002 type=nu-fission matrix -[[0.000000 0.000000] - [0.000000 0.000000]] -[[0.000000 0.000000] - [0.000000 0.000000]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] domain=10002 type=chi -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=chi-prompt -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=velocity -[16605562.873227 328412.038650] -[1042435.523742 38828.435730] +[1.6605563e+07 3.2841204e+05] +[1.0424355e+06 3.8828436e+04] domain=10002 type=prompt-nu-fission -[0.000000 0.000000] -[0.000000 0.000000] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index a3186b28dc..0e25d3ee82 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 0.414825 0.022793 -0 10000 2 total 0.660170 0.047519 - material group in nuclide mean std. dev. -1 10000 1 total 0.356860 0.025494 -0 10000 2 total 0.647648 0.023704 - material group in nuclide mean std. dev. -1 10000 1 total 0.356860 0.025494 -0 10000 2 total 0.647648 0.023704 - material group in nuclide mean std. dev. -1 10000 1 total 0.027408 0.002692 -0 10000 2 total 0.264511 0.023367 - material group in nuclide mean std. dev. -1 10000 1 total 0.019845 0.002643 -0 10000 2 total 0.071719 0.025208 - material group in nuclide mean std. dev. -1 10000 1 total 0.007563 0.000508 -0 10000 2 total 0.192791 0.017106 - material group in nuclide mean std. dev. -1 10000 1 total 0.019432 0.001323 -0 10000 2 total 0.469775 0.041682 - material group in nuclide mean std. dev. -1 10000 1 total 1.474570 0.099235 -0 10000 2 total 37.286896 3.308378 - material group in nuclide mean std. dev. -1 10000 1 total 0.387418 0.020626 -0 10000 2 total 0.395659 0.025125 - material group in nuclide mean std. dev. -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 -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 -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 - 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 -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 -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 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.000000 0.078516 -2 10000 1 2 total 1.000000 0.687184 -1 10000 2 1 total 1.000000 1.414214 -0 10000 2 2 total 1.000000 0.041130 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 0.020142 0.003149 -2 10000 1 2 total 0.000000 0.000000 -1 10000 2 1 total 0.454366 0.027426 -0 10000 2 2 total 0.000000 0.000000 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000 0.046071 -0 10000 2 total 0.000000 0.000000 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000 0.051471 -0 10000 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10000 1 total 17515210.620397 1438175.273899 -0 10000 2 total 350171.995194 29945.931697 - material group in nuclide mean std. dev. -1 10000 1 total 0.019239 0.001310 -0 10000 2 total 0.466719 0.041411 - material group in nuclide mean std. dev. -1 10001 1 total 0.313738 0.015582 -0 10001 2 total 0.300821 0.028052 - material group in nuclide mean std. dev. -1 10001 1 total 0.273228 0.033115 -0 10001 2 total 0.312375 0.049606 - material group in nuclide mean std. dev. -1 10001 1 total 0.273228 0.033115 -0 10001 2 total 0.312375 0.049606 - material group in nuclide mean std. dev. -1 10001 1 total 0.001575 0.000323 -0 10001 2 total 0.005400 0.000618 - material group in nuclide mean std. dev. -1 10001 1 total 0.001575 0.000323 -0 10001 2 total 0.005400 0.000618 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000 0.000000 -0 10001 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000 0.000000 -0 10001 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000 0.000000 -0 10001 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10001 1 total 0.312163 0.015322 -0 10001 2 total 0.295421 0.027445 - material group in nuclide mean std. dev. -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 -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 -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 - 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 -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 -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 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.000000 0.108779 -2 10001 1 2 total 0.000000 0.000000 -1 10001 2 1 total 0.000000 0.000000 -0 10001 2 2 total 1.000000 0.142427 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.000000 0.000000 -2 10001 1 2 total 0.000000 0.000000 -1 10001 2 1 total 0.000000 0.000000 -0 10001 2 2 total 0.000000 0.000000 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000 0.000000 -0 10001 2 total 0.000000 0.000000 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000 0.000000 -0 10001 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10001 1 total 16677839.497365 1266444.309518 -0 10001 2 total 334953.367601 38336.781626 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000 0.000000 -0 10001 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10002 1 total 0.664572 0.031215 -0 10002 2 total 2.052384 0.224343 - material group in nuclide mean std. dev. -1 10002 1 total 0.290565 0.023852 -0 10002 2 total 1.516438 0.235197 - material group in nuclide mean std. dev. -1 10002 1 total 0.290565 0.023852 -0 10002 2 total 1.516438 0.235197 - material group in nuclide mean std. dev. -1 10002 1 total 0.000690 0.000044 -0 10002 2 total 0.031687 0.003747 - material group in nuclide mean std. dev. -1 10002 1 total 0.000690 0.000044 -0 10002 2 total 0.031687 0.003747 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000 0.000000 -0 10002 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000 0.000000 -0 10002 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000 0.000000 -0 10002 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10002 1 total 0.663882 0.031173 -0 10002 2 total 2.020697 0.220604 - material group in nuclide mean std. dev. -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 -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 -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 - 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 -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 -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 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.000000 0.038609 -2 10002 1 2 total 1.000000 0.067667 -1 10002 2 1 total 1.000000 1.414214 -0 10002 2 2 total 1.000000 0.135929 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.000000 0.000000 -2 10002 1 2 total 0.000000 0.000000 -1 10002 2 1 total 0.000000 0.000000 -0 10002 2 2 total 0.000000 0.000000 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000 0.000000 -0 10002 2 total 0.000000 0.000000 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000 0.000000 -0 10002 2 total 0.000000 0.000000 - material group in nuclide mean std. dev. -1 10002 1 total 16605562.873227 1042435.523742 -0 10002 2 total 328412.038650 38828.435730 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000 0.000000 -0 10002 2 total 0.000000 0.000000 + material group in nuclide mean std. dev. +1 10000 1 total 4.1482549e-01 2.2792909e-02 +0 10000 2 total 6.6016992e-01 4.7518928e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.5685964e-01 2.5493596e-02 +0 10000 2 total 6.4764766e-01 2.3703735e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.5685964e-01 2.5493596e-02 +0 10000 2 total 6.4764766e-01 2.3703735e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.7407845e-02 2.6924971e-03 +0 10000 2 total 2.6451074e-01 2.3367077e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.9844550e-02 2.6433043e-03 +0 10000 2 total 7.1719353e-02 2.5207859e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.5632950e-03 5.0848368e-04 +0 10000 2 total 1.9279139e-01 1.7105922e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.9431740e-02 1.3229756e-03 +0 10000 2 total 4.6977478e-01 4.1682000e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.4745698e+00 9.9235321e-02 +0 10000 2 total 3.7286896e+01 3.3083777e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.8741765e-01 2.0625732e-02 +0 10000 2 total 3.9565918e-01 2.5125057e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.8518839e-01 2.6945621e-02 +0 10000 2 total 4.1238940e-01 1.5425277e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 +13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 +14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 +15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 +8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 +9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 +10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 +11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 +4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 +5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 +6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 +7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 +0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 +1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 +2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 +3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 +13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 +14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 +15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 +8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 +9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 +10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 +11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 +4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 +5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 +6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 +7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 +0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 +1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 +2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 +3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.0000000e+00 7.8516455e-02 +2 10000 1 2 total 1.0000000e+00 6.8718427e-01 +1 10000 2 1 total 1.0000000e+00 1.4142136e+00 +0 10000 2 2 total 1.0000000e+00 4.1130349e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.0142428e-02 3.1490917e-03 +2 10000 1 2 total 0.0000000e+00 0.0000000e+00 +1 10000 2 1 total 4.5436647e-01 2.7425507e-02 +0 10000 2 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.0000000e+00 4.6070523e-02 +0 10000 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.0000000e+00 5.1471457e-02 +0 10000 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.7515211e+07 1.4381753e+06 +0 10000 2 total 3.5017200e+05 2.9945932e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.9239222e-02 1.3095060e-03 +0 10000 2 total 4.6671903e-01 4.1410870e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.1373767e-01 1.5581902e-02 +0 10001 2 total 3.0082140e-01 2.8052448e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.7322787e-01 3.3115366e-02 +0 10001 2 total 3.1237484e-01 4.9605832e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.7322787e-01 3.3115366e-02 +0 10001 2 total 3.1237484e-01 4.9605832e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.5749914e-03 3.2254789e-04 +0 10001 2 total 5.4003788e-03 6.1813831e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.5749914e-03 3.2254789e-04 +0 10001 2 total 5.4003788e-03 6.1813831e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.1216268e-01 1.5321923e-02 +0 10001 2 total 2.9542102e-01 2.7445489e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.1012074e-01 3.3788106e-02 +0 10001 2 total 2.9626427e-01 4.3792226e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 +13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 +14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 +15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 +8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 +9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 +10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 +11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 +4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 +5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 +6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 +7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 +1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 +2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 +3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 +13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 +14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 +15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 +8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 +9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 +10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 +11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 +4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 +5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 +6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 +7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 +1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 +2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 +3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.0000000e+00 1.0877870e-01 +2 10001 1 2 total 0.0000000e+00 0.0000000e+00 +1 10001 2 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total 1.0000000e+00 1.4242717e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.0000000e+00 0.0000000e+00 +2 10001 1 2 total 0.0000000e+00 0.0000000e+00 +1 10001 2 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.6677839e+07 1.2664443e+06 +0 10001 2 total 3.3495337e+05 3.8336782e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.6457226e-01 3.1214752e-02 +0 10002 2 total 2.0523840e+00 2.2434291e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.9056526e-01 2.3851855e-02 +0 10002 2 total 1.5164380e+00 2.3519727e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.9056526e-01 2.3851855e-02 +0 10002 2 total 1.5164380e+00 2.3519727e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.9039952e-04 4.4147569e-05 +0 10002 2 total 3.1687257e-02 3.7465586e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.9039952e-04 4.4147569e-05 +0 10002 2 total 3.1687257e-02 3.7465586e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.6388186e-01 3.1172684e-02 +0 10002 2 total 2.0206968e+00 2.2060445e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.7126920e-01 2.6186371e-02 +0 10002 2 total 2.0353883e+00 2.5806033e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 +13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 +14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 +15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 +8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 +9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 +10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 +11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 +4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 +5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 +6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 +7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 +0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 +1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 +2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 +3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 +13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 +14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 +15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 +8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 +9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 +10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 +11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 +4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 +5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 +6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 +7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 +0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 +1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 +2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 +3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.0000000e+00 3.8609191e-02 +2 10002 1 2 total 1.0000000e+00 6.7667348e-02 +1 10002 2 1 total 1.0000000e+00 1.4142136e+00 +0 10002 2 2 total 1.0000000e+00 1.3592921e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.0000000e+00 0.0000000e+00 +2 10002 1 2 total 0.0000000e+00 0.0000000e+00 +1 10002 2 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.6605563e+07 1.0424355e+06 +0 10002 2 total 3.2841204e+05 3.8828436e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 724cb45cdc..53f29f1d5f 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -9e7bc573568b1b441d43c406a8fddcd3db0c4ae5bd5a6577e2abb9abf452d9d2acd006c330e62f0d774e133e9f484d3c2f6d8c00b23274608b1e214da5737b20 \ No newline at end of file +400e4cca1866a1a56b20c3d438a0dd518b069f24ce5f7b29d012d2f5898d36560876ba0ced28e94b1efabd5c9a26560cb9fc85372f7a608dec0ac2e93c558184 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index a53cd33007..d65dbd2046 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [500.000000 0.000000 700.000000 800.000000] + Temperature = [5.0000000e+02 0.0000000e+00 7.0000000e+02 8.0000000e+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index a54027886f..b12caac5df 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -cc0d5f0a7c0cf36d9fca0cb73726f78e90c5e17d1b5565940097182af4dc15c0b159ee2a0d3bc9ef395ab852335d2e370e35b6ac2f4e97c6b9ba9758af530fbb \ No newline at end of file +901e96de1e670c2a0b58905a6d1d249b489d743483e8ff3fcb51c833ea356cbebe6206bf80c2b23b850a5225b540057257b3a1e3699ec5e6c4a578772382a8bf \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index d2bad24d0f..200fddbeb0 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] +[[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]]][[[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000] - [0.000000 0.000000 0.000000]]] \ No newline at end of file + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index cb717707c6..d440a48d78 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output rounded to 10 decimal places and in -# scientific notation with 10 significant figures. This is needed to avoid round -# off error when large numbers are printed, which can cause tests to fail for -# different build configurations. -np.set_printoptions(formatter={'float': lambda x: format(np.around(x, 10), 'f')}) -pd.set_option('display.float_format', lambda x: '%f' % np.around(x, 10)) +# Require numpy and pandas to print output in scientific notation with 8 +# significant figures. This is needed to avoid round off error when large +# numbers are printed, which can cause tests to fail for different build +# configurations. +np.set_printoptions(formatter={'float': '{:.7e}'.format}) +pd.options.display.float_format = '{:.7e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From ecdadf3cb8f2d37d74b3f658a2dd43f4f5db2674 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Wed, 13 Jul 2016 10:13:23 -0600 Subject: [PATCH 41/82] changed number of sig figs to 7 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 312 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 6 +- 9 files changed, 692 insertions(+), 692 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index f8353aa667..fbdab856f8 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.5362442e-01 2.1052696e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.0085218e-01 2.2857554e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.0085218e-01 2.2857554e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.4903456e-02 4.3127612e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.8048066e-02 4.5799637e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.6855390e-02 2.6221598e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.0649290e-02 6.4098745e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.1379551e+00 5.0736381e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.8872097e-01 1.7830429e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.8930356e-01 2.3075539e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 -1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 -2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 -3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 -1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 -2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 -3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.0000000e+00 6.6110820e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.5835019e-02 5.5918249e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.0000000e+00 4.6070523e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.0000000e+00 5.1471457e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.0013087e+06 1.4621656e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.0003978e-02 6.3669079e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.1159411e-01 1.3793168e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.7925506e-01 2.9189501e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.7925506e-01 2.9189501e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.2098464e-03 2.8633413e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.2098464e-03 2.8633413e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.0938426e-01 1.3551267e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.0798735e-01 2.9308089e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 -1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 -2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 -3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 -1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 -2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 -3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.0000000e+00 9.5038722e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.8332612e+06 1.6635517e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.0499883e-01 4.3964488e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.9918398e-01 4.0914120e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.9918398e-01 4.0914120e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.0603412e-03 5.5452442e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.0603412e-03 5.5452442e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.9893849e-01 4.3492984e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.0341466e-01 4.3958737e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 -1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 -2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 -3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 -1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 -2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 -3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.0000000e+00 5.6866725e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.7321997e+06 1.5969143e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.536244e-01 2.105270e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008522e-01 2.285755e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008522e-01 2.285755e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.490346e-02 4.312761e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.804807e-02 4.579964e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.685539e-02 2.622160e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.064929e-02 6.409875e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955e+00 5.073638e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.887210e-01 1.783043e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.893036e-01 2.307554e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893036e-01 2.314560e-02 +1 10000 1 1 total P1 4.622442e-02 5.907170e-03 +2 10000 1 1 total P2 1.798359e-02 2.882972e-03 +3 10000 1 1 total P3 6.628374e-03 2.457109e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893036e-01 2.314560e-02 +1 10000 1 1 total P1 4.622442e-02 5.907170e-03 +2 10000 1 1 total P2 1.798359e-02 2.882972e-03 +3 10000 1 1 total P3 6.628374e-03 2.457109e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.000000e+00 6.611082e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.583502e-02 5.591825e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000e+00 4.607052e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000e+00 5.147146e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.001309e+06 1.462166e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.000398e-02 6.366908e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.115941e-01 1.379317e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792551e-01 2.918950e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792551e-01 2.918950e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846e-03 2.863341e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846e-03 2.863341e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.093843e-01 1.355127e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.079873e-01 2.930809e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873e-01 2.930809e-02 +1 10001 1 1 total P1 3.061715e-02 7.464456e-03 +2 10001 1 1 total P2 1.891149e-02 4.322828e-03 +3 10001 1 1 total P3 6.234618e-03 3.338202e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873e-01 2.930809e-02 +1 10001 1 1 total P1 3.061715e-02 7.464456e-03 +2 10001 1 1 total P2 1.891149e-02 4.322828e-03 +3 10001 1 1 total P3 6.234618e-03 3.338202e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.000000e+00 9.503872e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.833261e+06 1.663552e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.049988e-01 4.396449e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991840e-01 4.091412e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991840e-01 4.091412e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341e-03 5.545244e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341e-03 5.545244e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.989385e-01 4.349298e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.034147e-01 4.395874e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034147e-01 4.358599e-02 +1 10002 1 1 total P1 4.104174e-01 1.587722e-02 +2 10002 1 1 total P2 1.433010e-01 7.187378e-03 +3 10002 1 1 total P3 8.739426e-03 3.571441e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034147e-01 4.358599e-02 +1 10002 1 1 total P1 4.104174e-01 1.587722e-02 +2 10002 1 1 total P2 1.433010e-01 7.187378e-03 +3 10002 1 1 total P3 8.739426e-03 3.571441e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.000000e+00 5.686673e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.732200e+06 1.596914e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 70c7134536..7b66c39e49 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.1459340e+00 5.5382169e-01 - 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.1891920e-01 5.2064426e-01 - 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.1891920e-01 5.2064426e-01 - 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.9762206e-02 1.0628764e-02 - 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.9762206e-02 1.0628764e-02 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.1261718e+00 5.4344001e-01 - 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.1425469e+00 5.7013139e-01 - 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.1425469e+00 5.7013139e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 - 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.1425469e+00 5.7013139e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 - 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.0000000e+00 5.2971733e-01 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.7424571e+05 4.1639769e+05 - 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.0000000e+00 0.0000000e+00 + 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.145934e+00 5.538217e-01 + 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.189192e-01 5.206443e-01 + 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.189192e-01 5.206443e-01 + 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.976221e-02 1.062876e-02 + 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.976221e-02 1.062876e-02 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.126172e+00 5.434400e-01 + 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.142547e+00 5.701314e-01 + 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.142547e+00 5.701314e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 + 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.142547e+00 5.701314e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 + 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.000000e+00 5.297173e-01 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.742457e+05 4.163977e+05 + 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.000000e+00 0.000000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index ca424dc6b7..3160e850fd 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[4.1482549e-01 6.6016992e-01] -[2.2792909e-02 4.7518928e-02] +[4.148255e-01 6.601699e-01] +[2.279291e-02 4.751893e-02] domain=10000 type=transport -[3.5685964e-01 6.4764766e-01] -[2.5493596e-02 2.3703735e-02] +[3.568596e-01 6.476477e-01] +[2.549360e-02 2.370374e-02] domain=10000 type=nu-transport -[3.5685964e-01 6.4764766e-01] -[2.5493596e-02 2.3703735e-02] +[3.568596e-01 6.476477e-01] +[2.549360e-02 2.370374e-02] domain=10000 type=absorption -[2.7407845e-02 2.6451074e-01] -[2.6924971e-03 2.3367077e-02] +[2.740784e-02 2.645107e-01] +[2.692497e-03 2.336708e-02] domain=10000 type=capture -[1.9844550e-02 7.1719353e-02] -[2.6433043e-03 2.5207859e-02] +[1.984455e-02 7.171935e-02] +[2.643304e-03 2.520786e-02] domain=10000 type=fission -[7.5632950e-03 1.9279139e-01] -[5.0848368e-04 1.7105922e-02] +[7.563295e-03 1.927914e-01] +[5.084837e-04 1.710592e-02] domain=10000 type=nu-fission -[1.9431740e-02 4.6977478e-01] -[1.3229756e-03 4.1682000e-02] +[1.943174e-02 4.697748e-01] +[1.322976e-03 4.168200e-02] domain=10000 type=kappa-fission -[1.4745698e+00 3.7286896e+01] -[9.9235321e-02 3.3083777e+00] +[1.474570e+00 3.728690e+01] +[9.923532e-02 3.308378e+00] domain=10000 type=scatter -[3.8741765e-01 3.9565918e-01] -[2.0625732e-02 2.5125057e-02] +[3.874176e-01 3.956592e-01] +[2.062573e-02 2.512506e-02] domain=10000 type=nu-scatter -[3.8518839e-01 4.1238940e-01] -[2.6945621e-02 1.5425277e-02] +[3.851884e-01 4.123894e-01] +[2.694562e-02 1.542528e-02] domain=10000 type=scatter matrix -[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] - [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] +[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] + [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] - [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] - [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] -[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] - [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] + [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] + [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] +[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] + [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] - [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] - [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] + [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] + [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] domain=10000 type=nu-scatter matrix -[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] - [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] +[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] + [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] - [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] - [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] -[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] - [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] + [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] + [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] +[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] + [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] - [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] - [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] + [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] + [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] domain=10000 type=multiplicity matrix -[[1.0000000e+00 1.0000000e+00] - [1.0000000e+00 1.0000000e+00]] -[[7.8516455e-02 6.8718427e-01] - [1.4142136e+00 4.1130349e-02]] +[[1.000000e+00 1.000000e+00] + [1.000000e+00 1.000000e+00]] +[[7.851646e-02 6.871843e-01] + [1.414214e+00 4.113035e-02]] domain=10000 type=nu-fission matrix -[[2.0142428e-02 0.0000000e+00] - [4.5436647e-01 0.0000000e+00]] -[[3.1490917e-03 0.0000000e+00] - [2.7425507e-02 0.0000000e+00]] +[[2.014243e-02 0.000000e+00] + [4.543665e-01 0.000000e+00]] +[[3.149092e-03 0.000000e+00] + [2.742551e-02 0.000000e+00]] domain=10000 type=chi -[1.0000000e+00 0.0000000e+00] -[4.6070523e-02 0.0000000e+00] +[1.000000e+00 0.000000e+00] +[4.607052e-02 0.000000e+00] domain=10000 type=chi-prompt -[1.0000000e+00 0.0000000e+00] -[5.1471457e-02 0.0000000e+00] +[1.000000e+00 0.000000e+00] +[5.147146e-02 0.000000e+00] domain=10000 type=velocity -[1.7515211e+07 3.5017200e+05] -[1.4381753e+06 2.9945932e+04] +[1.751521e+07 3.501720e+05] +[1.438175e+06 2.994593e+04] domain=10000 type=prompt-nu-fission -[1.9239222e-02 4.6671903e-01] -[1.3095060e-03 4.1410870e-02] +[1.923922e-02 4.667190e-01] +[1.309506e-03 4.141087e-02] domain=10001 type=total -[3.1373767e-01 3.0082140e-01] -[1.5581902e-02 2.8052448e-02] +[3.137377e-01 3.008214e-01] +[1.558190e-02 2.805245e-02] domain=10001 type=transport -[2.7322787e-01 3.1237484e-01] -[3.3115366e-02 4.9605832e-02] +[2.732279e-01 3.123748e-01] +[3.311537e-02 4.960583e-02] domain=10001 type=nu-transport -[2.7322787e-01 3.1237484e-01] -[3.3115366e-02 4.9605832e-02] +[2.732279e-01 3.123748e-01] +[3.311537e-02 4.960583e-02] domain=10001 type=absorption -[1.5749914e-03 5.4003788e-03] -[3.2254789e-04 6.1813831e-04] +[1.574991e-03 5.400379e-03] +[3.225479e-04 6.181383e-04] domain=10001 type=capture -[1.5749914e-03 5.4003788e-03] -[3.2254789e-04 6.1813831e-04] +[1.574991e-03 5.400379e-03] +[3.225479e-04 6.181383e-04] domain=10001 type=fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=kappa-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=scatter -[3.1216268e-01 2.9542102e-01] -[1.5321923e-02 2.7445489e-02] +[3.121627e-01 2.954210e-01] +[1.532192e-02 2.744549e-02] domain=10001 type=nu-scatter -[3.1012074e-01 2.9626427e-01] -[3.3788106e-02 4.3792226e-02] +[3.101207e-01 2.962643e-01] +[3.378811e-02 4.379223e-02] domain=10001 type=scatter matrix -[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] +[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] -[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] +[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] domain=10001 type=nu-scatter matrix -[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] +[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] -[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] +[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] domain=10001 type=multiplicity matrix -[[1.0000000e+00 0.0000000e+00] - [0.0000000e+00 1.0000000e+00]] -[[1.0877870e-01 0.0000000e+00] - [0.0000000e+00 1.4242717e-01]] +[[1.000000e+00 0.000000e+00] + [0.000000e+00 1.000000e+00]] +[[1.087787e-01 0.000000e+00] + [0.000000e+00 1.424272e-01]] domain=10001 type=nu-fission matrix -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] domain=10001 type=chi -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=chi-prompt -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=velocity -[1.6677839e+07 3.3495337e+05] -[1.2664443e+06 3.8336782e+04] +[1.667784e+07 3.349534e+05] +[1.266444e+06 3.833678e+04] domain=10001 type=prompt-nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=total -[6.6457226e-01 2.0523840e+00] -[3.1214752e-02 2.2434291e-01] +[6.645723e-01 2.052384e+00] +[3.121475e-02 2.243429e-01] domain=10002 type=transport -[2.9056526e-01 1.5164380e+00] -[2.3851855e-02 2.3519727e-01] +[2.905653e-01 1.516438e+00] +[2.385185e-02 2.351973e-01] domain=10002 type=nu-transport -[2.9056526e-01 1.5164380e+00] -[2.3851855e-02 2.3519727e-01] +[2.905653e-01 1.516438e+00] +[2.385185e-02 2.351973e-01] domain=10002 type=absorption -[6.9039952e-04 3.1687257e-02] -[4.4147569e-05 3.7465586e-03] +[6.903995e-04 3.168726e-02] +[4.414757e-05 3.746559e-03] domain=10002 type=capture -[6.9039952e-04 3.1687257e-02] -[4.4147569e-05 3.7465586e-03] +[6.903995e-04 3.168726e-02] +[4.414757e-05 3.746559e-03] domain=10002 type=fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=kappa-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=scatter -[6.6388186e-01 2.0206968e+00] -[3.1172684e-02 2.2060445e-01] +[6.638819e-01 2.020697e+00] +[3.117268e-02 2.206045e-01] domain=10002 type=nu-scatter -[6.7126920e-01 2.0353883e+00] -[2.6186371e-02 2.5806033e-01] +[6.712692e-01 2.035388e+00] +[2.618637e-02 2.580603e-01] domain=10002 type=scatter matrix -[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] - [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] +[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] + [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] - [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] - [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] -[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] - [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] + [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] + [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] +[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] + [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] - [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] - [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] + [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] + [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] domain=10002 type=nu-scatter matrix -[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] - [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] +[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] + [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] - [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] - [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] -[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] - [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] + [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] + [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] +[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] + [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] - [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] - [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] + [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] + [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] domain=10002 type=multiplicity matrix -[[1.0000000e+00 1.0000000e+00] - [1.0000000e+00 1.0000000e+00]] -[[3.8609191e-02 6.7667348e-02] - [1.4142136e+00 1.3592921e-01]] +[[1.000000e+00 1.000000e+00] + [1.000000e+00 1.000000e+00]] +[[3.860919e-02 6.766735e-02] + [1.414214e+00 1.359292e-01]] domain=10002 type=nu-fission matrix -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] domain=10002 type=chi -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=chi-prompt -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=velocity -[1.6605563e+07 3.2841204e+05] -[1.0424355e+06 3.8828436e+04] +[1.660556e+07 3.284120e+05] +[1.042436e+06 3.882844e+04] domain=10002 type=prompt-nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 0e25d3ee82..fc42ccf494 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.1482549e-01 2.2792909e-02 -0 10000 2 total 6.6016992e-01 4.7518928e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.5685964e-01 2.5493596e-02 -0 10000 2 total 6.4764766e-01 2.3703735e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.5685964e-01 2.5493596e-02 -0 10000 2 total 6.4764766e-01 2.3703735e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.7407845e-02 2.6924971e-03 -0 10000 2 total 2.6451074e-01 2.3367077e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.9844550e-02 2.6433043e-03 -0 10000 2 total 7.1719353e-02 2.5207859e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.5632950e-03 5.0848368e-04 -0 10000 2 total 1.9279139e-01 1.7105922e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.9431740e-02 1.3229756e-03 -0 10000 2 total 4.6977478e-01 4.1682000e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.4745698e+00 9.9235321e-02 -0 10000 2 total 3.7286896e+01 3.3083777e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.8741765e-01 2.0625732e-02 -0 10000 2 total 3.9565918e-01 2.5125057e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.8518839e-01 2.6945621e-02 -0 10000 2 total 4.1238940e-01 1.5425277e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 -13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 -14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 -15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 -8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 -9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 -10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 -11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 -4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 -5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 -6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 -7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 -0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 -1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 -2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 -3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 -13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 -14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 -15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 -8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 -9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 -10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 -11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 -4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 -5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 -6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 -7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 -0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 -1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 -2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 -3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.0000000e+00 7.8516455e-02 -2 10000 1 2 total 1.0000000e+00 6.8718427e-01 -1 10000 2 1 total 1.0000000e+00 1.4142136e+00 -0 10000 2 2 total 1.0000000e+00 4.1130349e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.0142428e-02 3.1490917e-03 -2 10000 1 2 total 0.0000000e+00 0.0000000e+00 -1 10000 2 1 total 4.5436647e-01 2.7425507e-02 -0 10000 2 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.0000000e+00 4.6070523e-02 -0 10000 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.0000000e+00 5.1471457e-02 -0 10000 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.7515211e+07 1.4381753e+06 -0 10000 2 total 3.5017200e+05 2.9945932e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.9239222e-02 1.3095060e-03 -0 10000 2 total 4.6671903e-01 4.1410870e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.1373767e-01 1.5581902e-02 -0 10001 2 total 3.0082140e-01 2.8052448e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.7322787e-01 3.3115366e-02 -0 10001 2 total 3.1237484e-01 4.9605832e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.7322787e-01 3.3115366e-02 -0 10001 2 total 3.1237484e-01 4.9605832e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.5749914e-03 3.2254789e-04 -0 10001 2 total 5.4003788e-03 6.1813831e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.5749914e-03 3.2254789e-04 -0 10001 2 total 5.4003788e-03 6.1813831e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.1216268e-01 1.5321923e-02 -0 10001 2 total 2.9542102e-01 2.7445489e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.1012074e-01 3.3788106e-02 -0 10001 2 total 2.9626427e-01 4.3792226e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 -13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 -14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 -15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 -8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 -9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 -10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 -11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 -4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 -5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 -6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 -7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 -1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 -2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 -3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 -13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 -14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 -15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 -8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 -9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 -10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 -11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 -4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 -5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 -6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 -7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 -1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 -2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 -3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.0000000e+00 1.0877870e-01 -2 10001 1 2 total 0.0000000e+00 0.0000000e+00 -1 10001 2 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total 1.0000000e+00 1.4242717e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.0000000e+00 0.0000000e+00 -2 10001 1 2 total 0.0000000e+00 0.0000000e+00 -1 10001 2 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.6677839e+07 1.2664443e+06 -0 10001 2 total 3.3495337e+05 3.8336782e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.6457226e-01 3.1214752e-02 -0 10002 2 total 2.0523840e+00 2.2434291e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.9056526e-01 2.3851855e-02 -0 10002 2 total 1.5164380e+00 2.3519727e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.9056526e-01 2.3851855e-02 -0 10002 2 total 1.5164380e+00 2.3519727e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.9039952e-04 4.4147569e-05 -0 10002 2 total 3.1687257e-02 3.7465586e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.9039952e-04 4.4147569e-05 -0 10002 2 total 3.1687257e-02 3.7465586e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.6388186e-01 3.1172684e-02 -0 10002 2 total 2.0206968e+00 2.2060445e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.7126920e-01 2.6186371e-02 -0 10002 2 total 2.0353883e+00 2.5806033e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 -13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 -14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 -15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 -8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 -9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 -10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 -11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 -4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 -5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 -6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 -7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 -0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 -1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 -2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 -3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 -13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 -14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 -15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 -8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 -9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 -10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 -11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 -4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 -5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 -6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 -7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 -0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 -1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 -2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 -3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.0000000e+00 3.8609191e-02 -2 10002 1 2 total 1.0000000e+00 6.7667348e-02 -1 10002 2 1 total 1.0000000e+00 1.4142136e+00 -0 10002 2 2 total 1.0000000e+00 1.3592921e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.0000000e+00 0.0000000e+00 -2 10002 1 2 total 0.0000000e+00 0.0000000e+00 -1 10002 2 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.6605563e+07 1.0424355e+06 -0 10002 2 total 3.2841204e+05 3.8828436e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.148255e-01 2.279291e-02 +0 10000 2 total 6.601699e-01 4.751893e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596e-01 2.549360e-02 +0 10000 2 total 6.476477e-01 2.370374e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596e-01 2.549360e-02 +0 10000 2 total 6.476477e-01 2.370374e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.740784e-02 2.692497e-03 +0 10000 2 total 2.645107e-01 2.336708e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.984455e-02 2.643304e-03 +0 10000 2 total 7.171935e-02 2.520786e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.563295e-03 5.084837e-04 +0 10000 2 total 1.927914e-01 1.710592e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.943174e-02 1.322976e-03 +0 10000 2 total 4.697748e-01 4.168200e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.474570e+00 9.923532e-02 +0 10000 2 total 3.728690e+01 3.308378e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.874176e-01 2.062573e-02 +0 10000 2 total 3.956592e-01 2.512506e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.851884e-01 2.694562e-02 +0 10000 2 total 4.123894e-01 1.542528e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841995e-01 2.700101e-02 +13 10000 1 1 total P1 5.187028e-02 6.982549e-03 +14 10000 1 1 total P2 2.006885e-02 2.846495e-03 +15 10000 1 1 total P3 9.477716e-03 2.233520e-03 +8 10000 1 2 total P0 9.889304e-04 4.824194e-04 +9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 +10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 +11 10000 1 2 total P3 2.342906e-04 1.281731e-04 +4 10000 2 1 total P0 9.246399e-04 9.248835e-04 +5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 +6 10000 2 1 total P2 4.937889e-04 4.939189e-04 +7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 +0 10000 2 2 total P0 4.114648e-01 1.524494e-02 +1 10000 2 2 total P1 1.648173e-02 4.501728e-03 +2 10000 2 2 total P2 6.371490e-03 1.055075e-02 +3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841995e-01 2.700101e-02 +13 10000 1 1 total P1 5.187028e-02 6.982549e-03 +14 10000 1 1 total P2 2.006885e-02 2.846495e-03 +15 10000 1 1 total P3 9.477716e-03 2.233520e-03 +8 10000 1 2 total P0 9.889304e-04 4.824194e-04 +9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 +10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 +11 10000 1 2 total P3 2.342906e-04 1.281731e-04 +4 10000 2 1 total P0 9.246399e-04 9.248835e-04 +5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 +6 10000 2 1 total P2 4.937889e-04 4.939189e-04 +7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 +0 10000 2 2 total P0 4.114648e-01 1.524494e-02 +1 10000 2 2 total P1 1.648173e-02 4.501728e-03 +2 10000 2 2 total P2 6.371490e-03 1.055075e-02 +3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.000000e+00 7.851646e-02 +2 10000 1 2 total 1.000000e+00 6.871843e-01 +1 10000 2 1 total 1.000000e+00 1.414214e+00 +0 10000 2 2 total 1.000000e+00 4.113035e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.014243e-02 3.149092e-03 +2 10000 1 2 total 0.000000e+00 0.000000e+00 +1 10000 2 1 total 4.543665e-01 2.742551e-02 +0 10000 2 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000e+00 4.607052e-02 +0 10000 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000e+00 5.147146e-02 +0 10000 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.751521e+07 1.438175e+06 +0 10000 2 total 3.501720e+05 2.994593e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.923922e-02 1.309506e-03 +0 10000 2 total 4.667190e-01 4.141087e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.137377e-01 1.558190e-02 +0 10001 2 total 3.008214e-01 2.805245e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732279e-01 3.311537e-02 +0 10001 2 total 3.123748e-01 4.960583e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732279e-01 3.311537e-02 +0 10001 2 total 3.123748e-01 4.960583e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991e-03 3.225479e-04 +0 10001 2 total 5.400379e-03 6.181383e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991e-03 3.225479e-04 +0 10001 2 total 5.400379e-03 6.181383e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.121627e-01 1.532192e-02 +0 10001 2 total 2.954210e-01 2.744549e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.101207e-01 3.378811e-02 +0 10001 2 total 2.962643e-01 4.379223e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207e-01 3.378811e-02 +13 10001 1 1 total P1 3.822959e-02 8.483997e-03 +14 10001 1 1 total P2 2.074494e-02 4.695611e-03 +15 10001 1 1 total P3 7.964297e-03 3.731623e-03 +8 10001 1 2 total P0 0.000000e+00 0.000000e+00 +9 10001 1 2 total P1 0.000000e+00 0.000000e+00 +10 10001 1 2 total P2 0.000000e+00 0.000000e+00 +11 10001 1 2 total P3 0.000000e+00 0.000000e+00 +4 10001 2 1 total P0 0.000000e+00 0.000000e+00 +5 10001 2 1 total P1 0.000000e+00 0.000000e+00 +6 10001 2 1 total P2 0.000000e+00 0.000000e+00 +7 10001 2 1 total P3 0.000000e+00 0.000000e+00 +0 10001 2 2 total P0 2.962643e-01 4.379223e-02 +1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 +2 10001 2 2 total P2 8.836566e-03 1.150396e-02 +3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207e-01 3.378811e-02 +13 10001 1 1 total P1 3.822959e-02 8.483997e-03 +14 10001 1 1 total P2 2.074494e-02 4.695611e-03 +15 10001 1 1 total P3 7.964297e-03 3.731623e-03 +8 10001 1 2 total P0 0.000000e+00 0.000000e+00 +9 10001 1 2 total P1 0.000000e+00 0.000000e+00 +10 10001 1 2 total P2 0.000000e+00 0.000000e+00 +11 10001 1 2 total P3 0.000000e+00 0.000000e+00 +4 10001 2 1 total P0 0.000000e+00 0.000000e+00 +5 10001 2 1 total P1 0.000000e+00 0.000000e+00 +6 10001 2 1 total P2 0.000000e+00 0.000000e+00 +7 10001 2 1 total P3 0.000000e+00 0.000000e+00 +0 10001 2 2 total P0 2.962643e-01 4.379223e-02 +1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 +2 10001 2 2 total P2 8.836566e-03 1.150396e-02 +3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.000000e+00 1.087787e-01 +2 10001 1 2 total 0.000000e+00 0.000000e+00 +1 10001 2 1 total 0.000000e+00 0.000000e+00 +0 10001 2 2 total 1.000000e+00 1.424272e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.000000e+00 0.000000e+00 +2 10001 1 2 total 0.000000e+00 0.000000e+00 +1 10001 2 1 total 0.000000e+00 0.000000e+00 +0 10001 2 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.667784e+07 1.266444e+06 +0 10001 2 total 3.349534e+05 3.833678e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.645723e-01 3.121475e-02 +0 10002 2 total 2.052384e+00 2.243429e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905653e-01 2.385185e-02 +0 10002 2 total 1.516438e+00 2.351973e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905653e-01 2.385185e-02 +0 10002 2 total 1.516438e+00 2.351973e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995e-04 4.414757e-05 +0 10002 2 total 3.168726e-02 3.746559e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995e-04 4.414757e-05 +0 10002 2 total 3.168726e-02 3.746559e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.638819e-01 3.117268e-02 +0 10002 2 total 2.020697e+00 2.206045e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.712692e-01 2.618637e-02 +0 10002 2 total 2.035388e+00 2.580603e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399015e-01 2.470912e-02 +13 10002 1 1 total P1 3.811674e-01 1.624326e-02 +14 10002 1 1 total P2 1.523919e-01 8.156278e-03 +15 10002 1 1 total P3 9.148022e-03 3.888562e-03 +8 10002 1 2 total P0 3.136772e-02 1.728113e-03 +9 10002 1 2 total P1 8.757723e-03 9.256705e-04 +10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 +11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 +4 10002 2 1 total P0 4.433431e-04 4.448504e-04 +5 10002 2 1 total P1 3.999604e-04 4.013202e-04 +6 10002 2 1 total P2 3.195627e-04 3.206491e-04 +7 10002 2 1 total P3 2.138470e-04 2.145740e-04 +0 10002 2 2 total P0 2.034945e+00 2.577999e-01 +1 10002 2 2 total P1 5.099405e-01 5.123591e-02 +2 10002 2 2 total P2 1.111746e-01 1.301982e-02 +3 10002 2 2 total P3 2.498844e-02 8.312353e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399015e-01 2.470912e-02 +13 10002 1 1 total P1 3.811674e-01 1.624326e-02 +14 10002 1 1 total P2 1.523919e-01 8.156278e-03 +15 10002 1 1 total P3 9.148022e-03 3.888562e-03 +8 10002 1 2 total P0 3.136772e-02 1.728113e-03 +9 10002 1 2 total P1 8.757723e-03 9.256705e-04 +10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 +11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 +4 10002 2 1 total P0 4.433431e-04 4.448504e-04 +5 10002 2 1 total P1 3.999604e-04 4.013202e-04 +6 10002 2 1 total P2 3.195627e-04 3.206491e-04 +7 10002 2 1 total P3 2.138470e-04 2.145740e-04 +0 10002 2 2 total P0 2.034945e+00 2.577999e-01 +1 10002 2 2 total P1 5.099405e-01 5.123591e-02 +2 10002 2 2 total P2 1.111746e-01 1.301982e-02 +3 10002 2 2 total P3 2.498844e-02 8.312353e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.000000e+00 3.860919e-02 +2 10002 1 2 total 1.000000e+00 6.766735e-02 +1 10002 2 1 total 1.000000e+00 1.414214e+00 +0 10002 2 2 total 1.000000e+00 1.359292e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.000000e+00 0.000000e+00 +2 10002 1 2 total 0.000000e+00 0.000000e+00 +1 10002 2 1 total 0.000000e+00 0.000000e+00 +0 10002 2 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.660556e+07 1.042436e+06 +0 10002 2 total 3.284120e+05 3.882844e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 53f29f1d5f..66d388716e 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -400e4cca1866a1a56b20c3d438a0dd518b069f24ce5f7b29d012d2f5898d36560876ba0ced28e94b1efabd5c9a26560cb9fc85372f7a608dec0ac2e93c558184 \ No newline at end of file +9620ed88224f5a4013b1ff47a1286ed166f84847b97d145e52f6f71eb441c2abd1ad5baa91e0b1cac802daa8610ee388d23dcbc43d834b73fb35a16972d09788 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index d65dbd2046..91562d8e15 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.0000000e+02 0.0000000e+00 7.0000000e+02 8.0000000e+02] + Temperature = [5.000000e+02 0.000000e+00 7.000000e+02 8.000000e+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index b12caac5df..e00e4ea137 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -901e96de1e670c2a0b58905a6d1d249b489d743483e8ff3fcb51c833ea356cbebe6206bf80c2b23b850a5225b540057257b3a1e3699ec5e6c4a578772382a8bf \ No newline at end of file +230817bd2cfcceebf4f5317432130df3cc43bff45fbab7f145a6f390a19b0bf103fbf4d6363e77cfe015396a846682741f649a9c29e04590796e4816831b2b5d \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 200fddbeb0..6ef9ffeccd 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] +[[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]]] \ No newline at end of file + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index d440a48d78..bde708b808 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation with 8 +# Require numpy and pandas to print output in scientific notation with 7 # significant figures. This is needed to avoid round off error when large # numbers are printed, which can cause tests to fail for different build # configurations. -np.set_printoptions(formatter={'float': '{:.7e}'.format}) -pd.options.display.float_format = '{:.7e}'.format +np.set_printoptions(formatter={'float': '{:.6e}'.format}) +pd.options.display.float_format = '{:.6e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 27b70026926b6d854e7f8aa434bc28590cb51460 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Wed, 13 Jul 2016 10:26:31 -0600 Subject: [PATCH 42/82] changed number of sig figs to 6 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 312 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 6 +- 9 files changed, 692 insertions(+), 692 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index fbdab856f8..8a930b2507 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.536244e-01 2.105270e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008522e-01 2.285755e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008522e-01 2.285755e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.490346e-02 4.312761e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.804807e-02 4.579964e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.685539e-02 2.622160e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.064929e-02 6.409875e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955e+00 5.073638e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.887210e-01 1.783043e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.893036e-01 2.307554e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893036e-01 2.314560e-02 -1 10000 1 1 total P1 4.622442e-02 5.907170e-03 -2 10000 1 1 total P2 1.798359e-02 2.882972e-03 -3 10000 1 1 total P3 6.628374e-03 2.457109e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893036e-01 2.314560e-02 -1 10000 1 1 total P1 4.622442e-02 5.907170e-03 -2 10000 1 1 total P2 1.798359e-02 2.882972e-03 -3 10000 1 1 total P3 6.628374e-03 2.457109e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.000000e+00 6.611082e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.583502e-02 5.591825e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000e+00 4.607052e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000e+00 5.147146e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.001309e+06 1.462166e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.000398e-02 6.366908e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.115941e-01 1.379317e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792551e-01 2.918950e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792551e-01 2.918950e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846e-03 2.863341e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846e-03 2.863341e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.093843e-01 1.355127e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.079873e-01 2.930809e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873e-01 2.930809e-02 -1 10001 1 1 total P1 3.061715e-02 7.464456e-03 -2 10001 1 1 total P2 1.891149e-02 4.322828e-03 -3 10001 1 1 total P3 6.234618e-03 3.338202e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873e-01 2.930809e-02 -1 10001 1 1 total P1 3.061715e-02 7.464456e-03 -2 10001 1 1 total P2 1.891149e-02 4.322828e-03 -3 10001 1 1 total P3 6.234618e-03 3.338202e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.000000e+00 9.503872e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.833261e+06 1.663552e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.049988e-01 4.396449e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991840e-01 4.091412e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991840e-01 4.091412e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341e-03 5.545244e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341e-03 5.545244e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.989385e-01 4.349298e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.034147e-01 4.395874e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034147e-01 4.358599e-02 -1 10002 1 1 total P1 4.104174e-01 1.587722e-02 -2 10002 1 1 total P2 1.433010e-01 7.187378e-03 -3 10002 1 1 total P3 8.739426e-03 3.571441e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034147e-01 4.358599e-02 -1 10002 1 1 total P1 4.104174e-01 1.587722e-02 -2 10002 1 1 total P2 1.433010e-01 7.187378e-03 -3 10002 1 1 total P3 8.739426e-03 3.571441e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.000000e+00 5.686673e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.732200e+06 1.596914e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.53624e-01 2.10527e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852e-01 2.28576e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852e-01 2.28576e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.49035e-02 4.31276e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.80481e-02 4.57996e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.68554e-02 2.62216e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.06493e-02 6.40987e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.13796e+00 5.07364e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.88721e-01 1.78304e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.89304e-01 2.30755e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89304e-01 2.31456e-02 +1 10000 1 1 total P1 4.62244e-02 5.90717e-03 +2 10000 1 1 total P2 1.79836e-02 2.88297e-03 +3 10000 1 1 total P3 6.62837e-03 2.45711e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89304e-01 2.31456e-02 +1 10000 1 1 total P1 4.62244e-02 5.90717e-03 +2 10000 1 1 total P2 1.79836e-02 2.88297e-03 +3 10000 1 1 total P3 6.62837e-03 2.45711e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.00000e+00 6.61108e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.58350e-02 5.59182e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000e+00 4.60705e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000e+00 5.14715e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.00131e+06 1.46217e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.00040e-02 6.36691e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.11594e-01 1.37932e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255e-01 2.91895e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255e-01 2.91895e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.20985e-03 2.86334e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.20985e-03 2.86334e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.09384e-01 1.35513e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.07987e-01 2.93081e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987e-01 2.93081e-02 +1 10001 1 1 total P1 3.06172e-02 7.46446e-03 +2 10001 1 1 total P2 1.89115e-02 4.32283e-03 +3 10001 1 1 total P3 6.23462e-03 3.33820e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987e-01 2.93081e-02 +1 10001 1 1 total P1 3.06172e-02 7.46446e-03 +2 10001 1 1 total P2 1.89115e-02 4.32283e-03 +3 10001 1 1 total P3 6.23462e-03 3.33820e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.00000e+00 9.50387e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.83326e+06 1.66355e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.04999e-01 4.39645e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99184e-01 4.09141e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99184e-01 4.09141e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034e-03 5.54524e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034e-03 5.54524e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.98938e-01 4.34930e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.03415e-01 4.39587e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03415e-01 4.35860e-02 +1 10002 1 1 total P1 4.10417e-01 1.58772e-02 +2 10002 1 1 total P2 1.43301e-01 7.18738e-03 +3 10002 1 1 total P3 8.73943e-03 3.57144e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03415e-01 4.35860e-02 +1 10002 1 1 total P1 4.10417e-01 1.58772e-02 +2 10002 1 1 total P2 1.43301e-01 7.18738e-03 +3 10002 1 1 total P3 8.73943e-03 3.57144e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.00000e+00 5.68667e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.73220e+06 1.59691e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000e+00 0.00000e+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 7b66c39e49..7cde7e3fe2 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.145934e+00 5.538217e-01 - 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.189192e-01 5.206443e-01 - 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.189192e-01 5.206443e-01 - 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.976221e-02 1.062876e-02 - 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.976221e-02 1.062876e-02 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.126172e+00 5.434400e-01 - 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.142547e+00 5.701314e-01 - 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.142547e+00 5.701314e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 - 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.142547e+00 5.701314e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 - 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.000000e+00 5.297173e-01 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.742457e+05 4.163977e+05 - 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.000000e+00 0.000000e+00 + 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.14593e+00 5.53822e-01 + 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.18919e-01 5.20644e-01 + 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.18919e-01 5.20644e-01 + 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.97622e-02 1.06288e-02 + 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.97622e-02 1.06288e-02 + 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.00000e+00 0.00000e+00 + 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.00000e+00 0.00000e+00 + 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.00000e+00 0.00000e+00 + 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.12617e+00 5.43440e-01 + 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.14255e+00 5.70131e-01 + 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.14255e+00 5.70131e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381e-01 2.16322e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41202e-01 6.65038e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92283e-02 2.46208e-02 + 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.14255e+00 5.70131e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381e-01 2.16322e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41202e-01 6.65038e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92283e-02 2.46208e-02 + 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.00000e+00 5.29717e-01 + 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.00000e+00 0.00000e+00 + 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.00000e+00 0.00000e+00 + 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.00000e+00 0.00000e+00 + 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.74246e+05 4.16398e+05 + 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.00000e+00 0.00000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 3160e850fd..648193a168 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[4.148255e-01 6.601699e-01] -[2.279291e-02 4.751893e-02] +[4.14825e-01 6.60170e-01] +[2.27929e-02 4.75189e-02] domain=10000 type=transport -[3.568596e-01 6.476477e-01] -[2.549360e-02 2.370374e-02] +[3.56860e-01 6.47648e-01] +[2.54936e-02 2.37037e-02] domain=10000 type=nu-transport -[3.568596e-01 6.476477e-01] -[2.549360e-02 2.370374e-02] +[3.56860e-01 6.47648e-01] +[2.54936e-02 2.37037e-02] domain=10000 type=absorption -[2.740784e-02 2.645107e-01] -[2.692497e-03 2.336708e-02] +[2.74078e-02 2.64511e-01] +[2.69250e-03 2.33671e-02] domain=10000 type=capture -[1.984455e-02 7.171935e-02] -[2.643304e-03 2.520786e-02] +[1.98445e-02 7.17194e-02] +[2.64330e-03 2.52079e-02] domain=10000 type=fission -[7.563295e-03 1.927914e-01] -[5.084837e-04 1.710592e-02] +[7.56329e-03 1.92791e-01] +[5.08484e-04 1.71059e-02] domain=10000 type=nu-fission -[1.943174e-02 4.697748e-01] -[1.322976e-03 4.168200e-02] +[1.94317e-02 4.69775e-01] +[1.32298e-03 4.16820e-02] domain=10000 type=kappa-fission -[1.474570e+00 3.728690e+01] -[9.923532e-02 3.308378e+00] +[1.47457e+00 3.72869e+01] +[9.92353e-02 3.30838e+00] domain=10000 type=scatter -[3.874176e-01 3.956592e-01] -[2.062573e-02 2.512506e-02] +[3.87418e-01 3.95659e-01] +[2.06257e-02 2.51251e-02] domain=10000 type=nu-scatter -[3.851884e-01 4.123894e-01] -[2.694562e-02 1.542528e-02] +[3.85188e-01 4.12389e-01] +[2.69456e-02 1.54253e-02] domain=10000 type=scatter matrix -[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] - [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] +[[[3.84199e-01 5.18703e-02 2.00688e-02 9.47772e-03] + [9.88930e-04 -2.07235e-04 -1.03366e-04 2.34291e-04]] - [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] - [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] -[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] - [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] + [[9.24640e-04 -7.67705e-04 4.93789e-04 -1.71497e-04] + [4.11465e-01 1.64817e-02 6.37149e-03 -1.04991e-02]]] +[[[2.70010e-02 6.98255e-03 2.84650e-03 2.23352e-03] + [4.82419e-04 1.49011e-04 1.84316e-04 1.28173e-04]] - [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] - [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] + [[9.24883e-04 7.67907e-04 4.93919e-04 1.71542e-04] + [1.52449e-02 4.50173e-03 1.05507e-02 1.04382e-02]]] domain=10000 type=nu-scatter matrix -[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] - [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] +[[[3.84199e-01 5.18703e-02 2.00688e-02 9.47772e-03] + [9.88930e-04 -2.07235e-04 -1.03366e-04 2.34291e-04]] - [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] - [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] -[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] - [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] + [[9.24640e-04 -7.67705e-04 4.93789e-04 -1.71497e-04] + [4.11465e-01 1.64817e-02 6.37149e-03 -1.04991e-02]]] +[[[2.70010e-02 6.98255e-03 2.84650e-03 2.23352e-03] + [4.82419e-04 1.49011e-04 1.84316e-04 1.28173e-04]] - [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] - [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] + [[9.24883e-04 7.67907e-04 4.93919e-04 1.71542e-04] + [1.52449e-02 4.50173e-03 1.05507e-02 1.04382e-02]]] domain=10000 type=multiplicity matrix -[[1.000000e+00 1.000000e+00] - [1.000000e+00 1.000000e+00]] -[[7.851646e-02 6.871843e-01] - [1.414214e+00 4.113035e-02]] +[[1.00000e+00 1.00000e+00] + [1.00000e+00 1.00000e+00]] +[[7.85165e-02 6.87184e-01] + [1.41421e+00 4.11303e-02]] domain=10000 type=nu-fission matrix -[[2.014243e-02 0.000000e+00] - [4.543665e-01 0.000000e+00]] -[[3.149092e-03 0.000000e+00] - [2.742551e-02 0.000000e+00]] +[[2.01424e-02 0.00000e+00] + [4.54366e-01 0.00000e+00]] +[[3.14909e-03 0.00000e+00] + [2.74255e-02 0.00000e+00]] domain=10000 type=chi -[1.000000e+00 0.000000e+00] -[4.607052e-02 0.000000e+00] +[1.00000e+00 0.00000e+00] +[4.60705e-02 0.00000e+00] domain=10000 type=chi-prompt -[1.000000e+00 0.000000e+00] -[5.147146e-02 0.000000e+00] +[1.00000e+00 0.00000e+00] +[5.14715e-02 0.00000e+00] domain=10000 type=velocity -[1.751521e+07 3.501720e+05] -[1.438175e+06 2.994593e+04] +[1.75152e+07 3.50172e+05] +[1.43818e+06 2.99459e+04] domain=10000 type=prompt-nu-fission -[1.923922e-02 4.667190e-01] -[1.309506e-03 4.141087e-02] +[1.92392e-02 4.66719e-01] +[1.30951e-03 4.14109e-02] domain=10001 type=total -[3.137377e-01 3.008214e-01] -[1.558190e-02 2.805245e-02] +[3.13738e-01 3.00821e-01] +[1.55819e-02 2.80524e-02] domain=10001 type=transport -[2.732279e-01 3.123748e-01] -[3.311537e-02 4.960583e-02] +[2.73228e-01 3.12375e-01] +[3.31154e-02 4.96058e-02] domain=10001 type=nu-transport -[2.732279e-01 3.123748e-01] -[3.311537e-02 4.960583e-02] +[2.73228e-01 3.12375e-01] +[3.31154e-02 4.96058e-02] domain=10001 type=absorption -[1.574991e-03 5.400379e-03] -[3.225479e-04 6.181383e-04] +[1.57499e-03 5.40038e-03] +[3.22548e-04 6.18138e-04] domain=10001 type=capture -[1.574991e-03 5.400379e-03] -[3.225479e-04 6.181383e-04] +[1.57499e-03 5.40038e-03] +[3.22548e-04 6.18138e-04] domain=10001 type=fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10001 type=nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10001 type=kappa-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10001 type=scatter -[3.121627e-01 2.954210e-01] -[1.532192e-02 2.744549e-02] +[3.12163e-01 2.95421e-01] +[1.53219e-02 2.74455e-02] domain=10001 type=nu-scatter -[3.101207e-01 2.962643e-01] -[3.378811e-02 4.379223e-02] +[3.10121e-01 2.96264e-01] +[3.37881e-02 4.37922e-02] domain=10001 type=scatter matrix -[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] +[[[3.10121e-01 3.82296e-02 2.07449e-02 7.96430e-03] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] -[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [2.96264e-01 -1.12136e-02 8.83657e-03 -3.27007e-03]]] +[[[3.37881e-02 8.48400e-03 4.69561e-03 3.73162e-03] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [4.37922e-02 1.61804e-02 1.15040e-02 7.32885e-03]]] domain=10001 type=nu-scatter matrix -[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] +[[[3.10121e-01 3.82296e-02 2.07449e-02 7.96430e-03] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] -[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [2.96264e-01 -1.12136e-02 8.83657e-03 -3.27007e-03]]] +[[[3.37881e-02 8.48400e-03 4.69561e-03 3.73162e-03] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [4.37922e-02 1.61804e-02 1.15040e-02 7.32885e-03]]] domain=10001 type=multiplicity matrix -[[1.000000e+00 0.000000e+00] - [0.000000e+00 1.000000e+00]] -[[1.087787e-01 0.000000e+00] - [0.000000e+00 1.424272e-01]] +[[1.00000e+00 0.00000e+00] + [0.00000e+00 1.00000e+00]] +[[1.08779e-01 0.00000e+00] + [0.00000e+00 1.42427e-01]] domain=10001 type=nu-fission matrix -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] +[[0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00]] +[[0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00]] domain=10001 type=chi -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10001 type=chi-prompt -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10001 type=velocity -[1.667784e+07 3.349534e+05] -[1.266444e+06 3.833678e+04] +[1.66778e+07 3.34953e+05] +[1.26644e+06 3.83368e+04] domain=10001 type=prompt-nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10002 type=total -[6.645723e-01 2.052384e+00] -[3.121475e-02 2.243429e-01] +[6.64572e-01 2.05238e+00] +[3.12148e-02 2.24343e-01] domain=10002 type=transport -[2.905653e-01 1.516438e+00] -[2.385185e-02 2.351973e-01] +[2.90565e-01 1.51644e+00] +[2.38519e-02 2.35197e-01] domain=10002 type=nu-transport -[2.905653e-01 1.516438e+00] -[2.385185e-02 2.351973e-01] +[2.90565e-01 1.51644e+00] +[2.38519e-02 2.35197e-01] domain=10002 type=absorption -[6.903995e-04 3.168726e-02] -[4.414757e-05 3.746559e-03] +[6.90400e-04 3.16873e-02] +[4.41476e-05 3.74656e-03] domain=10002 type=capture -[6.903995e-04 3.168726e-02] -[4.414757e-05 3.746559e-03] +[6.90400e-04 3.16873e-02] +[4.41476e-05 3.74656e-03] domain=10002 type=fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10002 type=nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10002 type=kappa-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10002 type=scatter -[6.638819e-01 2.020697e+00] -[3.117268e-02 2.206045e-01] +[6.63882e-01 2.02070e+00] +[3.11727e-02 2.20604e-01] domain=10002 type=nu-scatter -[6.712692e-01 2.035388e+00] -[2.618637e-02 2.580603e-01] +[6.71269e-01 2.03539e+00] +[2.61864e-02 2.58060e-01] domain=10002 type=scatter matrix -[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] - [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] +[[[6.39901e-01 3.81167e-01 1.52392e-01 9.14802e-03] + [3.13677e-02 8.75772e-03 -2.56790e-03 -3.78480e-03]] - [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] - [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] -[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] - [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] + [[4.43343e-04 3.99960e-04 3.19563e-04 2.13847e-04] + [2.03494e+00 5.09941e-01 1.11175e-01 2.49884e-02]]] +[[[2.47091e-02 1.62433e-02 8.15628e-03 3.88856e-03] + [1.72811e-03 9.25671e-04 1.01398e-03 8.17076e-04]] - [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] - [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] + [[4.44850e-04 4.01320e-04 3.20649e-04 2.14574e-04] + [2.57800e-01 5.12359e-02 1.30198e-02 8.31235e-03]]] domain=10002 type=nu-scatter matrix -[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] - [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] +[[[6.39901e-01 3.81167e-01 1.52392e-01 9.14802e-03] + [3.13677e-02 8.75772e-03 -2.56790e-03 -3.78480e-03]] - [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] - [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] -[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] - [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] + [[4.43343e-04 3.99960e-04 3.19563e-04 2.13847e-04] + [2.03494e+00 5.09941e-01 1.11175e-01 2.49884e-02]]] +[[[2.47091e-02 1.62433e-02 8.15628e-03 3.88856e-03] + [1.72811e-03 9.25671e-04 1.01398e-03 8.17076e-04]] - [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] - [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] + [[4.44850e-04 4.01320e-04 3.20649e-04 2.14574e-04] + [2.57800e-01 5.12359e-02 1.30198e-02 8.31235e-03]]] domain=10002 type=multiplicity matrix -[[1.000000e+00 1.000000e+00] - [1.000000e+00 1.000000e+00]] -[[3.860919e-02 6.766735e-02] - [1.414214e+00 1.359292e-01]] +[[1.00000e+00 1.00000e+00] + [1.00000e+00 1.00000e+00]] +[[3.86092e-02 6.76673e-02] + [1.41421e+00 1.35929e-01]] domain=10002 type=nu-fission matrix -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] +[[0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00]] +[[0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00]] domain=10002 type=chi -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10002 type=chi-prompt -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] domain=10002 type=velocity -[1.660556e+07 3.284120e+05] -[1.042436e+06 3.882844e+04] +[1.66056e+07 3.28412e+05] +[1.04244e+06 3.88284e+04] domain=10002 type=prompt-nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[0.00000e+00 0.00000e+00] +[0.00000e+00 0.00000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index fc42ccf494..246f1a963f 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.148255e-01 2.279291e-02 -0 10000 2 total 6.601699e-01 4.751893e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596e-01 2.549360e-02 -0 10000 2 total 6.476477e-01 2.370374e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596e-01 2.549360e-02 -0 10000 2 total 6.476477e-01 2.370374e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.740784e-02 2.692497e-03 -0 10000 2 total 2.645107e-01 2.336708e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.984455e-02 2.643304e-03 -0 10000 2 total 7.171935e-02 2.520786e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.563295e-03 5.084837e-04 -0 10000 2 total 1.927914e-01 1.710592e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.943174e-02 1.322976e-03 -0 10000 2 total 4.697748e-01 4.168200e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.474570e+00 9.923532e-02 -0 10000 2 total 3.728690e+01 3.308378e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.874176e-01 2.062573e-02 -0 10000 2 total 3.956592e-01 2.512506e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.851884e-01 2.694562e-02 -0 10000 2 total 4.123894e-01 1.542528e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841995e-01 2.700101e-02 -13 10000 1 1 total P1 5.187028e-02 6.982549e-03 -14 10000 1 1 total P2 2.006885e-02 2.846495e-03 -15 10000 1 1 total P3 9.477716e-03 2.233520e-03 -8 10000 1 2 total P0 9.889304e-04 4.824194e-04 -9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 -10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 -11 10000 1 2 total P3 2.342906e-04 1.281731e-04 -4 10000 2 1 total P0 9.246399e-04 9.248835e-04 -5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 -6 10000 2 1 total P2 4.937889e-04 4.939189e-04 -7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 -0 10000 2 2 total P0 4.114648e-01 1.524494e-02 -1 10000 2 2 total P1 1.648173e-02 4.501728e-03 -2 10000 2 2 total P2 6.371490e-03 1.055075e-02 -3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841995e-01 2.700101e-02 -13 10000 1 1 total P1 5.187028e-02 6.982549e-03 -14 10000 1 1 total P2 2.006885e-02 2.846495e-03 -15 10000 1 1 total P3 9.477716e-03 2.233520e-03 -8 10000 1 2 total P0 9.889304e-04 4.824194e-04 -9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 -10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 -11 10000 1 2 total P3 2.342906e-04 1.281731e-04 -4 10000 2 1 total P0 9.246399e-04 9.248835e-04 -5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 -6 10000 2 1 total P2 4.937889e-04 4.939189e-04 -7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 -0 10000 2 2 total P0 4.114648e-01 1.524494e-02 -1 10000 2 2 total P1 1.648173e-02 4.501728e-03 -2 10000 2 2 total P2 6.371490e-03 1.055075e-02 -3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.000000e+00 7.851646e-02 -2 10000 1 2 total 1.000000e+00 6.871843e-01 -1 10000 2 1 total 1.000000e+00 1.414214e+00 -0 10000 2 2 total 1.000000e+00 4.113035e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.014243e-02 3.149092e-03 -2 10000 1 2 total 0.000000e+00 0.000000e+00 -1 10000 2 1 total 4.543665e-01 2.742551e-02 -0 10000 2 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000e+00 4.607052e-02 -0 10000 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000e+00 5.147146e-02 -0 10000 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.751521e+07 1.438175e+06 -0 10000 2 total 3.501720e+05 2.994593e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.923922e-02 1.309506e-03 -0 10000 2 total 4.667190e-01 4.141087e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.137377e-01 1.558190e-02 -0 10001 2 total 3.008214e-01 2.805245e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732279e-01 3.311537e-02 -0 10001 2 total 3.123748e-01 4.960583e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732279e-01 3.311537e-02 -0 10001 2 total 3.123748e-01 4.960583e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991e-03 3.225479e-04 -0 10001 2 total 5.400379e-03 6.181383e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991e-03 3.225479e-04 -0 10001 2 total 5.400379e-03 6.181383e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.121627e-01 1.532192e-02 -0 10001 2 total 2.954210e-01 2.744549e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.101207e-01 3.378811e-02 -0 10001 2 total 2.962643e-01 4.379223e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207e-01 3.378811e-02 -13 10001 1 1 total P1 3.822959e-02 8.483997e-03 -14 10001 1 1 total P2 2.074494e-02 4.695611e-03 -15 10001 1 1 total P3 7.964297e-03 3.731623e-03 -8 10001 1 2 total P0 0.000000e+00 0.000000e+00 -9 10001 1 2 total P1 0.000000e+00 0.000000e+00 -10 10001 1 2 total P2 0.000000e+00 0.000000e+00 -11 10001 1 2 total P3 0.000000e+00 0.000000e+00 -4 10001 2 1 total P0 0.000000e+00 0.000000e+00 -5 10001 2 1 total P1 0.000000e+00 0.000000e+00 -6 10001 2 1 total P2 0.000000e+00 0.000000e+00 -7 10001 2 1 total P3 0.000000e+00 0.000000e+00 -0 10001 2 2 total P0 2.962643e-01 4.379223e-02 -1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 -2 10001 2 2 total P2 8.836566e-03 1.150396e-02 -3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207e-01 3.378811e-02 -13 10001 1 1 total P1 3.822959e-02 8.483997e-03 -14 10001 1 1 total P2 2.074494e-02 4.695611e-03 -15 10001 1 1 total P3 7.964297e-03 3.731623e-03 -8 10001 1 2 total P0 0.000000e+00 0.000000e+00 -9 10001 1 2 total P1 0.000000e+00 0.000000e+00 -10 10001 1 2 total P2 0.000000e+00 0.000000e+00 -11 10001 1 2 total P3 0.000000e+00 0.000000e+00 -4 10001 2 1 total P0 0.000000e+00 0.000000e+00 -5 10001 2 1 total P1 0.000000e+00 0.000000e+00 -6 10001 2 1 total P2 0.000000e+00 0.000000e+00 -7 10001 2 1 total P3 0.000000e+00 0.000000e+00 -0 10001 2 2 total P0 2.962643e-01 4.379223e-02 -1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 -2 10001 2 2 total P2 8.836566e-03 1.150396e-02 -3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.000000e+00 1.087787e-01 -2 10001 1 2 total 0.000000e+00 0.000000e+00 -1 10001 2 1 total 0.000000e+00 0.000000e+00 -0 10001 2 2 total 1.000000e+00 1.424272e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.000000e+00 0.000000e+00 -2 10001 1 2 total 0.000000e+00 0.000000e+00 -1 10001 2 1 total 0.000000e+00 0.000000e+00 -0 10001 2 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.667784e+07 1.266444e+06 -0 10001 2 total 3.349534e+05 3.833678e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.645723e-01 3.121475e-02 -0 10002 2 total 2.052384e+00 2.243429e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905653e-01 2.385185e-02 -0 10002 2 total 1.516438e+00 2.351973e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905653e-01 2.385185e-02 -0 10002 2 total 1.516438e+00 2.351973e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995e-04 4.414757e-05 -0 10002 2 total 3.168726e-02 3.746559e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995e-04 4.414757e-05 -0 10002 2 total 3.168726e-02 3.746559e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.638819e-01 3.117268e-02 -0 10002 2 total 2.020697e+00 2.206045e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.712692e-01 2.618637e-02 -0 10002 2 total 2.035388e+00 2.580603e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399015e-01 2.470912e-02 -13 10002 1 1 total P1 3.811674e-01 1.624326e-02 -14 10002 1 1 total P2 1.523919e-01 8.156278e-03 -15 10002 1 1 total P3 9.148022e-03 3.888562e-03 -8 10002 1 2 total P0 3.136772e-02 1.728113e-03 -9 10002 1 2 total P1 8.757723e-03 9.256705e-04 -10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 -11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 -4 10002 2 1 total P0 4.433431e-04 4.448504e-04 -5 10002 2 1 total P1 3.999604e-04 4.013202e-04 -6 10002 2 1 total P2 3.195627e-04 3.206491e-04 -7 10002 2 1 total P3 2.138470e-04 2.145740e-04 -0 10002 2 2 total P0 2.034945e+00 2.577999e-01 -1 10002 2 2 total P1 5.099405e-01 5.123591e-02 -2 10002 2 2 total P2 1.111746e-01 1.301982e-02 -3 10002 2 2 total P3 2.498844e-02 8.312353e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399015e-01 2.470912e-02 -13 10002 1 1 total P1 3.811674e-01 1.624326e-02 -14 10002 1 1 total P2 1.523919e-01 8.156278e-03 -15 10002 1 1 total P3 9.148022e-03 3.888562e-03 -8 10002 1 2 total P0 3.136772e-02 1.728113e-03 -9 10002 1 2 total P1 8.757723e-03 9.256705e-04 -10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 -11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 -4 10002 2 1 total P0 4.433431e-04 4.448504e-04 -5 10002 2 1 total P1 3.999604e-04 4.013202e-04 -6 10002 2 1 total P2 3.195627e-04 3.206491e-04 -7 10002 2 1 total P3 2.138470e-04 2.145740e-04 -0 10002 2 2 total P0 2.034945e+00 2.577999e-01 -1 10002 2 2 total P1 5.099405e-01 5.123591e-02 -2 10002 2 2 total P2 1.111746e-01 1.301982e-02 -3 10002 2 2 total P3 2.498844e-02 8.312353e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.000000e+00 3.860919e-02 -2 10002 1 2 total 1.000000e+00 6.766735e-02 -1 10002 2 1 total 1.000000e+00 1.414214e+00 -0 10002 2 2 total 1.000000e+00 1.359292e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.000000e+00 0.000000e+00 -2 10002 1 2 total 0.000000e+00 0.000000e+00 -1 10002 2 1 total 0.000000e+00 0.000000e+00 -0 10002 2 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.660556e+07 1.042436e+06 -0 10002 2 total 3.284120e+05 3.882844e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.14825e-01 2.27929e-02 +0 10000 2 total 6.60170e-01 4.75189e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56860e-01 2.54936e-02 +0 10000 2 total 6.47648e-01 2.37037e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56860e-01 2.54936e-02 +0 10000 2 total 6.47648e-01 2.37037e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.74078e-02 2.69250e-03 +0 10000 2 total 2.64511e-01 2.33671e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.98445e-02 2.64330e-03 +0 10000 2 total 7.17194e-02 2.52079e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.56329e-03 5.08484e-04 +0 10000 2 total 1.92791e-01 1.71059e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.94317e-02 1.32298e-03 +0 10000 2 total 4.69775e-01 4.16820e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.47457e+00 9.92353e-02 +0 10000 2 total 3.72869e+01 3.30838e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.87418e-01 2.06257e-02 +0 10000 2 total 3.95659e-01 2.51251e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.85188e-01 2.69456e-02 +0 10000 2 total 4.12389e-01 1.54253e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199e-01 2.70010e-02 +13 10000 1 1 total P1 5.18703e-02 6.98255e-03 +14 10000 1 1 total P2 2.00688e-02 2.84650e-03 +15 10000 1 1 total P3 9.47772e-03 2.23352e-03 +8 10000 1 2 total P0 9.88930e-04 4.82419e-04 +9 10000 1 2 total P1 -2.07235e-04 1.49011e-04 +10 10000 1 2 total P2 -1.03366e-04 1.84316e-04 +11 10000 1 2 total P3 2.34291e-04 1.28173e-04 +4 10000 2 1 total P0 9.24640e-04 9.24883e-04 +5 10000 2 1 total P1 -7.67705e-04 7.67907e-04 +6 10000 2 1 total P2 4.93789e-04 4.93919e-04 +7 10000 2 1 total P3 -1.71497e-04 1.71542e-04 +0 10000 2 2 total P0 4.11465e-01 1.52449e-02 +1 10000 2 2 total P1 1.64817e-02 4.50173e-03 +2 10000 2 2 total P2 6.37149e-03 1.05507e-02 +3 10000 2 2 total P3 -1.04991e-02 1.04382e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199e-01 2.70010e-02 +13 10000 1 1 total P1 5.18703e-02 6.98255e-03 +14 10000 1 1 total P2 2.00688e-02 2.84650e-03 +15 10000 1 1 total P3 9.47772e-03 2.23352e-03 +8 10000 1 2 total P0 9.88930e-04 4.82419e-04 +9 10000 1 2 total P1 -2.07235e-04 1.49011e-04 +10 10000 1 2 total P2 -1.03366e-04 1.84316e-04 +11 10000 1 2 total P3 2.34291e-04 1.28173e-04 +4 10000 2 1 total P0 9.24640e-04 9.24883e-04 +5 10000 2 1 total P1 -7.67705e-04 7.67907e-04 +6 10000 2 1 total P2 4.93789e-04 4.93919e-04 +7 10000 2 1 total P3 -1.71497e-04 1.71542e-04 +0 10000 2 2 total P0 4.11465e-01 1.52449e-02 +1 10000 2 2 total P1 1.64817e-02 4.50173e-03 +2 10000 2 2 total P2 6.37149e-03 1.05507e-02 +3 10000 2 2 total P3 -1.04991e-02 1.04382e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.00000e+00 7.85165e-02 +2 10000 1 2 total 1.00000e+00 6.87184e-01 +1 10000 2 1 total 1.00000e+00 1.41421e+00 +0 10000 2 2 total 1.00000e+00 4.11303e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.01424e-02 3.14909e-03 +2 10000 1 2 total 0.00000e+00 0.00000e+00 +1 10000 2 1 total 4.54366e-01 2.74255e-02 +0 10000 2 2 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000e+00 4.60705e-02 +0 10000 2 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000e+00 5.14715e-02 +0 10000 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.75152e+07 1.43818e+06 +0 10000 2 total 3.50172e+05 2.99459e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.92392e-02 1.30951e-03 +0 10000 2 total 4.66719e-01 4.14109e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.13738e-01 1.55819e-02 +0 10001 2 total 3.00821e-01 2.80524e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73228e-01 3.31154e-02 +0 10001 2 total 3.12375e-01 4.96058e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73228e-01 3.31154e-02 +0 10001 2 total 3.12375e-01 4.96058e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499e-03 3.22548e-04 +0 10001 2 total 5.40038e-03 6.18138e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499e-03 3.22548e-04 +0 10001 2 total 5.40038e-03 6.18138e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000e+00 0.00000e+00 +0 10001 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000e+00 0.00000e+00 +0 10001 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000e+00 0.00000e+00 +0 10001 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.12163e-01 1.53219e-02 +0 10001 2 total 2.95421e-01 2.74455e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.10121e-01 3.37881e-02 +0 10001 2 total 2.96264e-01 4.37922e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10121e-01 3.37881e-02 +13 10001 1 1 total P1 3.82296e-02 8.48400e-03 +14 10001 1 1 total P2 2.07449e-02 4.69561e-03 +15 10001 1 1 total P3 7.96430e-03 3.73162e-03 +8 10001 1 2 total P0 0.00000e+00 0.00000e+00 +9 10001 1 2 total P1 0.00000e+00 0.00000e+00 +10 10001 1 2 total P2 0.00000e+00 0.00000e+00 +11 10001 1 2 total P3 0.00000e+00 0.00000e+00 +4 10001 2 1 total P0 0.00000e+00 0.00000e+00 +5 10001 2 1 total P1 0.00000e+00 0.00000e+00 +6 10001 2 1 total P2 0.00000e+00 0.00000e+00 +7 10001 2 1 total P3 0.00000e+00 0.00000e+00 +0 10001 2 2 total P0 2.96264e-01 4.37922e-02 +1 10001 2 2 total P1 -1.12136e-02 1.61804e-02 +2 10001 2 2 total P2 8.83657e-03 1.15040e-02 +3 10001 2 2 total P3 -3.27007e-03 7.32885e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10121e-01 3.37881e-02 +13 10001 1 1 total P1 3.82296e-02 8.48400e-03 +14 10001 1 1 total P2 2.07449e-02 4.69561e-03 +15 10001 1 1 total P3 7.96430e-03 3.73162e-03 +8 10001 1 2 total P0 0.00000e+00 0.00000e+00 +9 10001 1 2 total P1 0.00000e+00 0.00000e+00 +10 10001 1 2 total P2 0.00000e+00 0.00000e+00 +11 10001 1 2 total P3 0.00000e+00 0.00000e+00 +4 10001 2 1 total P0 0.00000e+00 0.00000e+00 +5 10001 2 1 total P1 0.00000e+00 0.00000e+00 +6 10001 2 1 total P2 0.00000e+00 0.00000e+00 +7 10001 2 1 total P3 0.00000e+00 0.00000e+00 +0 10001 2 2 total P0 2.96264e-01 4.37922e-02 +1 10001 2 2 total P1 -1.12136e-02 1.61804e-02 +2 10001 2 2 total P2 8.83657e-03 1.15040e-02 +3 10001 2 2 total P3 -3.27007e-03 7.32885e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.00000e+00 1.08779e-01 +2 10001 1 2 total 0.00000e+00 0.00000e+00 +1 10001 2 1 total 0.00000e+00 0.00000e+00 +0 10001 2 2 total 1.00000e+00 1.42427e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.00000e+00 0.00000e+00 +2 10001 1 2 total 0.00000e+00 0.00000e+00 +1 10001 2 1 total 0.00000e+00 0.00000e+00 +0 10001 2 2 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000e+00 0.00000e+00 +0 10001 2 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000e+00 0.00000e+00 +0 10001 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.66778e+07 1.26644e+06 +0 10001 2 total 3.34953e+05 3.83368e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000e+00 0.00000e+00 +0 10001 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.64572e-01 3.12148e-02 +0 10002 2 total 2.05238e+00 2.24343e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565e-01 2.38519e-02 +0 10002 2 total 1.51644e+00 2.35197e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565e-01 2.38519e-02 +0 10002 2 total 1.51644e+00 2.35197e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.90400e-04 4.41476e-05 +0 10002 2 total 3.16873e-02 3.74656e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.90400e-04 4.41476e-05 +0 10002 2 total 3.16873e-02 3.74656e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000e+00 0.00000e+00 +0 10002 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000e+00 0.00000e+00 +0 10002 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000e+00 0.00000e+00 +0 10002 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.63882e-01 3.11727e-02 +0 10002 2 total 2.02070e+00 2.20604e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.71269e-01 2.61864e-02 +0 10002 2 total 2.03539e+00 2.58060e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901e-01 2.47091e-02 +13 10002 1 1 total P1 3.81167e-01 1.62433e-02 +14 10002 1 1 total P2 1.52392e-01 8.15628e-03 +15 10002 1 1 total P3 9.14802e-03 3.88856e-03 +8 10002 1 2 total P0 3.13677e-02 1.72811e-03 +9 10002 1 2 total P1 8.75772e-03 9.25671e-04 +10 10002 1 2 total P2 -2.56790e-03 1.01398e-03 +11 10002 1 2 total P3 -3.78480e-03 8.17076e-04 +4 10002 2 1 total P0 4.43343e-04 4.44850e-04 +5 10002 2 1 total P1 3.99960e-04 4.01320e-04 +6 10002 2 1 total P2 3.19563e-04 3.20649e-04 +7 10002 2 1 total P3 2.13847e-04 2.14574e-04 +0 10002 2 2 total P0 2.03494e+00 2.57800e-01 +1 10002 2 2 total P1 5.09941e-01 5.12359e-02 +2 10002 2 2 total P2 1.11175e-01 1.30198e-02 +3 10002 2 2 total P3 2.49884e-02 8.31235e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901e-01 2.47091e-02 +13 10002 1 1 total P1 3.81167e-01 1.62433e-02 +14 10002 1 1 total P2 1.52392e-01 8.15628e-03 +15 10002 1 1 total P3 9.14802e-03 3.88856e-03 +8 10002 1 2 total P0 3.13677e-02 1.72811e-03 +9 10002 1 2 total P1 8.75772e-03 9.25671e-04 +10 10002 1 2 total P2 -2.56790e-03 1.01398e-03 +11 10002 1 2 total P3 -3.78480e-03 8.17076e-04 +4 10002 2 1 total P0 4.43343e-04 4.44850e-04 +5 10002 2 1 total P1 3.99960e-04 4.01320e-04 +6 10002 2 1 total P2 3.19563e-04 3.20649e-04 +7 10002 2 1 total P3 2.13847e-04 2.14574e-04 +0 10002 2 2 total P0 2.03494e+00 2.57800e-01 +1 10002 2 2 total P1 5.09941e-01 5.12359e-02 +2 10002 2 2 total P2 1.11175e-01 1.30198e-02 +3 10002 2 2 total P3 2.49884e-02 8.31235e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.00000e+00 3.86092e-02 +2 10002 1 2 total 1.00000e+00 6.76673e-02 +1 10002 2 1 total 1.00000e+00 1.41421e+00 +0 10002 2 2 total 1.00000e+00 1.35929e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.00000e+00 0.00000e+00 +2 10002 1 2 total 0.00000e+00 0.00000e+00 +1 10002 2 1 total 0.00000e+00 0.00000e+00 +0 10002 2 2 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000e+00 0.00000e+00 +0 10002 2 total 0.00000e+00 0.00000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000e+00 0.00000e+00 +0 10002 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.66056e+07 1.04244e+06 +0 10002 2 total 3.28412e+05 3.88284e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000e+00 0.00000e+00 +0 10002 2 total 0.00000e+00 0.00000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 66d388716e..e8c343cb0f 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -9620ed88224f5a4013b1ff47a1286ed166f84847b97d145e52f6f71eb441c2abd1ad5baa91e0b1cac802daa8610ee388d23dcbc43d834b73fb35a16972d09788 \ No newline at end of file +a84cc1ba0556c47dfa13d959e7ca34a4e9855d4c85b60b3503a2f0b367df1bef65df1d535fa852b285075846ecb61050aa42e66ba2b0af3d9c51dc969cc4e6fd \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 91562d8e15..eedf9279fa 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.000000e+02 0.000000e+00 7.000000e+02 8.000000e+02] + Temperature = [5.00000e+02 0.00000e+00 7.00000e+02 8.00000e+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index e00e4ea137..b2d96884f3 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -230817bd2cfcceebf4f5317432130df3cc43bff45fbab7f145a6f390a19b0bf103fbf4d6363e77cfe015396a846682741f649a9c29e04590796e4816831b2b5d \ No newline at end of file +059bd780997dc36a315d1a7266296ed511aae2e5c362f7f47b81022a6e4588d6ae0ea06f35893f0efd004e925ee32ea1d284a40cc1a0f861b08391cdf1b0e8a0 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 6ef9ffeccd..85175d3830 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] +[[[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]]] \ No newline at end of file + [[0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00] + [0.00000e+00 0.00000e+00 0.00000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index bde708b808..2b188cf290 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation with 7 +# Require numpy and pandas to print output in scientific notation with 6 # significant figures. This is needed to avoid round off error when large # numbers are printed, which can cause tests to fail for different build # configurations. -np.set_printoptions(formatter={'float': '{:.6e}'.format}) -pd.options.display.float_format = '{:.6e}'.format +np.set_printoptions(formatter={'float': '{:.5e}'.format}) +pd.options.display.float_format = '{:.5e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From fea3a190de7ae5350efcc25a9039dca394cd1be9 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 13 Jul 2016 17:46:43 +0000 Subject: [PATCH 43/82] changed number of sig figs back to 8 and updated results on linux system --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 312 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 6 +- 8 files changed, 691 insertions(+), 691 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 8a930b2507..f8353aa667 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.53624e-01 2.10527e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852e-01 2.28576e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852e-01 2.28576e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.49035e-02 4.31276e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.80481e-02 4.57996e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.68554e-02 2.62216e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.06493e-02 6.40987e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.13796e+00 5.07364e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.88721e-01 1.78304e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.89304e-01 2.30755e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89304e-01 2.31456e-02 -1 10000 1 1 total P1 4.62244e-02 5.90717e-03 -2 10000 1 1 total P2 1.79836e-02 2.88297e-03 -3 10000 1 1 total P3 6.62837e-03 2.45711e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89304e-01 2.31456e-02 -1 10000 1 1 total P1 4.62244e-02 5.90717e-03 -2 10000 1 1 total P2 1.79836e-02 2.88297e-03 -3 10000 1 1 total P3 6.62837e-03 2.45711e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.00000e+00 6.61108e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.58350e-02 5.59182e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000e+00 4.60705e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000e+00 5.14715e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.00131e+06 1.46217e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.00040e-02 6.36691e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.11594e-01 1.37932e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255e-01 2.91895e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255e-01 2.91895e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.20985e-03 2.86334e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.20985e-03 2.86334e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.09384e-01 1.35513e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.07987e-01 2.93081e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987e-01 2.93081e-02 -1 10001 1 1 total P1 3.06172e-02 7.46446e-03 -2 10001 1 1 total P2 1.89115e-02 4.32283e-03 -3 10001 1 1 total P3 6.23462e-03 3.33820e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987e-01 2.93081e-02 -1 10001 1 1 total P1 3.06172e-02 7.46446e-03 -2 10001 1 1 total P2 1.89115e-02 4.32283e-03 -3 10001 1 1 total P3 6.23462e-03 3.33820e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.00000e+00 9.50387e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.83326e+06 1.66355e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.04999e-01 4.39645e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99184e-01 4.09141e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99184e-01 4.09141e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034e-03 5.54524e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034e-03 5.54524e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.98938e-01 4.34930e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.03415e-01 4.39587e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03415e-01 4.35860e-02 -1 10002 1 1 total P1 4.10417e-01 1.58772e-02 -2 10002 1 1 total P2 1.43301e-01 7.18738e-03 -3 10002 1 1 total P3 8.73943e-03 3.57144e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03415e-01 4.35860e-02 -1 10002 1 1 total P1 4.10417e-01 1.58772e-02 -2 10002 1 1 total P2 1.43301e-01 7.18738e-03 -3 10002 1 1 total P3 8.73943e-03 3.57144e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.00000e+00 5.68667e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.73220e+06 1.59691e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.5362442e-01 2.1052696e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.0085218e-01 2.2857554e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.0085218e-01 2.2857554e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.4903456e-02 4.3127612e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.8048066e-02 4.5799637e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.6855390e-02 2.6221598e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.0649290e-02 6.4098745e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.1379551e+00 5.0736381e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.8872097e-01 1.7830429e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.8930356e-01 2.3075539e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 +1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 +2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 +3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 +1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 +2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 +3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.0000000e+00 6.6110820e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.5835019e-02 5.5918249e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.0000000e+00 4.6070523e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.0000000e+00 5.1471457e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.0013087e+06 1.4621656e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.0003978e-02 6.3669079e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.1159411e-01 1.3793168e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.7925506e-01 2.9189501e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.7925506e-01 2.9189501e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.2098464e-03 2.8633413e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.2098464e-03 2.8633413e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.0938426e-01 1.3551267e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.0798735e-01 2.9308089e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 +1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 +2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 +3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 +1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 +2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 +3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.0000000e+00 9.5038722e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.8332612e+06 1.6635517e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.0499883e-01 4.3964488e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.9918398e-01 4.0914120e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.9918398e-01 4.0914120e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.0603412e-03 5.5452442e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.0603412e-03 5.5452442e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.9893849e-01 4.3492984e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.0341466e-01 4.3958737e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 +1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 +2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 +3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 +1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 +2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 +3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.0000000e+00 5.6866725e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.7321997e+06 1.5969143e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.0000000e+00 0.0000000e+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 7cde7e3fe2..70c7134536 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.14593e+00 5.53822e-01 - 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.18919e-01 5.20644e-01 - 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.18919e-01 5.20644e-01 - 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.97622e-02 1.06288e-02 - 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.97622e-02 1.06288e-02 - 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.00000e+00 0.00000e+00 - 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.00000e+00 0.00000e+00 - 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.00000e+00 0.00000e+00 - 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.12617e+00 5.43440e-01 - 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.14255e+00 5.70131e-01 - 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.14255e+00 5.70131e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381e-01 2.16322e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41202e-01 6.65038e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92283e-02 2.46208e-02 - 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.14255e+00 5.70131e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381e-01 2.16322e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41202e-01 6.65038e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92283e-02 2.46208e-02 - 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.00000e+00 5.29717e-01 - 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.00000e+00 0.00000e+00 - 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.00000e+00 0.00000e+00 - 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.00000e+00 0.00000e+00 - 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.74246e+05 4.16398e+05 - 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.00000e+00 0.00000e+00 + 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.1459340e+00 5.5382169e-01 + 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.1891920e-01 5.2064426e-01 + 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.1891920e-01 5.2064426e-01 + 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.9762206e-02 1.0628764e-02 + 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.9762206e-02 1.0628764e-02 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.1261718e+00 5.4344001e-01 + 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.1425469e+00 5.7013139e-01 + 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.1425469e+00 5.7013139e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 + 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.1425469e+00 5.7013139e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 + 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.0000000e+00 5.2971733e-01 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.0000000e+00 0.0000000e+00 + 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.7424571e+05 4.1639769e+05 + 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.0000000e+00 0.0000000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 648193a168..ca424dc6b7 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[4.14825e-01 6.60170e-01] -[2.27929e-02 4.75189e-02] +[4.1482549e-01 6.6016992e-01] +[2.2792909e-02 4.7518928e-02] domain=10000 type=transport -[3.56860e-01 6.47648e-01] -[2.54936e-02 2.37037e-02] +[3.5685964e-01 6.4764766e-01] +[2.5493596e-02 2.3703735e-02] domain=10000 type=nu-transport -[3.56860e-01 6.47648e-01] -[2.54936e-02 2.37037e-02] +[3.5685964e-01 6.4764766e-01] +[2.5493596e-02 2.3703735e-02] domain=10000 type=absorption -[2.74078e-02 2.64511e-01] -[2.69250e-03 2.33671e-02] +[2.7407845e-02 2.6451074e-01] +[2.6924971e-03 2.3367077e-02] domain=10000 type=capture -[1.98445e-02 7.17194e-02] -[2.64330e-03 2.52079e-02] +[1.9844550e-02 7.1719353e-02] +[2.6433043e-03 2.5207859e-02] domain=10000 type=fission -[7.56329e-03 1.92791e-01] -[5.08484e-04 1.71059e-02] +[7.5632950e-03 1.9279139e-01] +[5.0848368e-04 1.7105922e-02] domain=10000 type=nu-fission -[1.94317e-02 4.69775e-01] -[1.32298e-03 4.16820e-02] +[1.9431740e-02 4.6977478e-01] +[1.3229756e-03 4.1682000e-02] domain=10000 type=kappa-fission -[1.47457e+00 3.72869e+01] -[9.92353e-02 3.30838e+00] +[1.4745698e+00 3.7286896e+01] +[9.9235321e-02 3.3083777e+00] domain=10000 type=scatter -[3.87418e-01 3.95659e-01] -[2.06257e-02 2.51251e-02] +[3.8741765e-01 3.9565918e-01] +[2.0625732e-02 2.5125057e-02] domain=10000 type=nu-scatter -[3.85188e-01 4.12389e-01] -[2.69456e-02 1.54253e-02] +[3.8518839e-01 4.1238940e-01] +[2.6945621e-02 1.5425277e-02] domain=10000 type=scatter matrix -[[[3.84199e-01 5.18703e-02 2.00688e-02 9.47772e-03] - [9.88930e-04 -2.07235e-04 -1.03366e-04 2.34291e-04]] +[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] + [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] - [[9.24640e-04 -7.67705e-04 4.93789e-04 -1.71497e-04] - [4.11465e-01 1.64817e-02 6.37149e-03 -1.04991e-02]]] -[[[2.70010e-02 6.98255e-03 2.84650e-03 2.23352e-03] - [4.82419e-04 1.49011e-04 1.84316e-04 1.28173e-04]] + [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] + [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] +[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] + [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] - [[9.24883e-04 7.67907e-04 4.93919e-04 1.71542e-04] - [1.52449e-02 4.50173e-03 1.05507e-02 1.04382e-02]]] + [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] + [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] domain=10000 type=nu-scatter matrix -[[[3.84199e-01 5.18703e-02 2.00688e-02 9.47772e-03] - [9.88930e-04 -2.07235e-04 -1.03366e-04 2.34291e-04]] +[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] + [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] - [[9.24640e-04 -7.67705e-04 4.93789e-04 -1.71497e-04] - [4.11465e-01 1.64817e-02 6.37149e-03 -1.04991e-02]]] -[[[2.70010e-02 6.98255e-03 2.84650e-03 2.23352e-03] - [4.82419e-04 1.49011e-04 1.84316e-04 1.28173e-04]] + [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] + [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] +[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] + [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] - [[9.24883e-04 7.67907e-04 4.93919e-04 1.71542e-04] - [1.52449e-02 4.50173e-03 1.05507e-02 1.04382e-02]]] + [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] + [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] domain=10000 type=multiplicity matrix -[[1.00000e+00 1.00000e+00] - [1.00000e+00 1.00000e+00]] -[[7.85165e-02 6.87184e-01] - [1.41421e+00 4.11303e-02]] +[[1.0000000e+00 1.0000000e+00] + [1.0000000e+00 1.0000000e+00]] +[[7.8516455e-02 6.8718427e-01] + [1.4142136e+00 4.1130349e-02]] domain=10000 type=nu-fission matrix -[[2.01424e-02 0.00000e+00] - [4.54366e-01 0.00000e+00]] -[[3.14909e-03 0.00000e+00] - [2.74255e-02 0.00000e+00]] +[[2.0142428e-02 0.0000000e+00] + [4.5436647e-01 0.0000000e+00]] +[[3.1490917e-03 0.0000000e+00] + [2.7425507e-02 0.0000000e+00]] domain=10000 type=chi -[1.00000e+00 0.00000e+00] -[4.60705e-02 0.00000e+00] +[1.0000000e+00 0.0000000e+00] +[4.6070523e-02 0.0000000e+00] domain=10000 type=chi-prompt -[1.00000e+00 0.00000e+00] -[5.14715e-02 0.00000e+00] +[1.0000000e+00 0.0000000e+00] +[5.1471457e-02 0.0000000e+00] domain=10000 type=velocity -[1.75152e+07 3.50172e+05] -[1.43818e+06 2.99459e+04] +[1.7515211e+07 3.5017200e+05] +[1.4381753e+06 2.9945932e+04] domain=10000 type=prompt-nu-fission -[1.92392e-02 4.66719e-01] -[1.30951e-03 4.14109e-02] +[1.9239222e-02 4.6671903e-01] +[1.3095060e-03 4.1410870e-02] domain=10001 type=total -[3.13738e-01 3.00821e-01] -[1.55819e-02 2.80524e-02] +[3.1373767e-01 3.0082140e-01] +[1.5581902e-02 2.8052448e-02] domain=10001 type=transport -[2.73228e-01 3.12375e-01] -[3.31154e-02 4.96058e-02] +[2.7322787e-01 3.1237484e-01] +[3.3115366e-02 4.9605832e-02] domain=10001 type=nu-transport -[2.73228e-01 3.12375e-01] -[3.31154e-02 4.96058e-02] +[2.7322787e-01 3.1237484e-01] +[3.3115366e-02 4.9605832e-02] domain=10001 type=absorption -[1.57499e-03 5.40038e-03] -[3.22548e-04 6.18138e-04] +[1.5749914e-03 5.4003788e-03] +[3.2254789e-04 6.1813831e-04] domain=10001 type=capture -[1.57499e-03 5.40038e-03] -[3.22548e-04 6.18138e-04] +[1.5749914e-03 5.4003788e-03] +[3.2254789e-04 6.1813831e-04] domain=10001 type=fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=nu-fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=kappa-fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=scatter -[3.12163e-01 2.95421e-01] -[1.53219e-02 2.74455e-02] +[3.1216268e-01 2.9542102e-01] +[1.5321923e-02 2.7445489e-02] domain=10001 type=nu-scatter -[3.10121e-01 2.96264e-01] -[3.37881e-02 4.37922e-02] +[3.1012074e-01 2.9626427e-01] +[3.3788106e-02 4.3792226e-02] domain=10001 type=scatter matrix -[[[3.10121e-01 3.82296e-02 2.07449e-02 7.96430e-03] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] +[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [2.96264e-01 -1.12136e-02 8.83657e-03 -3.27007e-03]]] -[[[3.37881e-02 8.48400e-03 4.69561e-03 3.73162e-03] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] +[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [4.37922e-02 1.61804e-02 1.15040e-02 7.32885e-03]]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] domain=10001 type=nu-scatter matrix -[[[3.10121e-01 3.82296e-02 2.07449e-02 7.96430e-03] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] +[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [2.96264e-01 -1.12136e-02 8.83657e-03 -3.27007e-03]]] -[[[3.37881e-02 8.48400e-03 4.69561e-03 3.73162e-03] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] +[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [4.37922e-02 1.61804e-02 1.15040e-02 7.32885e-03]]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] domain=10001 type=multiplicity matrix -[[1.00000e+00 0.00000e+00] - [0.00000e+00 1.00000e+00]] -[[1.08779e-01 0.00000e+00] - [0.00000e+00 1.42427e-01]] +[[1.0000000e+00 0.0000000e+00] + [0.0000000e+00 1.0000000e+00]] +[[1.0877870e-01 0.0000000e+00] + [0.0000000e+00 1.4242717e-01]] domain=10001 type=nu-fission matrix -[[0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00]] -[[0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] domain=10001 type=chi -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=chi-prompt -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10001 type=velocity -[1.66778e+07 3.34953e+05] -[1.26644e+06 3.83368e+04] +[1.6677839e+07 3.3495337e+05] +[1.2664443e+06 3.8336782e+04] domain=10001 type=prompt-nu-fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=total -[6.64572e-01 2.05238e+00] -[3.12148e-02 2.24343e-01] +[6.6457226e-01 2.0523840e+00] +[3.1214752e-02 2.2434291e-01] domain=10002 type=transport -[2.90565e-01 1.51644e+00] -[2.38519e-02 2.35197e-01] +[2.9056526e-01 1.5164380e+00] +[2.3851855e-02 2.3519727e-01] domain=10002 type=nu-transport -[2.90565e-01 1.51644e+00] -[2.38519e-02 2.35197e-01] +[2.9056526e-01 1.5164380e+00] +[2.3851855e-02 2.3519727e-01] domain=10002 type=absorption -[6.90400e-04 3.16873e-02] -[4.41476e-05 3.74656e-03] +[6.9039952e-04 3.1687257e-02] +[4.4147569e-05 3.7465586e-03] domain=10002 type=capture -[6.90400e-04 3.16873e-02] -[4.41476e-05 3.74656e-03] +[6.9039952e-04 3.1687257e-02] +[4.4147569e-05 3.7465586e-03] domain=10002 type=fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=nu-fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=kappa-fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=scatter -[6.63882e-01 2.02070e+00] -[3.11727e-02 2.20604e-01] +[6.6388186e-01 2.0206968e+00] +[3.1172684e-02 2.2060445e-01] domain=10002 type=nu-scatter -[6.71269e-01 2.03539e+00] -[2.61864e-02 2.58060e-01] +[6.7126920e-01 2.0353883e+00] +[2.6186371e-02 2.5806033e-01] domain=10002 type=scatter matrix -[[[6.39901e-01 3.81167e-01 1.52392e-01 9.14802e-03] - [3.13677e-02 8.75772e-03 -2.56790e-03 -3.78480e-03]] +[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] + [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] - [[4.43343e-04 3.99960e-04 3.19563e-04 2.13847e-04] - [2.03494e+00 5.09941e-01 1.11175e-01 2.49884e-02]]] -[[[2.47091e-02 1.62433e-02 8.15628e-03 3.88856e-03] - [1.72811e-03 9.25671e-04 1.01398e-03 8.17076e-04]] + [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] + [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] +[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] + [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] - [[4.44850e-04 4.01320e-04 3.20649e-04 2.14574e-04] - [2.57800e-01 5.12359e-02 1.30198e-02 8.31235e-03]]] + [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] + [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] domain=10002 type=nu-scatter matrix -[[[6.39901e-01 3.81167e-01 1.52392e-01 9.14802e-03] - [3.13677e-02 8.75772e-03 -2.56790e-03 -3.78480e-03]] +[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] + [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] - [[4.43343e-04 3.99960e-04 3.19563e-04 2.13847e-04] - [2.03494e+00 5.09941e-01 1.11175e-01 2.49884e-02]]] -[[[2.47091e-02 1.62433e-02 8.15628e-03 3.88856e-03] - [1.72811e-03 9.25671e-04 1.01398e-03 8.17076e-04]] + [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] + [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] +[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] + [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] - [[4.44850e-04 4.01320e-04 3.20649e-04 2.14574e-04] - [2.57800e-01 5.12359e-02 1.30198e-02 8.31235e-03]]] + [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] + [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] domain=10002 type=multiplicity matrix -[[1.00000e+00 1.00000e+00] - [1.00000e+00 1.00000e+00]] -[[3.86092e-02 6.76673e-02] - [1.41421e+00 1.35929e-01]] +[[1.0000000e+00 1.0000000e+00] + [1.0000000e+00 1.0000000e+00]] +[[3.8609191e-02 6.7667348e-02] + [1.4142136e+00 1.3592921e-01]] domain=10002 type=nu-fission matrix -[[0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00]] -[[0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] +[[0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00]] domain=10002 type=chi -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=chi-prompt -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] domain=10002 type=velocity -[1.66056e+07 3.28412e+05] -[1.04244e+06 3.88284e+04] +[1.6605563e+07 3.2841204e+05] +[1.0424355e+06 3.8828436e+04] domain=10002 type=prompt-nu-fission -[0.00000e+00 0.00000e+00] -[0.00000e+00 0.00000e+00] +[0.0000000e+00 0.0000000e+00] +[0.0000000e+00 0.0000000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 246f1a963f..0e25d3ee82 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.14825e-01 2.27929e-02 -0 10000 2 total 6.60170e-01 4.75189e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56860e-01 2.54936e-02 -0 10000 2 total 6.47648e-01 2.37037e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56860e-01 2.54936e-02 -0 10000 2 total 6.47648e-01 2.37037e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.74078e-02 2.69250e-03 -0 10000 2 total 2.64511e-01 2.33671e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.98445e-02 2.64330e-03 -0 10000 2 total 7.17194e-02 2.52079e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.56329e-03 5.08484e-04 -0 10000 2 total 1.92791e-01 1.71059e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.94317e-02 1.32298e-03 -0 10000 2 total 4.69775e-01 4.16820e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.47457e+00 9.92353e-02 -0 10000 2 total 3.72869e+01 3.30838e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.87418e-01 2.06257e-02 -0 10000 2 total 3.95659e-01 2.51251e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.85188e-01 2.69456e-02 -0 10000 2 total 4.12389e-01 1.54253e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199e-01 2.70010e-02 -13 10000 1 1 total P1 5.18703e-02 6.98255e-03 -14 10000 1 1 total P2 2.00688e-02 2.84650e-03 -15 10000 1 1 total P3 9.47772e-03 2.23352e-03 -8 10000 1 2 total P0 9.88930e-04 4.82419e-04 -9 10000 1 2 total P1 -2.07235e-04 1.49011e-04 -10 10000 1 2 total P2 -1.03366e-04 1.84316e-04 -11 10000 1 2 total P3 2.34291e-04 1.28173e-04 -4 10000 2 1 total P0 9.24640e-04 9.24883e-04 -5 10000 2 1 total P1 -7.67705e-04 7.67907e-04 -6 10000 2 1 total P2 4.93789e-04 4.93919e-04 -7 10000 2 1 total P3 -1.71497e-04 1.71542e-04 -0 10000 2 2 total P0 4.11465e-01 1.52449e-02 -1 10000 2 2 total P1 1.64817e-02 4.50173e-03 -2 10000 2 2 total P2 6.37149e-03 1.05507e-02 -3 10000 2 2 total P3 -1.04991e-02 1.04382e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199e-01 2.70010e-02 -13 10000 1 1 total P1 5.18703e-02 6.98255e-03 -14 10000 1 1 total P2 2.00688e-02 2.84650e-03 -15 10000 1 1 total P3 9.47772e-03 2.23352e-03 -8 10000 1 2 total P0 9.88930e-04 4.82419e-04 -9 10000 1 2 total P1 -2.07235e-04 1.49011e-04 -10 10000 1 2 total P2 -1.03366e-04 1.84316e-04 -11 10000 1 2 total P3 2.34291e-04 1.28173e-04 -4 10000 2 1 total P0 9.24640e-04 9.24883e-04 -5 10000 2 1 total P1 -7.67705e-04 7.67907e-04 -6 10000 2 1 total P2 4.93789e-04 4.93919e-04 -7 10000 2 1 total P3 -1.71497e-04 1.71542e-04 -0 10000 2 2 total P0 4.11465e-01 1.52449e-02 -1 10000 2 2 total P1 1.64817e-02 4.50173e-03 -2 10000 2 2 total P2 6.37149e-03 1.05507e-02 -3 10000 2 2 total P3 -1.04991e-02 1.04382e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.00000e+00 7.85165e-02 -2 10000 1 2 total 1.00000e+00 6.87184e-01 -1 10000 2 1 total 1.00000e+00 1.41421e+00 -0 10000 2 2 total 1.00000e+00 4.11303e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.01424e-02 3.14909e-03 -2 10000 1 2 total 0.00000e+00 0.00000e+00 -1 10000 2 1 total 4.54366e-01 2.74255e-02 -0 10000 2 2 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000e+00 4.60705e-02 -0 10000 2 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000e+00 5.14715e-02 -0 10000 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.75152e+07 1.43818e+06 -0 10000 2 total 3.50172e+05 2.99459e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.92392e-02 1.30951e-03 -0 10000 2 total 4.66719e-01 4.14109e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.13738e-01 1.55819e-02 -0 10001 2 total 3.00821e-01 2.80524e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73228e-01 3.31154e-02 -0 10001 2 total 3.12375e-01 4.96058e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73228e-01 3.31154e-02 -0 10001 2 total 3.12375e-01 4.96058e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499e-03 3.22548e-04 -0 10001 2 total 5.40038e-03 6.18138e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499e-03 3.22548e-04 -0 10001 2 total 5.40038e-03 6.18138e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000e+00 0.00000e+00 -0 10001 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000e+00 0.00000e+00 -0 10001 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000e+00 0.00000e+00 -0 10001 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.12163e-01 1.53219e-02 -0 10001 2 total 2.95421e-01 2.74455e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.10121e-01 3.37881e-02 -0 10001 2 total 2.96264e-01 4.37922e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10121e-01 3.37881e-02 -13 10001 1 1 total P1 3.82296e-02 8.48400e-03 -14 10001 1 1 total P2 2.07449e-02 4.69561e-03 -15 10001 1 1 total P3 7.96430e-03 3.73162e-03 -8 10001 1 2 total P0 0.00000e+00 0.00000e+00 -9 10001 1 2 total P1 0.00000e+00 0.00000e+00 -10 10001 1 2 total P2 0.00000e+00 0.00000e+00 -11 10001 1 2 total P3 0.00000e+00 0.00000e+00 -4 10001 2 1 total P0 0.00000e+00 0.00000e+00 -5 10001 2 1 total P1 0.00000e+00 0.00000e+00 -6 10001 2 1 total P2 0.00000e+00 0.00000e+00 -7 10001 2 1 total P3 0.00000e+00 0.00000e+00 -0 10001 2 2 total P0 2.96264e-01 4.37922e-02 -1 10001 2 2 total P1 -1.12136e-02 1.61804e-02 -2 10001 2 2 total P2 8.83657e-03 1.15040e-02 -3 10001 2 2 total P3 -3.27007e-03 7.32885e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10121e-01 3.37881e-02 -13 10001 1 1 total P1 3.82296e-02 8.48400e-03 -14 10001 1 1 total P2 2.07449e-02 4.69561e-03 -15 10001 1 1 total P3 7.96430e-03 3.73162e-03 -8 10001 1 2 total P0 0.00000e+00 0.00000e+00 -9 10001 1 2 total P1 0.00000e+00 0.00000e+00 -10 10001 1 2 total P2 0.00000e+00 0.00000e+00 -11 10001 1 2 total P3 0.00000e+00 0.00000e+00 -4 10001 2 1 total P0 0.00000e+00 0.00000e+00 -5 10001 2 1 total P1 0.00000e+00 0.00000e+00 -6 10001 2 1 total P2 0.00000e+00 0.00000e+00 -7 10001 2 1 total P3 0.00000e+00 0.00000e+00 -0 10001 2 2 total P0 2.96264e-01 4.37922e-02 -1 10001 2 2 total P1 -1.12136e-02 1.61804e-02 -2 10001 2 2 total P2 8.83657e-03 1.15040e-02 -3 10001 2 2 total P3 -3.27007e-03 7.32885e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.00000e+00 1.08779e-01 -2 10001 1 2 total 0.00000e+00 0.00000e+00 -1 10001 2 1 total 0.00000e+00 0.00000e+00 -0 10001 2 2 total 1.00000e+00 1.42427e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.00000e+00 0.00000e+00 -2 10001 1 2 total 0.00000e+00 0.00000e+00 -1 10001 2 1 total 0.00000e+00 0.00000e+00 -0 10001 2 2 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000e+00 0.00000e+00 -0 10001 2 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000e+00 0.00000e+00 -0 10001 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.66778e+07 1.26644e+06 -0 10001 2 total 3.34953e+05 3.83368e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000e+00 0.00000e+00 -0 10001 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.64572e-01 3.12148e-02 -0 10002 2 total 2.05238e+00 2.24343e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565e-01 2.38519e-02 -0 10002 2 total 1.51644e+00 2.35197e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565e-01 2.38519e-02 -0 10002 2 total 1.51644e+00 2.35197e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.90400e-04 4.41476e-05 -0 10002 2 total 3.16873e-02 3.74656e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.90400e-04 4.41476e-05 -0 10002 2 total 3.16873e-02 3.74656e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000e+00 0.00000e+00 -0 10002 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000e+00 0.00000e+00 -0 10002 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000e+00 0.00000e+00 -0 10002 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.63882e-01 3.11727e-02 -0 10002 2 total 2.02070e+00 2.20604e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.71269e-01 2.61864e-02 -0 10002 2 total 2.03539e+00 2.58060e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901e-01 2.47091e-02 -13 10002 1 1 total P1 3.81167e-01 1.62433e-02 -14 10002 1 1 total P2 1.52392e-01 8.15628e-03 -15 10002 1 1 total P3 9.14802e-03 3.88856e-03 -8 10002 1 2 total P0 3.13677e-02 1.72811e-03 -9 10002 1 2 total P1 8.75772e-03 9.25671e-04 -10 10002 1 2 total P2 -2.56790e-03 1.01398e-03 -11 10002 1 2 total P3 -3.78480e-03 8.17076e-04 -4 10002 2 1 total P0 4.43343e-04 4.44850e-04 -5 10002 2 1 total P1 3.99960e-04 4.01320e-04 -6 10002 2 1 total P2 3.19563e-04 3.20649e-04 -7 10002 2 1 total P3 2.13847e-04 2.14574e-04 -0 10002 2 2 total P0 2.03494e+00 2.57800e-01 -1 10002 2 2 total P1 5.09941e-01 5.12359e-02 -2 10002 2 2 total P2 1.11175e-01 1.30198e-02 -3 10002 2 2 total P3 2.49884e-02 8.31235e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901e-01 2.47091e-02 -13 10002 1 1 total P1 3.81167e-01 1.62433e-02 -14 10002 1 1 total P2 1.52392e-01 8.15628e-03 -15 10002 1 1 total P3 9.14802e-03 3.88856e-03 -8 10002 1 2 total P0 3.13677e-02 1.72811e-03 -9 10002 1 2 total P1 8.75772e-03 9.25671e-04 -10 10002 1 2 total P2 -2.56790e-03 1.01398e-03 -11 10002 1 2 total P3 -3.78480e-03 8.17076e-04 -4 10002 2 1 total P0 4.43343e-04 4.44850e-04 -5 10002 2 1 total P1 3.99960e-04 4.01320e-04 -6 10002 2 1 total P2 3.19563e-04 3.20649e-04 -7 10002 2 1 total P3 2.13847e-04 2.14574e-04 -0 10002 2 2 total P0 2.03494e+00 2.57800e-01 -1 10002 2 2 total P1 5.09941e-01 5.12359e-02 -2 10002 2 2 total P2 1.11175e-01 1.30198e-02 -3 10002 2 2 total P3 2.49884e-02 8.31235e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.00000e+00 3.86092e-02 -2 10002 1 2 total 1.00000e+00 6.76673e-02 -1 10002 2 1 total 1.00000e+00 1.41421e+00 -0 10002 2 2 total 1.00000e+00 1.35929e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.00000e+00 0.00000e+00 -2 10002 1 2 total 0.00000e+00 0.00000e+00 -1 10002 2 1 total 0.00000e+00 0.00000e+00 -0 10002 2 2 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000e+00 0.00000e+00 -0 10002 2 total 0.00000e+00 0.00000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000e+00 0.00000e+00 -0 10002 2 total 0.00000e+00 0.00000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.66056e+07 1.04244e+06 -0 10002 2 total 3.28412e+05 3.88284e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000e+00 0.00000e+00 -0 10002 2 total 0.00000e+00 0.00000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.1482549e-01 2.2792909e-02 +0 10000 2 total 6.6016992e-01 4.7518928e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.5685964e-01 2.5493596e-02 +0 10000 2 total 6.4764766e-01 2.3703735e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.5685964e-01 2.5493596e-02 +0 10000 2 total 6.4764766e-01 2.3703735e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.7407845e-02 2.6924971e-03 +0 10000 2 total 2.6451074e-01 2.3367077e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.9844550e-02 2.6433043e-03 +0 10000 2 total 7.1719353e-02 2.5207859e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.5632950e-03 5.0848368e-04 +0 10000 2 total 1.9279139e-01 1.7105922e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.9431740e-02 1.3229756e-03 +0 10000 2 total 4.6977478e-01 4.1682000e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.4745698e+00 9.9235321e-02 +0 10000 2 total 3.7286896e+01 3.3083777e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.8741765e-01 2.0625732e-02 +0 10000 2 total 3.9565918e-01 2.5125057e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.8518839e-01 2.6945621e-02 +0 10000 2 total 4.1238940e-01 1.5425277e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 +13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 +14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 +15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 +8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 +9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 +10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 +11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 +4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 +5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 +6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 +7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 +0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 +1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 +2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 +3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 +13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 +14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 +15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 +8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 +9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 +10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 +11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 +4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 +5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 +6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 +7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 +0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 +1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 +2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 +3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.0000000e+00 7.8516455e-02 +2 10000 1 2 total 1.0000000e+00 6.8718427e-01 +1 10000 2 1 total 1.0000000e+00 1.4142136e+00 +0 10000 2 2 total 1.0000000e+00 4.1130349e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.0142428e-02 3.1490917e-03 +2 10000 1 2 total 0.0000000e+00 0.0000000e+00 +1 10000 2 1 total 4.5436647e-01 2.7425507e-02 +0 10000 2 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.0000000e+00 4.6070523e-02 +0 10000 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.0000000e+00 5.1471457e-02 +0 10000 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.7515211e+07 1.4381753e+06 +0 10000 2 total 3.5017200e+05 2.9945932e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.9239222e-02 1.3095060e-03 +0 10000 2 total 4.6671903e-01 4.1410870e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.1373767e-01 1.5581902e-02 +0 10001 2 total 3.0082140e-01 2.8052448e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.7322787e-01 3.3115366e-02 +0 10001 2 total 3.1237484e-01 4.9605832e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.7322787e-01 3.3115366e-02 +0 10001 2 total 3.1237484e-01 4.9605832e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.5749914e-03 3.2254789e-04 +0 10001 2 total 5.4003788e-03 6.1813831e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.5749914e-03 3.2254789e-04 +0 10001 2 total 5.4003788e-03 6.1813831e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.1216268e-01 1.5321923e-02 +0 10001 2 total 2.9542102e-01 2.7445489e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.1012074e-01 3.3788106e-02 +0 10001 2 total 2.9626427e-01 4.3792226e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 +13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 +14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 +15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 +8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 +9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 +10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 +11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 +4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 +5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 +6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 +7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 +1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 +2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 +3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 +13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 +14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 +15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 +8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 +9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 +10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 +11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 +4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 +5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 +6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 +7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 +1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 +2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 +3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.0000000e+00 1.0877870e-01 +2 10001 1 2 total 0.0000000e+00 0.0000000e+00 +1 10001 2 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total 1.0000000e+00 1.4242717e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.0000000e+00 0.0000000e+00 +2 10001 1 2 total 0.0000000e+00 0.0000000e+00 +1 10001 2 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.6677839e+07 1.2664443e+06 +0 10001 2 total 3.3495337e+05 3.8336782e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.0000000e+00 0.0000000e+00 +0 10001 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.6457226e-01 3.1214752e-02 +0 10002 2 total 2.0523840e+00 2.2434291e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.9056526e-01 2.3851855e-02 +0 10002 2 total 1.5164380e+00 2.3519727e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.9056526e-01 2.3851855e-02 +0 10002 2 total 1.5164380e+00 2.3519727e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.9039952e-04 4.4147569e-05 +0 10002 2 total 3.1687257e-02 3.7465586e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.9039952e-04 4.4147569e-05 +0 10002 2 total 3.1687257e-02 3.7465586e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.6388186e-01 3.1172684e-02 +0 10002 2 total 2.0206968e+00 2.2060445e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.7126920e-01 2.6186371e-02 +0 10002 2 total 2.0353883e+00 2.5806033e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 +13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 +14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 +15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 +8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 +9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 +10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 +11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 +4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 +5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 +6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 +7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 +0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 +1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 +2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 +3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 +13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 +14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 +15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 +8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 +9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 +10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 +11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 +4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 +5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 +6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 +7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 +0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 +1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 +2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 +3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.0000000e+00 3.8609191e-02 +2 10002 1 2 total 1.0000000e+00 6.7667348e-02 +1 10002 2 1 total 1.0000000e+00 1.4142136e+00 +0 10002 2 2 total 1.0000000e+00 1.3592921e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.0000000e+00 0.0000000e+00 +2 10002 1 2 total 0.0000000e+00 0.0000000e+00 +1 10002 2 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.6605563e+07 1.0424355e+06 +0 10002 2 total 3.2841204e+05 3.8828436e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.0000000e+00 0.0000000e+00 +0 10002 2 total 0.0000000e+00 0.0000000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index e8c343cb0f..53f29f1d5f 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -a84cc1ba0556c47dfa13d959e7ca34a4e9855d4c85b60b3503a2f0b367df1bef65df1d535fa852b285075846ecb61050aa42e66ba2b0af3d9c51dc969cc4e6fd \ No newline at end of file +400e4cca1866a1a56b20c3d438a0dd518b069f24ce5f7b29d012d2f5898d36560876ba0ced28e94b1efabd5c9a26560cb9fc85372f7a608dec0ac2e93c558184 \ No newline at end of file diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index b2d96884f3..861edc6ef5 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -059bd780997dc36a315d1a7266296ed511aae2e5c362f7f47b81022a6e4588d6ae0ea06f35893f0efd004e925ee32ea1d284a40cc1a0f861b08391cdf1b0e8a0 \ No newline at end of file +f4f74a0831726a754c8b3f54d97af4ef329dc6a925520599e8a0c07a490c65878ba4cf8023d29971eec02af3a196a0b39c376ef5f7558003b78db2fd6e94b1ef \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 85175d3830..200fddbeb0 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] +[[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]]][[[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] ..., - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]] + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]] - [[0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00] - [0.00000e+00 0.00000e+00 0.00000e+00]]] \ No newline at end of file + [[0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00] + [0.0000000e+00 0.0000000e+00 0.0000000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 2b188cf290..d440a48d78 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation with 6 +# Require numpy and pandas to print output in scientific notation with 8 # significant figures. This is needed to avoid round off error when large # numbers are printed, which can cause tests to fail for different build # configurations. -np.set_printoptions(formatter={'float': '{:.5e}'.format}) -pd.options.display.float_format = '{:.5e}'.format +np.set_printoptions(formatter={'float': '{:.7e}'.format}) +pd.options.display.float_format = '{:.7e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From ccf564ded56bda6e7f376f7c414ff292c9b6a5ee Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 13 Jul 2016 17:59:38 +0000 Subject: [PATCH 44/82] updated multipole test results --- tests/test_multipole/results_true.dat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index eedf9279fa..321e010c68 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -1,12 +1,12 @@ k-combined: -1.457760E+00 1.119659E-02 +1.434998E+00 9.402333E-03 Cell ID = 11 Name = Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.00000e+02 0.00000e+00 7.00000e+02 8.00000e+02] + Temperature = [5.0000000e+02 0.0000000e+00 7.0000000e+02 8.0000000e+02] Translation = None Offset = None Distribcell index= 1 From d67608534b1001f80f89ded795f700dcb6ec2fa9 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 13 Jul 2016 18:09:53 +0000 Subject: [PATCH 45/82] updated results for multipole test with correct multipole library --- tests/test_multipole/results_true.dat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 321e010c68..d65dbd2046 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -1,5 +1,5 @@ k-combined: -1.434998E+00 9.402333E-03 +1.457760E+00 1.119659E-02 Cell ID = 11 Name = From caccebf6d53d58eb68765cc43f36a9aa7008f628 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 13 Jul 2016 18:12:15 +0000 Subject: [PATCH 46/82] changed number of sig figs from 8 to 12 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 320 +++++------ .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 6 +- 9 files changed, 700 insertions(+), 692 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index f8353aa667..8fc2f94033 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.5362442e-01 2.1052696e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.0085218e-01 2.2857554e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.0085218e-01 2.2857554e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.4903456e-02 4.3127612e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.8048066e-02 4.5799637e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.6855390e-02 2.6221598e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.0649290e-02 6.4098745e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.1379551e+00 5.0736381e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.8872097e-01 1.7830429e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.8930356e-01 2.3075539e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 -1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 -2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 -3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.8930356e-01 2.3145605e-02 -1 10000 1 1 total P1 4.6224418e-02 5.9071696e-03 -2 10000 1 1 total P2 1.7983585e-02 2.8829720e-03 -3 10000 1 1 total P3 6.6283735e-03 2.4571090e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.0000000e+00 6.6110820e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.5835019e-02 5.5918249e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.0000000e+00 4.6070523e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.0000000e+00 5.1471457e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.0013087e+06 1.4621656e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.0003978e-02 6.3669079e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.1159411e-01 1.3793168e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.7925506e-01 2.9189501e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.7925506e-01 2.9189501e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.2098464e-03 2.8633413e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.2098464e-03 2.8633413e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.0938426e-01 1.3551267e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.0798735e-01 2.9308089e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 -1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 -2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 -3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.0798735e-01 2.9308089e-02 -1 10001 1 1 total P1 3.0617153e-02 7.4644560e-03 -2 10001 1 1 total P2 1.8911490e-02 4.3228277e-03 -3 10001 1 1 total P3 6.2346182e-03 3.3382023e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.0000000e+00 9.5038722e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.8332612e+06 1.6635517e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.0499883e-01 4.3964488e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.9918398e-01 4.0914120e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.9918398e-01 4.0914120e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.0603412e-03 5.5452442e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.0603412e-03 5.5452442e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.9893849e-01 4.3492984e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.0341466e-01 4.3958737e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 -1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 -2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 -3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.0341466e-01 4.3585994e-02 -1 10002 1 1 total P1 4.1041742e-01 1.5877220e-02 -2 10002 1 1 total P2 1.4330104e-01 7.1873777e-03 -3 10002 1 1 total P3 8.7394263e-03 3.5714413e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.0000000e+00 5.6866725e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.7321997e+06 1.5969143e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.53624422471e-01 2.10526963253e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852177884e-01 2.28575540033e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.00852177884e-01 2.28575540033e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.49034558324e-02 4.31276119955e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.80480660339e-02 4.57996368874e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.68553897985e-02 2.62215977624e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.06492898576e-02 6.40987451703e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.13795513809e+00 5.07363814554e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.88720966639e-01 1.78304285991e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.89303556282e-01 2.30755385726e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 +1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 +2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 +3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 +1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 +2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 +3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.00000000000e+00 6.61108201731e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.58350193370e-02 5.59182486071e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000000e+00 4.60705234720e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.00000000000e+00 5.14714567344e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.00130873975e+06 1.46216555365e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.00039777878e-02 6.36690787427e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.11594108102e-01 1.37931681282e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255063691e-01 2.91895009803e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.79255063691e-01 2.91895009803e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984640163e-03 2.86334126604e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.20984640163e-03 2.86334126604e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.09384261701e-01 1.35512674906e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.07987349445e-01 2.93080885044e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 +1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 +2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 +3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 +1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 +2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 +3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.00000000000e+00 9.50387215070e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.83326115257e+06 1.66355174520e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.04998833317e-01 4.39644875947e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183982700e-01 4.09141196047e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.99183982700e-01 4.09141196047e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034115726e-03 5.54524424276e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.06034115726e-03 5.54524424276e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.98938492160e-01 4.34929841727e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.03414663159e-01 4.39587370764e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 +1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 +2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 +3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 +1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 +2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 +3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.00000000000e+00 5.68667253071e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.73219969947e+06 1.59691426430e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.00000000000e+00 0.00000000000e+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 70c7134536..3e7a512e74 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.1459340e+00 5.5382169e-01 - 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.1891920e-01 5.2064426e-01 - 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.1891920e-01 5.2064426e-01 - 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.9762206e-02 1.0628764e-02 - 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.9762206e-02 1.0628764e-02 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.1261718e+00 5.4344001e-01 - 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.1425469e+00 5.7013139e-01 - 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.1425469e+00 5.7013139e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 - 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.1425469e+00 5.7013139e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.4738129e-01 2.1632217e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.4120179e-01 6.6503773e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.9228270e-02 2.4620832e-02 - 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.0000000e+00 5.2971733e-01 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.0000000e+00 0.0000000e+00 - 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.7424571e+05 4.1639769e+05 - 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.0000000e+00 0.0000000e+00 + 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.14593400053e+00 5.53821694685e-01 + 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.18919198978e-01 5.20644255933e-01 + 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.18919198978e-01 5.20644255933e-01 + 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.97622061146e-02 1.06287640925e-02 + 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.97622061146e-02 1.06287640925e-02 + 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.00000000000e+00 0.00000000000e+00 + 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.00000000000e+00 0.00000000000e+00 + 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.00000000000e+00 0.00000000000e+00 + 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.12617179441e+00 5.43440008398e-01 + 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.14254691911e+00 5.70131389856e-01 + 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.14254691911e+00 5.70131389856e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335e-01 2.16322168307e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415e-01 6.65037725808e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704188e-02 2.46208323203e-02 + 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.14254691911e+00 5.70131389856e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335e-01 2.16322168307e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415e-01 6.65037725808e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704188e-02 2.46208323203e-02 + 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.00000000000e+00 5.29717327374e-01 + 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.00000000000e+00 0.00000000000e+00 + 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.00000000000e+00 0.00000000000e+00 + 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.00000000000e+00 0.00000000000e+00 + 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.74245714482e+05 4.16397691599e+05 + 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.00000000000e+00 0.00000000000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index ca424dc6b7..e02a0d82ab 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,230 @@ domain=10000 type=total -[4.1482549e-01 6.6016992e-01] -[2.2792909e-02 4.7518928e-02] +[4.14825490214e-01 6.60169918628e-01] +[2.27929090938e-02 4.75189279082e-02] domain=10000 type=transport -[3.5685964e-01 6.4764766e-01] -[2.5493596e-02 2.3703735e-02] +[3.56859637119e-01 6.47647660079e-01] +[2.54935955781e-02 2.37037352047e-02] domain=10000 type=nu-transport -[3.5685964e-01 6.4764766e-01] -[2.5493596e-02 2.3703735e-02] +[3.56859637119e-01 6.47647660079e-01] +[2.54935955781e-02 2.37037352047e-02] domain=10000 type=absorption -[2.7407845e-02 2.6451074e-01] -[2.6924971e-03 2.3367077e-02] +[2.74078449200e-02 2.64510741628e-01] +[2.69249710935e-03 2.33670773915e-02] domain=10000 type=capture -[1.9844550e-02 7.1719353e-02] -[2.6433043e-03 2.5207859e-02] +[1.98445499412e-02 7.17193529235e-02] +[2.64330432866e-03 2.52078593512e-02] domain=10000 type=fission -[7.5632950e-03 1.9279139e-01] -[5.0848368e-04 1.7105922e-02] +[7.56329497887e-03 1.92791388704e-01] +[5.08483677909e-04 1.71059218667e-02] domain=10000 type=nu-fission -[1.9431740e-02 4.6977478e-01] -[1.3229756e-03 4.1682000e-02] +[1.94317403720e-02 4.69774777026e-01] +[1.32297561222e-03 4.16819997832e-02] domain=10000 type=kappa-fission -[1.4745698e+00 3.7286896e+01] -[9.9235321e-02 3.3083777e+00] +[1.47456982255e+00 3.72868964072e+01] +[9.92353210963e-02 3.30837772453e+00] domain=10000 type=scatter -[3.8741765e-01 3.9565918e-01] -[2.0625732e-02 2.5125057e-02] +[3.87417645294e-01 3.95659177000e-01] +[2.06257321021e-02 2.51250567894e-02] domain=10000 type=nu-scatter -[3.8518839e-01 4.1238940e-01] -[2.6945621e-02 1.5425277e-02] +[3.85188388202e-01 4.12389399309e-01] +[2.69456210647e-02 1.54252769583e-02] domain=10000 type=scatter matrix -[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] - [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] +[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] + [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 + 2.34290623037e-04]] - [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] - [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] -[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] - [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] + [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 + -1.71497229323e-04] + [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] +[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] + [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] - [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] - [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] + [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] + [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] domain=10000 type=nu-scatter matrix -[[[3.8419946e-01 5.1870284e-02 2.0068845e-02 9.4777157e-03] - [9.8893039e-04 -2.0723460e-04 -1.0336618e-04 2.3429062e-04]] +[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] + [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 + 2.34290623037e-04]] - [[9.2463991e-04 -7.6770497e-04 4.9378887e-04 -1.7149723e-04] - [4.1146476e-01 1.6481728e-02 6.3714905e-03 -1.0499122e-02]]] -[[[2.7001014e-02 6.9825489e-03 2.8464952e-03 2.2335198e-03] - [4.8241945e-04 1.4901078e-04 1.8431631e-04 1.2817311e-04]] + [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 + -1.71497229323e-04] + [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] +[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] + [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] - [[9.2488346e-04 7.6790719e-04 4.9391894e-04 1.7154240e-04] - [1.5244935e-02 4.5017280e-03 1.0550749e-02 1.0438188e-02]]] + [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] + [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] domain=10000 type=multiplicity matrix -[[1.0000000e+00 1.0000000e+00] - [1.0000000e+00 1.0000000e+00]] -[[7.8516455e-02 6.8718427e-01] - [1.4142136e+00 4.1130349e-02]] +[[1.00000000000e+00 1.00000000000e+00] + [1.00000000000e+00 1.00000000000e+00]] +[[7.85164550057e-02 6.87184270936e-01] + [1.41421356237e+00 4.11303488039e-02]] domain=10000 type=nu-fission matrix -[[2.0142428e-02 0.0000000e+00] - [4.5436647e-01 0.0000000e+00]] -[[3.1490917e-03 0.0000000e+00] - [2.7425507e-02 0.0000000e+00]] +[[2.01424281632e-02 0.00000000000e+00] + [4.54366466559e-01 0.00000000000e+00]] +[[3.14909167627e-03 0.00000000000e+00] + [2.74255069249e-02 0.00000000000e+00]] domain=10000 type=chi -[1.0000000e+00 0.0000000e+00] -[4.6070523e-02 0.0000000e+00] +[1.00000000000e+00 0.00000000000e+00] +[4.60705234720e-02 0.00000000000e+00] domain=10000 type=chi-prompt -[1.0000000e+00 0.0000000e+00] -[5.1471457e-02 0.0000000e+00] +[1.00000000000e+00 0.00000000000e+00] +[5.14714567344e-02 0.00000000000e+00] domain=10000 type=velocity -[1.7515211e+07 3.5017200e+05] -[1.4381753e+06 2.9945932e+04] +[1.75152106204e+07 3.50171995194e+05] +[1.43817527390e+06 2.99459316967e+04] domain=10000 type=prompt-nu-fission -[1.9239222e-02 4.6671903e-01] -[1.3095060e-03 4.1410870e-02] +[1.92392215460e-02 4.66719027354e-01] +[1.30950595010e-03 4.14108703995e-02] domain=10001 type=total -[3.1373767e-01 3.0082140e-01] -[1.5581902e-02 2.8052448e-02] +[3.13737670907e-01 3.00821401699e-01] +[1.55819023553e-02 2.80524484312e-02] domain=10001 type=transport -[2.7322787e-01 3.1237484e-01] -[3.3115366e-02 4.9605832e-02] +[2.73227872020e-01 3.12374836218e-01] +[3.31153664433e-02 4.96058317053e-02] domain=10001 type=nu-transport -[2.7322787e-01 3.1237484e-01] -[3.3115366e-02 4.9605832e-02] +[2.73227872020e-01 3.12374836218e-01] +[3.31153664433e-02 4.96058317053e-02] domain=10001 type=absorption -[1.5749914e-03 5.4003788e-03] -[3.2254789e-04 6.1813831e-04] +[1.57499139045e-03 5.40037883216e-03] +[3.22547890697e-04 6.18138308229e-04] domain=10001 type=capture -[1.5749914e-03 5.4003788e-03] -[3.2254789e-04 6.1813831e-04] +[1.57499139045e-03 5.40037883216e-03] +[3.22547890697e-04 6.18138308229e-04] domain=10001 type=fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=kappa-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=scatter -[3.1216268e-01 2.9542102e-01] -[1.5321923e-02 2.7445489e-02] +[3.12162679516e-01 2.95421022866e-01] +[1.53219230918e-02 2.74454888860e-02] domain=10001 type=nu-scatter -[3.1012074e-01 2.9626427e-01] -[3.3788106e-02 4.3792226e-02] +[3.10120735076e-01 2.96264270001e-01] +[3.37881061225e-02 4.37922257327e-02] domain=10001 type=scatter matrix -[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] +[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] -[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 + -3.27006730881e-03]]] +[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] domain=10001 type=nu-scatter matrix -[[[3.1012074e-01 3.8229590e-02 2.0744942e-02 7.9642968e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] +[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [2.9626427e-01 -1.1213636e-02 8.8365663e-03 -3.2700673e-03]]] -[[[3.3788106e-02 8.4839971e-03 4.6956107e-03 3.7316226e-03] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 + -3.27006730881e-03]]] +[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [4.3792226e-02 1.6180366e-02 1.1503964e-02 7.3288458e-03]]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] domain=10001 type=multiplicity matrix -[[1.0000000e+00 0.0000000e+00] - [0.0000000e+00 1.0000000e+00]] -[[1.0877870e-01 0.0000000e+00] - [0.0000000e+00 1.4242717e-01]] +[[1.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 1.00000000000e+00]] +[[1.08778696728e-01 0.00000000000e+00] + [0.00000000000e+00 1.42427173055e-01]] domain=10001 type=nu-fission matrix -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] domain=10001 type=chi -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=chi-prompt -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10001 type=velocity -[1.6677839e+07 3.3495337e+05] -[1.2664443e+06 3.8336782e+04] +[1.66778394974e+07 3.34953367601e+05] +[1.26644430952e+06 3.83367816257e+04] domain=10001 type=prompt-nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=total -[6.6457226e-01 2.0523840e+00] -[3.1214752e-02 2.2434291e-01] +[6.64572260617e-01 2.05238401381e+00] +[3.12147519127e-02 2.24342906705e-01] domain=10002 type=transport -[2.9056526e-01 1.5164380e+00] -[2.3851855e-02 2.3519727e-01] +[2.90565257425e-01 1.51643801275e+00] +[2.38518546437e-02 2.35197268504e-01] domain=10002 type=nu-transport -[2.9056526e-01 1.5164380e+00] -[2.3851855e-02 2.3519727e-01] +[2.90565257425e-01 1.51643801275e+00] +[2.38518546437e-02 2.35197268504e-01] domain=10002 type=absorption -[6.9039952e-04 3.1687257e-02] -[4.4147569e-05 3.7465586e-03] +[6.90399522187e-04 3.16872566141e-02] +[4.41475687059e-05 3.74655858238e-03] domain=10002 type=capture -[6.9039952e-04 3.1687257e-02] -[4.4147569e-05 3.7465586e-03] +[6.90399522187e-04 3.16872566141e-02] +[4.41475687059e-05 3.74655858238e-03] domain=10002 type=fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=kappa-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=scatter -[6.6388186e-01 2.0206968e+00] -[3.1172684e-02 2.2060445e-01] +[6.63881861094e-01 2.02069675720e+00] +[3.11726840046e-02 2.20604453857e-01] domain=10002 type=nu-scatter -[6.7126920e-01 2.0353883e+00] -[2.6186371e-02 2.5806033e-01] +[6.71269204714e-01 2.03538832876e+00] +[2.61863711686e-02 2.58060328563e-01] domain=10002 type=scatter matrix -[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] - [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] +[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] + [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 + -3.78480288187e-03]] - [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] - [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] -[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] - [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] + [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] + [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] +[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] + [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] - [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] - [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] + [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] + [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] domain=10002 type=nu-scatter matrix -[[[6.3990148e-01 3.8116745e-01 1.5239190e-01 9.1480223e-03] - [3.1367720e-02 8.7577232e-03 -2.5679011e-03 -3.7848029e-03]] +[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] + [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 + -3.78480288187e-03]] - [[4.4334313e-04 3.9996041e-04 3.1956271e-04 2.1384697e-04] - [2.0349450e+00 5.0994051e-01 1.1117461e-01 2.4988436e-02]]] -[[[2.4709123e-02 1.6243265e-02 8.1562777e-03 3.8885621e-03] - [1.7281129e-03 9.2567050e-04 1.0139848e-03 8.1707557e-04]] + [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] + [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] +[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] + [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] - [[4.4485039e-04 4.0132018e-04 3.2064914e-04 2.1457400e-04] - [2.5779989e-01 5.1235906e-02 1.3019817e-02 8.3123526e-03]]] + [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] + [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] domain=10002 type=multiplicity matrix -[[1.0000000e+00 1.0000000e+00] - [1.0000000e+00 1.0000000e+00]] -[[3.8609191e-02 6.7667348e-02] - [1.4142136e+00 1.3592921e-01]] +[[1.00000000000e+00 1.00000000000e+00] + [1.00000000000e+00 1.00000000000e+00]] +[[3.86091908369e-02 6.76673479996e-02] + [1.41421356237e+00 1.35929206606e-01]] domain=10002 type=nu-fission matrix -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] -[[0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] +[[0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00]] domain=10002 type=chi -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=chi-prompt -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] domain=10002 type=velocity -[1.6605563e+07 3.2841204e+05] -[1.0424355e+06 3.8828436e+04] +[1.66055628732e+07 3.28412038650e+05] +[1.04243552374e+06 3.88284357298e+04] domain=10002 type=prompt-nu-fission -[0.0000000e+00 0.0000000e+00] -[0.0000000e+00 0.0000000e+00] +[0.00000000000e+00 0.00000000000e+00] +[0.00000000000e+00 0.00000000000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 0e25d3ee82..195cea8ba2 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.1482549e-01 2.2792909e-02 -0 10000 2 total 6.6016992e-01 4.7518928e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.5685964e-01 2.5493596e-02 -0 10000 2 total 6.4764766e-01 2.3703735e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.5685964e-01 2.5493596e-02 -0 10000 2 total 6.4764766e-01 2.3703735e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.7407845e-02 2.6924971e-03 -0 10000 2 total 2.6451074e-01 2.3367077e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.9844550e-02 2.6433043e-03 -0 10000 2 total 7.1719353e-02 2.5207859e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.5632950e-03 5.0848368e-04 -0 10000 2 total 1.9279139e-01 1.7105922e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.9431740e-02 1.3229756e-03 -0 10000 2 total 4.6977478e-01 4.1682000e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.4745698e+00 9.9235321e-02 -0 10000 2 total 3.7286896e+01 3.3083777e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.8741765e-01 2.0625732e-02 -0 10000 2 total 3.9565918e-01 2.5125057e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.8518839e-01 2.6945621e-02 -0 10000 2 total 4.1238940e-01 1.5425277e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 -13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 -14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 -15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 -8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 -9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 -10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 -11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 -4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 -5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 -6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 -7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 -0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 -1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 -2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 -3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.8419946e-01 2.7001014e-02 -13 10000 1 1 total P1 5.1870284e-02 6.9825489e-03 -14 10000 1 1 total P2 2.0068845e-02 2.8464952e-03 -15 10000 1 1 total P3 9.4777157e-03 2.2335198e-03 -8 10000 1 2 total P0 9.8893039e-04 4.8241945e-04 -9 10000 1 2 total P1 -2.0723460e-04 1.4901078e-04 -10 10000 1 2 total P2 -1.0336618e-04 1.8431631e-04 -11 10000 1 2 total P3 2.3429062e-04 1.2817311e-04 -4 10000 2 1 total P0 9.2463991e-04 9.2488346e-04 -5 10000 2 1 total P1 -7.6770497e-04 7.6790719e-04 -6 10000 2 1 total P2 4.9378887e-04 4.9391894e-04 -7 10000 2 1 total P3 -1.7149723e-04 1.7154240e-04 -0 10000 2 2 total P0 4.1146476e-01 1.5244935e-02 -1 10000 2 2 total P1 1.6481728e-02 4.5017280e-03 -2 10000 2 2 total P2 6.3714905e-03 1.0550749e-02 -3 10000 2 2 total P3 -1.0499122e-02 1.0438188e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.0000000e+00 7.8516455e-02 -2 10000 1 2 total 1.0000000e+00 6.8718427e-01 -1 10000 2 1 total 1.0000000e+00 1.4142136e+00 -0 10000 2 2 total 1.0000000e+00 4.1130349e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.0142428e-02 3.1490917e-03 -2 10000 1 2 total 0.0000000e+00 0.0000000e+00 -1 10000 2 1 total 4.5436647e-01 2.7425507e-02 -0 10000 2 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.0000000e+00 4.6070523e-02 -0 10000 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.0000000e+00 5.1471457e-02 -0 10000 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.7515211e+07 1.4381753e+06 -0 10000 2 total 3.5017200e+05 2.9945932e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.9239222e-02 1.3095060e-03 -0 10000 2 total 4.6671903e-01 4.1410870e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.1373767e-01 1.5581902e-02 -0 10001 2 total 3.0082140e-01 2.8052448e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.7322787e-01 3.3115366e-02 -0 10001 2 total 3.1237484e-01 4.9605832e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.7322787e-01 3.3115366e-02 -0 10001 2 total 3.1237484e-01 4.9605832e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.5749914e-03 3.2254789e-04 -0 10001 2 total 5.4003788e-03 6.1813831e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.5749914e-03 3.2254789e-04 -0 10001 2 total 5.4003788e-03 6.1813831e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.1216268e-01 1.5321923e-02 -0 10001 2 total 2.9542102e-01 2.7445489e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.1012074e-01 3.3788106e-02 -0 10001 2 total 2.9626427e-01 4.3792226e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 -13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 -14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 -15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 -8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 -9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 -10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 -11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 -4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 -5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 -6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 -7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 -1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 -2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 -3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.1012074e-01 3.3788106e-02 -13 10001 1 1 total P1 3.8229590e-02 8.4839971e-03 -14 10001 1 1 total P2 2.0744942e-02 4.6956107e-03 -15 10001 1 1 total P3 7.9642968e-03 3.7316226e-03 -8 10001 1 2 total P0 0.0000000e+00 0.0000000e+00 -9 10001 1 2 total P1 0.0000000e+00 0.0000000e+00 -10 10001 1 2 total P2 0.0000000e+00 0.0000000e+00 -11 10001 1 2 total P3 0.0000000e+00 0.0000000e+00 -4 10001 2 1 total P0 0.0000000e+00 0.0000000e+00 -5 10001 2 1 total P1 0.0000000e+00 0.0000000e+00 -6 10001 2 1 total P2 0.0000000e+00 0.0000000e+00 -7 10001 2 1 total P3 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total P0 2.9626427e-01 4.3792226e-02 -1 10001 2 2 total P1 -1.1213636e-02 1.6180366e-02 -2 10001 2 2 total P2 8.8365663e-03 1.1503964e-02 -3 10001 2 2 total P3 -3.2700673e-03 7.3288458e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.0000000e+00 1.0877870e-01 -2 10001 1 2 total 0.0000000e+00 0.0000000e+00 -1 10001 2 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total 1.0000000e+00 1.4242717e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.0000000e+00 0.0000000e+00 -2 10001 1 2 total 0.0000000e+00 0.0000000e+00 -1 10001 2 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.6677839e+07 1.2664443e+06 -0 10001 2 total 3.3495337e+05 3.8336782e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.0000000e+00 0.0000000e+00 -0 10001 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.6457226e-01 3.1214752e-02 -0 10002 2 total 2.0523840e+00 2.2434291e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.9056526e-01 2.3851855e-02 -0 10002 2 total 1.5164380e+00 2.3519727e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.9056526e-01 2.3851855e-02 -0 10002 2 total 1.5164380e+00 2.3519727e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.9039952e-04 4.4147569e-05 -0 10002 2 total 3.1687257e-02 3.7465586e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.9039952e-04 4.4147569e-05 -0 10002 2 total 3.1687257e-02 3.7465586e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.6388186e-01 3.1172684e-02 -0 10002 2 total 2.0206968e+00 2.2060445e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.7126920e-01 2.6186371e-02 -0 10002 2 total 2.0353883e+00 2.5806033e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 -13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 -14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 -15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 -8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 -9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 -10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 -11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 -4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 -5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 -6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 -7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 -0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 -1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 -2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 -3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.3990148e-01 2.4709123e-02 -13 10002 1 1 total P1 3.8116745e-01 1.6243265e-02 -14 10002 1 1 total P2 1.5239190e-01 8.1562777e-03 -15 10002 1 1 total P3 9.1480223e-03 3.8885621e-03 -8 10002 1 2 total P0 3.1367720e-02 1.7281129e-03 -9 10002 1 2 total P1 8.7577232e-03 9.2567050e-04 -10 10002 1 2 total P2 -2.5679011e-03 1.0139848e-03 -11 10002 1 2 total P3 -3.7848029e-03 8.1707557e-04 -4 10002 2 1 total P0 4.4334313e-04 4.4485039e-04 -5 10002 2 1 total P1 3.9996041e-04 4.0132018e-04 -6 10002 2 1 total P2 3.1956271e-04 3.2064914e-04 -7 10002 2 1 total P3 2.1384697e-04 2.1457400e-04 -0 10002 2 2 total P0 2.0349450e+00 2.5779989e-01 -1 10002 2 2 total P1 5.0994051e-01 5.1235906e-02 -2 10002 2 2 total P2 1.1117461e-01 1.3019817e-02 -3 10002 2 2 total P3 2.4988436e-02 8.3123526e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.0000000e+00 3.8609191e-02 -2 10002 1 2 total 1.0000000e+00 6.7667348e-02 -1 10002 2 1 total 1.0000000e+00 1.4142136e+00 -0 10002 2 2 total 1.0000000e+00 1.3592921e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.0000000e+00 0.0000000e+00 -2 10002 1 2 total 0.0000000e+00 0.0000000e+00 -1 10002 2 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.6605563e+07 1.0424355e+06 -0 10002 2 total 3.2841204e+05 3.8828436e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.0000000e+00 0.0000000e+00 -0 10002 2 total 0.0000000e+00 0.0000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.14825490214e-01 2.27929090938e-02 +0 10000 2 total 6.60169918628e-01 4.75189279082e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637119e-01 2.54935955781e-02 +0 10000 2 total 6.47647660079e-01 2.37037352047e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.56859637119e-01 2.54935955781e-02 +0 10000 2 total 6.47647660079e-01 2.37037352047e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.74078449200e-02 2.69249710935e-03 +0 10000 2 total 2.64510741628e-01 2.33670773915e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.98445499412e-02 2.64330432866e-03 +0 10000 2 total 7.17193529235e-02 2.52078593512e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.56329497887e-03 5.08483677909e-04 +0 10000 2 total 1.92791388704e-01 1.71059218667e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.94317403720e-02 1.32297561222e-03 +0 10000 2 total 4.69774777026e-01 4.16819997832e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.47456982255e+00 9.92353210963e-02 +0 10000 2 total 3.72868964072e+01 3.30837772453e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.87417645294e-01 2.06257321021e-02 +0 10000 2 total 3.95659177000e-01 2.51250567894e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.85188388202e-01 2.69456210647e-02 +0 10000 2 total 4.12389399309e-01 1.54252769583e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 +13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 +14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 +15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 +8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 +9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 +10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 +11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 +4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 +5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 +6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 +7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 +0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 +1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 +2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 +3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 +13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 +14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 +15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 +8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 +9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 +10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 +11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 +4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 +5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 +6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 +7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 +0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 +1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 +2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 +3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.00000000000e+00 7.85164550057e-02 +2 10000 1 2 total 1.00000000000e+00 6.87184270936e-01 +1 10000 2 1 total 1.00000000000e+00 1.41421356237e+00 +0 10000 2 2 total 1.00000000000e+00 4.11303488039e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.01424281632e-02 3.14909167627e-03 +2 10000 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10000 2 1 total 4.54366466559e-01 2.74255069249e-02 +0 10000 2 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000000e+00 4.60705234720e-02 +0 10000 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.00000000000e+00 5.14714567344e-02 +0 10000 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.75152106204e+07 1.43817527390e+06 +0 10000 2 total 3.50171995194e+05 2.99459316967e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.92392215460e-02 1.30950595010e-03 +0 10000 2 total 4.66719027354e-01 4.14108703995e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.13737670907e-01 1.55819023553e-02 +0 10001 2 total 3.00821401699e-01 2.80524484312e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872020e-01 3.31153664433e-02 +0 10001 2 total 3.12374836218e-01 4.96058317053e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.73227872020e-01 3.31153664433e-02 +0 10001 2 total 3.12374836218e-01 4.96058317053e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499139045e-03 3.22547890697e-04 +0 10001 2 total 5.40037883216e-03 6.18138308229e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.57499139045e-03 3.22547890697e-04 +0 10001 2 total 5.40037883216e-03 6.18138308229e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.12162679516e-01 1.53219230918e-02 +0 10001 2 total 2.95421022866e-01 2.74454888860e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.10120735076e-01 3.37881061225e-02 +0 10001 2 total 2.96264270001e-01 4.37922257327e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 +13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 +14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 +15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 +8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 +9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 +10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 +11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 +4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 +5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 +6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 +7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 +1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 +2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 +3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 +13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 +14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 +15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 +8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 +9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 +10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 +11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 +4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 +5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 +6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 +7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 +1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 +2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 +3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.00000000000e+00 1.08778696728e-01 +2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total 1.00000000000e+00 1.42427173055e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 +2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.66778394974e+07 1.26644430952e+06 +0 10001 2 total 3.34953367601e+05 3.83367816257e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.00000000000e+00 0.00000000000e+00 +0 10001 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.64572260617e-01 3.12147519127e-02 +0 10002 2 total 2.05238401381e+00 2.24342906705e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257425e-01 2.38518546437e-02 +0 10002 2 total 1.51643801275e+00 2.35197268504e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.90565257425e-01 2.38518546437e-02 +0 10002 2 total 1.51643801275e+00 2.35197268504e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.90399522187e-04 4.41475687059e-05 +0 10002 2 total 3.16872566141e-02 3.74655858238e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.90399522187e-04 4.41475687059e-05 +0 10002 2 total 3.16872566141e-02 3.74655858238e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.63881861094e-01 3.11726840046e-02 +0 10002 2 total 2.02069675720e+00 2.20604453857e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.71269204714e-01 2.61863711686e-02 +0 10002 2 total 2.03538832876e+00 2.58060328563e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 +13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 +14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 +15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 +8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 +9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 +10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 +11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 +4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 +5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 +6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 +7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 +0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 +1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 +2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 +3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 +13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 +14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 +15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 +8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 +9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 +10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 +11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 +4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 +5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 +6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 +7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 +0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 +1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 +2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 +3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.00000000000e+00 3.86091908369e-02 +2 10002 1 2 total 1.00000000000e+00 6.76673479996e-02 +1 10002 2 1 total 1.00000000000e+00 1.41421356237e+00 +0 10002 2 2 total 1.00000000000e+00 1.35929206606e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 +2 10002 1 2 total 0.00000000000e+00 0.00000000000e+00 +1 10002 2 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.66055628732e+07 1.04243552374e+06 +0 10002 2 total 3.28412038650e+05 3.88284357298e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.00000000000e+00 0.00000000000e+00 +0 10002 2 total 0.00000000000e+00 0.00000000000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 53f29f1d5f..045194a2a9 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -400e4cca1866a1a56b20c3d438a0dd518b069f24ce5f7b29d012d2f5898d36560876ba0ced28e94b1efabd5c9a26560cb9fc85372f7a608dec0ac2e93c558184 \ No newline at end of file +4917eb986d1b5cb4b8cbe90fa552966e9bfd5959fe8060426883563ffebc7608264939a3b6593a8d4490626eb6f9cb01ae3e14ab54bdcc71dec801dcb5910b96 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index d65dbd2046..cbb1a86543 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.0000000e+02 0.0000000e+00 7.0000000e+02 8.0000000e+02] + Temperature = [5.00000000000e+02 0.00000000000e+00 7.00000000000e+02 8.00000000000e+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 861edc6ef5..fc59cf8781 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -f4f74a0831726a754c8b3f54d97af4ef329dc6a925520599e8a0c07a490c65878ba4cf8023d29971eec02af3a196a0b39c376ef5f7558003b78db2fd6e94b1ef \ No newline at end of file +a5f4e33b524869a787ef66b94bb60f987d61c7d6335146356b4d498383723643fe9b7ffac74cf45d481add6fee05a62b54fc3ab2e21c259fbda2e8ec58b2df15 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 200fddbeb0..369c061d41 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] +[[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]]][[[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] ..., - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]] + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] - [[0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00] - [0.0000000e+00 0.0000000e+00 0.0000000e+00]]] \ No newline at end of file + [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] + [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index d440a48d78..e0add432af 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation with 8 +# Require numpy and pandas to print output in scientific notation with 12 # significant figures. This is needed to avoid round off error when large # numbers are printed, which can cause tests to fail for different build # configurations. -np.set_printoptions(formatter={'float': '{:.7e}'.format}) -pd.options.display.float_format = '{:.7e}'.format +np.set_printoptions(formatter={'float': '{:.11e}'.format}) +pd.options.display.float_format = '{:.11e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From fce90d22b7b59021115a7a7a6bd1540aa48742d0 Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Wed, 13 Jul 2016 18:23:28 +0000 Subject: [PATCH 47/82] changed number of sig figs from 12 to 7 --- .../results_true.dat | 252 ++++----- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/results_true.dat | 320 ++++++----- .../results_true.dat | 516 +++++++++--------- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 6 +- 9 files changed, 692 insertions(+), 700 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 8fc2f94033..fbdab856f8 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.53624422471e-01 2.10526963253e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852177884e-01 2.28575540033e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.00852177884e-01 2.28575540033e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.49034558324e-02 4.31276119955e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.80480660339e-02 4.57996368874e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.68553897985e-02 2.62215977624e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.06492898576e-02 6.40987451703e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.13795513809e+00 5.07363814554e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.88720966639e-01 1.78304285991e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.89303556282e-01 2.30755385726e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 -1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 -2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 -3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.89303556282e-01 2.31456046242e-02 -1 10000 1 1 total P1 4.62244178314e-02 5.90716955682e-03 -2 10000 1 1 total P2 1.79835850203e-02 2.88297198167e-03 -3 10000 1 1 total P3 6.62837351395e-03 2.45710898378e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.00000000000e+00 6.61108201731e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.58350193370e-02 5.59182486071e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000000e+00 4.60705234720e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.00000000000e+00 5.14714567344e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.00130873975e+06 1.46216555365e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.00039777878e-02 6.36690787427e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.11594108102e-01 1.37931681282e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255063691e-01 2.91895009803e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.79255063691e-01 2.91895009803e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984640163e-03 2.86334126604e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.20984640163e-03 2.86334126604e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.09384261701e-01 1.35512674906e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.07987349445e-01 2.93080885044e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 -1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 -2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 -3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.07987349445e-01 2.93080885044e-02 -1 10001 1 1 total P1 3.06171532535e-02 7.46445601186e-03 -2 10001 1 1 total P2 1.89114904073e-02 4.32282773240e-03 -3 10001 1 1 total P3 6.23461818721e-03 3.33820228054e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.00000000000e+00 9.50387215070e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.83326115257e+06 1.66355174520e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.04998833317e-01 4.39644875947e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183982700e-01 4.09141196047e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.99183982700e-01 4.09141196047e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034115726e-03 5.54524424276e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.06034115726e-03 5.54524424276e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.98938492160e-01 4.34929841727e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.03414663159e-01 4.39587370764e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 -1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 -2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 -3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.03414663159e-01 4.35859938035e-02 -1 10002 1 1 total P1 4.10417418590e-01 1.58772201944e-02 -2 10002 1 1 total P2 1.43301036475e-01 7.18737766348e-03 -3 10002 1 1 total P3 8.73942634056e-03 3.57144134504e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.00000000000e+00 5.68667253071e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.73219969947e+06 1.59691426430e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 4.536244e-01 2.105270e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008522e-01 2.285755e-02 + material group in nuclide mean std. dev. +0 10000 1 total 4.008522e-01 2.285755e-02 + material group in nuclide mean std. dev. +0 10000 1 total 6.490346e-02 4.312761e-03 + material group in nuclide mean std. dev. +0 10000 1 total 2.804807e-02 4.579964e-03 + material group in nuclide mean std. dev. +0 10000 1 total 3.685539e-02 2.622160e-03 + material group in nuclide mean std. dev. +0 10000 1 total 9.064929e-02 6.409875e-03 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955e+00 5.073638e-01 + material group in nuclide mean std. dev. +0 10000 1 total 3.887210e-01 1.783043e-02 + material group in nuclide mean std. dev. +0 10000 1 total 3.893036e-01 2.307554e-02 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893036e-01 2.314560e-02 +1 10000 1 1 total P1 4.622442e-02 5.907170e-03 +2 10000 1 1 total P2 1.798359e-02 2.882972e-03 +3 10000 1 1 total P3 6.628374e-03 2.457109e-03 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 3.893036e-01 2.314560e-02 +1 10000 1 1 total P1 4.622442e-02 5.907170e-03 +2 10000 1 1 total P2 1.798359e-02 2.882972e-03 +3 10000 1 1 total P3 6.628374e-03 2.457109e-03 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1.000000e+00 6.611082e-02 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 8.583502e-02 5.591825e-03 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000e+00 4.607052e-02 + material group out nuclide mean std. dev. +0 10000 1 total 1.000000e+00 5.147146e-02 + material group in nuclide mean std. dev. +0 10000 1 total 2.001309e+06 1.462166e+05 + material group in nuclide mean std. dev. +0 10000 1 total 9.000398e-02 6.366908e-03 + material group in nuclide mean std. dev. +0 10001 1 total 3.115941e-01 1.379317e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792551e-01 2.918950e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.792551e-01 2.918950e-02 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846e-03 2.863341e-04 + material group in nuclide mean std. dev. +0 10001 1 total 2.209846e-03 2.863341e-04 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 3.093843e-01 1.355127e-02 + material group in nuclide mean std. dev. +0 10001 1 total 3.079873e-01 2.930809e-02 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873e-01 2.930809e-02 +1 10001 1 1 total P1 3.061715e-02 7.464456e-03 +2 10001 1 1 total P2 1.891149e-02 4.322828e-03 +3 10001 1 1 total P3 6.234618e-03 3.338202e-03 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 3.079873e-01 2.930809e-02 +1 10001 1 1 total P1 3.061715e-02 7.464456e-03 +2 10001 1 1 total P2 1.891149e-02 4.322828e-03 +3 10001 1 1 total P3 6.234618e-03 3.338202e-03 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1.000000e+00 9.503872e-02 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10001 1 total 1.833261e+06 1.663552e+05 + material group in nuclide mean std. dev. +0 10001 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 9.049988e-01 4.396449e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991840e-01 4.091412e-02 + material group in nuclide mean std. dev. +0 10002 1 total 4.991840e-01 4.091412e-02 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341e-03 5.545244e-04 + material group in nuclide mean std. dev. +0 10002 1 total 6.060341e-03 5.545244e-04 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 8.989385e-01 4.349298e-02 + material group in nuclide mean std. dev. +0 10002 1 total 9.034147e-01 4.395874e-02 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034147e-01 4.358599e-02 +1 10002 1 1 total P1 4.104174e-01 1.587722e-02 +2 10002 1 1 total P2 1.433010e-01 7.187378e-03 +3 10002 1 1 total P3 8.739426e-03 3.571441e-03 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 9.034147e-01 4.358599e-02 +1 10002 1 1 total P1 4.104174e-01 1.587722e-02 +2 10002 1 1 total P2 1.433010e-01 7.187378e-03 +3 10002 1 1 total P3 8.739426e-03 3.571441e-03 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1.000000e+00 5.686673e-02 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10002 1 total 1.732200e+06 1.596914e+05 + material group in nuclide mean std. dev. +0 10002 1 total 0.000000e+00 0.000000e+00 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 3e7a512e74..7b66c39e49 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.14593400053e+00 5.53821694685e-01 - 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.18919198978e-01 5.20644255933e-01 - 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.18919198978e-01 5.20644255933e-01 - 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.97622061146e-02 1.06287640925e-02 - 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.97622061146e-02 1.06287640925e-02 - 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.00000000000e+00 0.00000000000e+00 - 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.00000000000e+00 0.00000000000e+00 - 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.00000000000e+00 0.00000000000e+00 - 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.12617179441e+00 5.43440008398e-01 - 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.14254691911e+00 5.70131389856e-01 - 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.14254691911e+00 5.70131389856e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335e-01 2.16322168307e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415e-01 6.65037725808e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704188e-02 2.46208323203e-02 - 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.14254691911e+00 5.70131389856e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.47381294335e-01 2.16322168307e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.41201793415e-01 6.65037725808e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.92282704188e-02 2.46208323203e-02 - 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.00000000000e+00 5.29717327374e-01 - 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.00000000000e+00 0.00000000000e+00 - 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.00000000000e+00 0.00000000000e+00 - 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.00000000000e+00 0.00000000000e+00 - 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.74245714482e+05 4.16397691599e+05 - 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.00000000000e+00 0.00000000000e+00 + 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.145934e+00 5.538217e-01 + 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.189192e-01 5.206443e-01 + 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.189192e-01 5.206443e-01 + 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.976221e-02 1.062876e-02 + 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.976221e-02 1.062876e-02 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.126172e+00 5.434400e-01 + 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.142547e+00 5.701314e-01 + 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.142547e+00 5.701314e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 + 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.142547e+00 5.701314e-01 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 + 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.000000e+00 5.297173e-01 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.000000e+00 0.000000e+00 + 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.742457e+05 4.163977e+05 + 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.000000e+00 0.000000e+00 diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index e02a0d82ab..3160e850fd 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,230 +1,222 @@ domain=10000 type=total -[4.14825490214e-01 6.60169918628e-01] -[2.27929090938e-02 4.75189279082e-02] +[4.148255e-01 6.601699e-01] +[2.279291e-02 4.751893e-02] domain=10000 type=transport -[3.56859637119e-01 6.47647660079e-01] -[2.54935955781e-02 2.37037352047e-02] +[3.568596e-01 6.476477e-01] +[2.549360e-02 2.370374e-02] domain=10000 type=nu-transport -[3.56859637119e-01 6.47647660079e-01] -[2.54935955781e-02 2.37037352047e-02] +[3.568596e-01 6.476477e-01] +[2.549360e-02 2.370374e-02] domain=10000 type=absorption -[2.74078449200e-02 2.64510741628e-01] -[2.69249710935e-03 2.33670773915e-02] +[2.740784e-02 2.645107e-01] +[2.692497e-03 2.336708e-02] domain=10000 type=capture -[1.98445499412e-02 7.17193529235e-02] -[2.64330432866e-03 2.52078593512e-02] +[1.984455e-02 7.171935e-02] +[2.643304e-03 2.520786e-02] domain=10000 type=fission -[7.56329497887e-03 1.92791388704e-01] -[5.08483677909e-04 1.71059218667e-02] +[7.563295e-03 1.927914e-01] +[5.084837e-04 1.710592e-02] domain=10000 type=nu-fission -[1.94317403720e-02 4.69774777026e-01] -[1.32297561222e-03 4.16819997832e-02] +[1.943174e-02 4.697748e-01] +[1.322976e-03 4.168200e-02] domain=10000 type=kappa-fission -[1.47456982255e+00 3.72868964072e+01] -[9.92353210963e-02 3.30837772453e+00] +[1.474570e+00 3.728690e+01] +[9.923532e-02 3.308378e+00] domain=10000 type=scatter -[3.87417645294e-01 3.95659177000e-01] -[2.06257321021e-02 2.51250567894e-02] +[3.874176e-01 3.956592e-01] +[2.062573e-02 2.512506e-02] domain=10000 type=nu-scatter -[3.85188388202e-01 4.12389399309e-01] -[2.69456210647e-02 1.54252769583e-02] +[3.851884e-01 4.123894e-01] +[2.694562e-02 1.542528e-02] domain=10000 type=scatter matrix -[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] - [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 - 2.34290623037e-04]] +[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] + [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] - [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 - -1.71497229323e-04] - [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] -[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] - [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] + [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] + [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] +[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] + [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] - [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] - [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] + [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] + [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] domain=10000 type=nu-scatter matrix -[[[3.84199457809e-01 5.18702843460e-02 2.00688453200e-02 9.47771570559e-03] - [9.88930393331e-04 -2.07234596475e-04 -1.03366180541e-04 - 2.34290623037e-04]] +[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] + [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] - [[9.24639908764e-04 -7.67704968439e-04 4.93788871844e-04 - -1.71497229323e-04] - [4.11464759400e-01 1.64817280067e-02 6.37149049282e-03 -1.04991220898e-02]]] -[[[2.70010135610e-02 6.98254887613e-03 2.84649518329e-03 2.23351977181e-03] - [4.82419445120e-04 1.49010775362e-04 1.84316311924e-04 1.28173110834e-04]] + [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] + [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] +[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] + [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] - [[9.24883463644e-04 7.67907185854e-04 4.93918938358e-04 1.71542402570e-04] - [1.52449353958e-02 4.50172796078e-03 1.05507493414e-02 1.04381877194e-02]]] + [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] + [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] domain=10000 type=multiplicity matrix -[[1.00000000000e+00 1.00000000000e+00] - [1.00000000000e+00 1.00000000000e+00]] -[[7.85164550057e-02 6.87184270936e-01] - [1.41421356237e+00 4.11303488039e-02]] +[[1.000000e+00 1.000000e+00] + [1.000000e+00 1.000000e+00]] +[[7.851646e-02 6.871843e-01] + [1.414214e+00 4.113035e-02]] domain=10000 type=nu-fission matrix -[[2.01424281632e-02 0.00000000000e+00] - [4.54366466559e-01 0.00000000000e+00]] -[[3.14909167627e-03 0.00000000000e+00] - [2.74255069249e-02 0.00000000000e+00]] +[[2.014243e-02 0.000000e+00] + [4.543665e-01 0.000000e+00]] +[[3.149092e-03 0.000000e+00] + [2.742551e-02 0.000000e+00]] domain=10000 type=chi -[1.00000000000e+00 0.00000000000e+00] -[4.60705234720e-02 0.00000000000e+00] +[1.000000e+00 0.000000e+00] +[4.607052e-02 0.000000e+00] domain=10000 type=chi-prompt -[1.00000000000e+00 0.00000000000e+00] -[5.14714567344e-02 0.00000000000e+00] +[1.000000e+00 0.000000e+00] +[5.147146e-02 0.000000e+00] domain=10000 type=velocity -[1.75152106204e+07 3.50171995194e+05] -[1.43817527390e+06 2.99459316967e+04] +[1.751521e+07 3.501720e+05] +[1.438175e+06 2.994593e+04] domain=10000 type=prompt-nu-fission -[1.92392215460e-02 4.66719027354e-01] -[1.30950595010e-03 4.14108703995e-02] +[1.923922e-02 4.667190e-01] +[1.309506e-03 4.141087e-02] domain=10001 type=total -[3.13737670907e-01 3.00821401699e-01] -[1.55819023553e-02 2.80524484312e-02] +[3.137377e-01 3.008214e-01] +[1.558190e-02 2.805245e-02] domain=10001 type=transport -[2.73227872020e-01 3.12374836218e-01] -[3.31153664433e-02 4.96058317053e-02] +[2.732279e-01 3.123748e-01] +[3.311537e-02 4.960583e-02] domain=10001 type=nu-transport -[2.73227872020e-01 3.12374836218e-01] -[3.31153664433e-02 4.96058317053e-02] +[2.732279e-01 3.123748e-01] +[3.311537e-02 4.960583e-02] domain=10001 type=absorption -[1.57499139045e-03 5.40037883216e-03] -[3.22547890697e-04 6.18138308229e-04] +[1.574991e-03 5.400379e-03] +[3.225479e-04 6.181383e-04] domain=10001 type=capture -[1.57499139045e-03 5.40037883216e-03] -[3.22547890697e-04 6.18138308229e-04] +[1.574991e-03 5.400379e-03] +[3.225479e-04 6.181383e-04] domain=10001 type=fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=kappa-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=scatter -[3.12162679516e-01 2.95421022866e-01] -[1.53219230918e-02 2.74454888860e-02] +[3.121627e-01 2.954210e-01] +[1.532192e-02 2.744549e-02] domain=10001 type=nu-scatter -[3.10120735076e-01 2.96264270001e-01] -[3.37881061225e-02 4.37922257327e-02] +[3.101207e-01 2.962643e-01] +[3.378811e-02 4.379223e-02] domain=10001 type=scatter matrix -[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] +[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 - -3.27006730881e-03]]] -[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] +[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] domain=10001 type=nu-scatter matrix -[[[3.10120735076e-01 3.82295903624e-02 2.07449419697e-02 7.96429677175e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] +[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [2.96264270001e-01 -1.12136361341e-02 8.83656629804e-03 - -3.27006730881e-03]]] -[[[3.37881061225e-02 8.48399710345e-03 4.69561067742e-03 3.73162260999e-03] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] +[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [4.37922257327e-02 1.61803664886e-02 1.15039644588e-02 7.32884580152e-03]]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] domain=10001 type=multiplicity matrix -[[1.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 1.00000000000e+00]] -[[1.08778696728e-01 0.00000000000e+00] - [0.00000000000e+00 1.42427173055e-01]] +[[1.000000e+00 0.000000e+00] + [0.000000e+00 1.000000e+00]] +[[1.087787e-01 0.000000e+00] + [0.000000e+00 1.424272e-01]] domain=10001 type=nu-fission matrix -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] domain=10001 type=chi -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=chi-prompt -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10001 type=velocity -[1.66778394974e+07 3.34953367601e+05] -[1.26644430952e+06 3.83367816257e+04] +[1.667784e+07 3.349534e+05] +[1.266444e+06 3.833678e+04] domain=10001 type=prompt-nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=total -[6.64572260617e-01 2.05238401381e+00] -[3.12147519127e-02 2.24342906705e-01] +[6.645723e-01 2.052384e+00] +[3.121475e-02 2.243429e-01] domain=10002 type=transport -[2.90565257425e-01 1.51643801275e+00] -[2.38518546437e-02 2.35197268504e-01] +[2.905653e-01 1.516438e+00] +[2.385185e-02 2.351973e-01] domain=10002 type=nu-transport -[2.90565257425e-01 1.51643801275e+00] -[2.38518546437e-02 2.35197268504e-01] +[2.905653e-01 1.516438e+00] +[2.385185e-02 2.351973e-01] domain=10002 type=absorption -[6.90399522187e-04 3.16872566141e-02] -[4.41475687059e-05 3.74655858238e-03] +[6.903995e-04 3.168726e-02] +[4.414757e-05 3.746559e-03] domain=10002 type=capture -[6.90399522187e-04 3.16872566141e-02] -[4.41475687059e-05 3.74655858238e-03] +[6.903995e-04 3.168726e-02] +[4.414757e-05 3.746559e-03] domain=10002 type=fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=kappa-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=scatter -[6.63881861094e-01 2.02069675720e+00] -[3.11726840046e-02 2.20604453857e-01] +[6.638819e-01 2.020697e+00] +[3.117268e-02 2.206045e-01] domain=10002 type=nu-scatter -[6.71269204714e-01 2.03538832876e+00] -[2.61863711686e-02 2.58060328563e-01] +[6.712692e-01 2.035388e+00] +[2.618637e-02 2.580603e-01] domain=10002 type=scatter matrix -[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] - [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 - -3.78480288187e-03]] +[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] + [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] - [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] - [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] -[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] - [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] + [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] + [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] +[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] + [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] - [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] - [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] + [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] + [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] domain=10002 type=nu-scatter matrix -[[[6.39901484868e-01 3.81167448865e-01 1.52391897805e-01 9.14802228847e-03] - [3.13677198465e-02 8.75772320612e-03 -2.56790105967e-03 - -3.78480288187e-03]] +[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] + [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] - [[4.43343134122e-04 3.99960414260e-04 3.19562707240e-04 2.13846969230e-04] - [2.03494498562e+00 5.09940513161e-01 1.11174608804e-01 2.49884357394e-02]]] -[[[2.47091227977e-02 1.62432649213e-02 8.15627770336e-03 3.88856214164e-03] - [1.72811290328e-03 9.25670501198e-04 1.01398475208e-03 8.17075570852e-04]] + [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] + [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] +[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] + [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] - [[4.44850393331e-04 4.01320182735e-04 3.20649142996e-04 2.14573997098e-04] - [2.57799888924e-01 5.12359062971e-02 1.30198170388e-02 8.31235256236e-03]]] + [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] + [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] domain=10002 type=multiplicity matrix -[[1.00000000000e+00 1.00000000000e+00] - [1.00000000000e+00 1.00000000000e+00]] -[[3.86091908369e-02 6.76673479996e-02] - [1.41421356237e+00 1.35929206606e-01]] +[[1.000000e+00 1.000000e+00] + [1.000000e+00 1.000000e+00]] +[[3.860919e-02 6.766735e-02] + [1.414214e+00 1.359292e-01]] domain=10002 type=nu-fission matrix -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] -[[0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] +[[0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00]] domain=10002 type=chi -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=chi-prompt -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] domain=10002 type=velocity -[1.66055628732e+07 3.28412038650e+05] -[1.04243552374e+06 3.88284357298e+04] +[1.660556e+07 3.284120e+05] +[1.042436e+06 3.882844e+04] domain=10002 type=prompt-nu-fission -[0.00000000000e+00 0.00000000000e+00] -[0.00000000000e+00 0.00000000000e+00] +[0.000000e+00 0.000000e+00] +[0.000000e+00 0.000000e+00] diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 195cea8ba2..fc42ccf494 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.14825490214e-01 2.27929090938e-02 -0 10000 2 total 6.60169918628e-01 4.75189279082e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637119e-01 2.54935955781e-02 -0 10000 2 total 6.47647660079e-01 2.37037352047e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.56859637119e-01 2.54935955781e-02 -0 10000 2 total 6.47647660079e-01 2.37037352047e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.74078449200e-02 2.69249710935e-03 -0 10000 2 total 2.64510741628e-01 2.33670773915e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.98445499412e-02 2.64330432866e-03 -0 10000 2 total 7.17193529235e-02 2.52078593512e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.56329497887e-03 5.08483677909e-04 -0 10000 2 total 1.92791388704e-01 1.71059218667e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.94317403720e-02 1.32297561222e-03 -0 10000 2 total 4.69774777026e-01 4.16819997832e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.47456982255e+00 9.92353210963e-02 -0 10000 2 total 3.72868964072e+01 3.30837772453e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.87417645294e-01 2.06257321021e-02 -0 10000 2 total 3.95659177000e-01 2.51250567894e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.85188388202e-01 2.69456210647e-02 -0 10000 2 total 4.12389399309e-01 1.54252769583e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 -13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 -14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 -15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 -8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 -9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 -10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 -11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 -4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 -5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 -6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 -7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 -0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 -1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 -2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 -3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.84199457809e-01 2.70010135610e-02 -13 10000 1 1 total P1 5.18702843460e-02 6.98254887613e-03 -14 10000 1 1 total P2 2.00688453200e-02 2.84649518329e-03 -15 10000 1 1 total P3 9.47771570559e-03 2.23351977181e-03 -8 10000 1 2 total P0 9.88930393331e-04 4.82419445120e-04 -9 10000 1 2 total P1 -2.07234596475e-04 1.49010775362e-04 -10 10000 1 2 total P2 -1.03366180541e-04 1.84316311924e-04 -11 10000 1 2 total P3 2.34290623037e-04 1.28173110834e-04 -4 10000 2 1 total P0 9.24639908764e-04 9.24883463644e-04 -5 10000 2 1 total P1 -7.67704968439e-04 7.67907185854e-04 -6 10000 2 1 total P2 4.93788871844e-04 4.93918938358e-04 -7 10000 2 1 total P3 -1.71497229323e-04 1.71542402570e-04 -0 10000 2 2 total P0 4.11464759400e-01 1.52449353958e-02 -1 10000 2 2 total P1 1.64817280067e-02 4.50172796078e-03 -2 10000 2 2 total P2 6.37149049282e-03 1.05507493414e-02 -3 10000 2 2 total P3 -1.04991220898e-02 1.04381877194e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.00000000000e+00 7.85164550057e-02 -2 10000 1 2 total 1.00000000000e+00 6.87184270936e-01 -1 10000 2 1 total 1.00000000000e+00 1.41421356237e+00 -0 10000 2 2 total 1.00000000000e+00 4.11303488039e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.01424281632e-02 3.14909167627e-03 -2 10000 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10000 2 1 total 4.54366466559e-01 2.74255069249e-02 -0 10000 2 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000000e+00 4.60705234720e-02 -0 10000 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.00000000000e+00 5.14714567344e-02 -0 10000 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.75152106204e+07 1.43817527390e+06 -0 10000 2 total 3.50171995194e+05 2.99459316967e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.92392215460e-02 1.30950595010e-03 -0 10000 2 total 4.66719027354e-01 4.14108703995e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.13737670907e-01 1.55819023553e-02 -0 10001 2 total 3.00821401699e-01 2.80524484312e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872020e-01 3.31153664433e-02 -0 10001 2 total 3.12374836218e-01 4.96058317053e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.73227872020e-01 3.31153664433e-02 -0 10001 2 total 3.12374836218e-01 4.96058317053e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499139045e-03 3.22547890697e-04 -0 10001 2 total 5.40037883216e-03 6.18138308229e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.57499139045e-03 3.22547890697e-04 -0 10001 2 total 5.40037883216e-03 6.18138308229e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.12162679516e-01 1.53219230918e-02 -0 10001 2 total 2.95421022866e-01 2.74454888860e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.10120735076e-01 3.37881061225e-02 -0 10001 2 total 2.96264270001e-01 4.37922257327e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 -13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 -14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 -15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 -8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 -9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 -10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 -11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 -4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 -5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 -6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 -7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 -1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 -2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 -3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.10120735076e-01 3.37881061225e-02 -13 10001 1 1 total P1 3.82295903624e-02 8.48399710345e-03 -14 10001 1 1 total P2 2.07449419697e-02 4.69561067742e-03 -15 10001 1 1 total P3 7.96429677175e-03 3.73162260999e-03 -8 10001 1 2 total P0 0.00000000000e+00 0.00000000000e+00 -9 10001 1 2 total P1 0.00000000000e+00 0.00000000000e+00 -10 10001 1 2 total P2 0.00000000000e+00 0.00000000000e+00 -11 10001 1 2 total P3 0.00000000000e+00 0.00000000000e+00 -4 10001 2 1 total P0 0.00000000000e+00 0.00000000000e+00 -5 10001 2 1 total P1 0.00000000000e+00 0.00000000000e+00 -6 10001 2 1 total P2 0.00000000000e+00 0.00000000000e+00 -7 10001 2 1 total P3 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total P0 2.96264270001e-01 4.37922257327e-02 -1 10001 2 2 total P1 -1.12136361341e-02 1.61803664886e-02 -2 10001 2 2 total P2 8.83656629804e-03 1.15039644588e-02 -3 10001 2 2 total P3 -3.27006730881e-03 7.32884580152e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.00000000000e+00 1.08778696728e-01 -2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total 1.00000000000e+00 1.42427173055e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.00000000000e+00 0.00000000000e+00 -2 10001 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10001 2 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.66778394974e+07 1.26644430952e+06 -0 10001 2 total 3.34953367601e+05 3.83367816257e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.00000000000e+00 0.00000000000e+00 -0 10001 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.64572260617e-01 3.12147519127e-02 -0 10002 2 total 2.05238401381e+00 2.24342906705e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257425e-01 2.38518546437e-02 -0 10002 2 total 1.51643801275e+00 2.35197268504e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.90565257425e-01 2.38518546437e-02 -0 10002 2 total 1.51643801275e+00 2.35197268504e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.90399522187e-04 4.41475687059e-05 -0 10002 2 total 3.16872566141e-02 3.74655858238e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.90399522187e-04 4.41475687059e-05 -0 10002 2 total 3.16872566141e-02 3.74655858238e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.63881861094e-01 3.11726840046e-02 -0 10002 2 total 2.02069675720e+00 2.20604453857e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.71269204714e-01 2.61863711686e-02 -0 10002 2 total 2.03538832876e+00 2.58060328563e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 -13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 -14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 -15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 -8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 -9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 -10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 -11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 -4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 -5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 -6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 -7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 -0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 -1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 -2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 -3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.39901484868e-01 2.47091227977e-02 -13 10002 1 1 total P1 3.81167448865e-01 1.62432649213e-02 -14 10002 1 1 total P2 1.52391897805e-01 8.15627770336e-03 -15 10002 1 1 total P3 9.14802228847e-03 3.88856214164e-03 -8 10002 1 2 total P0 3.13677198465e-02 1.72811290328e-03 -9 10002 1 2 total P1 8.75772320612e-03 9.25670501198e-04 -10 10002 1 2 total P2 -2.56790105967e-03 1.01398475208e-03 -11 10002 1 2 total P3 -3.78480288187e-03 8.17075570852e-04 -4 10002 2 1 total P0 4.43343134122e-04 4.44850393331e-04 -5 10002 2 1 total P1 3.99960414260e-04 4.01320182735e-04 -6 10002 2 1 total P2 3.19562707240e-04 3.20649142996e-04 -7 10002 2 1 total P3 2.13846969230e-04 2.14573997098e-04 -0 10002 2 2 total P0 2.03494498562e+00 2.57799888924e-01 -1 10002 2 2 total P1 5.09940513161e-01 5.12359062971e-02 -2 10002 2 2 total P2 1.11174608804e-01 1.30198170388e-02 -3 10002 2 2 total P3 2.49884357394e-02 8.31235256236e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.00000000000e+00 3.86091908369e-02 -2 10002 1 2 total 1.00000000000e+00 6.76673479996e-02 -1 10002 2 1 total 1.00000000000e+00 1.41421356237e+00 -0 10002 2 2 total 1.00000000000e+00 1.35929206606e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.00000000000e+00 0.00000000000e+00 -2 10002 1 2 total 0.00000000000e+00 0.00000000000e+00 -1 10002 2 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.66055628732e+07 1.04243552374e+06 -0 10002 2 total 3.28412038650e+05 3.88284357298e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.00000000000e+00 0.00000000000e+00 -0 10002 2 total 0.00000000000e+00 0.00000000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 4.148255e-01 2.279291e-02 +0 10000 2 total 6.601699e-01 4.751893e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596e-01 2.549360e-02 +0 10000 2 total 6.476477e-01 2.370374e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.568596e-01 2.549360e-02 +0 10000 2 total 6.476477e-01 2.370374e-02 + material group in nuclide mean std. dev. +1 10000 1 total 2.740784e-02 2.692497e-03 +0 10000 2 total 2.645107e-01 2.336708e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.984455e-02 2.643304e-03 +0 10000 2 total 7.171935e-02 2.520786e-02 + material group in nuclide mean std. dev. +1 10000 1 total 7.563295e-03 5.084837e-04 +0 10000 2 total 1.927914e-01 1.710592e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.943174e-02 1.322976e-03 +0 10000 2 total 4.697748e-01 4.168200e-02 + material group in nuclide mean std. dev. +1 10000 1 total 1.474570e+00 9.923532e-02 +0 10000 2 total 3.728690e+01 3.308378e+00 + material group in nuclide mean std. dev. +1 10000 1 total 3.874176e-01 2.062573e-02 +0 10000 2 total 3.956592e-01 2.512506e-02 + material group in nuclide mean std. dev. +1 10000 1 total 3.851884e-01 2.694562e-02 +0 10000 2 total 4.123894e-01 1.542528e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841995e-01 2.700101e-02 +13 10000 1 1 total P1 5.187028e-02 6.982549e-03 +14 10000 1 1 total P2 2.006885e-02 2.846495e-03 +15 10000 1 1 total P3 9.477716e-03 2.233520e-03 +8 10000 1 2 total P0 9.889304e-04 4.824194e-04 +9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 +10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 +11 10000 1 2 total P3 2.342906e-04 1.281731e-04 +4 10000 2 1 total P0 9.246399e-04 9.248835e-04 +5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 +6 10000 2 1 total P2 4.937889e-04 4.939189e-04 +7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 +0 10000 2 2 total P0 4.114648e-01 1.524494e-02 +1 10000 2 2 total P1 1.648173e-02 4.501728e-03 +2 10000 2 2 total P2 6.371490e-03 1.055075e-02 +3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 + material group in group out nuclide moment mean std. dev. +12 10000 1 1 total P0 3.841995e-01 2.700101e-02 +13 10000 1 1 total P1 5.187028e-02 6.982549e-03 +14 10000 1 1 total P2 2.006885e-02 2.846495e-03 +15 10000 1 1 total P3 9.477716e-03 2.233520e-03 +8 10000 1 2 total P0 9.889304e-04 4.824194e-04 +9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 +10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 +11 10000 1 2 total P3 2.342906e-04 1.281731e-04 +4 10000 2 1 total P0 9.246399e-04 9.248835e-04 +5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 +6 10000 2 1 total P2 4.937889e-04 4.939189e-04 +7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 +0 10000 2 2 total P0 4.114648e-01 1.524494e-02 +1 10000 2 2 total P1 1.648173e-02 4.501728e-03 +2 10000 2 2 total P2 6.371490e-03 1.055075e-02 +3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1.000000e+00 7.851646e-02 +2 10000 1 2 total 1.000000e+00 6.871843e-01 +1 10000 2 1 total 1.000000e+00 1.414214e+00 +0 10000 2 2 total 1.000000e+00 4.113035e-02 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 2.014243e-02 3.149092e-03 +2 10000 1 2 total 0.000000e+00 0.000000e+00 +1 10000 2 1 total 4.543665e-01 2.742551e-02 +0 10000 2 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000e+00 4.607052e-02 +0 10000 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10000 1 total 1.000000e+00 5.147146e-02 +0 10000 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 1.751521e+07 1.438175e+06 +0 10000 2 total 3.501720e+05 2.994593e+04 + material group in nuclide mean std. dev. +1 10000 1 total 1.923922e-02 1.309506e-03 +0 10000 2 total 4.667190e-01 4.141087e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.137377e-01 1.558190e-02 +0 10001 2 total 3.008214e-01 2.805245e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732279e-01 3.311537e-02 +0 10001 2 total 3.123748e-01 4.960583e-02 + material group in nuclide mean std. dev. +1 10001 1 total 2.732279e-01 3.311537e-02 +0 10001 2 total 3.123748e-01 4.960583e-02 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991e-03 3.225479e-04 +0 10001 2 total 5.400379e-03 6.181383e-04 + material group in nuclide mean std. dev. +1 10001 1 total 1.574991e-03 3.225479e-04 +0 10001 2 total 5.400379e-03 6.181383e-04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 3.121627e-01 1.532192e-02 +0 10001 2 total 2.954210e-01 2.744549e-02 + material group in nuclide mean std. dev. +1 10001 1 total 3.101207e-01 3.378811e-02 +0 10001 2 total 2.962643e-01 4.379223e-02 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207e-01 3.378811e-02 +13 10001 1 1 total P1 3.822959e-02 8.483997e-03 +14 10001 1 1 total P2 2.074494e-02 4.695611e-03 +15 10001 1 1 total P3 7.964297e-03 3.731623e-03 +8 10001 1 2 total P0 0.000000e+00 0.000000e+00 +9 10001 1 2 total P1 0.000000e+00 0.000000e+00 +10 10001 1 2 total P2 0.000000e+00 0.000000e+00 +11 10001 1 2 total P3 0.000000e+00 0.000000e+00 +4 10001 2 1 total P0 0.000000e+00 0.000000e+00 +5 10001 2 1 total P1 0.000000e+00 0.000000e+00 +6 10001 2 1 total P2 0.000000e+00 0.000000e+00 +7 10001 2 1 total P3 0.000000e+00 0.000000e+00 +0 10001 2 2 total P0 2.962643e-01 4.379223e-02 +1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 +2 10001 2 2 total P2 8.836566e-03 1.150396e-02 +3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 + material group in group out nuclide moment mean std. dev. +12 10001 1 1 total P0 3.101207e-01 3.378811e-02 +13 10001 1 1 total P1 3.822959e-02 8.483997e-03 +14 10001 1 1 total P2 2.074494e-02 4.695611e-03 +15 10001 1 1 total P3 7.964297e-03 3.731623e-03 +8 10001 1 2 total P0 0.000000e+00 0.000000e+00 +9 10001 1 2 total P1 0.000000e+00 0.000000e+00 +10 10001 1 2 total P2 0.000000e+00 0.000000e+00 +11 10001 1 2 total P3 0.000000e+00 0.000000e+00 +4 10001 2 1 total P0 0.000000e+00 0.000000e+00 +5 10001 2 1 total P1 0.000000e+00 0.000000e+00 +6 10001 2 1 total P2 0.000000e+00 0.000000e+00 +7 10001 2 1 total P3 0.000000e+00 0.000000e+00 +0 10001 2 2 total P0 2.962643e-01 4.379223e-02 +1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 +2 10001 2 2 total P2 8.836566e-03 1.150396e-02 +3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1.000000e+00 1.087787e-01 +2 10001 1 2 total 0.000000e+00 0.000000e+00 +1 10001 2 1 total 0.000000e+00 0.000000e+00 +0 10001 2 2 total 1.000000e+00 1.424272e-01 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0.000000e+00 0.000000e+00 +2 10001 1 2 total 0.000000e+00 0.000000e+00 +1 10001 2 1 total 0.000000e+00 0.000000e+00 +0 10001 2 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10001 1 total 1.667784e+07 1.266444e+06 +0 10001 2 total 3.349534e+05 3.833678e+04 + material group in nuclide mean std. dev. +1 10001 1 total 0.000000e+00 0.000000e+00 +0 10001 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.645723e-01 3.121475e-02 +0 10002 2 total 2.052384e+00 2.243429e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905653e-01 2.385185e-02 +0 10002 2 total 1.516438e+00 2.351973e-01 + material group in nuclide mean std. dev. +1 10002 1 total 2.905653e-01 2.385185e-02 +0 10002 2 total 1.516438e+00 2.351973e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995e-04 4.414757e-05 +0 10002 2 total 3.168726e-02 3.746559e-03 + material group in nuclide mean std. dev. +1 10002 1 total 6.903995e-04 4.414757e-05 +0 10002 2 total 3.168726e-02 3.746559e-03 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 6.638819e-01 3.117268e-02 +0 10002 2 total 2.020697e+00 2.206045e-01 + material group in nuclide mean std. dev. +1 10002 1 total 6.712692e-01 2.618637e-02 +0 10002 2 total 2.035388e+00 2.580603e-01 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399015e-01 2.470912e-02 +13 10002 1 1 total P1 3.811674e-01 1.624326e-02 +14 10002 1 1 total P2 1.523919e-01 8.156278e-03 +15 10002 1 1 total P3 9.148022e-03 3.888562e-03 +8 10002 1 2 total P0 3.136772e-02 1.728113e-03 +9 10002 1 2 total P1 8.757723e-03 9.256705e-04 +10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 +11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 +4 10002 2 1 total P0 4.433431e-04 4.448504e-04 +5 10002 2 1 total P1 3.999604e-04 4.013202e-04 +6 10002 2 1 total P2 3.195627e-04 3.206491e-04 +7 10002 2 1 total P3 2.138470e-04 2.145740e-04 +0 10002 2 2 total P0 2.034945e+00 2.577999e-01 +1 10002 2 2 total P1 5.099405e-01 5.123591e-02 +2 10002 2 2 total P2 1.111746e-01 1.301982e-02 +3 10002 2 2 total P3 2.498844e-02 8.312353e-03 + material group in group out nuclide moment mean std. dev. +12 10002 1 1 total P0 6.399015e-01 2.470912e-02 +13 10002 1 1 total P1 3.811674e-01 1.624326e-02 +14 10002 1 1 total P2 1.523919e-01 8.156278e-03 +15 10002 1 1 total P3 9.148022e-03 3.888562e-03 +8 10002 1 2 total P0 3.136772e-02 1.728113e-03 +9 10002 1 2 total P1 8.757723e-03 9.256705e-04 +10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 +11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 +4 10002 2 1 total P0 4.433431e-04 4.448504e-04 +5 10002 2 1 total P1 3.999604e-04 4.013202e-04 +6 10002 2 1 total P2 3.195627e-04 3.206491e-04 +7 10002 2 1 total P3 2.138470e-04 2.145740e-04 +0 10002 2 2 total P0 2.034945e+00 2.577999e-01 +1 10002 2 2 total P1 5.099405e-01 5.123591e-02 +2 10002 2 2 total P2 1.111746e-01 1.301982e-02 +3 10002 2 2 total P3 2.498844e-02 8.312353e-03 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1.000000e+00 3.860919e-02 +2 10002 1 2 total 1.000000e+00 6.766735e-02 +1 10002 2 1 total 1.000000e+00 1.414214e+00 +0 10002 2 2 total 1.000000e+00 1.359292e-01 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0.000000e+00 0.000000e+00 +2 10002 1 2 total 0.000000e+00 0.000000e+00 +1 10002 2 1 total 0.000000e+00 0.000000e+00 +0 10002 2 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group out nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10002 1 total 1.660556e+07 1.042436e+06 +0 10002 2 total 3.284120e+05 3.882844e+04 + material group in nuclide mean std. dev. +1 10002 1 total 0.000000e+00 0.000000e+00 +0 10002 2 total 0.000000e+00 0.000000e+00 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 045194a2a9..66d388716e 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -4917eb986d1b5cb4b8cbe90fa552966e9bfd5959fe8060426883563ffebc7608264939a3b6593a8d4490626eb6f9cb01ae3e14ab54bdcc71dec801dcb5910b96 \ No newline at end of file +9620ed88224f5a4013b1ff47a1286ed166f84847b97d145e52f6f71eb441c2abd1ad5baa91e0b1cac802daa8610ee388d23dcbc43d834b73fb35a16972d09788 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index cbb1a86543..91562d8e15 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.00000000000e+02 0.00000000000e+00 7.00000000000e+02 8.00000000000e+02] + Temperature = [5.000000e+02 0.000000e+00 7.000000e+02 8.000000e+02] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index fc59cf8781..0bc44d358f 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -a5f4e33b524869a787ef66b94bb60f987d61c7d6335146356b4d498383723643fe9b7ffac74cf45d481add6fee05a62b54fc3ab2e21c259fbda2e8ec58b2df15 \ No newline at end of file +fea5b32f021c64daceffd73d9a50e4d15cad26f9f07f5cdea2e92bfd53d6c31c57da3a9240d4f7059cc30ceebae5c8ed730a0f97a67d3b3f631b9a02c747f982 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 369c061d41..6ef9ffeccd 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] +[[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]][[[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] ..., - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]] + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]] - [[0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00] - [0.00000000000e+00 0.00000000000e+00 0.00000000000e+00]]] \ No newline at end of file + [[0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00] + [0.000000e+00 0.000000e+00 0.000000e+00]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index e0add432af..bde708b808 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -11,12 +11,12 @@ import sys import numpy as np import pandas as pd -# Require numpy and pandas to print output in scientific notation with 12 +# Require numpy and pandas to print output in scientific notation with 7 # significant figures. This is needed to avoid round off error when large # numbers are printed, which can cause tests to fail for different build # configurations. -np.set_printoptions(formatter={'float': '{:.11e}'.format}) -pd.options.display.float_format = '{:.11e}'.format +np.set_printoptions(formatter={'float': '{:.6e}'.format}) +pd.options.display.float_format = '{:.6e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From c9d2d6899af1b35d81e25f8f505f8d09df2b8b50 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 1 Jul 2016 09:22:49 +0700 Subject: [PATCH 48/82] Incremented version number and added release notes --- docs/source/conf.py | 4 +- docs/source/methods/geometry.rst | 2 +- docs/source/releasenotes.rst | 113 ++++++++++++++++--------------- man/man1/openmc.1 | 2 +- setup.py | 2 +- src/constants.F90 | 4 +- 6 files changed, 66 insertions(+), 61 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 38661cdb37..cb43079e37 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -69,9 +69,9 @@ copyright = u'2011-2016, Massachusetts Institute of Technology' # built documents. # # The short X.Y version. -version = "0.7" +version = "0.8" # The full version, including alpha/beta/rc tags. -release = "0.7.1" +release = "0.8.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/source/methods/geometry.rst b/docs/source/methods/geometry.rst index bcd568ca3a..c689883d08 100644 --- a/docs/source/methods/geometry.rst +++ b/docs/source/methods/geometry.rst @@ -205,7 +205,7 @@ traveling in its current direction, it will not hit the surface. The complete derivation for different types of surfaces used in OpenMC will be presented in the following sections. -Since :math:f(x,y,z)` in general is quadratic in :math:`x`, :math:`y`, and +Since :math:`f(x,y,z)` in general is quadratic in :math:`x`, :math:`y`, and :math:`z`, this implies that :math:`f(x_0 + du_0, y + dv_0, z + dw_0)` is quadratic in :math:`d`. Thus we expect at most two real solutions to :eq:`dist-to-boundary-1`. If no solutions to :eq:`dist-to-boundary-1` exist or diff --git a/docs/source/releasenotes.rst b/docs/source/releasenotes.rst index 65309fd70a..3b96be7f8f 100644 --- a/docs/source/releasenotes.rst +++ b/docs/source/releasenotes.rst @@ -1,78 +1,83 @@ .. _releasenotes: ============================== -Release Notes for OpenMC 0.7.1 +Release Notes for OpenMC 0.8.0 ============================== -This release of OpenMC provides some substantial improvements over version -0.7.0. Non-simple cell regions can now be defined through the ``|`` (union) and -``~`` (complement) operators. Similar changes in the Python API also allow -complex cell regions to be defined. A true secondary particle bank now exists; -this is crucial for photon transport (to be added in the next minor release). A -rich API for multi-group cross section generation has been added via the -``openmc.mgxs`` Python module. +This release of OpenMC includes a few new major features including the +capability to perform neutron transport with multi-group cross section data as +well as experimental support for the windowed multipole method being developed +at MIT. Source sampling options have also been expanded significantly, with the +option to supply arbitrary tabular and discrete distributions for energy, angle, +and spatial coordinates. -Various improvements to tallies have also been made. It is now possible to -explicitly specify that a collision estimator be used in a tally. A new -``delayedgroup`` filter and ``delayed-nu-fission`` score allow a user to obtain -delayed fission neutron production rates filtered by delayed group. Finally, the -new ``inverse-velocity`` score may be useful for calculating kinetics -parameters. +The Python API has been significantly restructured in this release compared to +version 0.7.1. Any scripts written based on the version 0.7.1 API will likely +need to be rewritten. Some of the most visible changes include the following: -.. caution:: In previous versions, depending on how OpenMC was compiled binary - output was either given in HDF5 or a flat binary format. With this - version, all binary output is now HDF5 which means you **must** - have HDF5 in order to install OpenMC. Please consult the user's - guide for instructions on how to compile with HDF5. +- ``SettingsFile`` is now ``Settings``, ``MaterialsFile`` is now ``Materials``, + and ``TalliesFile`` is now ``Tallies``. +- The ``GeometryFile`` class no longer exists and is replaced by the + ``Geometry`` class which now has an ``export_to_xml()`` method. +- Source distributions are defined using the ``Source`` class and assigned to + the ``Settings.source`` property. +- The ``Executor`` class no longer exists and is replaced by ``openmc.run()`` + and ``openmc.plot_geometry()`` functions. + +The Python API documentation has also been significantly expanded. ------------------- System Requirements ------------------- There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). +release, OpenMC has been tested on a variety of Linux distributions and Mac +OS X. Numerous users have reported working builds on Microsoft Windows, but your +mileage may vary. Memory requirements will vary depending on the size of the +problem at hand (mostly on the number of nuclides and tallies in the problem). ------------ New Features ------------ -- Support for complex cell regions (union and complement operators) -- Generic quadric surface type -- Improved handling of secondary particles -- Binary output is now solely HDF5 -- ``openmc.mgxs`` Python module enabling multi-group cross section generation -- Collision estimator for tallies -- Delayed fission neutron production tallies with ability to filter by delayed - group -- Inverse velocity tally score -- Performance improvements for binary search -- Performance improvements for reaction rate tallies +- Multi-group mode +- Vast improvements to the Python API +- Experimental windowed multipole capability +- Periodic boundary conditions +- Expanded source sampling options +- Distributed materials +- Subcritical multiplication support +- Improved method for reproducible URR table sampling +- Refactor of continuous-energy reaction data +- Improved documentation and new Jupyter notebooks --------- Bug Fixes --------- -- 299322_: Bug with material filter when void material present -- d74840_: Fix triggers on tallies with multiple filters -- c29a81_: Correctly handle maximum transport energy -- 3edc23_: Fixes in the nu-scatter score -- 629e3b_: Assume unspecified surface coefficients are zero in Python API -- 5dbe8b_: Fix energy filters for openmc-plot-mesh-tally -- ff66f4_: Fixes in the openmc-plot-mesh-tally script -- 441fd4_: Fix bug in kappa-fission score -- 7e5974_: Allow fixed source simulations from Python API +- 70daa7_: Make sure MT=3 cross section is not used +- 40b05f_: Ensure source bank is resampled for fixed source runs +- 9586ed_: Fix two hexagonal lattice bugs +- a855e8_: Make sure graphite models don't error out on max events +- 7294a1_: Fix incorrect check on cmfd.xml +- 12f246_: Ensure number of realizations is written to statepoint +- 0227f4_: Fix bug when sampling multiple energy distributions +- 51deaa_: Prevent segfault when user specifies '18' on tally scores +- fed74b_: Prevent duplicate tally scores +- 8467ae_: Better threshold for allowable lost particles +- 493c6f_: Fix type of return argument for h5pget_driver_f -.. _299322: https://github.com/mit-crpg/openmc/commit/299322 -.. _d74840: https://github.com/mit-crpg/openmc/commit/d74840 -.. _c29a81: https://github.com/mit-crpg/openmc/commit/c29a81 -.. _3edc23: https://github.com/mit-crpg/openmc/commit/3edc23 -.. _629e3b: https://github.com/mit-crpg/openmc/commit/629e3b -.. _5dbe8b: https://github.com/mit-crpg/openmc/commit/5dbe8b -.. _ff66f4: https://github.com/mit-crpg/openmc/commit/ff66f4 -.. _441fd4: https://github.com/mit-crpg/openmc/commit/441fd4 -.. _7e5974: https://github.com/mit-crpg/openmc/commit/7e5974 +.. _70daa7: https://github.com/mit-crpg/openmc/commit/70daa7 +.. _40b05f: https://github.com/mit-crpg/openmc/commit/40b05f +.. _9586ed: https://github.com/mit-crpg/openmc/commit/9586ed +.. _a855e8: https://github.com/mit-crpg/openmc/commit/a855e8 +.. _7294a1: https://github.com/mit-crpg/openmc/commit/7294a1 +.. _12f246: https://github.com/mit-crpg/openmc/commit/12f246 +.. _0227f4: https://github.com/mit-crpg/openmc/commit/0227f4 +.. _51deaa: https://github.com/mit-crpg/openmc/commit/51deaa +.. _fed74b: https://github.com/mit-crpg/openmc/commit/fed74b +.. _8467ae: https://github.com/mit-crpg/openmc/commit/8467ae +.. _493c6f: https://github.com/mit-crpg/openmc/commit/493c6f ------------ Contributors @@ -81,11 +86,11 @@ Contributors This release contains new contributions from the following people: - `Will Boyd `_ -- `Sterling Harper `_ -- `Bryan Herman `_ +- `Derek Gaston `_ +- `Sterling Harper `_ - `Colin Josey `_ +- `Jingang Liang `_ - `Adam Nelson `_ - `Paul Romano `_ - `Kelly Rowland `_ - `Sam Shaner `_ -- `Jon Walsh `_ diff --git a/man/man1/openmc.1 b/man/man1/openmc.1 index 102adfbdc3..e69360a7c1 100644 --- a/man/man1/openmc.1 +++ b/man/man1/openmc.1 @@ -46,7 +46,7 @@ to locate ACE format cross section libraries if the user has not specified the tag in .I settings.xml\fP. .SH LICENSE -Copyright \(co 2011-2015 Massachusetts Institute of Technology. +Copyright \(co 2011-2016 Massachusetts Institute of Technology. .PP Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/setup.py b/setup.py index a842a1c3ae..393f40bd35 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ except ImportError: have_setuptools = False kwargs = {'name': 'openmc', - 'version': '0.7.1', + 'version': '0.8.0', 'packages': ['openmc', 'openmc.data', 'openmc.mgxs', 'openmc.model', 'openmc.stats'], 'scripts': glob.glob('scripts/openmc-*'), diff --git a/src/constants.F90 b/src/constants.F90 index b3e5ed89b1..127b4507fc 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -7,8 +7,8 @@ module constants ! OpenMC major, minor, and release numbers integer, parameter :: VERSION_MAJOR = 0 - integer, parameter :: VERSION_MINOR = 7 - integer, parameter :: VERSION_RELEASE = 1 + integer, parameter :: VERSION_MINOR = 8 + integer, parameter :: VERSION_RELEASE = 0 ! Revision numbers for binary files integer, parameter :: REVISION_STATEPOINT = 15 From ede81f95e989bcd4f1842e663e7f6526e190e83c Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 1 Jul 2016 13:19:39 +0700 Subject: [PATCH 49/82] Ensure line-length is within 160 characters per F2008 standard --- src/multipole_header.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/multipole_header.F90 b/src/multipole_header.F90 index a21677a952..143047b0b5 100644 --- a/src/multipole_header.F90 +++ b/src/multipole_header.F90 @@ -45,7 +45,8 @@ module multipole_header logical :: fissionable = .false. ! Is this isotope fissionable? integer :: length ! Number of poles integer, allocatable :: l_value(:) ! The l index of the pole - real(8), allocatable :: pseudo_k0RS(:) ! The value (sqrt(2*mass neutron)/reduced planck constant) * AWR/(AWR + 1) * scattering radius for each l + real(8), allocatable :: pseudo_k0RS(:) ! The value (sqrt(2*mass neutron)/reduced planck constant) + ! * AWR/(AWR + 1) * scattering radius for each l complex(8), allocatable :: data(:,:) ! Contains all of the pole-residue data real(8) :: sqrtAWR ! Square root of the atomic weight ratio From 195f81cacbf5c9bb8ca7b48ffb641d3c4f384180 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 1 Jul 2016 13:20:47 +0700 Subject: [PATCH 50/82] Update Intel compiler flags. Allow CC to be set in run_tests.py --- CMakeLists.txt | 9 ++++----- tests/run_tests.py | 7 +++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 16cf914e58..73f0afccc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,8 +147,7 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL Intel) if(debug) list(APPEND f90flags -g -warn -ftrapuv -fp-stack-check "-check all" -fpe0) - list(APPEND cflags -g -warn -ftrapuv -fp-stack-check - "-check all" -fpe0) + list(APPEND cflags -g -w3 -ftrapuv -fp-stack-check) list(APPEND ldflags -g) endif() if(profile) @@ -161,9 +160,9 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL Intel) list(APPEND cflags -O3) endif() if(openmp) - list(APPEND f90flags -openmp) - list(APPEND cflags -openmp) - list(APPEND ldflags -openmp) + list(APPEND f90flags -qopenmp) + list(APPEND cflags -qopenmp) + list(APPEND ldflags -qopenmp) endif() elseif(CMAKE_Fortran_COMPILER_ID STREQUAL PGI) diff --git a/tests/run_tests.py b/tests/run_tests.py index 5a04f340a8..87282055c2 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -42,6 +42,7 @@ parser.add_option("-s", "--script", action="store_true", dest="script", # Default compiler paths FC='gfortran' +CC='gcc' MPI_DIR='/opt/mpich/3.2-gnu' HDF5_DIR='/opt/hdf5/1.8.16-gnu' PHDF5_DIR='/opt/phdf5/1.8.16-gnu' @@ -52,6 +53,8 @@ script_mode = False # Override default compiler paths if environmental vars are found if 'FC' in os.environ: FC = os.environ['FC'] +if 'CC' in os.environ: + CC = os.environ['CC'] if 'MPI_DIR' in os.environ: MPI_DIR = os.environ['MPI_DIR'] if 'HDF5_DIR' in os.environ: @@ -158,8 +161,10 @@ class Test(object): self.fc = os.path.join(MPI_DIR, 'bin', 'mpifort') else: self.fc = os.path.join(MPI_DIR, 'bin', 'mpif90') + self.cc = os.path.join(MPI_DIR, 'bin', 'mpicc') else: self.fc = FC + self.cc = CC # Sets the build name that will show up on the CDash def get_build_name(self): @@ -189,6 +194,7 @@ class Test(object): # Runs the ctest script which performs all the cmake/ctest/cdash def run_ctest_script(self): os.environ['FC'] = self.fc + os.environ['CC'] = self.cc if self.mpi: os.environ['MPI_DIR'] = MPI_DIR if self.phdf5: @@ -203,6 +209,7 @@ class Test(object): # Runs cmake when in non-script mode def run_cmake(self): os.environ['FC'] = self.fc + os.environ['CC'] = self.cc if self.mpi: os.environ['MPI_DIR'] = MPI_DIR if self.phdf5: From 68e5a093aa37fdc18132e278ad9a965a1665364b Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 13 May 2016 15:57:39 -0500 Subject: [PATCH 51/82] Added full openmc.data package and hooks in code --- .travis.yml | 8 +- data/convert_hdf5.py | 96 + data/get_nndc_data.py | 2 +- docs/source/_static/theme_overrides.css | 8 + docs/source/conf.py | 3 +- docs/source/io_formats/index.rst | 18 +- docs/source/io_formats/nuclear_data.rst | 353 +++ docs/source/pythonapi/index.rst | 81 +- examples/python/basic/build-xml.py | 8 +- examples/python/boxes/build-xml.py | 10 +- .../python/lattice/hexagonal/build-xml.py | 10 +- examples/python/lattice/nested/build-xml.py | 8 +- examples/python/lattice/simple/build-xml.py | 8 +- examples/python/pincell/build-xml.py | 68 +- examples/python/reflective/build-xml.py | 2 +- examples/xml/basic/materials.xml | 8 +- examples/xml/boxes/materials.xml | 10 +- examples/xml/lattice/nested/materials.xml | 8 +- examples/xml/lattice/simple/materials.xml | 8 +- examples/xml/pincell/materials.xml | 78 +- examples/xml/reflective/materials.xml | 2 +- openmc/ace.py | 65 - openmc/data/__init__.py | 12 + openmc/data/ace.py | 2226 +++++++++++++++++ openmc/data/angle_distribution.py | 134 + openmc/data/angle_energy.py | 40 + openmc/data/container.py | 269 ++ openmc/data/correlated.py | 291 +++ openmc/data/data.py | 57 + openmc/data/energy_distribution.py | 850 +++++++ openmc/data/kalbach_mann.py | 253 ++ openmc/data/nbody.py | 118 + openmc/data/product.py | 205 ++ openmc/data/thermal.py | 92 + openmc/data/uncorrelated.py | 95 + openmc/data/urr.py | 171 ++ openmc/settings.py | 11 +- openmc/stats/univariate.py | 154 +- src/ace.F90 | 1738 ------------- src/angle_distribution.F90 | 72 +- src/angleenergy_header.F90 | 9 + src/constants.F90 | 7 + src/endf_header.F90 | 54 +- src/energy_distribution.F90 | 210 +- src/global.F90 | 10 +- src/initialize.F90 | 82 +- src/input_xml.F90 | 2059 ++++++++------- src/material_header.F90 | 4 +- src/mgxs_data.F90 | 33 +- src/mgxs_header.F90 | 44 +- src/nuclide_header.F90 | 289 ++- src/output.F90 | 8 +- src/product_header.F90 | 94 + src/reaction_header.F90 | 42 + src/relaxng/materials.rnc | 6 +- src/relaxng/materials.rng | 42 +- src/sab_header.F90 | 301 ++- src/secondary_correlated.F90 | 160 +- src/secondary_kalbach.F90 | 118 +- src/secondary_nbody.F90 | 13 + src/secondary_uncorrelated.F90 | 61 +- src/state_point.F90 | 17 +- src/stl_vector.F90 | 158 ++ src/summary.F90 | 25 +- src/urr_header.F90 | 53 + tests/input_set.py | 440 ++-- tests/test_asymmetric_lattice/inputs_true.dat | 2 +- tests/test_cmfd_feed/materials.xml | 6 +- tests/test_cmfd_nofeed/materials.xml | 6 +- tests/test_complex_cell/materials.xml | 4 +- tests/test_confidence_intervals/materials.xml | 2 +- tests/test_density/materials.xml | 12 +- tests/test_distribmat/inputs_true.dat | 2 +- tests/test_distribmat/test_distribmat.py | 8 +- .../test_eigenvalue_genperbatch/materials.xml | 2 +- .../test_eigenvalue_no_inactive/materials.xml | 2 +- tests/test_energy_grid/materials.xml | 6 +- tests/test_energy_laws/materials.xml | 8 +- tests/test_entropy/materials.xml | 2 +- .../case-1/materials.xml | 6 +- .../case-2/materials.xml | 6 +- .../case-3/materials.xml | 118 +- .../case-4/materials.xml | 10 +- tests/test_filter_mesh_2d/materials.xml | 412 +-- tests/test_filter_mesh_3d/materials.xml | 412 +-- tests/test_fixed_source/materials.xml | 4 +- tests/test_infinite_cell/materials.xml | 4 +- tests/test_iso_in_lab/inputs_true.dat | 2 +- tests/test_lattice/materials.xml | 158 +- tests/test_lattice_hex/materials.xml | 36 +- tests/test_lattice_mixed/materials.xml | 36 +- tests/test_lattice_multiple/materials.xml | 412 +-- .../inputs_true.dat | 2 +- .../inputs_true.dat | 2 +- .../inputs_true.dat | 2 +- tests/test_mgxs_library_hdf5/inputs_true.dat | 2 +- .../inputs_true.dat | 2 +- .../inputs_true.dat | 2 +- .../results_true.dat | 2 +- tests/test_multipole/inputs_true.dat | 2 +- tests/test_multipole/test_multipole.py | 6 +- tests/test_natural_element/materials.xml | 8 +- tests/test_output/materials.xml | 2 +- .../materials.xml | 2 +- .../test_particle_restart_fixed/materials.xml | 2 +- tests/test_periodic/inputs_true.dat | 2 +- tests/test_periodic/test_periodic.py | 8 +- tests/test_plot/materials.xml | 6 +- tests/test_ptables_off/materials.xml | 2 +- tests/test_quadric_surfaces/materials.xml | 4 +- tests/test_reflective_plane/materials.xml | 2 +- .../test_resonance_scattering/inputs_true.dat | 2 +- .../test_resonance_scattering.py | 17 +- tests/test_rotation/materials.xml | 2 +- tests/test_salphabeta/materials.xml | 42 +- tests/test_score_current/materials.xml | 412 +-- tests/test_seed/materials.xml | 2 +- tests/test_source/inputs_true.dat | 2 +- tests/test_source/test_source.py | 2 +- tests/test_source_file/materials.xml | 2 +- tests/test_sourcepoint_batch/materials.xml | 2 +- tests/test_sourcepoint_interval/materials.xml | 2 +- tests/test_sourcepoint_latest/materials.xml | 2 +- tests/test_sourcepoint_restart/materials.xml | 2 +- tests/test_statepoint_batch/materials.xml | 2 +- tests/test_statepoint_interval/materials.xml | 2 +- tests/test_statepoint_restart/materials.xml | 2 +- tests/test_statepoint_sourcesep/materials.xml | 2 +- tests/test_survival_biasing/materials.xml | 4 +- tests/test_tallies/inputs_true.dat | 2 +- tests/test_tallies/test_tallies.py | 2 +- tests/test_tally_aggregation/inputs_true.dat | 2 +- .../test_tally_aggregation.py | 8 +- tests/test_tally_arithmetic/inputs_true.dat | 2 +- .../test_tally_arithmetic.py | 6 +- tests/test_tally_assumesep/materials.xml | 412 +-- tests/test_tally_nuclides/materials.xml | 2 +- tests/test_tally_nuclides/tallies.xml | 2 +- tests/test_tally_slice_merge/inputs_true.dat | 2 +- tests/test_tally_slice_merge/results_true.dat | 128 +- .../test_tally_slice_merge.py | 6 +- tests/test_trace/materials.xml | 2 +- tests/test_track_output/materials.xml | 132 +- tests/test_translation/materials.xml | 2 +- .../test_trigger_batch_interval/materials.xml | 2 +- tests/test_trigger_batch_interval/tallies.xml | 2 +- .../materials.xml | 2 +- .../tallies.xml | 2 +- tests/test_trigger_no_status/materials.xml | 2 +- tests/test_trigger_no_status/tallies.xml | 2 +- tests/test_trigger_tallies/materials.xml | 2 +- tests/test_trigger_tallies/tallies.xml | 2 +- tests/test_triso/inputs_true.dat | 2 +- tests/test_triso/test_triso.py | 26 +- tests/test_uniform_fs/materials.xml | 2 +- tests/test_union_energy_grids/materials.xml | 6 +- tests/test_universe/materials.xml | 2 +- tests/test_void/materials.xml | 70 +- 158 files changed, 10186 insertions(+), 4878 deletions(-) create mode 100644 data/convert_hdf5.py create mode 100644 docs/source/io_formats/nuclear_data.rst delete mode 100644 openmc/ace.py create mode 100644 openmc/data/ace.py create mode 100644 openmc/data/angle_distribution.py create mode 100644 openmc/data/angle_energy.py create mode 100644 openmc/data/container.py create mode 100644 openmc/data/correlated.py create mode 100644 openmc/data/energy_distribution.py create mode 100644 openmc/data/kalbach_mann.py create mode 100644 openmc/data/nbody.py create mode 100644 openmc/data/product.py create mode 100644 openmc/data/thermal.py create mode 100644 openmc/data/uncorrelated.py create mode 100644 openmc/data/urr.py delete mode 100644 src/ace.F90 diff --git a/.travis.yml b/.travis.yml index 6aed183a0d..46f5e91bf2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,10 +41,10 @@ install: true before_script: - cd data - - git clone --branch=master git://github.com/bhermanmit/nndc_xs nndc_xs - - cat nndc_xs/nndc.tar.gza* | tar xzvf - - - rm -rf nndc_xs - - export OPENMC_CROSS_SECTIONS=$PWD/nndc/cross_sections.xml + - git clone --branch=master git://github.com/paulromano/nndc-hdf5 + - cat nndc-hdf5/nndc_hdf5.tar.xz? | tar xJvf - + - rm -rf nndc-hdf5 + - export OPENMC_CROSS_SECTIONS=$PWD/nndc_hdf5/cross_sections.xml - git clone --branch=master git://github.com/smharper/windowed_multipole_library.git wmp_lib - tar xzvf wmp_lib/multipole_lib.tar.gz - export OPENMC_MULTIPOLE_LIBRARY=$PWD/multipole_lib diff --git a/data/convert_hdf5.py b/data/convert_hdf5.py new file mode 100644 index 0000000000..3f5fcfdb74 --- /dev/null +++ b/data/convert_hdf5.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python + +import glob +import os +from xml.dom.minidom import getDOMImplementation + +import openmc.data.ace + + +if not os.path.isdir('nndc_hdf5'): + os.mkdir('nndc_hdf5') + +nndc_files = glob.glob('nndc/293.6K/*.ace') +nndc_thermal_files = glob.glob('nndc/tsl/*.acer') + +thermal_names = {'al': 'c_Al27', + 'be': 'c_Be', + 'bebeo': 'c_Be_in_BeO', + 'benzine': 'c_Benzine', + 'dd2o': 'c_D_in_D2O', + 'fe': 'c_Fe56', + 'graphite': 'c_Graphite', + 'hch2': 'c_H_in_CH2', + 'hh2o': 'c_H_in_H2O', + 'hzrh': 'c_H_in_ZrH', + 'lch4': 'c_liquid_CH4', + 'obeo': 'c_O_in_BeO', + 'orthod': 'c_ortho_D', + 'orthoh': 'c_ortho_H', + 'ouo2': 'c_O_in_UO2', + 'parad': 'c_para_D', + 'parah': 'c_para_H', + 'sch4': 'c_solid_CH4', + 'uuo2': 'c_U_in_UO2', + 'zrzrh': 'c_Zr_in_ZrH'} + +impl = getDOMImplementation() +doc = impl.createDocument(None, "cross_sections", None) +doc_root = doc.documentElement + +for f in sorted(nndc_files): + print('Converting {}...'.format(f)) + + # Deterine output file name + dirname, basename = os.path.split(f) + root, ext = os.path.splitext(basename) + outfile = os.path.join('nndc_hdf5', root + '.h5') + if os.path.exists(outfile): + os.remove(outfile) + + # Determine elemental symbol, mass number and metastable state + element, mass_number, temp = basename.split('_') + metastable = int(mass_number[-1]) if 'm' in mass_number else 0 + mass_number = int(mass_number[:3]) + + # Parse ACE file, create HDF5 file + t = openmc.data.ace.get_table(f) + t.export_to_hdf5(outfile, element, mass_number, metastable) + xs = t.name.split('.')[1] + if metastable > 0: + name = "{}{}_m{}.{}".format(element, mass_number, metastable, xs) + else: + name = "{}{}.{}".format(element, mass_number, xs) + + # Add entry to XML listing + libraryNode = doc.createElement("library") + libraryNode.setAttribute("path", root + '.h5') + libraryNode.setAttribute("materials", name) + libraryNode.setAttribute("type", "neutron") + doc_root.appendChild(libraryNode) + +for f in sorted(nndc_thermal_files): + print('Converting {}...'.format(f)) + + # Deterine output file name + dirname, basename = os.path.split(f) + root, ext = os.path.splitext(basename) + outfile = os.path.join('nndc_hdf5', root + '.h5') + if os.path.exists(outfile): + os.remove(outfile) + + # Parse ACE file, create HDF5 file + t = openmc.data.ace.get_table(f) + t.export_to_hdf5(outfile, thermal_names[root]) + xs = t.name.split('.')[1] + + # Add entry to XML listing + libraryNode = doc.createElement("library") + libraryNode.setAttribute("path", root + '.h5') + libraryNode.setAttribute("materials", thermal_names[root] + '.' + xs) + libraryNode.setAttribute("type", "thermal") + doc_root.appendChild(libraryNode) + +# Write cross_sections.xml +lines = doc.toprettyxml(indent=' ') +open(os.path.join('nndc_hdf5', 'cross_sections.xml'), 'w').write(lines) diff --git a/data/get_nndc_data.py b/data/get_nndc_data.py index b9b855a812..844abea812 100755 --- a/data/get_nndc_data.py +++ b/data/get_nndc_data.py @@ -22,7 +22,7 @@ except ImportError: cwd = os.getcwd() sys.path.insert(0, os.path.join(cwd, '..')) -from openmc.ace import ascii_to_binary +from openmc.data.ace import ascii_to_binary baseUrl = 'http://www.nndc.bnl.gov/endf/b7.1/aceFiles/' files = ['ENDF-B-VII.1-neutron-293.6K.tar.gz', diff --git a/docs/source/_static/theme_overrides.css b/docs/source/_static/theme_overrides.css index 7c1a520223..bee03f4150 100644 --- a/docs/source/_static/theme_overrides.css +++ b/docs/source/_static/theme_overrides.css @@ -8,3 +8,11 @@ max-width: 100%; overflow: visible; } + +.wy-plain-list-disc, .rst-content .section ul, .rst-content .toctree-wrapper ul, article ul { + margin-bottom: 0px; +} + +.wy-table, .rst-content table.docutils, .rst-content table.field-list { + margin-bottom: 0px; +} diff --git a/docs/source/conf.py b/docs/source/conf.py index 38661cdb37..c9299b4245 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -24,7 +24,8 @@ except ImportError: from mock import Mock as MagicMock -MOCK_MODULES = ['numpy', 'h5py', 'pandas', 'opencg'] +MOCK_MODULES = ['numpy', 'numpy.polynomial', 'numpy.polynomial.polynomial', + 'h5py', 'pandas', 'opencg'] sys.modules.update((mod_name, MagicMock()) for mod_name in MOCK_MODULES) diff --git a/docs/source/io_formats/index.rst b/docs/source/io_formats/index.rst index 905cd26cc0..acab7e8930 100644 --- a/docs/source/io_formats/index.rst +++ b/docs/source/io_formats/index.rst @@ -4,12 +4,26 @@ File Format Specifications ========================== +---------- +Data Files +---------- + .. toctree:: :numbered: - :maxdepth: 3 + :maxdepth: 2 - data_wmp + nuclear_data mgxs_library + data_wmp + +------------ +Output Files +------------ + +.. toctree:: + :numbered: + :maxdepth: 2 + statepoint source summary diff --git a/docs/source/io_formats/nuclear_data.rst b/docs/source/io_formats/nuclear_data.rst new file mode 100644 index 0000000000..e7d4f2d32a --- /dev/null +++ b/docs/source/io_formats/nuclear_data.rst @@ -0,0 +1,353 @@ +.. _usersguide_nuclear_data: + +======================== +Nuclear Data File Format +======================== + +--------------------- +Incident Neutron Data +--------------------- + + +**//** + +:Attributes: - **Z** (*int*) -- Atomic number + - **A** (*int*) -- Mass number + - **metastable** (*int*) -- Metastable state + - **atomic_weight_ratio** (*double*) -- Mass in units of neutron masses + - **temperature** (*double*) -- Temperature in MeV + - **n_reaction** (*int*) -- Number of reactions + +:Datasets: - **energy** (*double[]*) -- Energy points at which cross sections are tabulated + +**//reaction_/** + +:Attributes: - **mt** (*int*) -- ENDF MT reaction number + - **label** (*char[]*) -- Name of the reaction + - **Q_value** (*double*) -- Q value in MeV + - **threshold_idx** (*int*) -- Index on the energy grid that the + reaction threshold corresponds to + - **center_of_mass** (*int*) -- Whether the reference frame for + scattering is center-of-mass (1) or laboratory (0) + - **n_product** (*int*) -- Number of reaction products + +:Datasets: - **xs** (*double[]*) -- Cross section values tabulated against the nuclide energy grid + +**//reaction_/product_/** + + Reaction product data is described in :ref:`product`. + +**//urr** + +:Attributes: - **interpolation** (*int*) -- interpolation scheme + - **inelastic** (*int*) -- flag indicating inelastic scattering + - **other_absorb** (*int*) -- flag indicating other absorption + - **factors** (*int*) -- flag indicating whether tables are + absolute or multipliers + +:Datasets: - **energy** (*double[]*) -- Energy at which probability tables exist + - **table** (*double[][][]*) -- Probability tables + +**//total_nu/** + + This special product is used to define the total number of neutrons produced + from fission. It is formatted as a reaction product, described in + :ref:`product`. + +------------------------------- +Thermal Neutron Scattering Data +------------------------------- + +**//** + +:Attributes: - **atomic_weight_ratio** (*double*) -- Mass in units of neutron masses + - **temperature** (*double*) -- Temperature in MeV + - **zaids** (*int[]*) -- ZAID identifiers for which the thermal + scattering data applies to + +**//elastic/** + +:Datasets: - **xs** (:ref:`tabulated <1d_tabulated>`) -- Thermal inelastic + scattering cross section + - **mu_out** (*double[][]*) -- Distribution of outgoing energies + and angles for coherent elastic scattering + +**//inelastic/** + +:Attributes: + - **secondary_mode** (*char[]*) -- Indicates how the inelastic + outgoing angle-energy distributions are represented ('equal', + 'skewed', or 'continuous'). + +:Datasets: - **xs** (:ref:`tabulated <1d_tabulated>`) -- Thermal inelastic + scattering cross section + - **energy_out** (*double[][]*) -- Distribution of outgoing + energies for each incoming energy. Only present if secondary mode + is not continuous. + - **mu_out** (*double[][][]*) -- Distribution of scattering cosines + for each pair of incoming and outgoing energies. Only present if + secondary mode is not continuous. + +If the secondary mode is continuous, the outgoing energy-angle distribution is +given as a :ref:`correlated angle-energy distribution +`. + +.. _product: + +----------------- +Reaction Products +----------------- + +:Object type: Group +:Attributes: - **particle** (*char[]*) -- Type of particle + - **emission_mode** (*char[]*) -- Emission mode (prompt, delayed, + total) + - **decay_rate** (*double*) -- Rate of decay in inverse seconds + - **n_distribution** (*int*) -- Number of angle/energy + distributions +:Datasets: + - **yield** (:ref:`function <1d_functions>`) -- Energy-dependent + yield of the product. + +:Groups: + - **distribution_** -- Formats for angle-energy distributions are + detailed in :ref:`angle_energy`. When multiple angle-energy + distributions occur, one dataset also may appear for each + distribution: + + :Datasets: + - **applicability** (:ref:`function <1d_functions>`) -- + Probability of selecting this distribution as a function + of incident energy + +.. _1d_functions: + +------------------------- +One-dimensional Functions +------------------------- + +Scalar +------ + +:Object type: Dataset +:Datatype: *double* +:Attributes: - **type** (*char[]*) -- 'constant' + +.. _1d_tabulated: + +Tabulated +--------- + +:Object type: Dataset +:Datatype: *double[2][]* +:Description: x-values are listed first followed by corresponding y-values +:Attributes: - **type** (*char[]*) -- 'tabulated' + - **breakpoints** (*int[]*) -- Region breakpoints + - **interpolation** (*int[]*) -- Region interpolation codes + +Polynomial +---------- + +:Object type: Dataset +:Datatype: *double[]* +:Description: Polynomial coefficients listed in order of increasing power +:Attributes: - **type** (*char[]*) -- 'polynomial' + +Coherent elastic scattering +--------------------------- + +:Object type: Dataset +:Datatype: *double[2][]* +:Description: The first row lists Bragg edges and the second row lists structure + factor cumulative sums. +:Attributes: - **type** (*char[]*) -- 'bragg' + +.. _angle_energy: + +-------------------------- +Angle-Energy Distributions +-------------------------- + +Uncorrelated Angle-Energy +------------------------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'uncorrelated' +:Datasets: - **angle/energy** (*double[]*) -- energies at which angle distributions exist + - **angle/mu** (*double[3][]*) -- tabulated angular distributions for + each energy. The first row gives :math:`\mu` values, the second row + gives the probability density, and the third row gives the + cumulative distribution. + + :Attributes: - **offsets** (*int[]*) -- indices indicating where + each angular distribution starts + - **interpolation** (*int[]*) -- interpolation code + for each angular distribution + +:Groups: - **energy/** (:ref:`energy distribution `) + +.. _correlated_angle_energy: + +Correlated Angle-Energy +----------------------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'correlated' +:Datasets: - **energy** (*double[]*) -- Incoming energies at which distributions exist + + :Attributes: + - **interpolation** (*double[2][]*) -- Breakpoints and + interpolation codes for incoming energy regions + + - **energy_out** (*double[5][]*) -- Distribution of outgoing energies + corresponding to each incoming energy. The distributions are + flattened into a single array; the start of a given distribution + can be determined using the ``offsets`` attribute. The first row + gives outgoing energies, the second row gives the probability + density, the third row gives the cumulative distribution, the + fourth row gives interpolation codes for angular distributions, and + the fifth row gives offsets for angular distributions. + + :Attributes: - **offsets** (*double[]*) -- Offset for each + distribution + - **interpolation** (*int[]*) -- Interpolation code + for each distribution + - **n_discrete_lines** (*int[]*) -- Number of discrete + lines in each distribution + + - **mu** (*double[3][]*) -- Distribution of angular cosines + corresponding to each pair of incoming and outgoing energies. The + distributions are flattened into a single array; the start of a + given distribution can be determined using offsets in the fifth row + of the ``energy_out`` dataset. The first row gives angular cosines, + the second row gives the probability density, and the third row + gives the cumulative distribution. + +Kalbach-Mann +------------ + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'kalbach-mann' +:Datasets: - **energy** (*double[]*) -- Incoming energies at which distributions exist + + :Attributes: + - **interpolation** (*double[2][]*) -- Breakpoints and + interpolation codes for incoming energy regions + + - **distribution** (*double[5][]*) -- Distribution of outgoing + energies and angles corresponding to each incoming energy. The + distributions are flattened into a single array; the start of a + given distribution can be determined using the ``offsets`` + attribute. The first row gives outgoing energies, the second row + gives the probability density, the third row gives the cumulative + distribution, the fourth row gives Kalbach-Mann precompound + factors, and the fifth row gives Kalbach-Mann angular distribution + slopes. + + :Attributes: - **offsets** (*double[]*) -- Offset for each + distribution + - **interpolation** (*int[]*) -- Interpolation code + for each distribution + - **n_discrete_lines** (*int[]*) -- Number of discrete + lines in each distribution + +N-Body Phase Space +------------------ + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'nbody' + - **total_mass** (*double*) -- Total mass of product particles + - **n_particles** (*int*) -- Number of product particles + - **atomic_weight_ratio** (*double*) -- Atomic weight ratio of the + target nuclide in neutron masses + - **q_value** (*double*) -- Q value for the reaction in MeV + +.. _energy_distribution: + +-------------------- +Energy Distributions +-------------------- + +Maxwell +------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'maxwell' + - **u** (*double*) -- Restriction energy in MeV +:Datasets: + - **theta** (:ref:`tabulated <1d_tabulated>`) -- Maxwellian + temperature as a function of energy + +Evaporation +----------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'evaporation' + - **u** (*double*) -- Restriction energy in MeV +:Datasets: + - **theta** (:ref:`tabulated <1d_tabulated>`) -- Evaporation + temperature as a function of energy + +Watt Fission Spectrum +--------------------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'watt' + - **u** (*double*) -- Restriction energy in MeV +:Datasets: - **a** (:ref:`tabulated <1d_tabulated>`) -- Watt parameter :math:`a` + as a function of incident energy + - **b** (:ref:`tabulated <1d_tabulated>`) -- Watt parameter :math:`b` + as a function of incident energy + +Madland-Nix +----------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'watt' + - **efl** (*double*) -- Average energy of light fragment in eV + - **efh** (*double*) -- Average energy of heavy fragment in eV + +Discrete Photon +--------------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'discrete_photon' + - **primary_flag** (*int*) -- Whether photon is a primary + - **energy** (*double*) -- Photon energy in MeV + - **atomic_weight_ratio** (*double*) -- Atomic weight ratio of + target nuclide in neutron masses + +Level Inelastic +--------------- + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'level' + - **threshold** (*double*) -- Energy threshold in the laboratory + system in MeV + - **mass_ratio** (*double*) -- :math:`(A/(A + 1))^2` + +Continuous Tabular +------------------ + +:Object type: Group +:Attributes: - **type** (*char[]*) -- 'continuous' +:Datasets: - **energy** (*double[]*) -- Incoming energies at which distributions exist + + :Attributes: + - **interpolation** (*double[2][]*) -- Breakpoints and + interpolation codes for incoming energy regions + + - **distribution** (*double[3][]*) -- Distribution of outgoing + energies corresponding to each incoming energy. The distributions + are flattened into a single array; the start of a given + distribution can be determined using the ``offsets`` attribute. The + first row gives outgoing energies, the second row gives the + probability density, and the third row gives the cumulative + distribution. + + :Attributes: - **offsets** (*double[]*) -- Offset for each + distribution + - **interpolation** (*int[]*) -- Interpolation code + for each distribution + - **n_discrete_lines** (*int[]*) -- Number of discrete + lines in each distribution diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index 09b3d5135e..a17af8ac67 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -35,9 +35,6 @@ Example Jupyter Notebooks Handling nuclear data --------------------- -Classes -+++++++ - .. autosummary:: :toctree: generated :nosignatures: @@ -46,14 +43,6 @@ Classes openmc.XSdata openmc.MGXSLibrary -Functions -+++++++++ - -.. autosummary:: - :toctree: generated - :nosignatures: - - openmc.ace.ascii_to_binary Simulation Settings ------------------- @@ -224,6 +213,8 @@ Univariate Probability Distributions openmc.stats.Maxwell openmc.stats.Watt openmc.stats.Tabular + openmc.stats.Legendre + openmc.stats.Mixture Angular Distributions --------------------- @@ -325,6 +316,74 @@ Functions openmc.model.create_triso_lattice +-------------------------------------------- +:mod:`openmc.data` -- Nuclear Data Interface +-------------------------------------------- + +Core Classes +------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.data.Product + openmc.data.Tabulated1D + openmc.data.CoherentElastic + +Angle-Energy Distributions +-------------------------- + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.data.AngleEnergy + openmc.data.KalbachMann + openmc.data.CorrelatedAngleEnergy + openmc.data.UncorrelatedAngleEnergy + openmc.data.NBodyPhaseSpace + openmc.data.AngleDistribution + openmc.data.EnergyDistribution + openmc.data.ArbitraryTabulated + openmc.data.GeneralEvaporation + openmc.data.MaxwellEnergy + openmc.data.Evaporation + openmc.data.WattEnergy + openmc.data.MadlandNix + openmc.data.DiscretePhoton + openmc.data.LevelInelastic + openmc.data.ContinuousTabular + +ACE Format +---------- + +Classes ++++++++ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.data.ace.Library + openmc.data.ace.Table + openmc.data.ace.NeutronTable + openmc.data.ace.SabTable + openmc.data.ace.PhotoatomicTable + openmc.data.ace.PhotonuclearTable + openmc.data.ace.Reaction + +Functions ++++++++++ + +.. autosummary:: + :toctree: generated + :nosignatures: + + openmc.data.ace.ascii_to_binary .. _Jupyter: https://jupyter.org/ .. _NumPy: http://www.numpy.org/ diff --git a/examples/python/basic/build-xml.py b/examples/python/basic/build-xml.py index 81aecc9f99..1bfe50b2e3 100644 --- a/examples/python/basic/build-xml.py +++ b/examples/python/basic/build-xml.py @@ -16,16 +16,16 @@ particles = 10000 ############################################################################### # Instantiate some Nuclides -h1 = openmc.Nuclide('H-1') -o16 = openmc.Nuclide('O-16') -u235 = openmc.Nuclide('U-235') +h1 = openmc.Nuclide('H1') +o16 = openmc.Nuclide('O16') +u235 = openmc.Nuclide('U235') # Instantiate some Materials and register the appropriate Nuclides moderator = openmc.Material(material_id=41, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('HH2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O', '71t') fuel = openmc.Material(material_id=40, name='fuel') fuel.set_density('g/cc', 4.5) diff --git a/examples/python/boxes/build-xml.py b/examples/python/boxes/build-xml.py index 4be33dcf1f..3eed4059c1 100644 --- a/examples/python/boxes/build-xml.py +++ b/examples/python/boxes/build-xml.py @@ -16,10 +16,10 @@ particles = 10000 ############################################################################### # Instantiate some Nuclides -h1 = openmc.Nuclide('H-1') -o16 = openmc.Nuclide('O-16') -u235 = openmc.Nuclide('U-235') -u238 = openmc.Nuclide('U-238') +h1 = openmc.Nuclide('H1') +o16 = openmc.Nuclide('O16') +u235 = openmc.Nuclide('U235') +u238 = openmc.Nuclide('U238') # Instantiate some Materials and register the appropriate Nuclides fuel1 = openmc.Material(material_id=1, name='fuel') @@ -34,7 +34,7 @@ moderator = openmc.Material(material_id=3, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('HH2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O', '71t') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([fuel1, fuel2, moderator]) diff --git a/examples/python/lattice/hexagonal/build-xml.py b/examples/python/lattice/hexagonal/build-xml.py index 05cb2cb010..ba2cac3670 100644 --- a/examples/python/lattice/hexagonal/build-xml.py +++ b/examples/python/lattice/hexagonal/build-xml.py @@ -15,10 +15,10 @@ particles = 10000 ############################################################################### # Instantiate some Nuclides -h1 = openmc.Nuclide('H-1') -o16 = openmc.Nuclide('O-16') -u235 = openmc.Nuclide('U-235') -fe56 = openmc.Nuclide('Fe-56') +h1 = openmc.Nuclide('H1') +o16 = openmc.Nuclide('O16') +u235 = openmc.Nuclide('U235') +fe56 = openmc.Nuclide('Fe56') # Instantiate some Materials and register the appropriate Nuclides fuel = openmc.Material(material_id=1, name='fuel') @@ -29,7 +29,7 @@ moderator = openmc.Material(material_id=2, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('HH2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O', '71t') iron = openmc.Material(material_id=3, name='iron') iron.set_density('g/cc', 7.9) diff --git a/examples/python/lattice/nested/build-xml.py b/examples/python/lattice/nested/build-xml.py index 03cede9dc5..edf3ad7b19 100644 --- a/examples/python/lattice/nested/build-xml.py +++ b/examples/python/lattice/nested/build-xml.py @@ -15,9 +15,9 @@ particles = 10000 ############################################################################### # Instantiate some Nuclides -h1 = openmc.Nuclide('H-1') -o16 = openmc.Nuclide('O-16') -u235 = openmc.Nuclide('U-235') +h1 = openmc.Nuclide('H1') +o16 = openmc.Nuclide('O16') +u235 = openmc.Nuclide('U235') # Instantiate some Materials and register the appropriate Nuclides fuel = openmc.Material(material_id=1, name='fuel') @@ -28,7 +28,7 @@ moderator = openmc.Material(material_id=2, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('HH2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O', '71t') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials((moderator, fuel)) diff --git a/examples/python/lattice/simple/build-xml.py b/examples/python/lattice/simple/build-xml.py index 5a642d3086..5ec1b7ee9f 100644 --- a/examples/python/lattice/simple/build-xml.py +++ b/examples/python/lattice/simple/build-xml.py @@ -15,9 +15,9 @@ particles = 10000 ############################################################################### # Instantiate some Nuclides -h1 = openmc.Nuclide('H-1') -o16 = openmc.Nuclide('O-16') -u235 = openmc.Nuclide('U-235') +h1 = openmc.Nuclide('H1') +o16 = openmc.Nuclide('O16') +u235 = openmc.Nuclide('U235') # Instantiate some Materials and register the appropriate Nuclides fuel = openmc.Material(material_id=1, name='fuel') @@ -28,7 +28,7 @@ moderator = openmc.Material(material_id=2, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('HH2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O', '71t') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([moderator, fuel]) diff --git a/examples/python/pincell/build-xml.py b/examples/python/pincell/build-xml.py index 0afb2527f6..3bda050276 100644 --- a/examples/python/pincell/build-xml.py +++ b/examples/python/pincell/build-xml.py @@ -15,39 +15,39 @@ particles = 1000 ############################################################################### # Instantiate some Nuclides -h1 = openmc.Nuclide('H-1') -h2 = openmc.Nuclide('H-2') -he4 = openmc.Nuclide('He-4') -b10 = openmc.Nuclide('B-10') -b11 = openmc.Nuclide('B-11') -o16 = openmc.Nuclide('O-16') -o17 = openmc.Nuclide('O-17') -cr50 = openmc.Nuclide('Cr-50') -cr52 = openmc.Nuclide('Cr-52') -cr53 = openmc.Nuclide('Cr-53') -cr54 = openmc.Nuclide('Cr-54') -fe54 = openmc.Nuclide('Fe-54') -fe56 = openmc.Nuclide('Fe-56') -fe57 = openmc.Nuclide('Fe-57') -fe58 = openmc.Nuclide('Fe-58') -zr90 = openmc.Nuclide('Zr-90') -zr91 = openmc.Nuclide('Zr-91') -zr92 = openmc.Nuclide('Zr-92') -zr94 = openmc.Nuclide('Zr-94') -zr96 = openmc.Nuclide('Zr-96') -sn112 = openmc.Nuclide('Sn-112') -sn114 = openmc.Nuclide('Sn-114') -sn115 = openmc.Nuclide('Sn-115') -sn116 = openmc.Nuclide('Sn-116') -sn117 = openmc.Nuclide('Sn-117') -sn118 = openmc.Nuclide('Sn-118') -sn119 = openmc.Nuclide('Sn-119') -sn120 = openmc.Nuclide('Sn-120') -sn122 = openmc.Nuclide('Sn-122') -sn124 = openmc.Nuclide('Sn-124') -u234 = openmc.Nuclide('U-234') -u235 = openmc.Nuclide('U-235') -u238 = openmc.Nuclide('U-238') +h1 = openmc.Nuclide('H1') +h2 = openmc.Nuclide('H2') +he4 = openmc.Nuclide('He4') +b10 = openmc.Nuclide('B10') +b11 = openmc.Nuclide('B11') +o16 = openmc.Nuclide('O16') +o17 = openmc.Nuclide('O17') +cr50 = openmc.Nuclide('Cr50') +cr52 = openmc.Nuclide('Cr52') +cr53 = openmc.Nuclide('Cr53') +cr54 = openmc.Nuclide('Cr54') +fe54 = openmc.Nuclide('Fe54') +fe56 = openmc.Nuclide('Fe56') +fe57 = openmc.Nuclide('Fe57') +fe58 = openmc.Nuclide('Fe58') +zr90 = openmc.Nuclide('Zr90') +zr91 = openmc.Nuclide('Zr91') +zr92 = openmc.Nuclide('Zr92') +zr94 = openmc.Nuclide('Zr94') +zr96 = openmc.Nuclide('Zr96') +sn112 = openmc.Nuclide('Sn112') +sn114 = openmc.Nuclide('Sn114') +sn115 = openmc.Nuclide('Sn115') +sn116 = openmc.Nuclide('Sn116') +sn117 = openmc.Nuclide('Sn117') +sn118 = openmc.Nuclide('Sn118') +sn119 = openmc.Nuclide('Sn119') +sn120 = openmc.Nuclide('Sn120') +sn122 = openmc.Nuclide('Sn122') +sn124 = openmc.Nuclide('Sn124') +u234 = openmc.Nuclide('U234') +u235 = openmc.Nuclide('U235') +u238 = openmc.Nuclide('U238') # Instantiate some Materials and register the appropriate Nuclides uo2 = openmc.Material(material_id=1, name='UO2 fuel at 2.4% wt enrichment') @@ -98,7 +98,7 @@ borated_water.add_nuclide(h1, 4.9457e-2) borated_water.add_nuclide(h2, 7.4196e-6) borated_water.add_nuclide(o16, 2.4672e-2) borated_water.add_nuclide(o17, 6.0099e-5) -borated_water.add_s_alpha_beta('HH2O', '71t') +borated_water.add_s_alpha_beta('c_H_in_H2O', '71t') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([uo2, helium, zircaloy, borated_water]) diff --git a/examples/python/reflective/build-xml.py b/examples/python/reflective/build-xml.py index 949e57c8c7..0e064ab610 100644 --- a/examples/python/reflective/build-xml.py +++ b/examples/python/reflective/build-xml.py @@ -16,7 +16,7 @@ particles = 10000 ############################################################################### # Instantiate a Nuclides -u235 = openmc.Nuclide('U-235') +u235 = openmc.Nuclide('U235') # Instantiate a Material and register the Nuclide fuel = openmc.Material(material_id=1, name='fuel') diff --git a/examples/xml/basic/materials.xml b/examples/xml/basic/materials.xml index 75ab74dbba..2f88731ffc 100644 --- a/examples/xml/basic/materials.xml +++ b/examples/xml/basic/materials.xml @@ -5,14 +5,14 @@ - + - - - + + + diff --git a/examples/xml/boxes/materials.xml b/examples/xml/boxes/materials.xml index 6f6114a7da..c74714a085 100644 --- a/examples/xml/boxes/materials.xml +++ b/examples/xml/boxes/materials.xml @@ -5,19 +5,19 @@ - + - + - - - + + + diff --git a/examples/xml/lattice/nested/materials.xml b/examples/xml/lattice/nested/materials.xml index b649221366..7f8b06bb10 100644 --- a/examples/xml/lattice/nested/materials.xml +++ b/examples/xml/lattice/nested/materials.xml @@ -6,14 +6,14 @@ - + - - - + + + diff --git a/examples/xml/lattice/simple/materials.xml b/examples/xml/lattice/simple/materials.xml index b649221366..7f8b06bb10 100644 --- a/examples/xml/lattice/simple/materials.xml +++ b/examples/xml/lattice/simple/materials.xml @@ -6,14 +6,14 @@ - + - - - + + + diff --git a/examples/xml/pincell/materials.xml b/examples/xml/pincell/materials.xml index 427fc175d4..b6af486d14 100644 --- a/examples/xml/pincell/materials.xml +++ b/examples/xml/pincell/materials.xml @@ -12,59 +12,59 @@ - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + diff --git a/examples/xml/reflective/materials.xml b/examples/xml/reflective/materials.xml index 6da53a9b60..13cbf070ea 100644 --- a/examples/xml/reflective/materials.xml +++ b/examples/xml/reflective/materials.xml @@ -5,7 +5,7 @@ - + diff --git a/openmc/ace.py b/openmc/ace.py deleted file mode 100644 index 3606b1e947..0000000000 --- a/openmc/ace.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import division -from struct import pack - - -def ascii_to_binary(ascii_file, binary_file): - """Convert an ACE file in ASCII format (type 1) to binary format (type 2). - - Parameters - ---------- - ascii_file : str - Filename of ASCII ACE file - binary_file : str - Filename of binary ACE file to be written - - """ - - # Open ASCII file - ascii = open(ascii_file, 'r') - - # Set default record length - record_length = 4096 - - # Read data from ASCII file - lines = ascii.readlines() - ascii.close() - - # Open binary file - binary = open(binary_file, 'wb') - - idx = 0 - while idx < len(lines): - # Read/write header block - hz = lines[idx][:10].encode('UTF-8') - aw0 = float(lines[idx][10:22]) - tz = float(lines[idx][22:34]) - hd = lines[idx][35:45].encode('UTF-8') - hk = lines[idx + 1][:70].encode('UTF-8') - hm = lines[idx + 1][70:80].encode('UTF-8') - binary.write(pack('=10sdd10s70s10s', hz, aw0, tz, hd, hk, hm)) - - # Read/write IZ/AW pairs - data = ' '.join(lines[idx + 2:idx + 6]).split() - iz = list(map(int, data[::2])) - aw = list(map(float, data[1::2])) - izaw = [item for sublist in zip(iz, aw) for item in sublist] - binary.write(pack('=' + 16*'id', *izaw)) - - # Read/write NXS and JXS arrays. Null bytes are added at the end so - # that XSS will start at the second record - nxs = list(map(int, ' '.join(lines[idx + 6:idx + 8]).split())) - jxs = list(map(int, ' '.join(lines[idx + 8:idx + 12]).split())) - binary.write(pack('=16i32i{0}x'.format(record_length - 500), *(nxs + jxs))) - - # Read/write XSS array. Null bytes are added to form a complete record - # at the end of the file - n_lines = (nxs[0] + 3)//4 - xss = list(map(float, ' '.join(lines[idx + 12:idx + 12 + n_lines]).split())) - extra_bytes = record_length - ((len(xss)*8 - 1) % record_length + 1) - binary.write(pack('={0}d{1}x'.format(nxs[0], extra_bytes), *xss)) - - # Advance to next table in file - idx += 12 + n_lines - - # Close binary file - binary.close() diff --git a/openmc/data/__init__.py b/openmc/data/__init__.py index df22d8bbb4..32de3b598e 100644 --- a/openmc/data/__init__.py +++ b/openmc/data/__init__.py @@ -1 +1,13 @@ from .data import * +from .ace import * +from .angle_distribution import * +from .container import * +from .energy_distribution import * +from .product import * +from .angle_energy import * +from .uncorrelated import * +from .correlated import * +from .kalbach_mann import * +from .nbody import * +from .thermal import * +from .urr import * diff --git a/openmc/data/ace.py b/openmc/data/ace.py new file mode 100644 index 0000000000..16c18dfb49 --- /dev/null +++ b/openmc/data/ace.py @@ -0,0 +1,2226 @@ +"""This module is for reading ACE-format cross sections. ACE stands for "A +Compact ENDF" format and originated from work on MCNP_. It is used in a number +of other Monte Carlo particle transport codes. + +ACE-format cross sections are typically generated from ENDF_ files through a +cross section processing program like NJOY_. The ENDF data consists of tabulated +thermal data, ENDF/B resonance parameters, distribution parameters in the +unresolved resonance region, and tabulated data in the fast region. After the +ENDF data has been reconstructed and Doppler-broadened, the ACER module +generates ACE-format cross sections. + +.. _MCNP: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/ +.. _NJOY: http://t2.lanl.gov/codes.shtml +.. _ENDF: http://www.nndc.bnl.gov/endf + +""" + +from __future__ import division, unicode_literals +import io +from os import SEEK_CUR +import struct +import sys +from warnings import warn +from collections import OrderedDict +from copy import deepcopy + +import numpy as np +from numpy.polynomial import Polynomial +import h5py + +from . import atomic_number, atomic_symbol, reaction_name +from .container import Tabulated1D, interpolation_scheme +from .angle_distribution import AngleDistribution +from .energy_distribution import * +from .product import Product +from .angle_energy import AngleEnergy +from .kalbach_mann import KalbachMann +from .uncorrelated import UncorrelatedAngleEnergy +from .correlated import CorrelatedAngleEnergy +from .nbody import NBodyPhaseSpace +from .thermal import CoherentElastic +from .urr import ProbabilityTables +from openmc.stats import Tabular, Discrete, Uniform, Mixture + +if sys.version_info[0] >= 3: + basestring = str + + +def ascii_to_binary(ascii_file, binary_file): + """Convert an ACE file in ASCII format (type 1) to binary format (type 2). + + Parameters + ---------- + ascii_file : str + Filename of ASCII ACE file + binary_file : str + Filename of binary ACE file to be written + + """ + + # Open ASCII file + ascii = open(ascii_file, 'r') + + # Set default record length + record_length = 4096 + + # Read data from ASCII file + lines = ascii.readlines() + ascii.close() + + # Open binary file + binary = open(binary_file, 'wb') + + idx = 0 + + while idx < len(lines): + # check if it's a > 2.0.0 version header + if lines[idx].split()[0][1] == '.': + if lines[idx + 1].split()[3] == '3': + idx = idx + 3 + else: + raise NotImplementedError('Only backwards compatible ACE' + 'headers currently supported') + # Read/write header block + hz = lines[idx][:10].encode('UTF-8') + aw0 = float(lines[idx][10:22]) + tz = float(lines[idx][22:34]) + hd = lines[idx][35:45].encode('UTF-8') + hk = lines[idx + 1][:70].encode('UTF-8') + hm = lines[idx + 1][70:80].encode('UTF-8') + binary.write(struct.pack(str('=10sdd10s70s10s'), hz, aw0, tz, hd, hk, hm)) + + # Read/write IZ/AW pairs + data = ' '.join(lines[idx + 2:idx + 6]).split() + iz = list(map(int, data[::2])) + aw = list(map(float, data[1::2])) + izaw = [item for sublist in zip(iz, aw) for item in sublist] + binary.write(struct.pack(str('=' + 16*'id'), *izaw)) + + # Read/write NXS and JXS arrays. Null bytes are added at the end so + # that XSS will start at the second record + nxs = list(map(int, ' '.join(lines[idx + 6:idx + 8]).split())) + jxs = list(map(int, ' '.join(lines[idx + 8:idx + 12]).split())) + binary.write(struct.pack(str('=16i32i{0}x'.format(record_length - 500)), + *(nxs + jxs))) + + # Read/write XSS array. Null bytes are added to form a complete record + # at the end of the file + n_lines = (nxs[0] + 3)//4 + xss = list(map(float, ' '.join(lines[ + idx + 12:idx + 12 + n_lines]).split())) + extra_bytes = record_length - ((len(xss)*8 - 1) % record_length + 1) + binary.write(struct.pack(str('={0}d{1}x'.format(nxs[0], extra_bytes)), + *xss)) + + # Advance to next table in file + idx += 12 + n_lines + + # Close binary file + binary.close() + + +def _get_tabulated_1d(array, idx=0): + """Create a Tabulated1D object from array. + + Parameters + ---------- + array : numpy.ndarray + Array is formed as a 1 dimensional array as follows: [number of regions, + final pair for each region, interpolation parameters, number of pairs, + x-values, y-values] + idx : int, optional + Offset to read from in array (default of zero) + + Returns + ------- + openmc.data.Tabulated1D + Tabulated data object + + """ + + # Get number of regions and pairs + n_regions = int(array[idx]) + n_pairs = int(array[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + nbt = np.asarray(array[idx:idx + n_regions], dtype=int) + interp = np.asarray(array[idx + n_regions:idx + 2*n_regions], dtype=int) + else: + # NR=0 regions implies linear-linear interpolation by default + nbt = np.array([n_pairs]) + interp = np.array([2]) + + # Get (x,y) pairs + idx += 2*n_regions + 1 + x = array[idx:idx + n_pairs] + y = array[idx + n_pairs:idx + 2*n_pairs] + + return Tabulated1D(x, y, nbt, interp) + + +def get_table(filename, name=None): + """Read a single table from an ACE file + + Parameters + ---------- + filename : str + Path of the ACE library to load table from + name : str, optional + Name of table to load, e.g. '92235.71c' + + Returns + ------- + openmc.data.ace.Table + ACE table with specified name. If no name is specified, the first table + in the file is returned. + + """ + + lib = Library(filename) + if name is None: + return list(lib.tables.values())[0] + else: + return lib.tables[name] + + +def get_all_tables(filename): + """Read all tables from an ACE file + + Parameters + ---------- + filename : str + Path of the ACE library to load table from + name : str, optional + Name of table to load, e.g. '92235.71c' + + Returns + ------- + list of openmc.data.ace.Table + ACE tables read from the file + + """ + + lib = Library(filename) + return list(lib.tables.values()) + + +class Library(object): + """A Library objects represents an ACE-formatted file which may contain + multiple tables with data. + + Parameters + ---------- + filename : str + Path of the ACE library file to load. + table_names : None, str, or iterable, optional + Tables from the file to read in. If None, reads in all of the + tables. If str, reads in only the single table of a matching name. + verbose : bool, optional + Determines whether output is printed to the stdout when reading a + Library + + Attributes + ---------- + tables : dict + Dictionary whose keys are the names of the ACE tables and whose values + are the instances of subclasses of :class:`Table` + (e.g. :class:`NeutronTable`) + + """ + + def __init__(self, filename, table_names=None, verbose=False): + if isinstance(table_names, basestring): + table_names = [table_names] + if table_names is not None: + table_names = set(table_names) + + self.tables = {} + + # Determine whether file is ASCII or binary + try: + fh = io.open(filename, 'rb') + # Grab 10 lines of the library + sb = b''.join([fh.readline() for i in range(10)]) + + # Try to decode it with ascii + sd = sb.decode('ascii') + + # No exception so proceed with ASCII - reopen in non-binary + fh.close() + fh = io.open(filename, 'r') + fh.seek(0) + self._read_ascii(fh, table_names, verbose) + except UnicodeDecodeError: + fh.close() + fh = open(filename, 'rb') + self._read_binary(fh, table_names, verbose) + + def _read_binary(self, fh, table_names, verbose=False, + recl_length=4096, entries=512): + """Read a binary (Type 2) ACE table. + + Parameters + ---------- + fh : file + Open ACE file + table_names : None, str, or iterable + Tables from the file to read in. If None, reads in all of the + tables. If str, reads in only the single table of a matching name. + verbose : str, optional + Whether to display what tables are being read. Defaults to False. + recl_length : int, optional + Fortran record length in binary file. Default value is 4096 bytes. + entries : int, optional + Number of entries per record. The default is 512 corresponding to a + record length of 4096 bytes with double precision data. + + """ + + while True: + start_position = fh.tell() + + # Check for end-of-file + if len(fh.read(1)) == 0: + return + fh.seek(start_position) + + # Read name, atomic mass ratio, temperature, date, comment, and + # material + name, atomic_weight_ratio, temperature, date, comment, mat = \ + struct.unpack(str('=10sdd10s70s10s'), fh.read(116)) + name = name.strip() + + # Read ZAID/awr combinations + izaw_pairs = struct.unpack(str('=' + 16*'id'), fh.read(192)) + + # Read NXS + nxs = list(struct.unpack(str('=16i'), fh.read(64))) + + # Determine length of XSS and number of records + length = nxs[0] + n_records = (length + entries - 1)//entries + + # name is bytes, make it a string + name = name.decode() + # verify that we are supposed to read this table in + if (table_names is not None) and (name not in table_names): + fh.seek(start_position + recl_length*(n_records + 1)) + continue + + # ensure we have a valid table type + if len(name) == 0 or name[-1] not in table_types: + warn("Unsupported table: " + name, RuntimeWarning) + fh.seek(start_position + recl_length*(n_records + 1)) + continue + + # get the table + table = table_types[name[-1]](name, atomic_weight_ratio, temperature) + + if verbose: + temperature_in_K = round(temperature * 1e6 / 8.617342e-5) + print("Loading nuclide {0} at {1} K".format(name, temperature_in_K)) + self.tables[name] = table + + # If table is S(a,b), add zaids + zaids = np.array(izaw_pairs[::2]) + table.zaids = zaids[np.nonzero(zaids)] + + # Read JXS + jxs = list(struct.unpack(str('=32i'), fh.read(128))) + + # Read XSS + fh.seek(start_position + recl_length) + xss = list(struct.unpack(str('={0}d'.format(length)), + fh.read(length*8))) + + # Insert empty object at beginning of NXS, JXS, and XSS arrays so + # that the indexing will be the same as Fortran. This makes it + # easier to follow the ACE format specification. + nxs.insert(0, 0) + table._nxs = np.array(nxs, dtype=int) + + jxs.insert(0, 0) + table._jxs = np.array(jxs, dtype=int) + + xss.insert(0, 0.0) + table._xss = np.array(xss) + + # Read all data blocks + table._read_all() + + # Advance to next record + fh.seek(start_position + recl_length*(n_records + 1)) + + def _read_ascii(self, fh, table_names, verbose=False): + """Read an ASCII (Type 1) ACE table. + + Parameters + ---------- + fh : file + Open ACE file + table_names : None, str, or iterable + Tables from the file to read in. If None, reads in all of the + tables. If str, reads in only the single table of a matching name. + verbose : str, optional + Whether to display what tables are being read. Defaults to False. + + """ + + tables_seen = set() + + lines = [fh.readline() for i in range(13)] + + while (0 != len(lines)) and (lines[0] != ''): + # Read name of table, atomic mass ratio, and temperature. If first + # line is empty, we are at end of file + + # check if it's a 2.0 style header + if lines[0].split()[0][1] == '.': + words = lines[0].split() + version = words[0] + name = words[1] + if len(words) == 3: + source = words[2] + words = lines[1].split() + atomic_weight_ratio = float(words[0]) + temperature = float(words[1]) + commentlines = int(words[3]) + for i in range(commentlines): + lines.pop(0) + lines.append(fh.readline()) + else: + words = lines[0].split() + name = words[0] + atomic_weight_ratio = float(words[1]) + temperature = float(words[2]) + + izaw_pairs = (' '.join(lines[2:6])).split() + + datastr = '0 ' + ' '.join(lines[6:8]) + nxs = np.fromstring(datastr, sep=' ', dtype=int) + + n_lines = (nxs[1] + 3)//4 + n_bytes = len(lines[-1]) * (n_lines - 2) + 1 + + # Ensure that we have more tables to read in + if (table_names is not None) and (table_names < tables_seen): + break + tables_seen.add(name) + + # verify that we are suppossed to read this table in + if (table_names is not None) and (name not in table_names): + fh.seek(n_bytes, SEEK_CUR) + fh.readline() + lines = [fh.readline() for i in range(13)] + continue + + # ensure we have a valid table type + if len(name) == 0 or name[-1] not in table_types: + warn("Unsupported table: " + name, RuntimeWarning) + fh.seek(n_bytes, SEEK_CUR) + fh.readline() + lines = [fh.readline() for i in range(13)] + continue + + # read and fix over-shoot + lines += fh.readlines(n_bytes) + if 12 + n_lines < len(lines): + goback = sum([len(line) for line in lines[12+n_lines:]]) + lines = lines[:12+n_lines] + fh.seek(-goback, SEEK_CUR) + + # get the table + table = table_types[name[-1]](name, atomic_weight_ratio, temperature) + + if verbose: + temperature_in_K = round(temperature * 1e6 / 8.617342e-5) + print("Loading nuclide {0} at {1} K".format(name, temperature_in_K)) + self.tables[name] = table + + # Read comment + table.comment = lines[1].strip() + + # If table is S(a,b), add zaids + if isinstance(table, SabTable): + zaids = np.fromiter(map(int, izaw_pairs[::2]), int) + table.zaids = zaids[np.nonzero(zaids)] + + # Add NXS, JXS, and XSS arrays to table Insert empty object at + # beginning of NXS, JXS, and XSS arrays so that the indexing will be + # the same as Fortran. This makes it easier to follow the ACE format + # specification. + table._nxs = nxs + + datastr = '0 ' + ' '.join(lines[8:12]) + table._jxs = np.fromstring(datastr, dtype=int, sep=' ') + + datastr = '0.0 ' + ''.join(lines[12:12+n_lines]) + table._xss = np.fromstring(datastr, sep=' ') + + # Read all data blocks + table._read_all() + lines = [fh.readline() for i in range(13)] + + +class Table(object): + """Abstract superclass of all other classes for cross section tables. + + Parameters + ---------- + name : str + ZAID identifier of the table, e.g. '92235.70c'. + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + temperature : float + Temperature of the target nuclide in eV. + + Attributes + ---------- + name : str + ZAID identifier of the table, e.g. '92235.70c'. + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + temperature : float + Temperature of the target nuclide in eV. + + """ + + def __init__(self, name, atomic_weight_ratio, temperature): + self.name = name + self.atomic_weight_ratio = atomic_weight_ratio + self.temperature = temperature + + def _read_all(self): + raise NotImplementedError + + def _get_continuous_tabular(self, idx, ldis): + """Get continuous tabular energy distribution (ACE law 4) starting at specified + index in the XSS array. + + Parameters + ---------- + idx : int + Index in XSS array of the start of the energy distribution data + (LDIS + LOCC - 1) + ldis : int + Index in XSS array of the start of the energy distribution block + (e.g. JXS[11]) + + Returns + ------- + openmc.data.energy_distribution.ContinuousTabular + Continuous tabular energy distribution + + """ + + # Read number of interpolation regions and incoming energies + n_regions = int(self._xss[idx]) + n_energy_in = int(self._xss[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + breakpoints = np.asarray(self._xss[idx:idx + n_regions], dtype=int) + interpolation = np.asarray(self._xss[idx + n_regions: + idx + 2*n_regions], dtype=int) + else: + breakpoints = np.array([n_energy_in]) + interpolation = np.array([2]) + + # Incoming energies at which distributions exist + idx += 2 * n_regions + 1 + energy = self._xss[idx:idx + n_energy_in] + + # Location of distributions + idx += n_energy_in + loc_dist = np.asarray(self._xss[idx:idx + n_energy_in], dtype=int) + + # Initialize variables + energy_out = [] + + # Read each outgoing energy distribution + for i in range(n_energy_in): + idx = ldis + loc_dist[i] - 1 + + # intt = interpolation scheme (1=hist, 2=lin-lin) + INTTp = int(self._xss[idx]) + intt = INTTp % 10 + n_discrete_lines = (INTTp - intt)//10 + if intt not in (1, 2): + warn("Interpolation scheme for continuous tabular distribution " + "is not histogram or linear-linear.") + intt = 2 + + n_energy_out = int(self._xss[idx + 1]) + data = self._xss[idx + 2:idx + 2 + 3*n_energy_out] + data.shape = (3, n_energy_out) + + # Create continuous distribution + eout_continuous = Tabular(data[0][n_discrete_lines:], + data[1][n_discrete_lines:], + interpolation_scheme[intt]) + eout_continuous.c = data[2][n_discrete_lines:] + + # If discrete lines are present, create a mixture distribution + if n_discrete_lines > 0: + eout_discrete = Discrete(data[0][:n_discrete_lines], + data[1][:n_discrete_lines]) + eout_discrete.c = data[2][:n_discrete_lines] + if n_discrete_lines == n_energy_out: + eout_i = eout_discrete + else: + p_discrete = min(sum(eout_discrete.p), 1.0) + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + else: + eout_i = eout_continuous + + energy_out.append(eout_i) + + return ContinuousTabular(breakpoints, interpolation, energy, + energy_out) + + def _get_general_evaporation(self, idx): + # Read nuclear temperature as Tabulated1D + theta = _get_tabulated_1d(array, idx) + + # X-function + nr = int(array[idx]) + ne = int(array[idx + 1 + 2*nr]) + idx += 2 + 2*nr + 2*ne + net = int(array[idx]) + x = array[idx + 1:idx + 1 + net] + + raise NotImplementedError("Where'd you get this ACE file from?") + + def _get_maxwell_energy(self, idx): + # Read nuclear temperature as Tabulated1D + theta = _get_tabulated_1d(self._xss, idx) + + # Restriction energy + nr = int(self._xss[idx]) + ne = int(self._xss[idx + 1 + 2*nr]) + u = self._xss[idx + 2 + 2*nr + 2*ne] + + return MaxwellEnergy(theta, u) + + def _get_evaporation(self, idx): + # Read nuclear temperature as Tabulated1D + theta = _get_tabulated_1d(self._xss, idx) + + # Restriction energy + nr = int(self._xss[idx]) + ne = int(self._xss[idx + 1 + 2*nr]) + u = self._xss[idx + 2 + 2*nr + 2*ne] + + return Evaporation(theta, u) + + def _get_watt_energy(self, idx): + # Energy-dependent a parameter + a = _get_tabulated_1d(self._xss, idx) + + # Advance index + nr = int(self._xss[idx]) + ne = int(self._xss[idx + 1 + 2*nr]) + idx += 2 + 2*nr + 2*ne + + # Energy-dependent b parameter + b = _get_tabulated_1d(self._xss, idx) + + # Advance index + nr = int(self._xss[idx]) + ne = int(self._xss[idx + 1 + 2*nr]) + idx += 2 + 2*nr + 2*ne + + # Restriction energy + u = self._xss[idx] + + return WattEnergy(a, b, u) + + def _get_kalbach_mann(self, idx, ldis): + # Read number of interpolation regions and incoming energies + n_regions = int(self._xss[idx]) + n_energy_in = int(self._xss[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + breakpoints = np.asarray(self._xss[idx:idx + n_regions], dtype=int) + interpolation = np.asarray(self._xss[idx + n_regions: + idx + 2*n_regions], dtype=int) + else: + breakpoints = np.array([n_energy_in]) + interpolation = np.array([2]) + + # Incoming energies at which distributions exist + idx += 2 * n_regions + 1 + energy = self._xss[idx:idx + n_energy_in] + + # Location of distributions + idx += n_energy_in + loc_dist = np.asarray(self._xss[idx:idx + n_energy_in], dtype=int) + + # Initialize variables + energy_out = [] + km_r = [] + km_a = [] + + # Read each outgoing energy distribution + for i in range(n_energy_in): + idx = ldis + loc_dist[i] - 1 + + # intt = interpolation scheme (1=hist, 2=lin-lin) + INTTp = int(self._xss[idx]) + intt = INTTp % 10 + n_discrete_lines = (INTTp - intt)//10 + if intt not in (1, 2): + warn("Interpolation scheme for continuous tabular distribution " + "is not histogram or linear-linear.") + intt = 2 + + n_energy_out = int(self._xss[idx + 1]) + data = self._xss[idx + 2:idx + 2 + 5*n_energy_out] + data.shape = (5, n_energy_out) + + # Create continuous distribution + eout_continuous = Tabular(data[0][n_discrete_lines:], + data[1][n_discrete_lines:], + interpolation_scheme[intt]) + eout_continuous.c = data[2][n_discrete_lines:] + + # If discrete lines are present, create a mixture distribution + if n_discrete_lines > 0: + eout_discrete = Discrete(data[0][:n_discrete_lines], + data[1][:n_discrete_lines]) + eout_discrete.c = data[2][:n_discrete_lines] + if n_discrete_lines == n_energy_out: + eout_i = eout_discrete + else: + p_discrete = min(sum(eout_discrete.p), 1.0) + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + else: + eout_i = eout_continuous + + energy_out.append(eout_i) + km_r.append(Tabulated1D(data[0], data[3])) + km_a.append(Tabulated1D(data[0], data[4])) + + return KalbachMann(breakpoints, interpolation, energy, energy_out, + km_r, km_a) + + def _get_correlated(self, idx, ldis): + # Read number of interpolation regions and incoming energies + n_regions = int(self._xss[idx]) + n_energy_in = int(self._xss[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + breakpoints = np.asarray(self._xss[idx:idx + n_regions], dtype=int) + interpolation = np.asarray(self._xss[idx + n_regions: + idx + 2*n_regions], dtype=int) + else: + breakpoints = np.array([n_energy_in]) + interpolation = np.array([2]) + + # Incoming energies at which distributions exist + idx += 2 * n_regions + 1 + energy = self._xss[idx:idx + n_energy_in] + + # Location of distributions + idx += n_energy_in + loc_dist = np.asarray(self._xss[idx:idx + n_energy_in], dtype=int) + + # Initialize list of distributions + energy_out = [] + mu = [] + + # Read each outgoing energy distribution + for i in range(n_energy_in): + idx = ldis + loc_dist[i] - 1 + + # intt = interpolation scheme (1=hist, 2=lin-lin) + INTTp = int(self._xss[idx]) + intt = INTTp % 10 + n_discrete_lines = (INTTp - intt)//10 + if intt not in (1, 2): + warn("Interpolation scheme for continuous tabular distribution " + "is not histogram or linear-linear.") + intt = 2 + + # Secondary energy distribution + n_energy_out = int(self._xss[idx + 1]) + data = self._xss[idx + 2:idx + 2 + 4*n_energy_out] + data.shape = (4, n_energy_out) + + # Create continuous distribution + eout_continuous = Tabular(data[0][n_discrete_lines:], + data[1][n_discrete_lines:], + interpolation_scheme[intt], + ignore_negative=True) + eout_continuous.c = data[2][n_discrete_lines:] + + # If discrete lines are present, create a mixture distribution + if n_discrete_lines > 0: + eout_discrete = Discrete(data[0][:n_discrete_lines], + data[1][:n_discrete_lines]) + eout_discrete.c = data[2][:n_discrete_lines] + if n_discrete_lines == n_energy_out: + eout_i = eout_discrete + else: + p_discrete = min(sum(eout_discrete.p), 1.0) + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + else: + eout_i = eout_continuous + + energy_out.append(eout_i) + + lc = np.asarray(data[3], dtype=int) + + # Secondary angular distributions + mu_i = [] + for j in range(n_energy_out): + if lc[j] > 0: + idx = ldis + abs(lc[j]) - 1 + + intt = int(self._xss[idx]) + n_cosine = int(self._xss[idx + 1]) + data = self._xss[idx + 2:idx + 2 + 3*n_cosine] + data.shape = (3, n_cosine) + + mu_ij = Tabular(data[0], data[1], interpolation_scheme[intt]) + mu_ij.c = data[2] + else: + # Isotropic distribution + mu_ij = Uniform(-1., 1.) + + mu_i.append(mu_ij) + + # Add cosine distributions for this incoming energy to list + mu.append(mu_i) + + return CorrelatedAngleEnergy(breakpoints, interpolation, energy, + energy_out, mu) + + def _get_energy_distribution(self, location_dist, location_start, rx=None): + """Returns an EnergyDistribution object from data read in starting at + location_start. + + Parameters + ---------- + location_dist : int + Index in the XSS array corresponding to the start of a block, + e.g. JXS(11) for the the DLW block. + location_start : int + Index in the XSS array corresponding to the start of an energy + distribution array + rx : Reaction + Reaction this energy distribution will be associated with + + Returns + ------- + distribution : openmc.data.AngleEnergy + Secondary angle-energy distribution + + """ + + # Set starting index for energy distribution + idx = location_dist + location_start - 1 + + law = int(self._xss[idx + 1]) + location_data = int(self._xss[idx + 2]) + + # Position index for reading law data + idx = location_dist + location_data - 1 + + # Parse energy distribution data + if law == 2: + primary_flag = int(self._xss[idx]) + energy = self._xss[idx + 1] + distribution = UncorrelatedAngleEnergy() + distribution.energy = DiscretePhoton(primary_flag, energy, + self.atomic_weight_ratio) + elif law in (3, 33): + threshold, mass_ratio = self._xss[idx:idx + 2] + distribution = UncorrelatedAngleEnergy() + distribution.energy = LevelInelastic(threshold, mass_ratio) + elif law == 4: + distribution = UncorrelatedAngleEnergy() + distribution.energy = self._get_continuous_tabular(idx, location_dist) + elif law == 5: + distribution = UncorrelatedAngleEnergy() + distribution.energy = self._get_general_evaporation(idx) + elif law == 7: + distribution = UncorrelatedAngleEnergy() + distribution.energy = self._get_maxwell_energy(idx) + elif law == 9: + distribution = UncorrelatedAngleEnergy() + distribution.energy = self._get_evaporation(idx) + elif law == 11: + distribution = UncorrelatedAngleEnergy() + distribution.energy = self._get_watt_energy(idx) + elif law == 44: + distribution = self._get_kalbach_mann(idx, location_dist) + elif law == 61: + distribution = self._get_correlated(idx, location_dist) + elif law == 66: + n_particles = int(self._xss[idx]) + total_mass = self._xss[idx + 1] + distribution = NBodyPhaseSpace(total_mass, n_particles, + self.atomic_weight_ratio, rx.Q_value) + else: + raise IOError("Unsupported ACE secondary energy " + "distribution law {0}".format(law)) + + return distribution + + +class NeutronTable(Table): + """A NeutronTable object contains continuous-energy neutron interaction data + read from an ACE-formatted table. These objects are not normally + instantiated by the user but rather created when reading data using a + Library object and stored within the :attr:`Library.tables` attribute. + + Parameters + ---------- + name : str + ZAID identifier of the table, e.g. '92235.70c'. + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + temperature : float + Temperature of the target nuclide in eV. + + Attributes + ---------- + absorption_xs : numpy.ndarray + The microscopic absorption cross section for each value on the energy + grid. + atomic_weight_ratio : float + Atomic weight ratio of the target nuclide. + energy : numpy.ndarray + The energy values (MeV) at which reaction cross-sections are tabulated. + heating_number : numpy.ndarray + The total heating number for each value on the energy grid in MeV-b. + name : str + ZAID identifier of the table, e.g. 92235.70c. + reactions : collections.OrderedDict + Contains the cross sections, secondary angle and energy distributions, + and other associated data for each reaction. The keys are the MT values + and the values are Reaction objects. + temperature : float + Temperature of the target nuclide in eV. + total_xs : numpy.ndarray + The microscopic total cross section for each value on the energy grid in b. + urr : None or openmc.data.ProbabilityTables + Unresolved resonance region probability tables + + """ + + def __init__(self, name, atomic_weight_ratio, temperature): + super(NeutronTable, self).__init__(name, atomic_weight_ratio, temperature) + self.absorption_xs = None + self.energy = None + self.heating_number = None + self.total_xs = None + self.reactions = OrderedDict() + self.urr = None + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + def __iter__(self): + return iter(self.reactions.values()) + + def _read_all(self): + self._read_cross_sections() + self._read_nu() + self._read_secondaries() + self._read_photon_production_data() + self._read_unr() + + def _read_cross_sections(self): + """Read reaction cross sections and other data. + + Reads and parses the ESZ, MTR, LQR, TRY, LSIG, and SIG blocks. These + blocks contain the energy grid, all reaction cross sections, the total + cross section, average heating numbers, and a list of reactions with + their Q-values and multiplicites. + """ + + # Determine number of energies on nuclide grid and number of reactions + # excluding elastic scattering + n_energies = self._nxs[3] + n_reactions = self._nxs[4] + + # Read energy grid and total, absorption, elastic scattering, and + # heating cross sections -- note that this appear separate from the rest + # of the reaction cross sections + arr = self._xss[self._jxs[1]:self._jxs[1] + 5*n_energies] + arr.shape = (5, n_energies) + self.energy, self.total_xs, self.absorption_xs, \ + elastic_xs, self.heating_number = arr + + # Create elastic scattering reaction + elastic_scatter = Reaction(2, self) + elastic_scatter.products.append(Product('neutron')) + elastic_scatter.xs = Tabulated1D(self.energy, elastic_xs) + self.reactions[2] = elastic_scatter + + # Create all other reactions with MT values + mts = np.asarray(self._xss[self._jxs[3]:self._jxs[3] + n_reactions], dtype=int) + qvalues = np.asarray(self._xss[self._jxs[4]:self._jxs[4] + + n_reactions], dtype=float) + tys = np.asarray(self._xss[self._jxs[5]:self._jxs[5] + n_reactions], dtype=int) + + # Create all reactions other than elastic scatter + reactions = [(mt, Reaction(mt, self)) for mt in mts] + self.reactions.update(reactions) + + # Loop over all reactions other than elastic scattering + for i, rx in enumerate(list(self.reactions.values())[1:]): + # Copy Q values determine if scattering should be treated in the + # center-of-mass or lab system + rx.Q_value = qvalues[i] + rx.center_of_mass = (tys[i] < 0) + + # For neutron-producing reactions, get yield + if rx.MT < 100: + if tys[i] != 19: + if abs(tys[i]) > 100: + # Energy-dependent neutron yield + idx = self._jxs[11] + abs(tys[i]) - 101 + yield_ = _get_tabulated_1d(self._xss, idx) + else: + yield_ = abs(tys[i]) + + neutron = Product('neutron') + neutron.yield_ = yield_ + rx.products.append(neutron) + + # Get locator for cross-section data + loc = int(self._xss[self._jxs[6] + i]) + + # Determine starting index on energy grid + rx.threshold_idx = int(self._xss[self._jxs[7] + loc - 1]) - 1 + + # Determine number of energies in reaction + n_energies = int(self._xss[self._jxs[7] + loc]) + energy = self.energy[rx.threshold_idx:rx.threshold_idx + n_energies] + + # Read reaction cross section + xs = self._xss[self._jxs[7] + loc + 1:self._jxs[7] + loc + 1 + n_energies] + rx.xs = Tabulated1D(energy, xs) + + def _read_nu(self): + """Read the NU block -- this contains information on the prompt and delayed + neutron precursor yields, decay constants, etc + + """ + # No NU block + if self._jxs[2] == 0: + return + + products = [] + derived_products = [] + + # Either prompt nu or total nu is given + if self._xss[self._jxs[2]] > 0: + whichnu = 'prompt' if self._jxs[24] > 0 else 'total' + + neutron = Product('neutron') + neutron.emission_mode = whichnu + + idx = self._jxs[2] + LNU = int(self._xss[idx]) + if LNU == 1: + # Polynomial function form of nu + NC = int(self._xss[idx+1]) + coefficients = self._xss[idx+2 : idx+2+NC] + neutron.yield_ = Polynomial(coefficients) + elif LNU == 2: + # Tabular data form of nu + neutron.yield_ = _get_tabulated_1d(self._xss, idx + 1) + + products.append(neutron) + + # Both prompt nu and total nu + elif self._xss[self._jxs[2]] < 0: + # Read prompt neutron yield + prompt_neutron = Product('neutron') + prompt_neutron.emission_mode = 'prompt' + + idx = self._jxs[2] + 1 + LNU = int(self._xss[idx]) + if LNU == 1: + # Polynomial function form of nu + NC = int(self._xss[idx+1]) + coefficients = self._xss[idx+2 : idx+2+NC] + prompt_neutron.yield_ = Polynomial(coefficients) + elif LNU == 2: + # Tabular data form of nu + prompt_neutron.yield_ = _get_tabulated_1d(self._xss, idx + 1) + + # Read total neutron yield + total_neutron = Product('neutron') + total_neutron.emission_mode = 'total' + + idx = self._jxs[2] + int(abs(self._xss[self._jxs[2]])) + 1 + LNU = int(self._xss[idx]) + + if LNU == 1: + # Polynomial function form of nu + NC = int(self._xss[idx+1]) + coefficients = self._xss[idx+2 : idx+2+NC] + total_neutron.yield_ = Polynomial(coefficients) + elif LNU == 2: + # Tabular data form of nu + total_neutron.yield_ = _get_tabulated_1d(self._xss, idx + 1) + + products.append(prompt_neutron) + derived_products.append(total_neutron) + + # Check for delayed nu data + if self._jxs[24] > 0: + yield_delayed = _get_tabulated_1d(self._xss, self._jxs[24] + 1) + + # Delayed neutron precursor distribution + idx = self._jxs[25] + n_group = self._nxs[8] + total_group_probability = 0. + for i, group in enumerate(range(n_group)): + delayed_neutron = Product('neutron') + delayed_neutron.emission_mode = 'delayed' + delayed_neutron.decay_rate = self._xss[idx] + + group_probability = _get_tabulated_1d(self._xss, idx + 1) + if np.all(group_probability.y == group_probability.y[0]): + delayed_neutron.yield_ = deepcopy(yield_delayed) + delayed_neutron.yield_.y *= group_probability.y[0] + total_group_probability += group_probability.y[0] + else: + raise NotImplementedError( + 'Delayed neutron with energy-dependent ' + 'group probability') + + # Advance position + nr = int(self._xss[idx + 1]) + ne = int(self._xss[idx + 2 + 2*nr]) + idx += 3 + 2*nr + 2*ne + + # Energy distribution for delayed fission neutrons + location_start = int(self._xss[self._jxs[26] + group]) + delayed_neutron.distribution.append( + self._get_energy_distribution(self._jxs[27], location_start)) + + products.append(delayed_neutron) + + # Renormalize delayed neutron yields to reflect fact that in ACE + # file, the sum of the group probabilities is not exactly one + for product in products[1:]: + product.yield_.y /= total_group_probability + + # Copy fission neutrons to reactions + for MT, rx in self.reactions.items(): + if MT in (18, 19, 20, 21, 38): + rx.products = deepcopy(products) + if derived_products: + rx.derived_products = deepcopy(derived_products) + + def _get_angle_distribution(self, location_dist, location_start): + # Set starting index for angle distribution + idx = location_dist + location_start - 1 + + # Number of energies at which angular distributions are tabulated + n_energies = int(self._xss[idx]) + idx += 1 + + # Incoming energy grid + energy = self._xss[idx:idx + n_energies] + idx += n_energies + + # Read locations for angular distributions + lc = np.asarray(self._xss[idx:idx + n_energies], dtype=int) + idx += n_energies + + mu = [] + for i in range(n_energies): + if lc[i] > 0: + # Equiprobable 32 bin distribution + idx = location_dist + abs(lc[i]) - 1 + cos = self._xss[idx:idx + 33] + pdf = np.zeros(33) + pdf[:32] = 1.0/(32.0*np.diff(cos)) + cdf = np.linspace(0.0, 1.0, 33) + + mu_i = Tabular(cos, pdf, 'histogram', ignore_negative=True) + mu_i.c = cdf + elif lc[i] < 0: + # Tabular angular distribution + idx = location_dist + abs(lc[i]) - 1 + intt = int(self._xss[idx]) + n_points = int(self._xss[idx + 1]) + data = self._xss[idx + 2:idx + 2 + 3*n_points] + data.shape = (3, n_points) + + mu_i = Tabular(data[0], data[1], interpolation_scheme[intt]) + mu_i.c = data[2] + else: + # Isotropic angular distribution + mu_i = Uniform(-1., 1.) + + mu.append(mu_i) + + return AngleDistribution(energy, mu) + + def _read_secondaries(self): + """Read angle/energy distributions for each reaction MT + """ + + # Number of reactions with secondary neutrons (including elastic + # scattering) + n_reactions = self._nxs[5] + 1 + + for i, rx in enumerate(list(self.reactions.values())[:n_reactions]): + if rx.MT == 18: + for p in rx.products: + if p.emission_mode == 'prompt': + neutron = p + break + else: + neutron = rx.products[0] + + if i > 0: + # Determine locator for ith energy distribution + lnw = int(self._xss[self._jxs[10] + i - 1]) + + while lnw > 0: + # Applicability of this distribution + neutron.applicability.append(_get_tabulated_1d( + self._xss, self._jxs[11] + lnw + 2)) + + # Read energy distribution data + neutron.distribution.append(self._get_energy_distribution( + self._jxs[11], lnw, rx)) + + lnw = int(self._xss[self._jxs[11] + lnw - 1]) + else: + # No energy distribution for elastic scattering + neutron.distribution.append(UncorrelatedAngleEnergy()) + + # Check if angular distribution data exist + loc = int(self._xss[self._jxs[8] + i]) + if loc == -1: + # Angular distribution data are given as part of product + # angle-energy distribution + continue + elif loc == 0: + # No angular distribution data are given for this + # reaction, isotropic scattering is asssumed + angle_dist = None + else: + angle_dist = self._get_angle_distribution(self._jxs[9], loc) + + # Apply angular distribution to each uncorrelated angle-energy + # distribution + if angle_dist is not None: + for d in neutron.distribution: + d.angle = angle_dist + + def _read_photon_production_data(self): + """Read cross sections for each photon-production reaction""" + + n_photon_reactions = self._nxs[6] + photon_mts = np.asarray(self._xss[self._jxs[13]:self._jxs[13] + + n_photon_reactions], dtype=int) + + for i, rx in enumerate(photon_mts): + # Determine corresponding reaction + mt = photon_mts[i] // 1000 + reactions = [] + if mt not in self.reactions: + # If the photon is assigned to MT=18 but the file splits fission + # into MT=19,20,21,38, assign the photon product to each of the + # individual reactions + if mt == 18: + for mt_fiss in (19, 20, 21, 38): + if mt_fiss in self.reactions: + reactions.append(self.reactions[mt_fiss]) + if not reactions: + reactions.append(Reaction(mt, self)) + else: + reactions.append(self.reactions[mt]) + + # Create photon product and assign to reactions + photon = Product('photon') + for rx in reactions: + rx.products.append(photon) + + # ================================================================== + # Read photon yield / production cross section + + loca = int(self._xss[self._jxs[14] + i]) + idx = self._jxs[15] + loca - 1 + mftype = int(self._xss[idx]) + idx += 1 + + if mftype in (12, 16): + # Yield data taken from ENDF File 12 or 6 + mtmult = int(self._xss[idx]) + assert mtmult == mt + + # Read photon yield as function of energy + photon.yield_ = _get_tabulated_1d(self._xss, idx + 1) + + elif mftype == 13: + # Cross section data from ENDF File 13 + + # Energy grid index at which data starts + threshold_idx = int(self._xss[idx]) - 1 + + # Get photon production cross section + n_energy = int(self._xss[idx + 1]) + photon._xs = self._xss[idx + 2:idx + 2 + n_energy] + + # Determine yield based on ratio of cross sections + energy = self.energy[threshold_idx:threshold_idx + n_energy] + photon.yield_ = Tabulated1D(energy, photon._xs) + + else: + raise ValueError("MFTYPE must be 12, 13, 16. Got {0}".format( + mftype)) + + # ================================================================== + # Read photon energy distribution + + location_start = int(self._xss[self._jxs[18] + i]) + + # Read energy distribution data + distribution = self._get_energy_distribution( + self._jxs[19], location_start) + assert isinstance(distribution, UncorrelatedAngleEnergy) + + # ================================================================== + # Read photon angular distribution + loc = int(self._xss[self._jxs[16] + i]) + + if loc == 0: + # No angular distribution data are given for this reaction, + # isotropic scattering is asssumed in LAB + energy = np.array([photon.yield_.x[0], photon.yield_.x[-1]]) + mu_isotropic = Uniform(-1., 1.) + distribution.angle = AngleDistribution( + energy, [mu_isotropic, mu_isotropic]) + else: + distribution.angle = self._get_angle_distribution(self._jxs[17], loc) + + # Add to list of distributions + photon.distribution.append(distribution) + + def _read_unr(self): + """Read the unresolved resonance range probability tables if present. + """ + + # Check if URR probability tables are present + idx = self._jxs[23] + if idx == 0: + return + + N = int(self._xss[idx]) # Number of incident energies + M = int(self._xss[idx+1]) # Length of probability table + interpolation = int(self._xss[idx+2]) + inelastic_flag = int(self._xss[idx+3]) + absorption_flag = int(self._xss[idx+4]) + multiply_smooth = (int(self._xss[idx+5]) == 1) + idx += 6 + + # Get energies at which tables exist + energy = self._xss[idx : idx+N] + idx += N + + # Get probability tables + table = self._xss[idx:idx+N*6*M] + table.shape = (N, 6, M) + + # Create object + self.urr = ProbabilityTables(energy, table, interpolation, inelastic_flag, + absorption_flag, multiply_smooth) + + def export_to_hdf5(self, path, element=None, mass_number=None, metastable=0): + """Export table to an HDF5 file. + + Parameters + ---------- + path : str + Path to write HDF5 file to + element : str or None + Elemental symbol, e.g. Zr. If not specified, the atomic + number/symbol are inferred from the name of the table. + mass_number : int or None + Mass number of the nuclide. For natural elements, a value of zero + should be given. If not specified, the mass number is inferred from + the name of the table. + metastable : int + Metastable level of the nuclide. Defaults to 0. + + """ + + f = h5py.File(path, 'a') + + # If element and/or mass number haven't been specified, make an educated + # guess + zaid, xs = self.name.split('.') + if element is None: + Z = int(zaid) // 1000 + element = atomic_symbol[Z] + else: + Z = atomic_number[element] + if mass_number is None: + mass_number = int(zaid) % 1000 + + # Write basic data + if metastable > 0: + name = '{}{}_m{}.{}'.format(element, mass_number, metastable, xs) + else: + name = '{}{}.{}'.format(element, mass_number, xs) + g = f.create_group(name) + g.attrs['Z'] = Z + g.attrs['A'] = mass_number + g.attrs['metastable'] = metastable + g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio + g.attrs['temperature'] = self.temperature + g.attrs['n_reaction'] = len(self.reactions) + + # Write energy grid + g.create_dataset('energy', data=self.energy) + + # Write reaction data + for i, rx in enumerate(self.reactions.values()): + rx_group = g.create_group('reaction_{}'.format(i)) + rx.to_hdf5(rx_group) + + # Write total nu data if available + if hasattr(rx, 'derived_products') and 'total_nu' not in g: + tgroup = g.create_group('total_nu') + rx.derived_products[0].to_hdf5(tgroup) + + # Write unresolved resonance probability tables + if self.urr is not None: + urr_group = g.create_group('urr') + self.urr.to_hdf5(urr_group) + + f.close() + + @classmethod + def from_hdf5(self, group): + """Generate continuous-energy neutron interaction data from HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group containing interaction data + + Returns + ------- + openmc.data.ace.NeutronTable + Continuous-energy neutron interaction data + + """ + name = group.name[1:] + atomic_weight_ratio = group.attrs['atomic_weight_ratio'] + temperature = group.attrs['temperature'] + table = NeutronTable(name, atomic_weight_ratio, temperature) + + # Read energy grid + table.energy = group['energy'].value + + # Read reaction data + n_reaction = group.attrs['n_reaction'] + + # Write reaction data + for i in range(n_reaction): + rx_group = group['reaction_{}'.format(i)] + rx = Reaction.from_hdf5(rx_group, table) + table.reactions[rx.MT] = rx + + # Read total nu data if available + if 'total_nu' in rx_group: + tgroup = rx_group['total_nu'] + rx.derived_products = [Product.from_hdf5(tgroup)] + + # Read unresolved resonance probability tables + if 'urr' in group: + urr_group = group['urr'] + table.urr = ProbabilityTables.from_hdf5(urr_group) + + return table + + +class SabTable(Table): + """A SabTable object contains thermal scattering data as represented by + an S(alpha, beta) table. + + Parameters + ---------- + name : str + ZAID identifier of the table, e.g. lwtr.10t. + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + temperature : float + Temperature of the target nuclide in eV. + + Attributes + ---------- + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + elastic_xs : openmc.data.Tabulated1D or openmc.data.CoherentElastic + Elastic scattering cross section derived in the coherent or incoherent + approximation + inelastic_xs : openmc.data.Tabulated1D + Inelastic scattering cross section derived in the incoherent + approximation + name : str + ZAID identifier of the table, e.g. 92235.70c. + temperature : float + Temperature of the target nuclide in eV. + + """ + + def __init__(self, name, atomic_weight_ratio, temperature): + super(SabTable, self).__init__(name, atomic_weight_ratio, temperature) + self.elastic_xs = None + self.elastic_mu_out = None + + self.inelastic_xs = None + self.inelastic_e_out = None + self.inelastic_mu_out = None + self.secondary_mode = None + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + def _read_all(self): + self._read_itie() + self._read_itce() + self._read_itxe() + self._read_itca() + + def _read_itie(self): + """Read energy-dependent inelastic scattering cross sections. + """ + idx = self._jxs[1] + n_energies = int(self._xss[idx]) + energy = self._xss[idx+1 : idx+1+n_energies] + xs = self._xss[idx+1+n_energies : idx+1+2*n_energies] + self.inelastic_xs = Tabulated1D(energy, xs) + + def _read_itce(self): + """Read energy-dependent elastic scattering cross sections. + """ + # Determine if ITCE block exists + idx = self._jxs[4] + if idx == 0: + return + + # Read values + n_energies = int(self._xss[idx]) + energy = self._xss[idx+1 : idx+1+n_energies] + P = self._xss[idx+1+n_energies : idx+1+2*n_energies] + + if self._nxs[5] == 4: + self.elastic_xs = CoherentElastic(energy, P) + else: + self.elastic_xs = Tabulated1D(energy, P) + + def _read_itxe(self): + """Read coupled energy/angle distributions for inelastic scattering. + """ + # Determine number of energies and angles + NE_in = len(self.inelastic_xs) + NE_out = self._nxs[4] + + if self._nxs[7] == 0: + self.secondary_mode = 'equal' + elif self._nxs[7] == 1: + self.secondary_mode = 'skewed' + elif self._nxs[7] == 2: + self.secondary_mode = 'continuous' + + if self.secondary_mode in ('equal', 'skewed'): + NMU = self._nxs[3] + idx = self._jxs[3] + self.inelastic_e_out = self._xss[idx:idx+NE_in*NE_out*(NMU+2):NMU+2] + self.inelastic_e_out.shape = (NE_in, NE_out) + + self.inelastic_mu_out = self._xss[idx:idx+NE_in*NE_out*(NMU+2)] + self.inelastic_mu_out.shape = (NE_in, NE_out, NMU+2) + self.inelastic_mu_out = self.inelastic_mu_out[:, :, 1:] + else: + NMU = self._nxs[3] - 1 + idx = self._jxs[3] + locc = self._xss[idx:idx + NE_in].astype(int) + NE_out = self._xss[idx + NE_in:idx + 2*NE_in].astype(int) + energy_out = [] + mu_out = [] + for i in range(NE_in): + idx = locc[i] + + # Outgoing energy distribution for incoming energy i + e = self._xss[idx + 1:idx + 1 + NE_out[i]*(NMU + 3):NMU + 3] + p = self._xss[idx + 2:idx + 2 + NE_out[i]*(NMU + 3):NMU + 3] + c = self._xss[idx + 3:idx + 3 + NE_out[i]*(NMU + 3):NMU + 3] + eout_i = Tabular(e, p, 'linear-linear', ignore_negative=True) + eout_i.c = c + + # Outgoing angle distribution for each (incoming, outgoing) energy pair + mu_i = [] + for j in range(NE_out[i]): + mu = self._xss[idx + 4:idx + 4 + NMU] + p_mu = 1./NMU*np.ones(NMU) + mu_ij = Discrete(mu, p_mu) + mu_ij.c = np.cumsum(p_mu) + mu_i.append(mu_ij) + idx += 3 + NMU + + energy_out.append(eout_i) + mu_out.append(mu_i) + + # Create correlated angle-energy distribution + breakpoints = [NE_in] + interpolation = [2] + energy = self.inelastic_xs.x + self.inelastic_dist = CorrelatedAngleEnergy( + breakpoints, interpolation, energy, energy_out, mu_out) + + def _read_itca(self): + """Read angular distributions for elastic scattering. + """ + NMU = self._nxs[6] + if self._jxs[4] == 0 or NMU == -1: + return + idx = self._jxs[6] + + NE = len(self.elastic_xs) + self.elastic_mu_out = self._xss[idx:idx+NE*NMU] + self.elastic_mu_out.shape = (NE, NMU) + + def export_to_hdf5(self, path, name): + """Export table to an HDF5 file. + + Parameters + ---------- + path : str + Path to write HDF5 file to + name : str + Name of compound (used as first group in HDF5 file) + + """ + + f = h5py.File(path, 'a') + + # Write basic data + g = f.create_group('{}.{}'.format(name, self.name.split('.')[1])) + g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio + g.attrs['temperature'] = self.temperature + g.attrs['zaids'] = self.zaids + + # Write thermal elastic scattering + if self.elastic_xs is not None: + elastic_group = g.create_group('elastic') + self.elastic_xs.to_hdf5(elastic_group, 'xs') + if self.elastic_mu_out is not None: + elastic_group.create_dataset('mu_out', data=self.elastic_mu_out) + + # Write thermal inelastic scattering + if self.inelastic_xs is not None: + inelastic_group = g.create_group('inelastic') + self.inelastic_xs.to_hdf5(inelastic_group, 'xs') + inelastic_group.attrs['secondary_mode'] = np.string_(self.secondary_mode) + if self.secondary_mode in ('equal', 'skewed'): + inelastic_group.create_dataset('energy_out', data=self.inelastic_e_out) + inelastic_group.create_dataset('mu_out', data=self.inelastic_mu_out) + elif self.secondary_mode == 'continuous': + self.inelastic_dist.to_hdf5(inelastic_group) + + @classmethod + def from_hdf5(self, group): + """Generate thermal scattering data from HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.SabTable + Neutron thermal scattering data + + """ + name = group.name[1:] + atomic_weight_ratio = group.attrs['atomic_weight_ratio'] + temperature = group.attrs['temperature'] + table = SabTable(name, atomic_weight_ratio, temperature) + table.zaids = group.attrs['zaids'] + + # Read thermal elastic scattering + if 'elastic' in group: + elastic_group = group['elastic'] + + # Cross section + elastic_xs_type = elastic_group['xs'].attrs['type'].decode() + if elastic_xs_type == 'tab1': + table.elastic_xs = Tabulated1D.from_hdf5(elastic_group['xs']) + elif elastic_xs_type == 'bragg': + table.elastic_xs = CoherentElastic.from_hdf5(elastic_group['xs']) + + # Angular distribution + if 'mu_out' in elastic_group: + table.elastic_mu_out = elastic_group['mu_out'].value + + # Read thermal inelastic scattering + if 'inelastic' in group: + inelastic_group = group['inelastic'] + table.secondary_mode = inelastic_group.attrs['secondary_mode'].decode() + table.inelastic_xs = Tabulated1D.from_hdf5(inelastic_group['xs']) + if table.secondary_mode in ('equal', 'skewed'): + table.inelastic_e_out = inelastic_group['energy_out'] + table.inelastic_mu_out = inelastic_group['mu_out'] + elif table.secondary_mode == 'continuous': + table.inelastic_dist = AngleEnergy.from_hdf5(inelastic_group) + + return table + + +class Reaction(object): + """Reaction(MT, table=None) + + A Reaction object represents a single reaction channel for a nuclide with + an associated cross section and, if present, a secondary angle and energy + distribution. These objects are stored within the ``reactions`` attribute on + subclasses of Table, e.g. NeutronTable. + + Parameters + ---------- + MT : int + The ENDF MT number for this reaction. On occasion, MCNP uses MT numbers + that don't correspond exactly to the ENDF specification. + table : openmc.data.ace.Table + The ACE table which contains this reaction. This is useful if data on + the parent nuclide is needed (for instance, the energy grid at which + cross sections are tabulated) + + Attributes + ---------- + center_of_mass : bool + Indicates whether scattering kinematics should be performed in the + center-of-mass or laboratory reference frame. + grid above the threshold value in barns. + MT : int + The ENDF MT number for this reaction. + Q_value : float + The Q-value of this reaction in MeV. + table : openmc.data.ace.Table + The ACE table which contains this reaction. + threshold : float + Threshold of the reaction in MeV + threshold_idx : int + The index on the energy grid corresponding to the threshold of this + reaction. + xs : openmc.data.Tabulated1D + Microscopic cross section for this reaction as a function of incident + energy + products : Iterable of openmc.data.Product + Reaction products + + """ + + def __init__(self, MT, table=None): + self.center_of_mass = True + self.table = table + self.MT = MT + self.Q_value = 0. + self.threshold_idx = 0 + self._xs = None + self.products = [] + + def __repr__(self): + if self.MT in reaction_name: + return "".format(self.MT, reaction_name[self.MT]) + else: + return "".format(self.MT) + + @property + def center_of_mass(self): + return self._center_of_mass + + @property + def products(self): + return self._products + + @property + def threshold(self): + return self.xs.x[0] + + @property + def xs(self): + return self._xs + + @center_of_mass.setter + def center_of_mass(self, center_of_mass): + cv.check_type('center of mass', center_of_mass, (bool, np.bool_)) + self._center_of_mass = center_of_mass + + @products.setter + def products(self, products): + cv.check_type('reaction products', products, Iterable, Product) + self._products = products + + @xs.setter + def xs(self, xs): + cv.check_type('reaction cross section', xs, Tabulated1D) + for y in xs.y: + cv.check_greater_than('reaction cross section', y, 0.0, True) + self._xs = xs + + def to_hdf5(self, group): + """Write reaction to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['MT'] = self.MT + if self.MT in reaction_name: + group.attrs['label'] = np.string_(reaction_name[self.MT]) + else: + group.attrs['label'] = np.string_(self.MT) + group.attrs['Q_value'] = self.Q_value + group.attrs['threshold_idx'] = self.threshold_idx + 1 + group.attrs['center_of_mass'] = 1 if self.center_of_mass else 0 + group.attrs['n_product'] = len(self.products) + if self.xs is not None: + group.create_dataset('xs', data=self.xs.y) + for i, p in enumerate(self.products): + pgroup = group.create_group('product_{}'.format(i)) + p.to_hdf5(pgroup) + + @classmethod + def from_hdf5(cls, group, table): + """Generate reaction from an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + Returns + ------- + openmc.data.ace.Reaction + Reaction data + + """ + MT = group.attrs['MT'] + rxn = cls(MT) + rxn.table = table + rxn.Q_value = group.attrs['Q_value'] + rxn.threshold_idx = group.attrs['threshold_idx'] - 1 + rxn.center_of_mass = bool(group.attrs['center_of_mass']) + + # Read cross section + if 'xs' in group: + xs = group['xs'].value + rxn.xs = Tabulated1D(table.energy, xs) + + # Read reaction products + n_product = group.attrs['n_product'] + products = [] + for i in range(n_product): + pgroup = group['product_{}'.format(i)] + products.append(Product.from_hdf5(pgroup)) + rxn.products = products + + return rxn + + +class DosimetryTable(Table): + def __init__(self, name, atomic_weight_ratio, temperature): + super(DosimetryTable, self).__init__( + name, atomic_weight_ratio, temperature) + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + +class NeutronDiscreteTable(Table): + + def __init__(self, name, atomic_weight_ratio, temperature): + super(NeutronDiscreteTable, self).__init__( + name, atomic_weight_ratio, temperature) + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + +class NeutronMGTable(Table): + + def __init__(self, name, atomic_weight_ratio, temperature): + super(NeutronMGTable, self).__init__( + name, atomic_weight_ratio, temperature) + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + +class PhotoatomicTable(Table): + + def __init__(self, name, atomic_weight_ratio, temperature): + super(PhotoatomicTable, self).__init__( + name, atomic_weight_ratio, temperature) + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + def _read_all(self): + self._read_eszg() + self._read_jinc() + self._read_jcoh() + self._read_heating() + self._read_compton_data() + + def _read_eszg(self): + # Determine number of energies on common energy grid + n_energies = self._nxs[3] + + # Read cross sections + idx = self._jxs[1] + data = np.asarray(self._xss[idx:idx + 5*n_energies]) + data.shape = (5, n_energies) + self.energy = data[0] + self.incoherent = data[1] + self.coherent = data[2] + self.photoelectric = data[3] + self.pairproduction = data[4] + + def _read_jinc(self): + # Read incoherent scattering function + idx = self._jxs[2] + self.incoherent_scattering = self._xss[idx:idx + 21] + + def _read_jcoh(self): + # Read coherent form factors and integrated coherent form factors + idx = self._jxs[3] + self.int_coherent_form_factors = self._xss[idx:idx + 55] + self.coherent_form_factors = self._xss[idx + 55:idx + 2*55] + + def _read_jflo(self): + raise NotImplementedError + + def _read_heating(self): + idx = self._jxs[5] + self.avg_heating = self._xss[idx:idx + self._nxs[3]] + + def _read_compton_data(self): + # Determine number of Compton profiles + n_shells = self._nxs[5] + + if n_shells > 0: + # Number of electrons per shell + idx = self._jxs[6] + self.electrons_per_shell = np.asarray( + self._xss[idx:idx + n_shells], dtype=int) + + # Binding energy per shell + idx = self._jxs[7] + self.binding_energy_per_shell = self._xss[idx:idx + n_shells] + + # Probability of interaction per shell + idx = self._jxs[8] + self.probability_per_shell = self._xss[idx:idx + n_shells] + + # Initialize arrays for Compton profile data + self.compton_profile_interp = np.zeros(n_shells) + self.compton_profile_momentum = [] + self.compton_profile_pdf = [] + self.compton_profile_cdf = [] + + for i in range(n_shells): + # Get locator for SWD block + loca = int(self._xss[self._jxs[9] + i]) + idx = self._jxs[10] + loca - 1 + + # Get interpolation parameter and number of momentum entries + self.compton_profile_interp[i] = int(self._xss[idx]) + n_momentum = int(self._xss[idx + 1]) + idx += 2 + + # Get momentum entries, PDF, and CDF + data = self._xss[idx:idx + 3*n_momentum] + data.shape = (3, n_momentum) + self.compton_profile_momentum.append(data[0]) + self.compton_profile_pdf.append(data[1]) + self.compton_profile_cdf.append(data[2]) + + +class PhotoatomicMGTable(Table): + + def __init__(self, name, atomic_weight_ratio, temperature): + super(PhotoatomicMGTable, self).__init__( + name, atomic_weight_ratio, temperature) + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + +class ElectronTable(Table): + + def __init__(self, name, atomic_weight_ratio, temperature): + super(ElectronTable, self).__init__( + name, atomic_weight_ratio, temperature) + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + +class PhotonuclearTable(Table): + + def __init__(self, name, atomic_weight_ratio, temperature): + super(PhotonuclearTable, self).__init__( + name, atomic_weight_ratio, temperature) + self.reactions = OrderedDict() + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + def _read_all(self): + self._read_basic() + self._read_cross_sections() + self._read_secondaries() + self._read_angular_distributions() + self._read_energy_distributions() + + def _read_basic(self): + n_energies = self._nxs[3] + + # Read energy mesh + idx = self._jxs[1] + self.energy = self._xss[idx:idx + n_energies] + + # Read total cross section + idx = self._jxs[2] + self.total_xs = self._xss[idx:idx + n_energies] + + # Read non-elastic and elastic cross section + if self._jxs[4] > 0: + idx = self._jxs[3] + self.non_elastic_xs = self._xss[idx:idx + n_energies] + idx = self._jxs[4] + self.elastic_xs = self._xss[idx:idx + n_energies] + else: + self.non_elastic_xs = self.total_xs.copy() + self.elastic_xs = np.zeros(n_energies) + + # Read heating numbers + idx = self._jxs[5] + if idx > 0: + self.heating_number = self._xss[idx:idx + n_energies] + else: + self.heating_number = np.zeros(n_energies) + + def _read_cross_sections(self): + # Determine number of reactions + n_reactions = self._nxs[4] + + # Read list of MT numbers and Q values + mts = np.asarray(self._xss[self._jxs[6]:self._jxs[6] + + n_reactions], dtype=int) + qvalues = np.asarray(self._xss[self._jxs[7]:self._jxs[7] + + n_reactions]) + + # Create reactions in dictionary + reactions = [(mt, Reaction(mt, self)) for mt in mts] + self.reactions.update(reactions) + + for i, rx in enumerate(self.reactions.values()): + # Copy Q values + rx.Q_value = qvalues[i] + + # Determine starting index on energy grid and number of energies + idx = self._jxs[9] + int(self._xss[self._jxs[8] + i]) - 1 + rx.threshold_idx = int(self._xss[idx]) + n_energies = int(self._xss[idx + 1]) + energy = self.energy[rx.threshold_idx:rx.threshold_idx + n_energies] + idx += 2 + + # Read reaction cross setion + xs = self._xss[idx:idx + n_energies] + rx.xs = Tabulated1D(energy, xs, [], []) + + def _read_secondaries(self): + names = {1: 'neutron', 2: 'photon', 3: 'electron', + 9: 'proton', 31: 'deuteron', 32: 'triton', + 33: 'helium3', 34: 'alpha'} + + n_particles = self._nxs[5] + n_entries = self._nxs[7] + + idx = self._jxs[10] + ixs = np.asarray(self._xss[idx:idx + n_particles*n_entries], dtype=int) + ixs.shape = (n_particles, n_entries) + self.ixs = ixs.transpose() + + self.particles = [] + + for j in range(n_particles): + # Create dictionary for particle + particle = {} + self.particles.append(particle) + + # Get secondary particle type/name + particle['ipt'] = self.ixs[0, j] + particle['name'] = names[particle['ipt']] + + # Number of reactions that produce secondary particle + n_producing = self.ixs[1, j] + + # Particle-production cross section + idx = self.ixs[2, j] + particle['ie_production'] = int(self._xss[idx]) + ne = int(self._xss[idx + 1]) + idx += 2 + particle['production'] = self._xss[idx:idx + ne] + + # Average heating numbers + idx = self.ixs[3, j] + particle['ie_heating'] = int(self._xss[idx]) + ne = int(self._xss[idx + 1]) + idx += 2 + particle['heating_number'] = self._xss[idx:idx + ne] + + # MTs of particle production reactions + idx = self.ixs[4, j] + particle['mt_producing'] = np.asarray( + self._xss[idx:idx + n_producing], dtype=int) + + # Coordinate system of reaction producing secondary particle + idx = self.ixs[5, j] + particle['center_of_mass'] = [i < 0 for i in + self._xss[idx:idx + n_producing]] + + # Reaction yields + particle['yield'] = {} + for k in range(n_producing): + # Create dictionary for yield data + yieldData = {} + + # Read reaction yield data for a single MT + idx = self.ixs[7, j] + int(self._xss[self.ixs[6, j] + k]) - 1 + + yieldData['mftype'] = int(self._xss[idx]) + idx += 1 + + if yieldData['mftype'] in (6, 12, 16): + # Yield data from ENDF File 6 or 12 + mtmult = int(self._xss[idx]) + assert mtmult == particle['mt_producing'][k] + + # Read yield as function of energy + yieldData['multiplicity'] = _get_tabulated_1d( + self._xss, idx + 1) + + elif yieldData['mftype'] == 13: + # Production cross section for corresponding MT + yieldData['ie'] = int(self._xss[idx]) + ne = int(self._xss[idx + 1]) + idx += 2 + yieldData['cross_section'] = self._xss[idx:idx + ne] + + # Add reaction yield data to dictionary + mt = particle['mt_producing'][k] + particle['yield'][mt] = yieldData + + def _read_angular_distributions(self): + for j, particle in enumerate(self.particles): + # Create dictionary for angular distributions + angular_dists = {} + particle['angular_distribution'] = angular_dists + + for k, mt in enumerate(particle['mt_producing']): + landp = int(self._xss[self.ixs[8, j] + k]) + + # check if angular distribution data exists + if landp == -1: + # Angular distribution data are specified through the + # DLWP block + continue + elif landp == 0: + # No angular distribution data are given for this + # reaction, isotropic scattering is assumed + ie = self.reactions[mt].threshold_idx + ne = len(self.reactions[mt].sigma) + angular_dists[mt] = AngularDistribution.isotropic( + np.array([self.energy[ie], self.energy[ie + ne - 1]])) + continue + + idx = self.ixs[9, j] + landp - 1 + + angular_dists[mt] = AngularDistribution() + angular_dists[mt].read(self._xss, idx, self.ixs[9, j]) + + def _read_energy_distributions(self): + for j, particle in enumerate(self.particles): + # Create dictionary for energy distributions + energy_dists = {} + particle['energy_distribution'] = energy_dists + + for k, mt in enumerate(particle['mt_producing']): + # Determine locator for kth energy distribution + ldlwp = int(self._xss[self.ixs[10, j] + k]) + + # Read energy distribution data + energy_dists[mt] = self._get_energy_distribution( + self.ixs[11, j], ldlwp) +table_types = { + "c": NeutronTable, + "t": SabTable, + "y": DosimetryTable, + "d": NeutronDiscreteTable, + "p": PhotoatomicTable, + "m": NeutronMGTable, + "g": PhotoatomicMGTable, + "e": ElectronTable, + "u": PhotonuclearTable} diff --git a/openmc/data/angle_distribution.py b/openmc/data/angle_distribution.py new file mode 100644 index 0000000000..5f19450bc7 --- /dev/null +++ b/openmc/data/angle_distribution.py @@ -0,0 +1,134 @@ +from collections import Iterable +from numbers import Real + +import numpy as np + +import openmc.checkvalue as cv +from openmc.stats import Univariate, Tabular +from .container import interpolation_scheme + + +class AngleDistribution(object): + """Angle distribution as a function of incoming energy + + Parameters + ---------- + energy : Iterable of float + Incoming energies at which distributions exist + mu : Iterable of openmc.stats.Univariate + Distribution of scattering cosines corresponding to each incoming energy + + Attributes + ---------- + energy : Iterable of float + Incoming energies at which distributions exist + mu : Iterable of openmc.stats.Univariate + Distribution of scattering cosines corresponding to each incoming energy + + """ + + def __init__(self, energy, mu): + super(AngleDistribution, self).__init__() + self.energy = energy + self.mu = mu + + @property + def energy(self): + return self._energy + + @property + def mu(self): + return self._mu + + @energy.setter + def energy(self, energy): + cv.check_type('angle distribution incoming energy', energy, + Iterable, Real) + self._energy = energy + + @mu.setter + def mu(self, mu): + cv.check_type('angle distribution scattering cosines', mu, + Iterable, Univariate) + self._mu = mu + + def to_hdf5(self, group): + """Write angle distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + dset = group.create_dataset('energy', data=self.energy) + + # Make sure all data is tabular + mu_tabular = [mu_i if isinstance(mu_i, Tabular) else + mu_i.to_tabular() for mu_i in self.mu] + + # Determine total number of (mu,p) pairs and create array + n_pairs = sum([len(mu_i.x) for mu_i in mu_tabular]) + pairs = np.empty((3, n_pairs)) + + # Create array for offsets + offsets = np.empty(len(mu_tabular), dtype=int) + interpolation = np.empty(len(mu_tabular), dtype=int) + j = 0 + + # Populate offsets and pairs array + for i, mu_i in enumerate(mu_tabular): + n = len(mu_i.x) + offsets[i] = j + interpolation[i] = 1 if mu_i.interpolation == 'histogram' else 2 + pairs[0, j:j+n] = mu_i.x + pairs[1, j:j+n] = mu_i.p + pairs[2, j:j+n] = mu_i.c + j += n + + # Create dataset for distributions + dset = group.create_dataset('mu', data=pairs) + + # Write interpolation as attribute + dset.attrs['offsets'] = offsets + dset.attrs['interpolation'] = interpolation + + @classmethod + def from_hdf5(cls, group): + """Generate angular distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.AngleDistribution + Angular distribution + + """ + energy = group['energy'].value + data = group['mu'] + offsets = data.attrs['offsets'] + interpolation = data.attrs['interpolation'] + + mu = [] + n_energy = len(energy) + for i in range(n_energy): + # Determine length of outgoing energy distribution and number of + # discrete lines + j = offsets[i] + if i < n_energy - 1: + n = offsets[i+1] - j + else: + n = data.shape[1] - j + + interp = interpolation_scheme[interpolation[i]] + mu_i = Tabular(data[0, j:j+n], data[1, j:j+n], interp) + mu_i.c = data[2, j:j+n] + + mu.append(mu_i) + + return cls(energy, mu) diff --git a/openmc/data/angle_energy.py b/openmc/data/angle_energy.py new file mode 100644 index 0000000000..fc17d7bece --- /dev/null +++ b/openmc/data/angle_energy.py @@ -0,0 +1,40 @@ +from abc import ABCMeta, abstractmethod + +import numpy as np + +import openmc.data + + +class AngleEnergy(object): + """Distribution in angle and energy of a secondary particle.""" + + __metaclass = ABCMeta + + @abstractmethod + def to_hdf5(self, group): + pass + + @staticmethod + def from_hdf5(group): + """Generate angle-energy distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.AngleEnergy + Angle-energy distribution + + """ + dist_type = group.attrs['type'].decode() + if dist_type == 'uncorrelated': + return openmc.data.UncorrelatedAngleEnergy.from_hdf5(group) + elif dist_type == 'correlated': + return openmc.data.CorrelatedAngleEnergy.from_hdf5(group) + elif dist_type == 'kalbach-mann': + return openmc.data.KalbachMann.from_hdf5(group) + elif dist_type == 'nbody': + return openmc.data.NBodyPhaseSpace.from_hdf5(group) diff --git a/openmc/data/container.py b/openmc/data/container.py new file mode 100644 index 0000000000..4bd293c365 --- /dev/null +++ b/openmc/data/container.py @@ -0,0 +1,269 @@ +from collections import Iterable +from numbers import Real, Integral + +import numpy as np + +import openmc.checkvalue as cv + +interpolation_scheme = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', + 4: 'log-linear', 5: 'log-log'} + + +class Tabulated1D(object): + """A one-dimensional tabulated function. + + This class mirrors the TAB1 type from the ENDF-6 format. A tabulated + function is specified by tabulated (x,y) pairs along with interpolation + rules that determine the values between tabulated pairs. + + Once an object has been created, it can be used as though it were an actual + function, e.g.: + + >>> f = Tabulated1D([0, 10], [4, 5]) + >>> [f(xi) for xi in numpy.linspace(0, 10, 5)] + [4.0, 4.25, 4.5, 4.75, 5.0] + + Parameters + ---------- + x : Iterable of float + Independent variable + y : Iterable of float + Dependent variable + breakpoints : Iterable of int + Breakpoints for interpolation regions + interpolation : Iterable of int + Interpolation scheme identification number, e.g., 3 means y is linear in + ln(x). + + Attributes + ---------- + x : Iterable of float + Independent variable + y : Iterable of float + Dependent variable + breakpoints : Iterable of int + Breakpoints for interpolation regions + interpolation : Iterable of int + Interpolation scheme identification number, e.g., 3 means y is linear in + ln(x). + n_regions : int + Number of interpolation regions + n_pairs : int + Number of tabulated (x,y) pairs + + """ + + def __init__(self, x, y, breakpoints=None, interpolation=None): + if breakpoints is None or interpolation is None: + # Single linear-linear interpolation region by default + self.breakpoints = np.array([len(x)]) + self.interpolation = np.array([2]) + else: + self.breakpoints = np.asarray(breakpoints, dtype=int) + self.interpolation = np.asarray(interpolation, dtype=int) + + self.x = np.asarray(x) + self.y = np.asarray(y) + + def __call__(self, x): + # Check if input is array or scalar + if isinstance(x, Iterable): + iterable = True + x = np.array(x) + else: + iterable = False + x = np.array([x], dtype=float) + + # Create output array + y = np.zeros_like(x) + + # Get indices for interpolation + idx = np.searchsorted(self.x, x, side='right') - 1 + + # Find lowest valid index + i_low = np.searchsorted(idx, 0) + + for k in range(len(self.breakpoints)): + # Determine which x values are within this interpolation range + i_high = np.searchsorted(idx, self.breakpoints[k] - 1) + + # Get x values and bounding (x,y) pairs + xk = x[i_low:i_high] + xi = self.x[idx[i_low:i_high]] + xi1 = self.x[idx[i_low:i_high] + 1] + yi = self.y[idx[i_low:i_high]] + yi1 = self.y[idx[i_low:i_high] + 1] + + if self.interpolation[k] == 1: + # Histogram + y[i_low:i_high] = yi + + elif self.interpolation[k] == 2: + # Linear-linear + y[i_low:i_high] = yi + (xk - xi)/(xi1 - xi)*(yi1 - yi) + + elif self.interpolation[k] == 3: + # Linear-log + y[i_low:i_high] = yi + np.log(xk/xi)/np.log(xi1/xi)*(yi1 - yi) + + elif self.interpolation[k] == 4: + # Log-linear + y[i_low:i_high] = yi*np.exp((xk - xi)/(xi1 - xi)*np.log(yi1/yi)) + + elif self.interpolation[k] == 5: + # Log-log + y[i_low:i_high] = yi*np.exp(np.log(xk/xi)/np.log(xi1/xi)*np.log(yi1/yi)) + + i_low = i_high + + # In some cases, the first/last point of x may be less than the first + # value of self.x due only to precision, so we check if they're close + # and set them equal if so. Otherwise, the interpolated value might be + # out of range (and thus zero) + if np.isclose(x[0], self.x[0], 1e-8): + y[0] = self.y[0] + if np.isclose(x[-1], self.x[-1], 1e-8): + y[-1] = self.y[-1] + + return y if iterable else y[0] + + def __len__(self): + return len(self.x) + + @property + def x(self): + return self._x + + @property + def y(self): + return self._y + + @property + def breakpoints(self): + return self._breakpoints + + @property + def interpolation(self): + return self._interpolation + + @property + def n_pairs(self): + return len(self.x) + + @property + def n_regions(self): + return len(self.breakpoints) + + @x.setter + def x(self, x): + cv.check_type('x values', x, Iterable, Real) + self._x = x + + @y.setter + def y(self, y): + cv.check_type('y values', y, Iterable, Real) + self._y = y + + @breakpoints.setter + def breakpoints(self, breakpoints): + cv.check_type('breakpoints', breakpoints, Iterable, Integral) + self._breakpoints = breakpoints + + @interpolation.setter + def interpolation(self, interpolation): + cv.check_type('interpolation', interpolation, Iterable, Integral) + self._interpolation = interpolation + + def integral(self): + """Integral of the tabulated function over its tabulated range. + + Returns + ------- + numpy.ndarray + Array of same length as the tabulated data that represents partial + integrals from the bottom of the range to each tabulated point. + + """ + + # Create output array + partial_sum = np.zeros(len(self.x) - 1) + + i_low = 0 + for k in range(len(self.breakpoints)): + # Determine which x values are within this interpolation range + i_high = self.breakpoints[k] - 1 + + # Get x values and bounding (x,y) pairs + x0 = self.x[i_low:i_high] + x1 = self.x[i_low + 1:i_high + 1] + y0 = self.y[i_low:i_high] + y1 = self.y[i_low + 1:i_high + 1] + + if self.interpolation[k] == 1: + # Histogram + partial_sum[i_low:i_high] = y0*(x1 - x0) + + elif self.interpolation[k] == 2: + # Linear-linear + m = (y1 - y0)/(x1 - x0) + partial_sum[i_low:i_high] = (y0 - m*x0)*(x1 - x0) + \ + m*(x1**2 - x0**2)/2 + + elif self.interpolation[k] == 3: + # Linear-log + logx = np.log(x1/x0) + m = (y1 - y0)/logx + partial_sum[i_low:i_high] = y0 + m*(x1*(logx - 1) + x0) + + elif self.interpolation[k] == 4: + # Log-linear + m = np.log(y1/y0)/(x1 - x0) + partial_sum[i_low:i_high] = y0/m*(np.exp(m*(x1 - x0)) - 1) + + elif self.interpolation[k] == 5: + # Log-log + m = np.log(y1/y0)/np.log(x1/x0) + partial_sum[i_low:i_high] = y0/((m + 1)*x0**m)*( + x1**(m + 1) - x0**(m + 1)) + + i_low = i_high + + return np.concatenate(([0.], np.cumsum(partial_sum))) + + def to_hdf5(self, group, name='xy'): + """Write tabulated function to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + name : str + Name of the dataset to create + + """ + dataset = group.create_dataset(name, data=np.vstack( + [self.x, self.y])) + dataset.attrs['type'] = np.string_('tab1') + dataset.attrs['breakpoints'] = self.breakpoints + dataset.attrs['interpolation'] = self.interpolation + + @classmethod + def from_hdf5(cls, dataset): + """Generate tabulated function from an HDF5 dataset + + Parameters + ---------- + dataset : h5py.Dataset + Dataset to read from + + Returns + ------- + openmc.data.Tabulated1D + Function read from dataset + + """ + x = dataset.value[0,:] + y = dataset.value[1,:] + breakpoints = dataset.attrs['breakpoints'] + interpolation = dataset.attrs['interpolation'] + return cls(x, y, breakpoints, interpolation) diff --git a/openmc/data/correlated.py b/openmc/data/correlated.py new file mode 100644 index 0000000000..58a90da9d6 --- /dev/null +++ b/openmc/data/correlated.py @@ -0,0 +1,291 @@ +from collections import Iterable +from numbers import Real, Integral + +import numpy as np + +import openmc.checkvalue as cv +from openmc.stats import Tabular, Univariate, Discrete, Mixture +from .container import interpolation_scheme +from .angle_energy import AngleEnergy + + +class CorrelatedAngleEnergy(AngleEnergy): + """Correlated angle-energy distribution + + Parameters + ---------- + breakpoints : Iterable of int + Breakpoints defining interpolation regions + interpolation : Iterable of int + Interpolation codes + energy : Iterable of float + Incoming energies at which distributions exist + energy_out : Iterable of openmc.stats.Univariate + Distribution of outgoing energies corresponding to each incoming energy + mu : Iterable of Iterable of openmc.stats.Univariate + Distribution of scattering cosine for each incoming/outgoing energy + + Attributes + ---------- + breakpoints : Iterable of int + Breakpoints defining interpolation regions + interpolation : Iterable of int + Interpolation codes + energy : Iterable of float + Incoming energies at which distributions exist + energy_out : Iterable of openmc.stats.Univariate + Distribution of outgoing energies corresponding to each incoming energy + mu : Iterable of Iterable of openmc.stats.Univariate + Distribution of scattering cosine for each incoming/outgoing energy + + """ + + def __init__(self, breakpoints, interpolation, energy, energy_out, mu): + super(CorrelatedAngleEnergy, self).__init__() + self.breakpoints = breakpoints + self.interpolation = interpolation + self.energy = energy + self.energy_out = energy_out + self.mu = mu + + @property + def breakpoints(self): + return self._breakpoints + + @property + def interpolation(self): + return self._interpolation + @property + def energy(self): + return self._energy + + @property + def energy_out(self): + return self._energy_out + + @property + def mu(self): + return self._mu + + @breakpoints.setter + def breakpoints(self, breakpoints): + cv.check_type('correlated angle-energy breakpoints', breakpoints, + Iterable, Integral) + self._breakpoints = breakpoints + + @interpolation.setter + def interpolation(self, interpolation): + cv.check_type('correlated angle-energy interpolation', interpolation, + Iterable, Integral) + self._interpolation = interpolation + + @energy.setter + def energy(self, energy): + cv.check_type('correlated angle-energy incoming energy', energy, + Iterable, Real) + self._energy = energy + + @energy_out.setter + def energy_out(self, energy_out): + cv.check_type('correlated angle-energy outgoing energy', energy_out, + Iterable, Univariate) + self._energy_out = energy_out + + @mu.setter + def mu(self, mu): + cv.check_iterable_type('correlated angle-energy outgoing cosine', + mu, Univariate, 2, 2) + self._mu = mu + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + group.attrs['type'] = np.string_('correlated') + + dset = group.create_dataset('energy', data=self.energy) + dset.attrs['interpolation'] = np.vstack((self.breakpoints, + self.interpolation)) + + # Determine total number of (E,p) pairs and create array + n_tuple = sum(len(d.x) for d in self.energy_out) + eout = np.empty((5, n_tuple)) + + # Make sure all mu data is tabular + mu_tabular = [] + for i, mu_i in enumerate(self.mu): + mu_tabular.append([mu_ij if isinstance(mu_ij, (Tabular, Discrete)) else + mu_ij.to_tabular() for mu_ij in mu_i]) + + # Determine total number of (mu,p) points and create array + n_tuple = sum(sum(len(mu_ij.x) for mu_ij in mu_i) + for mu_i in mu_tabular) + mu = np.empty((3, n_tuple)) + + # Create array for offsets + offsets = np.empty(len(self.energy_out), dtype=int) + interpolation = np.empty(len(self.energy_out), dtype=int) + n_discrete_lines = np.empty(len(self.energy_out), dtype=int) + offset_e = 0 + offset_mu = 0 + + # Populate offsets and eout array + for i, d in enumerate(self.energy_out): + n = len(d) + offsets[i] = offset_e + + if isinstance(d, Mixture): + discrete, continuous = d.distribution + n_discrete_lines[i] = m = len(discrete) + interpolation[i] = 1 if continuous.interpolation == 'histogram' else 2 + eout[0, offset_e:offset_e+m] = discrete.x + eout[1, offset_e:offset_e+m] = discrete.p + eout[2, offset_e:offset_e+m] = discrete.c + eout[0, offset_e+m:offset_e+n] = continuous.x + eout[1, offset_e+m:offset_e+n] = continuous.p + eout[2, offset_e+m:offset_e+n] = continuous.c + else: + if isinstance(d, Tabular): + n_discrete_lines[i] = 0 + interpolation[i] = 1 if d.interpolation == 'histogram' else 2 + elif isinstance(d, Discrete): + n_discrete_lines[i] = n + interpolation[i] = 1 + eout[0, offset_e:offset_e+n] = d.x + eout[1, offset_e:offset_e+n] = d.p + eout[2, offset_e:offset_e+n] = d.c + + for j, mu_ij in enumerate(mu_tabular[i]): + if isinstance(mu_ij, Discrete): + eout[3, offset_e+j] = 0 + else: + eout[3, offset_e+j] = 1 if mu_ij.interpolation == 'histogram' else 2 + eout[4, offset_e+j] = offset_mu + + n_mu = len(mu_ij) + mu[0, offset_mu:offset_mu+n_mu] = mu_ij.x + mu[1, offset_mu:offset_mu+n_mu] = mu_ij.p + mu[2, offset_mu:offset_mu+n_mu] = mu_ij.c + + offset_mu += n_mu + + offset_e += n + + # Create dataset for outgoing energy distributions + dset = group.create_dataset('energy_out', data=eout) + + # Write interpolation on outgoing energy as attribute + dset.attrs['offsets'] = offsets + dset.attrs['interpolation'] = interpolation + dset.attrs['n_discrete_lines'] = n_discrete_lines + + # Create dataset for outgoing angle distributions + group.create_dataset('mu', data=mu) + + @classmethod + def from_hdf5(cls, group): + """Generate correlated angle-energy distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.CorrelatedAngleEnergy + Correlated angle-energy distribution + + """ + interp_data = group['energy'].attrs['interpolation'] + energy_breakpoints = interp_data[0,:] + energy_interpolation = interp_data[1,:] + energy = group['energy'].value + + offsets = group['energy_out'].attrs['offsets'] + interpolation = group['energy_out'].attrs['interpolation'] + n_discrete_lines = group['energy_out'].attrs['n_discrete_lines'] + dset_eout = group['energy_out'].value + energy_out = [] + + dset_mu = group['mu'].value + mu = [] + + n_energy = len(energy) + for i in range(n_energy): + # Determine length of outgoing energy distribution and number of + # discrete lines + offset_e = offsets[i] + if i < n_energy - 1: + n = offsets[i+1] - offset_e + else: + n = dset_eout.shape[1] - offset_e + m = n_discrete_lines[i] + + # Create discrete distribution if lines are present + if m > 0: + x = dset_eout[0, offset_e:offset_e+m] + p = dset_eout[1, offset_e:offset_e+m] + eout_discrete = Discrete(x, p) + eout_discrete.c = dset_eout[2, offset_e:offset_e+m] + p_discrete = eout_discrete.c[-1] + + # Create continuous distribution + if m < n: + interp = interpolation_scheme[interpolation[i]] + + x = dset_eout[0, offset_e+m:offset_e+n] + p = dset_eout[1, offset_e+m:offset_e+n] + eout_continuous = Tabular(x, p, interp, ignore_negative=True) + eout_continuous.c = dset_eout[2, offset_e+m:offset_e+n] + + # If both continuous and discrete are present, create a mixture + # distribution + if m == 0: + eout_i = eout_continuous + elif m == n: + eout_i = eout_discrete + else: + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + + # Read angular distributions + mu_i = [] + for j in range(n): + # Determine interpolation scheme + interp_code = int(dset_eout[3, offsets[i] + j]) + + # Determine offset and length + offset_mu = int(dset_eout[4, offsets[i] + j]) + if offsets[i] + j < dset_eout.shape[1] - 1: + n_mu = int(dset_eout[4, offsets[i] + j + 1]) - offset_mu + else: + n_mu = dset_mu.shape[1] - offset_mu + + # Get data + x = dset_mu[0, offset_mu:offset_mu+n_mu] + p = dset_mu[1, offset_mu:offset_mu+n_mu] + c = dset_mu[2, offset_mu:offset_mu+n_mu] + + if interp_code == 0: + mu_ij = Discrete(x, p) + else: + mu_ij = Tabular(x, p, interpolation_scheme[interp_code], + ignore_negative=True) + mu_ij.c = c + mu_i.append(mu_ij) + + offset_mu += n_mu + + energy_out.append(eout_i) + mu.append(mu_i) + + j += n + + return cls(energy_breakpoints, energy_interpolation, + energy, energy_out, mu) diff --git a/openmc/data/data.py b/openmc/data/data.py index c6dd81ba6e..e5aa55285f 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -99,3 +99,60 @@ natural_abundance = { 'Bi-209': 1.0, 'Th-232': 1.0, 'Pa-231': 1.0, 'U-234': 5.4e-05, 'U-235': 0.007204, 'U-238': 0.992742 } + +atomic_symbol = {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', + 8: 'O', 9: 'F', 10: 'Ne', 11: 'Na', 12: 'Mg', 13: 'Al', + 14: 'Si', 15: 'P', 16: 'S', 17: 'Cl', 18: 'Ar', 19: 'K', + 20: 'Ca', 21: 'Sc', 22: 'Ti', 23: 'V', 24: 'Cr', 25: 'Mn', + 26: 'Fe', 27: 'Co', 28: 'Ni', 29: 'Cu', 30: 'Zn', 31: 'Ga', + 32: 'Ge', 33: 'As', 34: 'Se', 35: 'Br', 36: 'Kr', 37: 'Rb', + 38: 'Sr', 39: 'Y', 40: 'Zr', 41: 'Nb', 42: 'Mo', 43: 'Tc', + 44: 'Ru', 45: 'Rh', 46: 'Pd', 47: 'Ag', 48: 'Cd', 49: 'In', + 50: 'Sn', 51: 'Sb', 52: 'Te', 53: 'I', 54: 'Xe', 55: 'Cs', + 56: 'Ba', 57: 'La', 58: 'Ce', 59: 'Pr', 60: 'Nd', 61: 'Pm', + 62: 'Sm', 63: 'Eu', 64: 'Gd', 65: 'Tb', 66: 'Dy', 67: 'Ho', + 68: 'Er', 69: 'Tm', 70: 'Yb', 71: 'Lu', 72: 'Hf', 73: 'Ta', + 74: 'W', 75: 'Re', 76: 'Os', 77: 'Ir', 78: 'Pt', 79: 'Au', + 80: 'Hg', 81: 'Tl', 82: 'Pb', 83: 'Bi', 84: 'Po', 85: 'At', + 86: 'Rn', 87: 'Fr', 88: 'Ra', 89: 'Ac', 90: 'Th', 91: 'Pa', + 92: 'U', 93: 'Np', 94: 'Pu', 95: 'Am', 96: 'Cm', 97: 'Bk', + 98: 'Cf', 99: 'Es', 100: 'Fm', 101: 'Md', 102: 'No', + 103: 'Lr', 104: 'Rf', 105: 'Db', 106: 'Sg', 107: 'Bh', + 108: 'Hs', 109: 'Mt', 110: 'Ds', 111: 'Rg', 112: 'Cn', + 114: 'Fl', 116: 'Lv'} +atomic_number = {value: key for key, value in atomic_symbol.items()} + +reaction_name = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', 5: '(n,misc)', 11: '(n,2nd)', + 16: '(n,2n)', 17: '(n,3n)', 18: '(n,fission)', 19: '(n,f)', + 20: '(n,nf)', 21: '(n,2nf)', 22: '(n,na)', 23: '(n,n3a)', + 24: '(n,2na)', 25: '(n,3na)', 28: '(n,np)', 29: '(n,n2a)', + 30: '(n,2n2a)', 32: '(n,nd)', 33: '(n,nt)', 34: '(n,nHe-3)', + 35: '(n,nd2a)', 36: '(n,nt2a)', 37: '(n,4n)', 38: '(n,3nf)', + 41: '(n,2np)', 42: '(n,3np)', 44: '(n,n2p)', 45: '(n,npa)', + 91: '(n,nc)', 101: '(n,disappear)', 102: '(n,gamma)', + 103: '(n,p)', 104: '(n,d)', 105: '(n,t)', 106: '(n,3He)', + 107: '(n,a)', 108: '(n,2a)', 109: '(n,3a)', 111: '(n,2p)', + 112: '(n,pa)', 113: '(n,t2a)', 114: '(n,d2a)', 115: '(n,pd)', + 116: '(n,pt)', 117: '(n,da)', 152: '(n,5n)', 153: '(n,6n)', + 154: '(n,2nt)', 155: '(n,ta)', 156: '(n,4np)', 157: '(n,3nd)', + 158: '(n,nda)', 159: '(n,2npa)', 160: '(n,7n)', 161: '(n,8n)', + 162: '(n,5np)', 163: '(n,6np)', 164: '(n,7np)', 165: '(n,4na)', + 166: '(n,5na)', 167: '(n,6na)', 168: '(n,7na)', 169: '(n,4nd)', + 170: '(n,5nd)', 171: '(n,6nd)', 172: '(n,3nt)', 173: '(n,4nt)', + 174: '(n,5nt)', 175: '(n,6nt)', 176: '(n,2n3He)', + 177: '(n,3n3He)', 178: '(n,4n3He)', 179: '(n,3n2p)', + 180: '(n,3n3a)', 181: '(n,3npa)', 182: '(n,dt)', + 183: '(n,npd)', 184: '(n,npt)', 185: '(n,ndt)', + 186: '(n,np3He)', 187: '(n,nd3He)', 188: '(n,nt3He)', + 189: '(n,nta)', 190: '(n,2n2p)', 191: '(n,p3He)', + 192: '(n,d3He)', 193: '(n,3Hea)', 194: '(n,4n2p)', + 195: '(n,4n2a)', 196: '(n,4npa)', 197: '(n,3p)', + 198: '(n,n3p)', 199: '(n,3n2pa)', 200: '(n,5n2p)', 444: '(n,damage)', + 649: '(n,pc)', 699: '(n,dc)', 749: '(n,tc)', 799: '(n,3Hec)', + 849: '(n,ac)'} +reaction_name.update({i: '(n,n{})'.format(i-50) for i in range(50,91)}) +reaction_name.update({i: '(n,p{})'.format(i-600) for i in range(600,649)}) +reaction_name.update({i: '(n,d{})'.format(i-650) for i in range(650,699)}) +reaction_name.update({i: '(n,t{})'.format(i-700) for i in range(700,749)}) +reaction_name.update({i: '(n,3He{})'.format(i-750) for i in range(750,799)}) +reaction_name.update({i: '(n,a{})'.format(i-800) for i in range(800,849)}) diff --git a/openmc/data/energy_distribution.py b/openmc/data/energy_distribution.py new file mode 100644 index 0000000000..afbc390141 --- /dev/null +++ b/openmc/data/energy_distribution.py @@ -0,0 +1,850 @@ +from abc import ABCMeta, abstractmethod +from collections import Iterable +from numbers import Integral, Real + +import h5py +import numpy as np + +from openmc.data.container import Tabulated1D, interpolation_scheme +from openmc.stats.univariate import Univariate, Tabular, Discrete, Mixture +import openmc.checkvalue as cv + + +class EnergyDistribution(object): + """Abstract superclass for all energy distributions.""" + + __metaclass__ = ABCMeta + + def __init__(self): + pass + + @abstractmethod + def to_hdf5(self, group): + pass + + @staticmethod + def from_hdf5(group): + """Generate energy distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.EnergyDistribution + Energy distribution + + """ + energy_type = group.attrs['type'].decode() + if energy_type == 'maxwell': + return MaxwellEnergy.from_hdf5(group) + elif energy_type == 'evaporation': + return Evaporation.from_hdf5(group) + elif energy_type == 'watt': + return WattEnergy.from_hdf5(group) + elif energy_type == 'madland-nix': + return MadlandNix.from_hdf5(group) + elif energy_type == 'discrete_photon': + return DiscretePhoton.from_hdf5(group) + elif energy_type == 'level': + return LevelInelastic.from_hdf5(group) + elif energy_type == 'continuous': + return ContinuousTabular.from_hdf5(group) + + +class ArbitraryTabulated(EnergyDistribution): + r"""Arbitrary tabulated function given in ENDF MF=5, LF=1 represented as + + .. math:: + f(E \rightarrow E') = g(E \rightarrow E') + + Parameters + ---------- + energy : numpy.ndarray + Array of incident neutron energies + pdf : list of openmc.data.Tabulated1D + Tabulated outgoing energy distribution probability density functions + + Attributes + ---------- + energy : numpy.ndarray + Array of incident neutron energies + pdf : list of openmc.data.Tabulated1D + Tabulated outgoing energy distribution probability density functions + + """ + + def __init__(self, energy, pdf): + self.energy = energy + self.pdf = pdf + + def to_hdf5(self, group): + NotImplementedError + + +class GeneralEvaporation(EnergyDistribution): + r"""General evaporation spectrum given in ENDF MF=5, LF=5 represented as + + .. math:: + f(E \rightarrow E') = g(E'/\theta(E)) + + Parameters + ---------- + theta : openmc.data.Tabulated1D + Tabulated function of incident neutron energy :math:`E` + g : openmc.data.Tabulated1D + Tabulated function of :math:`x = E'/\theta(E)` + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + Attributes + ---------- + theta : openmc.data.Tabulated1D + Tabulated function of incident neutron energy :math:`E` + g : openmc.data.Tabulated1D + Tabulated function of :math:`x = E'/\theta(E)` + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + """ + + def __init__(self, theta, g, u): + self.theta = theta + self.g = g + self.u = u + + def to_hdf5(self, group): + raise NotImplementedError + + +class MaxwellEnergy(EnergyDistribution): + r"""Simple Maxwellian fission spectrum represented as + + .. math:: + f(E \rightarrow E') = \frac{\sqrt{E'}}{I} e^{-E'/\theta(E)} + + Parameters + ---------- + theta : openmc.data.Tabulated1D + Tabulated function of incident neutron energy + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + Attributes + ---------- + theta : openmc.data.Tabulated1D + Tabulated function of incident neutron energy + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + """ + + def __init__(self, theta, u): + self.theta = theta + self.u = u + + @property + def theta(self): + return self._theta + + @property + def u(self): + return self._u + + @theta.setter + def theta(self, theta): + cv.check_type('Maxwell theta', theta, Tabulated1D) + self._theta = theta + + @u.setter + def u(self, u): + cv.check_type('Maxwell restriction energy', u, Real) + self._u = u + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['type'] = np.string_('maxwell') + group.attrs['u'] = self.u + self.theta.to_hdf5(group, 'theta') + + @classmethod + def from_hdf5(cls, group): + """Generate Maxwell distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.MaxwellEnergy + Maxwell distribution + + """ + theta = Tabulated1D.from_hdf5(group['theta']) + u = group.attrs['u'] + return cls(theta, u) + + +class Evaporation(EnergyDistribution): + r"""Evaporation spectrum represented as + + .. math:: + f(E \rightarrow E') = \frac{E'}{I} e^{-E'/\theta(E)} + + Parameters + ---------- + theta : openmc.data.Tabulated1D + Tabulated function of incident neutron energy + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + Attributes + ---------- + theta : openmc.data.Tabulated1D + Tabulated function of incident neutron energy + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + """ + + def __init__(self, theta, u): + self.theta = theta + self.u = u + + @property + def theta(self): + return self._theta + + @property + def u(self): + return self._u + + @theta.setter + def theta(self, theta): + cv.check_type('Evaporation theta', theta, Tabulated1D) + self._theta = theta + + @u.setter + def u(self, u): + cv.check_type('Evaporation restriction energy', u, Real) + self._u = u + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['type'] = np.string_('evaporation') + group.attrs['u'] = self.u + self.theta.to_hdf5(group, 'theta') + + @classmethod + def from_hdf5(cls, group): + """Generate evaporation spectrum from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.Evaporation + Evaporation spectrum distribution + + """ + theta = Tabulated1D.from_hdf5(group['theta']) + u = group.attrs['u'] + return cls(theta, u) + + +class WattEnergy(EnergyDistribution): + r"""Energy-dependent Watt spectrum represented as + + .. math:: + f(E \rightarrow E') = \frac{e^{-E'/a}}{I} \sinh \left ( \sqrt{bE'} + \right ) + + Parameters + ---------- + a, b : openmc.data.Tabulated1D + Energy-dependent parameters tabulated as function of incident neutron + energy + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + Attributes + ---------- + a, b : openmc.data.Tabulated1D + Energy-dependent parameters tabulated as function of incident neutron + energy + u : float + Constant introduced to define the proper upper limit for the final + particle energy such that :math:`0 \le E' \le E - U` + + """ + + def __init__(self, a, b, u): + self.a = a + self.b = b + self.u = u + + @property + def a(self): + return self._a + + @property + def b(self): + return self._b + + @property + def u(self): + return self._u + + @a.setter + def a(self, a): + cv.check_type('Watt a', a, Tabulated1D) + self._a = a + + @b.setter + def b(self, b): + cv.check_type('Watt b', b, Tabulated1D) + self._b = b + + @u.setter + def u(self, u): + cv.check_type('Watt restriction energy', u, Real) + self._u = u + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['type'] = np.string_('watt') + group.attrs['u'] = self.u + self.a.to_hdf5(group, 'a') + self.b.to_hdf5(group, 'b') + + @classmethod + def from_hdf5(cls, group): + """Generate Watt fission spectrum from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.WattEnergy + Watt fission spectrum + + """ + a = Tabulated1D.from_hdf5(group['a']) + b = Tabulated1D.from_hdf5(group['b']) + u = group.attrs['u'] + return cls(a, b, u) + +class MadlandNix(EnergyDistribution): + r"""Energy-dependent fission neutron spectrum (Madland and Nix) given in + ENDF MF=5, LF=12 represented as + + .. math:: + f(E \rightarrow E') = \frac{1}{2} [ g(E', E_F(L)) + g(E', E_F(H))] + + where + + .. math:: + g(E',E_F) = \frac{1}{3\sqrt{E_F T_M}} \left [ u_2^{3/2} E_1 (u_2) - + u_1^{3/2} E_1 (u_1) + \gamma \left ( \frac{3}{2}, u_2 \right ) - \gamma + \left ( \frac{3}{2}, u_1 \right ) \right ] \\ u_1 = \left ( \sqrt{E'} - + \sqrt{E_F} \right )^2 / T_M \\ u_2 = \left ( \sqrt{E'} + \sqrt{E_F} + \right )^2 / T_M. + + Parameters + ---------- + efl, efh : float + Constants which represent the average kinetic energy per nucleon of the + fission fragment (efl = light, efh = heavy) + tm : openmc.data.Tabulated1D + Parameter tabulated as a function of incident neutron energy + + Attributes + ---------- + efl, efh : float + Constants which represent the average kinetic energy per nucleon of the + fission fragment (efl = light, efh = heavy) + tm : openmc.data.Tabulated1D + Parameter tabulated as a function of incident neutron energy + + """ + + def __init__(self, efl, efh, tm): + self.efl = efl + self.efh = efh + self.tm = tm + + @property + def efl(self): + return self._efl + + @property + def efh(self): + return self._efh + + @property + def tm(self): + return self._tm + + @efl.setter + def efl(self, efl): + name = 'Madland-Nix light fragment energy' + cv.check_type(name, efl, Real) + cv.check_greater_than(name, efl, 0.) + self._efl = efl + + @efh.setter + def efh(self, efh): + name = 'Madland-Nix heavy fragment energy' + cv.check_type(name, efh, Real) + cv.check_greater_than(name, efh, 0.) + self._efh = efh + + @tm.setter + def tm(self, tm): + cv.check_type('Madland-Nix maximum temperature', tm, Tabulated1D) + self._tm = tm + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['type'] = np.string_('madland-nix') + group.attrs['efl'] = self.efl + group.attrs['efh'] = self.efh + self.tm.to_hdf5(group) + + @classmethod + def from_hdf5(cls, group): + """Generate Madland-Nix fission spectrum from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.MadlandNix + Madland-Nix fission spectrum + + """ + efl = group.attrs['efl'] + efh = group.attrs['efh'] + tm = Tabulated1D.from_hdf5(group['tm']) + return cls(efl, efh, tm) + + +class DiscretePhoton(EnergyDistribution): + """Discrete photon energy distribution + + Parameters + ---------- + primary_flag : int + Indicator of whether the photon is a primary or non-primary photon. + energy : float + Photon energy (if lp==0 or lp==1) or binding energy (if lp==2). + atomic_weight_ratio : float + Atomic weight ratio of the target nuclide responsible for the emitted + particle + + Attributes + ---------- + primary_flag : int + Indicator of whether the photon is a primary or non-primary photon. + energy : float + Photon energy (if lp==0 or lp==1) or binding energy (if lp==2). + atomic_weight_ratio : float + Atomic weight ratio of the target nuclide responsible for the emitted + particle + + """ + + def __init__(self, primary_flag, energy, atomic_weight_ratio): + super(DiscretePhoton, self).__init__() + self.primary_flag = primary_flag + self.energy = energy + self.atomic_weight_ratio = atomic_weight_ratio + + @property + def primary_flag(self): + return self._primary_flag + + @property + def energy(self): + return self._energy + + @property + def atomic_weight_ratio(self): + return self._atomic_weight_ratio + + @primary_flag.setter + def primary_flag(self, primary_flag): + cv.check_type('discrete photon primary_flag', primary_flag, Integral) + self._primary_flag = primary_flag + + @energy.setter + def energy(self, energy): + cv.check_type('discrete photon energy', energy, Real) + self._energy = energy + + @atomic_weight_ratio.setter + def atomic_weight_ratio(self, atomic_weight_ratio): + cv.check_type('atomic weight ratio', atomic_weight_ratio, Real) + self._atomic_weight_ratio = atomic_weight_ratio + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['type'] = np.string_('discrete_photon') + group.attrs['primary_flag'] = self.primary_flag + group.attrs['energy'] = self.energy + group.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio + + @classmethod + def from_hdf5(cls, group): + """Generate discrete photon energy distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.DiscretePhoton + Discrete photon energy distribution + + """ + primary_flag = group.attrs['primary_flag'] + energy = group.attrs['energy'] + awr = group.attrs['atomic_weight_ratio'] + return cls(primary_flag, energy, awr) + + +class LevelInelastic(EnergyDistribution): + r"""Level inelastic scattering + + Parameters + ---------- + threshold : float + Energy threshold in the laboratory system, :math:`(A + 1)/A * |Q|` + mass_ratio : float + :math:`(A/(A + 1))^2` + + Attributes + ---------- + threshold : float + Energy threshold in the laboratory system, :math:`(A + 1)/A * |Q|` + mass_ratio : float + :math:`(A/(A + 1))^2` + + """ + + def __init__(self, threshold, mass_ratio): + super(LevelInelastic, self).__init__() + self.threshold = threshold + self.mass_ratio = mass_ratio + + @property + def threshold(self): + return self._threshold + + @property + def mass_ratio(self): + return self._mass_ratio + + @threshold.setter + def threshold(self, threshold): + cv.check_type('level inelastic threhsold', threshold, Real) + self._threshold = threshold + + @mass_ratio.setter + def mass_ratio(self, mass_ratio): + cv.check_type('level inelastic mass ratio', mass_ratio, Real) + self._mass_ratio = mass_ratio + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['type'] = np.string_('level') + group.attrs['threshold'] = self.threshold + group.attrs['mass_ratio'] = self.mass_ratio + + @classmethod + def from_hdf5(cls, group): + """Generate level inelastic distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.LevelInelastic + Level inelastic scattering distribution + + """ + threshold = group.attrs['threshold'] + mass_ratio = group.attrs['mass_ratio'] + return cls(threshold, mass_ratio) + + +class ContinuousTabular(EnergyDistribution): + """Continuous tabular distribution + + Parameters + ---------- + breakpoints : Iterable of int + Breakpoints defining interpolation regions + interpolation : Iterable of int + Interpolation codes + energy : Iterable of float + Incoming energies at which distributions exist + energy_out : Iterable of openmc.stats.Univariate + Distribution of outgoing energies corresponding to each incoming energy + + Attributes + ---------- + breakpoints : Iterable of int + Breakpoints defining interpolation regions + interpolation : Iterable of int + Interpolation codes + energy : Iterable of float + Incoming energies at which distributions exist + energy_out : Iterable of openmc.stats.Univariate + Distribution of outgoing energies corresponding to each incoming energy + + """ + + def __init__(self, breakpoints, interpolation, energy, energy_out): + super(ContinuousTabular, self).__init__() + self.breakpoints = breakpoints + self.interpolation = interpolation + self.energy = energy + self.energy_out = energy_out + + @property + def breakpoints(self): + return self._breakpoints + + @property + def interpolation(self): + return self._interpolation + + @property + def energy(self): + return self._energy + + @property + def energy_out(self): + return self._energy_out + + @breakpoints.setter + def breakpoints(self, breakpoints): + cv.check_type('continuous tabular breakpoints', breakpoints, + Iterable, Integral) + self._breakpoints = breakpoints + + @interpolation.setter + def interpolation(self, interpolation): + cv.check_type('continuous tabular interpolation', interpolation, + Iterable, Integral) + self._interpolation = interpolation + + @energy.setter + def energy(self, energy): + cv.check_type('continuous tabular incoming energy', energy, + Iterable, Real) + self._energy = energy + + @energy_out.setter + def energy_out(self, energy_out): + cv.check_type('continuous tabular outgoing energy', energy_out, + Iterable, Univariate) + self._energy_out = energy_out + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['type'] = np.string_('continuous') + + dset = group.create_dataset('energy', data=self.energy) + dset.attrs['interpolation'] = np.vstack((self.breakpoints, + self.interpolation)) + + # Determine total number of (E,p) pairs and create array + n_pairs = sum(len(d) for d in self.energy_out) + pairs = np.empty((3, n_pairs)) + + # Create array for offsets + offsets = np.empty(len(self.energy_out), dtype=int) + interpolation = np.empty(len(self.energy_out), dtype=int) + n_discrete_lines = np.empty(len(self.energy_out), dtype=int) + j = 0 + + # Populate offsets and pairs array + for i, eout in enumerate(self.energy_out): + n = len(eout) + offsets[i] = j + + if isinstance(eout, Mixture): + discrete, continuous = eout.distribution + n_discrete_lines[i] = m = len(discrete) + interpolation[i] = 1 if continuous.interpolation == 'histogram' else 2 + pairs[0, j:j+m] = discrete.x + pairs[1, j:j+m] = discrete.p + pairs[2, j:j+m] = discrete.c + pairs[0, j+m:j+n] = continuous.x + pairs[1, j+m:j+n] = continuous.p + pairs[2, j+m:j+n] = continuous.c + else: + if isinstance(eout, Tabular): + n_discrete_lines[i] = 0 + interpolation[i] = 1 if eout.interpolation == 'histogram' else 2 + elif isinstance(eout, Discrete): + n_discrete_lines[i] = n + interpolation[i] = 1 + pairs[0, j:j+n] = eout.x + pairs[1, j:j+n] = eout.p + pairs[2, j:j+n] = eout.c + j += n + + # Create dataset for distributions + dset = group.create_dataset('distribution', data=pairs) + + # Write interpolation as attribute + dset.attrs['offsets'] = offsets + dset.attrs['interpolation'] = interpolation + dset.attrs['n_discrete_lines'] = n_discrete_lines + + @classmethod + def from_hdf5(cls, group): + """Generate continuous tabular distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.ContinuousTabular + Continuous tabular energy distribution + + """ + interp_data = group['energy'].attrs['interpolation'] + energy_breakpoints = interp_data[0,:] + energy_interpolation = interp_data[1,:] + energy = group['energy'].value + + data = group['distribution'] + offsets = data.attrs['offsets'] + interpolation = data.attrs['interpolation'] + n_discrete_lines = data.attrs['n_discrete_lines'] + + energy_out = [] + n_energy = len(energy) + for i in range(n_energy): + # Determine length of outgoing energy distribution and number of + # discrete lines + j = offsets[i] + if i < n_energy - 1: + n = offsets[i+1] - j + else: + n = data.shape[1] - j + m = n_discrete_lines[i] + + # Create discrete distribution if lines are present + if m > 0: + eout_discrete = Discrete(data[0, j:j+m], data[1, j:j+m]) + eout_discrete.c = data[2, j:j+m] + p_discrete = eout_discrete.c[-1] + + # Create continuous distribution + if m < n: + interp = interpolation_scheme[interpolation[i]] + eout_continuous = Tabular(data[0, j+m:j+n], data[1, j+m:j+n], interp) + eout_continuous.c = data[2, j+m:j+n] + + # If both continuous and discrete are present, create a mixture + # distribution + if m == 0: + eout_i = eout_continuous + elif m == n: + eout_i = eout_discrete + else: + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + energy_out.append(eout_i) + + return cls(energy_breakpoints, energy_interpolation, + energy, energy_out) diff --git a/openmc/data/kalbach_mann.py b/openmc/data/kalbach_mann.py new file mode 100644 index 0000000000..a8fc8d4c68 --- /dev/null +++ b/openmc/data/kalbach_mann.py @@ -0,0 +1,253 @@ +from collections import Iterable +from numbers import Real, Integral + +import numpy as np + +import openmc.checkvalue as cv +from openmc.stats import Tabular, Univariate, Discrete, Mixture +from .container import Tabulated1D, interpolation_scheme +from .angle_energy import AngleEnergy + + +class KalbachMann(AngleEnergy): + """Kalbach-Mann distribution + + Parameters + ---------- + breakpoints : Iterable of int + Breakpoints defining interpolation regions + interpolation : Iterable of int + Interpolation codes + energy : Iterable of float + Incoming energies at which distributions exist + energy_out : Iterable of openmc.stats.Univariate + Distribution of outgoing energies corresponding to each incoming energy + precompound : Iterable of openmc.data.Tabulated1D + Precompound factor 'r' as a function of outgoing energy for each + incoming energy + slope : Iterable of openmc.data.Tabulated1D + Kalbach-Chadwick angular distribution slope value 'a' as a function of + outgoing energy for each incoming energy + + Attributes + ---------- + breakpoints : Iterable of int + Breakpoints defining interpolation regions + interpolation : Iterable of int + Interpolation codes + energy : Iterable of float + Incoming energies at which distributions exist + energy_out : Iterable of openmc.stats.Univariate + Distribution of outgoing energies corresponding to each incoming energy + precompound : Iterable of openmc.data.Tabulated1D + Precompound factor 'r' as a function of outgoing energy for each + incoming energy + slope : Iterable of openmc.data.Tabulated1D + Kalbach-Chadwick angular distribution slope value 'a' as a function of + outgoing energy for each incoming energy + + """ + + def __init__(self, breakpoints, interpolation, energy, energy_out, + precompound, slope): + super(KalbachMann, self).__init__() + self.breakpoints = breakpoints + self.interpolation = interpolation + self.energy = energy + self.energy_out = energy_out + self.precompound = precompound + self.slope = slope + + @property + def breakpoints(self): + return self._breakpoints + + @property + def interpolation(self): + return self._interpolation + + @property + def energy(self): + return self._energy + + @property + def energy_out(self): + return self._energy_out + + @property + def precompound(self): + return self._precompound + + @property + def slope(self): + return self._slope + + @breakpoints.setter + def breakpoints(self, breakpoints): + cv.check_type('Kalbach-Mann breakpoints', breakpoints, + Iterable, Integral) + self._breakpoints = breakpoints + + @interpolation.setter + def interpolation(self, interpolation): + cv.check_type('Kalbach-Mann interpolation', interpolation, + Iterable, Integral) + self._interpolation = interpolation + + @energy.setter + def energy(self, energy): + cv.check_type('Kalbach-Mann incoming energy', energy, + Iterable, Real) + self._energy = energy + + @energy_out.setter + def energy_out(self, energy_out): + cv.check_type('Kalbach-Mann distributions', energy_out, + Iterable, Univariate) + self._energy_out = energy_out + + @precompound.setter + def precompound(self, precompound): + cv.check_type('Kalbach-Mann precompound factor', precompound, + Iterable, Tabulated1D) + self._precompound = precompound + + @slope.setter + def slope(self, slope): + cv.check_type('Kalbach-Mann slope', slope, Iterable, Tabulated1D) + self._slope = slope + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + group.attrs['type'] = np.string_('kalbach-mann') + + dset = group.create_dataset('energy', data=self.energy) + dset.attrs['interpolation'] = np.vstack((self.breakpoints, + self.interpolation)) + + # Determine total number of (E,p,r,a) tuples and create array + n_tuple = sum(len(d) for d in self.energy_out) + distribution = np.empty((5, n_tuple)) + + # Create array for offsets + offsets = np.empty(len(self.energy_out), dtype=int) + interpolation = np.empty(len(self.energy_out), dtype=int) + n_discrete_lines = np.empty(len(self.energy_out), dtype=int) + j = 0 + + # Populate offsets and distribution array + for i, (eout, km_r, km_a) in enumerate(zip( + self.energy_out, self.precompound, self.slope)): + n = len(eout) + offsets[i] = j + + if isinstance(eout, Mixture): + discrete, continuous = eout.distribution + n_discrete_lines[i] = m = len(discrete) + interpolation[i] = 1 if continuous.interpolation == 'histogram' else 2 + distribution[0, j:j+m] = discrete.x + distribution[1, j:j+m] = discrete.p + distribution[2, j:j+m] = discrete.c + distribution[0, j+m:j+n] = continuous.x + distribution[1, j+m:j+n] = continuous.p + distribution[2, j+m:j+n] = continuous.c + else: + if isinstance(eout, Tabular): + n_discrete_lines[i] = 0 + interpolation[i] = 1 if eout.interpolation == 'histogram' else 2 + elif isinstance(eout, Discrete): + n_discrete_lines[i] = n + interpolation[i] = 1 + distribution[0, j:j+n] = eout.x + distribution[1, j:j+n] = eout.p + distribution[2, j:j+n] = eout.c + + distribution[3, j:j+n] = km_r.y + distribution[4, j:j+n] = km_a.y + j += n + + # Create dataset for distributions + dset = group.create_dataset('distribution', data=distribution) + + # Write interpolation as attribute + dset.attrs['offsets'] = offsets + dset.attrs['interpolation'] = interpolation + dset.attrs['n_discrete_lines'] = n_discrete_lines + + @classmethod + def from_hdf5(cls, group): + """Generate Kalbach-Mann distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.KalbachMann + Kalbach-Mann energy distribution + + """ + interp_data = group['energy'].attrs['interpolation'] + energy_breakpoints = interp_data[0,:] + energy_interpolation = interp_data[1,:] + energy = group['energy'].value + + data = group['distribution'] + offsets = data.attrs['offsets'] + interpolation = data.attrs['interpolation'] + n_discrete_lines = data.attrs['n_discrete_lines'] + + energy_out = [] + precompound = [] + slope = [] + n_energy = len(energy) + for i in range(n_energy): + # Determine length of outgoing energy distribution and number of + # discrete lines + j = offsets[i] + if i < n_energy - 1: + n = offsets[i+1] - j + else: + n = data.shape[1] - j + m = n_discrete_lines[i] + + # Create discrete distribution if lines are present + if m > 0: + eout_discrete = Discrete(data[0, j:j+m], data[1, j:j+m]) + eout_discrete.c = data[2, j:j+m] + p_discrete = eout_discrete.c[-1] + + # Create continuous distribution + if m < n: + interp = interpolation_scheme[interpolation[i]] + eout_continuous = Tabular(data[0, j+m:j+n], data[1, j+m:j+n], interp) + eout_continuous.c = data[2, j+m:j+n] + + # If both continuous and discrete are present, create a mixture + # distribution + if m == 0: + eout_i = eout_continuous + elif m == n: + eout_i = eout_discrete + else: + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + + km_r = Tabulated1D(data[0, j:j+n], data[3, j:j+n]) + km_a = Tabulated1D(data[0, j:j+n], data[4, j:j+n]) + + energy_out.append(eout_i) + precompound.append(km_r) + slope.append(km_a) + + return cls(energy_breakpoints, energy_interpolation, + energy, energy_out, precompound, slope) diff --git a/openmc/data/nbody.py b/openmc/data/nbody.py new file mode 100644 index 0000000000..4fa3d05b21 --- /dev/null +++ b/openmc/data/nbody.py @@ -0,0 +1,118 @@ +from numbers import Real, Integral + +import numpy as np + +import openmc.checkvalue as cv +from .angle_energy import AngleEnergy + +class NBodyPhaseSpace(AngleEnergy): + """N-body phase space distribution + + Parameters + ---------- + total_mass : float + Total mass of product particles + n_particles : int + Number of product particles + atomic_weight_ratio : float + Atomic weight ratio of target nuclide + q_value : float + Q value for reaction in MeV + + Attributes + ---------- + total_mass : float + Total mass of product particles + n_particles : int + Number of product particles + atomic_weight_ratio : float + Atomic weight ratio of target nuclide + q_value : float + Q value for reaction in MeV + + """ + + def __init__(self, total_mass, n_particles, atomic_weight_ratio, q_value): + self.total_mass = total_mass + self.n_particles = n_particles + self.atomic_weight_ratio = atomic_weight_ratio + self.q_value = q_value + + @property + def total_mass(self): + return self._total_mass + + @property + def n_particles(self): + return self._n_particles + + @property + def atomic_weight_ratio(self): + return self._atomic_weight_ratio + + @property + def q_value(self): + return self._q_value + + @total_mass.setter + def total_mass(self, total_mass): + name = 'N-body phase space total mass' + cv.check_type(name, total_mass, Real) + cv.check_greater_than(name, total_mass, 0.) + self._total_mass = total_mass + + @n_particles.setter + def n_particles(self, n_particles): + name = 'N-body phase space number of particles' + cv.check_type(name, n_particles, Integral) + cv.check_greater_than(name, n_particles, 0) + self._n_particles = n_particles + + @atomic_weight_ratio.setter + def atomic_weight_ratio(self, atomic_weight_ratio): + name = 'N-body phase space atomic weight ratio' + cv.check_type(name, atomic_weight_ratio, Real) + cv.check_greater_than(name, atomic_weight_ratio, 0.0) + self._atomic_weight_ratio = atomic_weight_ratio + + @q_value.setter + def q_value(self, q_value): + name = 'N-body phase space Q value' + cv.check_type(name, q_value, Real) + self._q_value = q_value + + def to_hdf5(self, group): + """Write distribution to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + group.attrs['type'] = np.string_('nbody') + group.attrs['total_mass'] = self.total_mass + group.attrs['n_particles'] = self.n_particles + group.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio + group.attrs['q_value'] = self.q_value + + @classmethod + def from_hdf5(cls, group): + """Generate N-body phase space distribution from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.NBodyPhaseSpace + N-body phase space distribution + + """ + total_mass = group.attrs['total_mass'] + n_particles = group.attrs['n_particles'] + awr = group.attrs['atomic_weight_ratio'] + q_value = group.attrs['q_value'] + return cls(total_mass, n_particles, awr, q_value) diff --git a/openmc/data/product.py b/openmc/data/product.py new file mode 100644 index 0000000000..6a331dc243 --- /dev/null +++ b/openmc/data/product.py @@ -0,0 +1,205 @@ +from collections import Iterable +from numbers import Real +import sys + +import numpy as np +from numpy.polynomial.polynomial import Polynomial + +import openmc.checkvalue as cv +from .container import Tabulated1D +from .angle_energy import AngleEnergy + +if sys.version_info[0] >= 3: + basestring = str + + +class Product(object): + """Secondary particle emitted in a nuclear reaction + + Parameters + ---------- + particle : str, optional + What particle the reaction product is. Defaults to 'neutron'. + + Attributes + ---------- + applicability : Iterable of openmc.data.Tabulated1D + Probability of sampling a given distribution for this product. + decay_rate : float + Decay rate in inverse seconds + distribution : Iterable of openmc.data.AngleEnergy + Distributions of energy and angle of product. + emission_mode : {'prompt', 'delayed', 'total'} + Indicate whether the particle is emitted immediately or whether it + results from the decay of reaction product (e.g., neutron emitted from a + delayed neutron precursor). A special value of 'total' is used when the + yield represents particles from prompt and delayed sources. + particle : str + What particle the reaction product is. + yield_ : float or openmc.data.Tabulated1D or numpy.polynomial.Polynomial + Yield of secondary particle in the reaction. + + """ + + def __init__(self, particle='neutron'): + self.particle = particle + self.decay_rate = 0.0 + self.emission_mode = 'prompt' + self.distribution = [] + self.applicability = [] + self.yield_ = 1 + + def __repr__(self): + if isinstance(self.yield_, Real): + return "".format( + self.particle, self.emission_mode, self.yield_) + elif isinstance(self.yield_, Tabulated1D): + if np.all(self.yield_.y == self.yield_.y[0]): + return "".format( + self.particle, self.emission_mode, self.yield_.y[0]) + else: + return "".format( + self.particle, self.emission_mode) + else: + return "".format( + self.particle, self.emission_mode) + + @property + def applicability(self): + return self._applicability + + @property + def decay_rate(self): + return self._decay_rate + + @property + def distribution(self): + return self._distribution + + @property + def emission_mode(self): + return self._emission_mode + + @property + def particle(self): + return self._particle + + @property + def yield_(self): + return self._yield + + @applicability.setter + def applicability(self, applicability): + cv.check_type('product distribution applicability', applicability, + Iterable, Tabulated1D) + self._applicability = applicability + + @decay_rate.setter + def decay_rate(self, decay_rate): + cv.check_type('product decay rate', decay_rate, Real) + cv.check_greater_than('product decay rate', decay_rate, 0.0, True) + self._decay_rate = decay_rate + + @distribution.setter + def distribution(self, distribution): + cv.check_type('product angle-energy distribution', distribution, + Iterable, AngleEnergy) + self._distribution = distribution + + @emission_mode.setter + def emission_mode(self, emission_mode): + cv.check_value('product emission mode', emission_mode, + ('prompt', 'delayed', 'total')) + self._emission_mode = emission_mode + + @particle.setter + def particle(self, particle): + cv.check_type('product particle type', particle, basestring) + self._particle = particle + + @yield_.setter + def yield_(self, yield_): + cv.check_type('product yield', yield_, + (Real, Tabulated1D, Polynomial)) + self._yield = yield_ + + def to_hdf5(self, group): + """Write product to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + group.attrs['particle'] = np.string_(self.particle) + group.attrs['emission_mode'] = np.string_(self.emission_mode) + if self.decay_rate > 0.0: + group.attrs['decay_rate'] = self.decay_rate + + # Write yield + if isinstance(self.yield_, Tabulated1D): + self.yield_.to_hdf5(group, 'yield') + dset = group['yield'] + dset.attrs['type'] = np.string_('tabulated') + elif isinstance(self.yield_, Polynomial): + dset = group.create_dataset('yield', data=self.yield_.coef) + dset.attrs['type'] = np.string_('polynomial') + else: + dset = group.create_dataset('yield', data=float(self.yield_)) + dset.attrs['type'] = np.string_('constant') + + # Write applicability/distribution + group.attrs['n_distribution'] = len(self.distribution) + for i, d in enumerate(self.distribution): + dgroup = group.create_group('distribution_{}'.format(i)) + if self.applicability: + self.applicability[i].to_hdf5(dgroup, 'applicability') + d.to_hdf5(dgroup) + + @classmethod + def from_hdf5(cls, group): + """Generate reaction product from HDF5 data + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.Product + Reaction product + + """ + particle = group.attrs['particle'].decode() + p = cls(particle) + + p.emission_mode = group.attrs['emission_mode'].decode() + if 'decay_rate' in group.attrs: + p.decay_rate = group.attrs['decay_rate'] + + # Read yield + yield_type = group['yield'].attrs['type'].decode() + if yield_type == 'constant': + p.yield_ = group['yield'].value + elif yield_type == 'polynomial': + p.yield_ = Polynomial(group['yield'].value) + elif yield_type == 'tabulated': + p.yield_ = Tabulated1D.from_hdf5(group['yield']) + + # Read applicability/distribution + n_distribution = group.attrs['n_distribution'] + distribution = [] + applicability = [] + for i in range(n_distribution): + dgroup = group['distribution_{}'.format(i)] + if 'applicability' in dgroup: + applicability.append(Tabulated1D.from_hdf5( + dgroup['applicability'])) + distribution.append(AngleEnergy.from_hdf5(dgroup)) + + p.distribution = distribution + p.applicability = applicability + + return p diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py new file mode 100644 index 0000000000..663b6472c7 --- /dev/null +++ b/openmc/data/thermal.py @@ -0,0 +1,92 @@ +from collections import Iterable +from numbers import Real + +import numpy as np + +import openmc.checkvalue as cv + + +class CoherentElastic(object): + """Coherent elastic scattering data from a crystalline material + + Parameters + ---------- + bragg_edges : Iterable of float + Bragg edge energies in MeV + factors : Iterable of float + Partial sum of structure factors, :math:`\sum\limits_{i=1}^{E_i= 3: basestring = str +_INTERPOLATION_SCHEMES = ['histogram', 'linear-linear', 'linear-log', + 'log-linear', 'log-log'] + class Univariate(object): """Probability distribution of a single random variable. @@ -27,6 +32,10 @@ class Univariate(object): def to_xml(self, element_name): return '' + @abstractmethod + def __len__(self): + return 0 + class Discrete(Univariate): """Distribution characterized by a probability mass function. @@ -56,6 +65,9 @@ class Discrete(Univariate): self.x = x self.p = p + def __len__(self): + return len(self.x) + @property def x(self): return self._x @@ -114,6 +126,9 @@ class Uniform(Univariate): self.a = a self.b = b + def __len__(self): + return 2 + @property def a(self): return self._a @@ -132,6 +147,12 @@ class Uniform(Univariate): cv.check_type('Uniform b', b, Real) self._b = b + def to_tabular(self): + prob = 1./(self.b - self.a) + t = Tabular([self.a, self.b], [prob, prob], 'histogram') + t.c = [0., 1.] + return t + def to_xml(self, element_name): element = ET.Element(element_name) element.set("type", "uniform") @@ -162,6 +183,9 @@ class Maxwell(Univariate): super(Maxwell, self).__init__() self.theta = theta + def __len__(self): + return 1 + @property def theta(self): return self._theta @@ -207,6 +231,9 @@ class Watt(Univariate): self.a = a self.b = b + def __len__(self): + return 2 + @property def a(self): return self._a @@ -238,8 +265,8 @@ class Tabular(Univariate): """Piecewise continuous probability distribution. This class is used to represent a probability distribution whose density - function is tabulated at specific values and is either histogram or linearly - interpolated between points. + function is tabulated at specific values with a specified interpolation + scheme. Parameters ---------- @@ -247,9 +274,11 @@ class Tabular(Univariate): Tabulated values of the random variable p : Iterable of float Tabulated probabilities - interpolation : {'histogram', 'linear-linear'}, optional + interpolation : {'histogram', 'linear-linear', 'linear-log', 'log-linear', 'log-log'}, optional Indicate whether the density function is constant between tabulated - points or linearly-interpolated. + points or linearly-interpolated. Defaults to 'linear-linear'. + ignore_negative : bool + Ignore negative probabilities Attributes ---------- @@ -257,18 +286,23 @@ class Tabular(Univariate): Tabulated values of the random variable p : Iterable of float Tabulated probabilities - interpolation : {'histogram', 'linear-linear'}, optional + interpolation : {'histogram', 'linear-linear', 'linear-log', 'log-linear', 'log-log'}, optional Indicate whether the density function is constant between tabulated points or linearly-interpolated. """ - def __init__(self, x, p, interpolation='linear-linear'): + def __init__(self, x, p, interpolation='linear-linear', + ignore_negative=False): super(Tabular, self).__init__() + self._ignore_negative = ignore_negative self.x = x self.p = p self.interpolation = interpolation + def __len__(self): + return len(self.x) + @property def x(self): return self._x @@ -289,14 +323,14 @@ class Tabular(Univariate): @p.setter def p(self, p): cv.check_type('tabulated probabilities', p, Iterable, Real) - for pk in p: - cv.check_greater_than('tabulated probability', pk, 0.0, True) + if not self._ignore_negative: + for pk in p: + cv.check_greater_than('tabulated probability', pk, 0.0, True) self._p = p @interpolation.setter def interpolation(self, interpolation): - cv.check_value('interpolation', interpolation, - ['linear-linear', 'histogram']) + cv.check_value('interpolation', interpolation, _INTERPOLATION_SCHEMES) self._interpolation = interpolation def to_xml(self, element_name): @@ -308,3 +342,103 @@ class Tabular(Univariate): params.text = ' '.join(map(str, self.x)) + ' ' + ' '.join(map(str, self.p)) return element + + +class Legendre(Univariate): + r"""Probability density given by a Legendre polynomial expansion + :math:`\sum\limits_{\ell=0}^N \frac{2\ell + 1}{2} a_\ell P_\ell(\mu)`. + + Parameters + ---------- + coefficients : Iterable of Real + Expansion coefficients :math:`a_\ell`. Note that the :math:`(2\ell + + 1)/2` factor should not be included. + + Attributes + ---------- + coefficients : Iterable of Real + Expansion coefficients :math:`a_\ell`. Note that the :math:`(2\ell + + 1)/2` factor should not be included. + + """ + + def __init__(self, coefficients): + self.coefficients = coefficients + + def __call__(self, x): + return self._legendre_polynomial(x) + + def __len__(self): + return len(self._legendre_polynomial.coef) + + @property + def coefficients(self): + poly = self._legendre_polynomial + l = np.arange(poly.degree() + 1) + return 2./(2.*l + 1.) * poly.coef + + @coefficients.setter + def coefficients(self, coefficients): + cv.check_type('Legendre expansion coefficients', coefficients, + Iterable, Real) + for l in range(len(coefficients)): + coefficients[l] *= (2.*l + 1.)/2. + self._legendre_polynomial = np.polynomial.legendre.Legendre( + coefficients) + + def to_xml(self, element_name): + raise NotImplementedError + + +class Mixture(Univariate): + """Probability distribution characterized by a mixture of random variables. + + Parameters + ---------- + probability : Iterable of Real + Probability of selecting a particular distribution + distribution : Iterable of Univariate + List of distributions with corresponding probabilities + + Attributes + ---------- + probability : Iterable of Real + Probability of selecting a particular distribution + distribution : Iterable of Univariate + List of distributions with corresponding probabilities + + """ + + def __init__(self, probability, distribution): + super(Mixture, self).__init__() + self.probability = probability + self.distribution = distribution + + def __len__(self): + return sum(len(d) for d in self.distribution) + + @property + def probability(self): + return self._probability + + @property + def distribution(self): + return self._distribution + + @probability.setter + def probability(self, probability): + cv.check_type('mixture distribution probabilities', probability, + Iterable, Real) + for p in probability: + cv.check_greater_than('mixture distribution probabilities', + p, 0.0, True) + self._probability = probability + + @distribution.setter + def distribution(self, distribution): + cv.check_type('mixture distribution components', distribution, + Iterable, Univariate) + self._distribution = distribution + + def to_xml(self, element_name): + raise NotImplementedError diff --git a/src/ace.F90 b/src/ace.F90 deleted file mode 100644 index 170c885f02..0000000000 --- a/src/ace.F90 +++ /dev/null @@ -1,1738 +0,0 @@ -module ace - - use angleenergy_header, only: AngleEnergy - use constants - use distribution_univariate, only: Uniform, Equiprobable, Tabular - use endf, only: is_fission, is_disappearance - use endf_header, only: Constant1D, Tabulated1D, Polynomial - use energy_distribution, only: TabularEquiprobable, LevelInelastic, & - ContinuousTabular, MaxwellEnergy, Evaporation, WattEnergy - use error, only: fatal_error, warning - use global - use list_header, only: ListInt - use material_header, only: Material - use multipole, only: multipole_read - use nuclide_header - use output, only: write_message - use product_header, only: ReactionProduct - use sab_header - use set_header, only: SetChar - use secondary_correlated, only: CorrelatedAngleEnergy - use secondary_kalbach, only: KalbachMann - use secondary_nbody, only: NBodyPhaseSpace - use secondary_uncorrelated, only: UncorrelatedAngleEnergy - use string, only: to_str, to_lower - - implicit none - - integer :: JXS(32) ! Pointers into ACE XSS tables - integer :: NXS(16) ! Descriptors for ACE XSS tables - real(8), allocatable :: XSS(:) ! Cross section data - integer :: XSS_index ! Current index in XSS data - - private :: JXS - private :: NXS - private :: XSS - -contains - -!=============================================================================== -! READ_ACE_XS reads all the cross sections for the problem and stores them in -! nuclides and sab_tables arrays -!=============================================================================== - - subroutine read_ace_xs() - - integer :: i ! index in materials array - integer :: j ! index over nuclides in material - integer :: k ! index over S(a,b) tables in material - integer :: n ! index over resonant scatterers - integer :: i_listing ! index in xs_listings array - integer :: i_nuclide ! index in nuclides - integer :: i_sab ! index in sab_tables - integer :: m ! position for sorting - integer :: temp_nuclide ! temporary value for sorting - integer :: temp_table ! temporary value for sorting - character(12) :: name ! name of isotope, e.g. 92235.03c - character(12) :: alias ! alias of nuclide, e.g. U-235.03c - logical :: mp_found ! if windowed multipole libraries were found - type(Material), pointer :: mat - type(Nuclide), pointer :: nuc - type(SAlphaBeta), pointer :: sab - type(SetChar) :: already_read - - ! allocate arrays for ACE table storage and cross section cache - allocate(nuclides(n_nuclides_total)) - allocate(sab_tables(n_sab_tables)) -!$omp parallel - allocate(micro_xs(n_nuclides_total)) -!$omp end parallel - - ! ========================================================================== - ! READ ALL ACE CROSS SECTION TABLES - - ! Loop over all files - MATERIAL_LOOP: do i = 1, n_materials - mat => materials(i) - - NUCLIDE_LOOP: do j = 1, mat % n_nuclides - name = mat % names(j) - - if (.not. already_read % contains(name)) then - i_listing = xs_listing_dict % get_key(to_lower(name)) - i_nuclide = nuclide_dict % get_key(to_lower(name)) - name = xs_listings(i_listing) % name - alias = xs_listings(i_listing) % alias - - ! Keep track of what listing is associated with this nuclide - nuc => nuclides(i_nuclide) - nuc % listing = i_listing - - ! Read the ACE table into the appropriate entry on the nuclides - ! array - call read_ace_table(i_nuclide, i_listing) - - ! 0K resonant scatterer information, if treating resonance scattering - if (treat_res_scat) then - do n = 1, n_res_scatterers_total - if (name == nuclides_0K(n) % name) then - nuclides(i_nuclide) % resonant = .true. - nuclides(i_nuclide) % name_0K = nuclides_0K(n) % name_0K - nuclides(i_nuclide) % name_0K = trim(nuclides(i_nuclide) % & - & name_0K) - nuclides(i_nuclide) % scheme = nuclides_0K(n) % scheme - nuclides(i_nuclide) % scheme = trim(nuclides(i_nuclide) % & - & scheme) - nuclides(i_nuclide) % E_min = nuclides_0K(n) % E_min - nuclides(i_nuclide) % E_max = nuclides_0K(n) % E_max - if (.not. already_read % contains(nuclides(i_nuclide) % & - & name_0K)) then - i_listing = xs_listing_dict % get_key(nuclides(i_nuclide) % & - & name_0K) - call read_ace_table(i_nuclide, i_listing) - end if - exit - end if - end do - end if - - ! Read multipole file into the appropriate entry on the nuclides array - if (multipole_active) call read_multipole_data(i_nuclide) - - ! Add name and alias to dictionary - call already_read % add(name) - call already_read % add(alias) - end if - end do NUCLIDE_LOOP - - SAB_LOOP: do k = 1, mat % n_sab - ! Get name of S(a,b) table - name = mat % sab_names(k) - - if (.not. already_read % contains(name)) then - i_listing = xs_listing_dict % get_key(to_lower(name)) - i_sab = sab_dict % get_key(to_lower(name)) - - ! Read the ACE table into the appropriate entry on the sab_tables - ! array - call read_ace_table(i_sab, i_listing) - - ! Add name to dictionary - call already_read % add(name) - end if - end do SAB_LOOP - end do MATERIAL_LOOP - - ! ========================================================================== - ! ASSIGN S(A,B) TABLES TO SPECIFIC NUCLIDES WITHIN MATERIALS - - MATERIAL_LOOP2: do i = 1, n_materials - ! Get pointer to material - mat => materials(i) - - ASSIGN_SAB: do k = 1, mat % n_sab - ! In order to know which nuclide the S(a,b) table applies to, we need to - ! search through the list of nuclides for one which has a matching zaid - sab => sab_tables(mat % i_sab_tables(k)) - - ! Loop through nuclides and find match - FIND_NUCLIDE: do j = 1, mat % n_nuclides - if (any(sab % zaid == nuclides(mat % nuclide(j)) % zaid)) then - mat % i_sab_nuclides(k) = j - exit FIND_NUCLIDE - end if - end do FIND_NUCLIDE - - ! Check to make sure S(a,b) table matched a nuclide - if (mat % i_sab_nuclides(k) == NONE) then - call fatal_error("S(a,b) table " // trim(mat % sab_names(k)) & - &// " did not match any nuclide on material " & - &// trim(to_str(mat % id))) - end if - end do ASSIGN_SAB - - ! If there are multiple S(a,b) tables, we need to make sure that the - ! entries in i_sab_nuclides are sorted or else they won't be applied - ! correctly in the cross_section module. The algorithm here is a simple - ! insertion sort -- don't need anything fancy! - - if (mat % n_sab > 1) then - SORT_SAB: do k = 2, mat % n_sab - ! Save value to move - m = k - temp_nuclide = mat % i_sab_nuclides(k) - temp_table = mat % i_sab_tables(k) - - MOVE_OVER: do - ! Check if insertion value is greater than (m-1)th value - if (temp_nuclide >= mat % i_sab_nuclides(m-1)) exit - - ! Move values over until hitting one that's not larger - mat % i_sab_nuclides(m) = mat % i_sab_nuclides(m-1) - mat % i_sab_tables(m) = mat % i_sab_tables(m-1) - m = m - 1 - - ! Exit if we've reached the beginning of the list - if (m == 1) exit - end do MOVE_OVER - - ! Put the original value into its new position - mat % i_sab_nuclides(m) = temp_nuclide - mat % i_sab_tables(m) = temp_table - end do SORT_SAB - end if - - ! Deallocate temporary arrays for names of nuclides and S(a,b) tables - if (allocated(mat % names)) deallocate(mat % names) - - end do MATERIAL_LOOP2 - - ! Avoid some valgrind leak errors - call already_read % clear() - - ! Loop around material - MATERIAL_LOOP3: do i = 1, n_materials - - ! Get material - mat => materials(i) - - ! Loop around nuclides in material - NUCLIDE_LOOP2: do j = 1, mat % n_nuclides - - ! Check for fission in nuclide - if (nuclides(mat % nuclide(j)) % fissionable) then - mat % fissionable = .true. - exit NUCLIDE_LOOP2 - end if - - end do NUCLIDE_LOOP2 - - end do MATERIAL_LOOP3 - - ! Show which nuclide results in lowest energy for neutron transport - do i = 1, n_nuclides_total - if (nuclides(i) % energy(nuclides(i) % n_grid) == energy_max_neutron) then - call write_message("Maximum neutron transport energy: " // & - trim(to_str(energy_max_neutron)) // " MeV for " // & - trim(adjustl(nuclides(i) % name)), 6) - exit - end if - end do - - ! If the user wants multipole, make sure we found a multipole library. - if (multipole_active) then - mp_found = .false. - do i = 1, n_nuclides_total - if (nuclides(i) % mp_present) then - mp_found = .true. - exit - end if - end do - if (.not. mp_found) call warning("Windowed multipole functionality is & - &turned on, but no multipole libraries were found. Set the & - & element in settings.xml or the & - &OPENMC_MULTIPOLE_LIBRARY environment variable.") - end if - - end subroutine read_ace_xs - -!=============================================================================== -! READ_ACE_TABLE reads a single cross section table in either ASCII or binary -! format. This routine reads the header data for each table and then calls -! appropriate subroutines to parse the actual data. -!=============================================================================== - - subroutine read_ace_table(i_table, i_listing) - integer, intent(in) :: i_table ! index in nuclides/sab_tables - integer, intent(in) :: i_listing ! index in xs_listings - - integer :: i ! loop index for XSS records - integer :: j, j1, j2 ! indices in XSS - integer :: record_length ! Fortran record length - integer :: location ! location of ACE table - integer :: entries ! number of entries on each record - integer :: length ! length of ACE table - integer :: unit_ace ! file unit - integer :: zaids(16) ! list of ZAIDs (only used for S(a,b)) - integer :: filetype ! filetype (ASCII or BINARY) - real(8) :: kT ! temperature of table - real(8) :: awrs(16) ! list of atomic weight ratios (not used) - real(8) :: awr ! atomic weight ratio for table - logical :: file_exists ! does ACE library exist? - logical :: data_0K ! are we reading 0K data? - character(7) :: readable ! is ACE library readable? - character(10) :: name ! name of ACE table - character(10) :: date_ ! date ACE library was processed - character(10) :: mat ! material identifier - character(70) :: comment ! comment for ACE table - character(MAX_FILE_LEN) :: filename ! path to ACE cross section library - type(Nuclide), pointer :: nuc - type(SAlphaBeta), pointer :: sab - type(XsListing), pointer :: listing - - ! determine path, record length, and location of table - listing => xs_listings(i_listing) - filename = listing % path - record_length = listing % recl - location = listing % location - entries = listing % entries - filetype = listing % filetype - - ! Check if ACE library exists and is readable - inquire(FILE=filename, EXIST=file_exists, READ=readable) - if (.not. file_exists) then - call fatal_error("ACE library '" // trim(filename) // "' does not exist!") - elseif (readable(1:3) == 'NO') then - call fatal_error("ACE library '" // trim(filename) // "' is not readable!& - & Change file permissions with chmod command.") - end if - - ! display message - call write_message("Loading ACE cross section table: " // listing % name, 6) - - if (filetype == ASCII) then - ! ======================================================================= - ! READ ACE TABLE IN ASCII FORMAT - - ! Find location of table - open(NEWUNIT=unit_ace, FILE=filename, STATUS='old', ACTION='read') - rewind(UNIT=unit_ace) - do i = 1, location - 1 - read(UNIT=unit_ace, FMT=*) - end do - - ! Read first line of header - read(UNIT=unit_ace, FMT='(A10,2G12.0,1X,A10)') name, awr, kT, date_ - - ! Check that correct xs was found -- if cross_sections.xml is broken, the - ! location of the table may be wrong - if(adjustl(name) /= adjustl(listing % name)) then - call fatal_error("XS listing entry " // trim(listing % name) // " did & - ¬ match ACE data, " // trim(name) // " found instead.") - end if - - ! Read more header and NXS and JXS - read(UNIT=unit_ace, FMT=100) comment, mat, & - (zaids(i), awrs(i), i=1,16), NXS, JXS -100 format(A70,A10/4(I7,F11.0)/4(I7,F11.0)/4(I7,F11.0)/4(I7,F11.0)/& - ,8I9/8I9/8I9/8I9/8I9/8I9) - - ! determine table length - length = NXS(1) - allocate(XSS(length)) - - ! Read XSS array - read(UNIT=unit_ace, FMT='(4G20.0)') XSS - - ! Close ACE file - close(UNIT=unit_ace) - - elseif (filetype == BINARY) then - ! ======================================================================= - ! READ ACE TABLE IN BINARY FORMAT - - ! Open ACE file - open(NEWUNIT=unit_ace, FILE=filename, STATUS='old', ACTION='read', & - ACCESS='direct', RECL=record_length) - - ! Read all header information - read(UNIT=unit_ace, REC=location) name, awr, kT, date_, & - comment, mat, (zaids(i), awrs(i), i=1,16), NXS, JXS - - ! determine table length - length = NXS(1) - allocate(XSS(length)) - - ! Read remaining records with XSS - do i = 1, (length + entries - 1)/entries - j1 = 1 + (i-1)*entries - j2 = min(length, j1 + entries - 1) - read(UNIT=UNIT_ACE, REC=location + i) (XSS(j), j=j1,j2) - end do - - ! Close ACE file - close(UNIT=unit_ace) - end if - - ! ========================================================================== - ! PARSE DATA BASED ON NXS, JXS, AND XSS ARRAYS - - select case(listing % type) - case (ACE_NEUTRON) - - ! only read in a resonant scatterers info once - nuc => nuclides(i_table) - data_0K = .false. - if (trim(adjustl(name)) == nuc % name_0K) then - data_0K = .true. - else - nuc % name = name - nuc % awr = awr - nuc % kT = kT - nuc % zaid = listing % zaid - end if - - ! read all blocks - call read_esz(nuc, data_0K) - - ! don't read unnecessary 0K data for resonant scatterers - if (data_0K) then - continue - else - call read_reactions(nuc) - call read_nu_data(nuc) - call read_energy_dist(nuc) - call read_angular_dist(nuc) - call read_unr_res(nuc) - end if - - ! for fissionable nuclides, precalculate microscopic nu-fission cross - ! sections so that we don't need to call the nu_total function during - ! cross section lookups (except if we're dealing w/ 0K data for resonant - ! scatterers) - - if (nuc % fissionable .and. .not. data_0K) then - call generate_nu_fission(nuc) - end if - - case (ACE_THERMAL) - sab => sab_tables(i_table) - sab % name = name - sab % awr = awr - sab % kT = kT - ! Find sab % n_zaid - do i = 1, 16 - if (zaids(i) == 0) then - sab % n_zaid = i - 1 - exit - end if - end do - allocate(sab % zaid(sab % n_zaid)) - sab % zaid = zaids(1: sab % n_zaid) - - call read_thermal_data(sab) - end select - - deallocate(XSS) - - end subroutine read_ace_table - -!=============================================================================== -! READ_MULTIPOLE_DATA checks for the existence of a multipole library in the -! directory and loads it using multipole_read -!=============================================================================== - - subroutine read_multipole_data(i_table) - - integer, intent(in) :: i_table ! index in nuclides/sab_tables - - logical :: file_exists ! Does multipole library exist? - character(7) :: readable ! Is multipole library readable? - character(6) :: zaid_string ! String of the ZAID - character(MAX_FILE_LEN+9) :: filename ! Path to multipole xs library - - ! For the time being, and I know this is a bit hacky, we just assume - ! that the file will be zaid.h5. - associate (nuc => nuclides(i_table)) - - write(zaid_string, '(I6.6)') nuc % zaid - filename = trim(path_multipole) // zaid_string // ".h5" - - ! Check if Multipole library exists and is readable - inquire(FILE=filename, EXIST=file_exists, READ=readable) - if (.not. file_exists) then - nuc % mp_present = .false. - return - elseif (readable(1:3) == 'NO') then - call fatal_error("Multipole library '" // trim(filename) // "' is not & - &readable! Change file permissions with chmod command.") - end if - - ! Display message - call write_message("Loading Multipole XS table: " // filename, 6) - - allocate(nuc % multipole) - - ! Call the read routine - call multipole_read(filename, nuc % multipole, i_table) - nuc % mp_present = .true. - - ! Recreate nu-fission tables - if (nuc % fissionable) then - call generate_nu_fission(nuc) - end if - - end associate - - end subroutine read_multipole_data - -!=============================================================================== -! READ_ESZ - reads through the ESZ block. This block contains the energy grid, -! total xs, absorption xs, elastic scattering xs, and heating numbers. -!=============================================================================== - - subroutine read_esz(nuc, data_0K) - type(Nuclide), intent(inout) :: nuc - logical, intent(in) :: data_0K ! are we reading 0K data? - - integer :: NE ! number of energy points for total and elastic cross sections - integer :: i ! index in 0K elastic xs array for this nuclide - - real(8) :: xs_cdf_sum = ZERO ! xs cdf value - - ! determine number of energy points - NE = NXS(3) - - ! allocate storage for energy grid and cross section arrays - - ! read in 0K data if we've already read in non-0K data - if (data_0K) then - nuc % n_grid_0K = NE - allocate(nuc % energy_0K(NE)) - allocate(nuc % elastic_0K(NE)) - allocate(nuc % xs_cdf(NE)) - nuc % elastic_0K = ZERO - nuc % xs_cdf = ZERO - XSS_index = 1 - nuc % energy_0K = get_real(NE) - - ! Skip total and absorption - XSS_index = XSS_index + 2*NE - - ! Continue reading elastic scattering and heating - nuc % elastic_0K = get_real(NE) - - do i = 1, nuc % n_grid_0K - 1 - - ! Negative cross sections result in a CDF that is not monotonically - ! increasing. Set all negative xs values to ZERO. - if (nuc % elastic_0K(i) < ZERO) nuc % elastic_0K(i) = ZERO - - ! build xs cdf - xs_cdf_sum = xs_cdf_sum & - + (sqrt(nuc % energy_0K(i)) * nuc % elastic_0K(i) & - + sqrt(nuc % energy_0K(i+1)) * nuc % elastic_0K(i+1)) / TWO & - * (nuc % energy_0K(i+1) - nuc % energy_0K(i)) - nuc % xs_cdf(i) = xs_cdf_sum - end do - - else ! read in non-0K data - nuc % n_grid = NE - allocate(nuc % energy(NE)) - allocate(nuc % total(NE)) - allocate(nuc % elastic(NE)) - allocate(nuc % fission(NE)) - allocate(nuc % nu_fission(NE)) - allocate(nuc % absorption(NE)) - - ! initialize cross sections - nuc % total = ZERO - nuc % elastic = ZERO - nuc % fission = ZERO - nuc % nu_fission = ZERO - nuc % absorption = ZERO - - ! Read data from XSS -- only the energy grid, elastic scattering and heating - ! cross section values are actually read from here. The total and absorption - ! cross sections are reconstructed from the partial reaction data. - - XSS_index = 1 - nuc % energy = get_real(NE) - - ! Skip total and absorption - XSS_index = XSS_index + 2*NE - - ! Continue reading elastic scattering and heating - nuc % elastic = get_real(NE) - - ! Determine if minimum/maximum energy for this nuclide is greater/less - ! than the previous - energy_min_neutron = max(energy_min_neutron, nuc%energy(1)) - energy_max_neutron = min(energy_max_neutron, nuc%energy(NE)) - end if - - end subroutine read_esz - -!=============================================================================== -! READ_NU_DATA reads data given on the number of neutrons emitted from fission -! as a function of the incoming energy of a neutron. This data may be broken -! down into prompt and delayed neutrons emitted as well. -!=============================================================================== - - subroutine read_nu_data(nuc) - type(Nuclide), intent(inout) :: nuc - - integer :: i, j ! loop index - integer :: idx ! index in XSS - integer :: KNU ! location for nu data - integer :: LNU ! type of nu data (polynomial or tabular) - integer :: NR ! number of interpolation regions - integer :: NE ! number of energies - integer :: NPCR ! number of delayed neutron precursor groups - integer :: LOCC ! location of energy distributions for given MT - integer :: LAW - integer :: IDAT - real(8) :: total_group_probability - type(Tabulated1D) :: yield_delayed - type(Tabulated1D) :: group_probability - - if (JXS(2) == 0) then - ! Nuclide is not fissionable - return - end if - - ! Determine number of delayed neutron precursors - if (JXS(24) > 0) then - NPCR = NXS(8) - else - NPCR = 0 - end if - nuc % n_precursor = NPCR - - ! Check to make sure nuclide does not have more than the maximum number - ! of delayed groups - if (NPCR > MAX_DELAYED_GROUPS) then - call fatal_error("Encountered nuclide with " // trim(to_str(NPCR)) & - // " delayed groups while the maximum number of delayed groups is " & - // trim(to_str(MAX_DELAYED_GROUPS))) - end if - - associate (rx => nuc % reactions(nuc % index_fission(1))) - ! Allocate space for prompt/delayed neutron products - allocate(rx % products(1 + NPCR)) - rx % products(:) % particle = NEUTRON - - if (XSS(JXS(2)) > 0) then - ! ======================================================================= - ! PROMPT OR TOTAL NU DATA - - ! If delayed data is present, then prompt data must be present. Otherwise - ! the product represents 'total' neutron emission - if (JXS(24) > 0) then - rx % products(1) % emission_mode = EMISSION_PROMPT - else - rx % products(1) % emission_mode = EMISSION_TOTAL - end if - - KNU = JXS(2) - LNU = nint(XSS(KNU)) - if (LNU == 1) then - ! Polynomial data - allocate(Polynomial :: rx % products(1) % yield) - - ! determine order of polynomial and read coefficients - select type (yield => rx % products(1) % yield) - type is (Polynomial) - call yield % from_ace(XSS, KNU + 1) - end select - - elseif (LNU == 2) then - ! Tabulated data - allocate(Tabulated1D :: rx % products(1) % yield) - - select type(yield => rx % products(1) % yield) - type is (Tabulated1D) - call yield % from_ace(XSS, KNU + 1) - end select - - end if - - elseif (XSS(JXS(2)) < 0) then - ! ======================================================================= - ! PROMPT AND TOTAL NU DATA - - rx % products(1) % emission_mode = EMISSION_PROMPT - - KNU = JXS(2) + 1 - LNU = nint(XSS(KNU)) - if (LNU == 1) then - ! Polynomial data - allocate(Polynomial :: rx % products(1) % yield) - - ! determine order of polynomial and read coefficients - select type (yield => rx % products(1) % yield) - type is (Polynomial) - call yield % from_ace(XSS, KNU + 1) - end select - - elseif (LNU == 2) then - ! Tabulated data - allocate(Tabulated1D :: rx % products(1) % yield) - - select type(yield => rx % products(1) % yield) - type is (Tabulated1D) - call yield % from_ace(XSS, KNU + 1) - end select - end if - - KNU = JXS(2) + nint(abs(XSS(JXS(2)))) + 1 - LNU = nint(XSS(KNU)) - if (LNU == 1) then - ! Polynomial data - allocate(Polynomial :: nuc % total_nu) - - ! determine order of polynomial and read coefficients - select type (yield => nuc % total_nu) - type is (Polynomial) - call yield % from_ace(XSS, KNU + 1) - end select - - elseif (LNU == 2) then - ! Tabulated data - allocate(Tabulated1D :: nuc % total_nu) - - select type(yield => nuc % total_nu) - type is (Tabulated1D) - call yield % from_ace(XSS, KNU + 1) - end select - end if - end if - - if (JXS(24) > 0) then - ! ======================================================================= - ! DELAYED NU DATA - - ! Read total yield of delayed neutrons - call yield_delayed % from_ace(XSS, JXS(24) + 1) - - idx = JXS(25) - total_group_probability = ZERO - do i = 1, NPCR - ! Set emission mode and decay rate - rx % products(1 + i) % emission_mode = EMISSION_DELAYED - rx % products(1 + i) % decay_rate = XSS(idx) - - ! Read probability for this precursor group - call group_probability % from_ace(XSS, idx + 1) - - ! Set yield based on product of group probability and delayed yield - if (all(group_probability % y == group_probability % y(1))) then - allocate(Tabulated1D :: rx % products(1 + i) % yield) - select type (yield => rx % products(1 + i) % yield) - type is (Tabulated1D) - yield = yield_delayed - yield % y(:) = yield % y(:) * group_probability % y(1) - total_group_probability = total_group_probability + group_probability % y(1) - end select - else - call fatal_error("Delayed neutron with energy-dependent group & - &probability not implemented") - end if - - ! Advance position - NR = nint(XSS(idx + 1)) - NE = nint(XSS(idx + 2 + 2*NR)) - idx = idx + 3 + 2*(NR + NE) - - ! ======================================================================= - ! DELAYED NEUTRON ENERGY DISTRIBUTION - - ! Read energy distribution - LOCC = nint(XSS(JXS(26) + i - 1)) - - ! Determine law and location of data - LAW = nint(XSS(JXS(27) + LOCC)) - IDAT = nint(XSS(JXS(27) + LOCC + 1)) - - ! read energy distribution data - associate(p => rx % products(1 + i)) - allocate(p % applicability(1)) - allocate(p % distribution(1)) - call get_energy_dist(p % distribution(1) % obj, LAW, JXS(27), IDAT, & - ZERO, ZERO) - - select type (aedist => p % distribution(1) % obj) - type is (UncorrelatedAngleEnergy) - aedist % fission = .true. - end select - end associate - end do - - ! Renormalize delayed neutron yields to reflect fact that in ACE file, the - ! sum of the group probabilities is not exactly one - do i = 1, NPCR - select type (yield => rx % products(1 + i) % yield) - type is (Tabulated1D) - yield % y(:) = yield % y(:) / total_group_probability - end select - end do - end if - - ! Assign products to other fission reactions - do i = 2, nuc % n_fission - j = nuc % index_fission(i) - allocate(nuc % reactions(j) % products(1 + NPCR)) - nuc % reactions(j) % products(:) = rx % products(:) - end do - end associate - - end subroutine read_nu_data - -!=============================================================================== -! READ_REACTIONS - Get the list of reaction MTs for this cross-section -! table. The MT values are somewhat arbitrary. Also read in Q-values, neutron -! multiplicities, and cross-sections. -!=============================================================================== - - subroutine read_reactions(nuc) - type(Nuclide), intent(inout) :: nuc - - integer :: i ! loop indices - integer :: i_fission ! index in nuc % index_fission - integer :: LMT ! index of MT list in XSS - integer :: NMT ! Number of reactions - integer :: JXS4 ! index of Q values in XSS - integer :: JXS5 ! index of neutron multiplicities in XSS - integer :: JXS7 ! index of reactions cross-sections in XSS - integer :: LXS ! location of cross-section locators - integer :: LOCA ! location of cross-section for given MT - integer :: IE ! reaction's starting index on energy grid - integer :: NE ! number of energies - real(8) :: y - type(ListInt) :: MTs - - LMT = JXS(3) - JXS4 = JXS(4) - JXS5 = JXS(5) - LXS = JXS(6) - JXS7 = JXS(7) - NMT = NXS(4) - - ! allocate array of reactions. Add one since we need to include an elastic - ! scattering channel - nuc % n_reaction = NMT + 1 - allocate(nuc % reactions(NMT+1)) - - ! Store elastic scattering cross-section on reaction one -- note that the - ! sigma array is not allocated or stored for elastic scattering since it is - ! already stored in nuc % elastic - associate (rxn => nuc % reactions(1)) - rxn % MT = 2 - rxn % Q_value = ZERO - allocate(rxn % products(1)) - rxn % products(1) % particle = NEUTRON - allocate(Constant1D :: rxn % products(1) % yield) - select type(yield => rxn % products(1) % yield) - type is (Constant1D) - yield % y = 1 - end select - rxn % threshold = 1 - rxn % scatter_in_cm = .true. - allocate(rxn % products(1) % distribution(1)) - allocate(UncorrelatedAngleEnergy :: rxn % products(1) % distribution(1) % obj) - end associate - - ! Add contribution of elastic scattering to total cross section - nuc % total = nuc % total + nuc % elastic - - ! By default, set nuclide to not fissionable and then change if fission - ! reactions are encountered - nuc % fissionable = .false. - nuc % has_partial_fission = .false. - nuc % n_fission = 0 - i_fission = 0 - - do i = 1, NMT - associate (rxn => nuc % reactions(i+1)) - ! read MT number, Q-value, and neutrons produced - rxn % MT = int(XSS(LMT + i - 1)) - rxn % Q_value = XSS(JXS4 + i - 1) - rxn % scatter_in_cm = (nint(XSS(JXS5 + i - 1)) < 0) - - if (.not. is_fission(rxn % MT)) then - allocate(rxn % products(1)) - rxn % products(1) % particle = NEUTRON - - y = abs(nint(XSS(JXS5 + i - 1))) - if (y > 100) then - ! Read energy-dependent multiplicities - - ! Set flag and allocate space for Tabulated1D to store yield - allocate(Tabulated1D :: rxn % products(1) % yield) - - ! Read yield function - select type (yield => rxn % products(1) % yield) - type is (Tabulated1D) - XSS_index = JXS(11) + int(y) - 101 - call yield % from_ace(XSS, XSS_index) - end select - else - ! Integral yield - allocate(Constant1D :: rxn % products(1) % yield) - select type (yield => rxn % products(1) % yield) - type is (Constant1D) - yield % y = y - end select - end if - end if - - ! read starting energy index - LOCA = int(XSS(LXS + i - 1)) - IE = int(XSS(JXS7 + LOCA - 1)) - rxn % threshold = IE - - ! read number of energies cross section values - NE = int(XSS(JXS7 + LOCA)) - allocate(rxn % sigma(NE)) - XSS_index = JXS7 + LOCA + 1 - rxn % sigma = get_real(NE) - end associate - end do - - ! Create set of MT values - do i = 1, size(nuc % reactions) - call MTs % append(nuc % reactions(i) % MT) - call nuc%reaction_index%add_key(nuc%reactions(i)%MT, i) - end do - - ! Create total, absorption, and fission cross sections - do i = 2, size(nuc % reactions) - associate (rxn => nuc % reactions(i)) - IE = rxn % threshold - NE = size(rxn % sigma) - - ! Skip total inelastic level scattering, gas production cross sections - ! (MT=200+), etc. - if (rxn % MT == N_LEVEL .or. rxn % MT == N_NONELASTIC) cycle - if (rxn % MT > N_5N2P .and. rxn % MT < N_P0) cycle - - ! Skip level cross sections if total is available - if (rxn % MT >= N_P0 .and. rxn % MT <= N_PC .and. MTs % contains(N_P)) cycle - if (rxn % MT >= N_D0 .and. rxn % MT <= N_DC .and. MTs % contains(N_D)) cycle - if (rxn % MT >= N_T0 .and. rxn % MT <= N_TC .and. MTs % contains(N_T)) cycle - if (rxn % MT >= N_3HE0 .and. rxn % MT <= N_3HEC .and. MTs % contains(N_3HE)) cycle - if (rxn % MT >= N_A0 .and. rxn % MT <= N_AC .and. MTs % contains(N_A)) cycle - if (rxn % MT >= N_2N0 .and. rxn % MT <= N_2NC .and. MTs % contains(N_2N)) cycle - - ! Add contribution to total cross section - nuc % total(IE:IE+NE-1) = nuc % total(IE:IE+NE-1) + rxn % sigma - - ! Add contribution to absorption cross section - if (is_disappearance(rxn % MT)) then - nuc % absorption(IE:IE+NE-1) = nuc % absorption(IE:IE+NE-1) + rxn % sigma - end if - - ! Information about fission reactions - if (rxn % MT == N_FISSION) then - allocate(nuc % index_fission(1)) - elseif (rxn % MT == N_F) then - allocate(nuc % index_fission(PARTIAL_FISSION_MAX)) - nuc % has_partial_fission = .true. - end if - - ! Add contribution to fission cross section - if (is_fission(rxn % MT)) then - nuc % fissionable = .true. - nuc % fission(IE:IE+NE-1) = nuc % fission(IE:IE+NE-1) + rxn % sigma - - ! Also need to add fission cross sections to absorption - nuc % absorption(IE:IE+NE-1) = nuc % absorption(IE:IE+NE-1) + rxn % sigma - - ! If total fission reaction is present, there's no need to store the - ! reaction cross-section since it was copied to nuc % fission - if (rxn % MT == N_FISSION) deallocate(rxn % sigma) - - ! Keep track of this reaction for easy searching later - i_fission = i_fission + 1 - nuc % index_fission(i_fission) = i - nuc % n_fission = nuc % n_fission + 1 - end if - end associate - end do - - ! Clear MTs set - call MTs % clear() - - end subroutine read_reactions - -!=============================================================================== -! READ_ANGULAR_DIST parses the angular distribution for each reaction with -! secondary neutrons -!=============================================================================== - - subroutine read_angular_dist(nuc) - type(Nuclide), intent(inout) :: nuc - - integer :: LOCB ! location of angular distribution for given MT - integer :: NE ! number of incoming energies - integer :: NP ! number of points for cosine distribution - integer :: i ! index in reactions array - integer :: j ! index over incoming energies - integer :: k ! index over energy distributions - integer :: interp - integer, allocatable :: LC(:) ! locator - - ! loop over all reactions with secondary neutrons -- NXS(5) does not include - ! elastic scattering - do i = 1, NXS(5) + 1 - associate (rxn => nuc%reactions(i)) - ! find location of angular distribution - LOCB = int(XSS(JXS(8) + i - 1)) - - ! Angular distribution given as part of a correlated angle-energy distribution - if (LOCB == -1) cycle - - ! No angular distribution data are given for this reaction, isotropic - ! scattering is assumed (in CM if TY < 0 and in LAB if TY > 0) - if (LOCB == 0) cycle - - ! Loop over each separate energy distribution. Even though there is only - ! "one" angular distribution, it is repeated as many times as there are - ! energy distributions for this reaction since the - ! UncorrelatedAngleEnergy type holds one angle and energy distribution. - do k = 1, size(rxn % products(1) % distribution) - select type (aedist => rxn % products(1) % distribution(k) % obj) - type is (UncorrelatedAngleEnergy) - ! allocate space for incoming energies and locations - NE = int(XSS(JXS(9) + LOCB - 1)) - allocate(aedist % angle % energy(NE)) - allocate(aedist % angle % distribution(NE)) - allocate(LC(NE)) - - ! read incoming energy grid and location of nucs - XSS_index = JXS(9) + LOCB - aedist % angle % energy(:) = get_real(NE) - LC(:) = get_int(NE) - - ! determine dize of data block - do j = 1, NE - if (LC(j) == 0) then - ! isotropic - allocate(Uniform :: aedist % angle % distribution(j) % obj) - select type (adist => aedist % angle % distribution(j) % obj) - type is (Uniform) - adist % a = -ONE - adist % b = ONE - end select - - elseif (LC(j) > 0) then - ! 32 equiprobable bins - allocate(Equiprobable :: aedist % angle % distribution(j) % obj) - select type (adist => aedist % angle % distribution(j) % obj) - type is (Equiprobable) - allocate(adist % x(33)) - end select - - elseif (LC(j) < 0) then - ! tabular distribution - allocate(Tabular :: aedist % angle % distribution(j) % obj) - end if - end do - - ! read angular distribution -- currently this does not actually parse the - ! angular distribution tables for each incoming energy, that must be done - ! on-the-fly - do j = 1, NE - XSS_index = JXS(9) + abs(LC(j)) - 1 - select type(adist => aedist % angle % distribution(j) % obj) - type is (Equiprobable) - adist % x(:) = get_real(33) - type is (Tabular) - ! determine interpolation and number of points - interp = nint(XSS(XSS_index)) - NP = nint(XSS(XSS_index + 1)) - - ! Get probability density data - XSS_index = XSS_index + 2 - allocate(adist % x(NP), adist % p(NP), adist % c(NP)) - adist % x(:) = get_real(NP) - adist % p(:) = get_real(NP) - adist % c(:) = get_real(NP) - end select - end do - deallocate(LC) - - end select - end do - end associate - end do - - end subroutine read_angular_dist - -!=============================================================================== -! READ_ENERGY_DIST parses the secondary energy distribution for each reaction -! with seconary neutrons (except elastic scattering) -!=============================================================================== - - subroutine read_energy_dist(nuc) - type(Nuclide), intent(inout) :: nuc - - integer :: i ! loop index - integer :: n - integer :: IDAT ! locator for distribution data - integer :: LNW ! location of next energy law - integer :: LAW ! Type of energy law - - ! Loop over all reactions - do i = 1, NXS(5) - ! Determine how many energy distributions are present for this reaction - LNW = nint(XSS(JXS(10) + i - 1)) - n = 0 - do while (LNW > 0) - n = n + 1 - LNW = nint(XSS(JXS(11) + LNW - 1)) - end do - - ! Allocate space for distributions and probability of validity - associate (p => nuc % reactions(i + 1) % products(1)) - allocate(p % applicability(n)) - allocate(p % distribution(n)) - - LNW = nint(XSS(JXS(10) + i - 1)) - n = 0 - do while (LNW > 0) - n = n + 1 - - ! Determine energy law and location of data - LAW = nint(XSS(JXS(11) + LNW)) - IDAT = nint(XSS(JXS(11) + LNW + 1)) - - ! Read probability of law validity - call p % applicability(n) % from_ace(XSS, JXS(11) + LNW + 2) - - ! Read energy law data - call get_energy_dist(p % distribution(n) % obj, LAW, & - JXS(11), IDAT, nuc % awr, nuc % reactions(i + 1) % Q_value) - - ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< - ! Before the secondary distribution refactor, when the angle/energy - ! distribution was uncorrelated, no angle was actually sampled. With - ! the refactor, an angle is always sampled for an uncorrelated - ! distribution even when no angle distribution exists in the ACE file - ! (isotropic is assumed). To preserve the RNG stream, we explicitly - ! mark fission reactions so that we avoid the angle sampling. - if (any(nuc % reactions(i + 1) % MT == & - [N_FISSION, N_F, N_NF, N_2NF, N_3NF])) then - select type (aedist => p % distribution(n) % obj) - type is (UncorrelatedAngleEnergy) - aedist % fission = .true. - end select - end if - ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< - - ! Get locator for next distribution - LNW = nint(XSS(JXS(11) + LNW - 1)) - end do - end associate - end do - - end subroutine read_energy_dist - -!=============================================================================== -! GET_ENERGY_DIST reads in data for a single law for an energy distribution and -! calls itself recursively if there are multiple energy distributions for a -! single reaction -!=============================================================================== - - recursive subroutine get_energy_dist(aedist, law, LDIS, IDAT, awr, Q_value) - class(AngleEnergy), allocatable, intent(inout) :: aedist - integer, intent(in) :: law - integer, intent(in) :: LDIS - integer, intent(in) :: IDAT - real(8), intent(in) :: awr - real(8), intent(in) :: Q_value - - integer :: i, j - integer :: NR ! number of interpolation regions - integer :: NE ! number of incoming energies - integer :: NP ! number of outgoing energies/angles - integer :: interp - integer, allocatable :: L(:) ! locations of distributions for each Ein - integer, allocatable :: LC(:) ! locations of distributions for each Ein - - XSS_index = LDIS + IDAT - 1 - - if (law == 44) then - allocate(KalbachMann :: aedist) - elseif (law == 61) then - allocate(CorrelatedAngleEnergy :: aedist) - elseif (law == 66) then - allocate(NBodyPhaseSpace :: aedist) - else - allocate(UncorrelatedAngleEnergy :: aedist) - end if - - select type (aedist) - type is (UncorrelatedAngleEnergy) - ! ======================================================================== - ! UNCORRELATED ENERGY DISTRIBUTIONS - - select case (law) - case (1) - allocate(TabularEquiprobable :: aedist % energy) - select type (edist => aedist % energy) - type is (TabularEquiprobable) - NR = nint(XSS(XSS_index)) - NE = nint(XSS(XSS_index + 1 + 2*NR)) - if (NR > 0) then - call fatal_error("Multiple interpolation regions not yet supported & - &for tabular equiprobable energy distributions.") - end if - edist % n_region = NR - - ! Read incoming energies for which outgoing energies are tabulated - allocate(edist % energy_in(NE)) - XSS_index = XSS_index + 2 + 2*NR - edist % energy_in(:) = get_real(NE) - - ! Read outgoing energy tables - NP = nint(XSS(XSS_index)) - allocate(edist % energy_out(NP, NE)) - XSS_index = XSS_index + 1 - do i = 1, NE - edist % energy_out(:, i) = get_real(NP) - end do - end select - - case (3) - allocate(LevelInelastic :: aedist % energy) - select type (edist => aedist % energy) - type is (LevelInelastic) - edist % threshold = XSS(XSS_index) - edist % mass_ratio = XSS(XSS_index + 1) - end select - - case (4) - allocate(ContinuousTabular :: aedist % energy) - select type (edist => aedist % energy) - type is (ContinuousTabular) - NR = nint(XSS(XSS_index)) - XSS_index = XSS_index + 1 - if (NR > 1) then - call fatal_error("Multiple interpolation regions not yet supported & - &for continuous tabular energy distributions.") - end if - edist % n_region = NR - - ! Read breakpoints and interpolation parameters - if (NR > 0) then - allocate(edist % breakpoints(NR)) - allocate(edist % interpolation(NR)) - edist % breakpoints(:) = get_int(NR) - edist % interpolation(:) = get_int(NR) - end if - - ! Read incoming energies for which outgoing energies are tabulated and - ! locators - NE = nint(XSS(XSS_index)) - XSS_index = XSS_index + 1 - allocate(edist % energy(NE)) - allocate(L(NE)) - edist % energy(:) = get_real(NE) - L(:) = get_int(NE) - - ! Read outgoing energy tables - allocate(edist % distribution(NE)) - do i = 1, NE - ! Determine interpolation and number of discrete points - XSS_index = LDIS + L(i) - 1 - interp = nint(XSS(XSS_index)) - edist % distribution(i) % interpolation = mod(interp, 10) - edist % distribution(i) % n_discrete = (interp - & - edist % distribution(i) % interpolation)/10 - - ! check for discrete lines present - if (edist % distribution(i) % n_discrete > 0) then - call fatal_error("Discrete lines in continuous tabular & - &distribution not yet supported") - end if - - ! Determine number of points and allocate space - NP = nint(XSS(XSS_index + 1)) - allocate(edist % distribution(i) % e_out(NP)) - allocate(edist % distribution(i) % p(NP)) - allocate(edist % distribution(i) % c(NP)) - - ! Read tabular PDF for outgoing energy - XSS_index = XSS_index + 2 - edist % distribution(i) % e_out(:) = get_real(NP) - edist % distribution(i) % p(:) = get_real(NP) - edist % distribution(i) % c(:) = get_real(NP) - end do - - deallocate(L) - end select - - case (7) - allocate(MaxwellEnergy :: aedist % energy) - select type (edist => aedist % energy) - type is (MaxwellEnergy) - call edist % theta % from_ace(XSS, XSS_index) - edist % u = XSS(XSS_index + 2 + 2*edist % theta % n_regions + & - 2*edist % theta % n_pairs) - end select - - case (9) - allocate(Evaporation :: aedist % energy) - select type(edist => aedist % energy) - type is (Evaporation) - call edist % theta % from_ace(XSS, XSS_index) - edist % u = XSS(XSS_index + 2 + 2*edist % theta % n_regions + & - 2*edist % theta % n_pairs) - end select - - case (11) - allocate(WattEnergy :: aedist % energy) - select type(edist => aedist % energy) - type is (WattEnergy) - call edist % a % from_ace(XSS, XSS_index) - XSS_index = XSS_index + 2 + 2*edist % a % n_regions + 2*edist % a % n_pairs - call edist % b % from_ace(XSS, XSS_index) - XSS_index = XSS_index + 2 + 2*edist % b % n_regions + 2*edist % b % n_pairs - edist % u = XSS(XSS_index) - end select - - end select - - type is (KalbachMann) - ! ======================================================================== - ! CORRELATED KALBACH-MANN DISTRIBUTION - - NR = int(XSS(XSS_index)) - NE = int(XSS(XSS_index + 1 + 2*NR)) - if (NR > 0) then - call fatal_error("Multiple interpolation regions not yet supported & - &for Kalbach-Mann energy distributions.") - end if - aedist % n_region = NR - - ! Read incoming energies for which outgoing energies are tabulated and locators - allocate(aedist % energy(NE)) - allocate(L(NE)) - XSS_index = XSS_index + 2 + 2*NR - aedist % energy(:) = get_real(NE) - L(:) = get_int(NE) - - ! Read outgoing energy tables - allocate(aedist % distribution(NE)) - do i = 1, NE - ! Determine interpolation and number of discrete points - XSS_index = LDIS + L(i) - 1 - interp = nint(XSS(XSS_index)) - aedist % distribution(i) % interpolation = mod(interp, 10) - aedist % distribution(i) % n_discrete = (interp - aedist % distribution(i) % interpolation)/10 - - ! check for discrete lines present - if (aedist % distribution(i) % n_discrete > 0) then - call fatal_error("Discrete lines in Kalbach-Mann distribution not & - &yet supported") - end if - - ! Determine number of points and allocate space - NP = nint(XSS(XSS_index + 1)) - allocate(aedist % distribution(i) % e_out(NP)) - allocate(aedist % distribution(i) % p(NP)) - allocate(aedist % distribution(i) % c(NP)) - allocate(aedist % distribution(i) % r(NP)) - allocate(aedist % distribution(i) % a(NP)) - - ! Read tabular PDF for outgoing energy - XSS_index = XSS_index + 2 - aedist % distribution(i) % e_out(:) = get_real(NP) - aedist % distribution(i) % p(:) = get_real(NP) - aedist % distribution(i) % c(:) = get_real(NP) - aedist % distribution(i) % r(:) = get_real(NP) - aedist % distribution(i) % a(:) = get_real(NP) - end do - - deallocate(L) - - type is (CorrelatedAngleEnergy) - ! ======================================================================== - ! CORRELATED ANGLE-ENERGY DISTRIBUTION - - NR = int(XSS(XSS_index)) - NE = int(XSS(XSS_index + 1 + 2*NR)) - if (NR > 0) then - call fatal_error("Multiple interpolation regions not yet supported & - &for correlated angle-energy distributions.") - end if - aedist % n_region = NR - - ! Read incoming energies for which outgoing energies are tabulated and - ! locators - allocate(aedist % energy(NE)) - allocate(L(NE)) - XSS_index = XSS_index + 2 + 2*NR - aedist % energy(:) = get_real(NE) - L(:) = get_int(NE) - - ! Read outgoing energy tables - allocate(aedist % distribution(NE)) - do i = 1, NE - ! Determine interpolation and number of discrete points - XSS_index = LDIS + L(i) - 1 - interp = nint(XSS(XSS_index)) - aedist % distribution(i) % interpolation = mod(interp, 10) - aedist % distribution(i) % n_discrete = (interp - aedist % distribution(i) % interpolation)/10 - - ! check for discrete lines present - if (aedist % distribution(i) % n_discrete > 0) then - call fatal_error("Discrete lines in correlated angle-energy & - &distribution not yet supported") - end if - - ! Determine number of points and allocate space - NP = nint(XSS(XSS_index + 1)) - allocate(aedist % distribution(i) % e_out(NP)) - allocate(aedist % distribution(i) % p(NP)) - allocate(aedist % distribution(i) % c(NP)) - allocate(LC(NP)) - - ! Read tabular PDF for outgoing energy - XSS_index = XSS_index + 2 - aedist % distribution(i) % e_out(:) = get_real(NP) - aedist % distribution(i) % p(:) = get_real(NP) - aedist % distribution(i) % c(:) = get_real(NP) - LC(:) = get_int(NP) - - ! allocate angular distributions for each incoming/outgoing energy - allocate(aedist % distribution(i) % angle(NP)) - do j = 1, NP - if (LC(j) == 0) then - ! isotropic - allocate(Uniform :: aedist % distribution(i) % angle(j) % obj) - select type (adist => aedist % distribution(i) % angle(j) % obj) - type is (Uniform) - adist % a = -ONE - adist % b = ONE - end select - - elseif (LC(j) > 0) then - ! tabular distribution - allocate(Tabular :: aedist % distribution(i) % angle(j) % obj) - end if - end do - - ! read angular distributions - do j = 1, NP - XSS_index = LDIS + abs(LC(j)) - 1 - select type(adist => aedist % distribution(i) % angle(j) % obj) - type is (Tabular) - ! determine interpolation and number of points - interp = nint(XSS(XSS_index)) - NP = nint(XSS(XSS_index + 1)) - - ! Get probability density data - XSS_index = XSS_index + 2 - allocate(adist % x(NP), adist % p(NP), adist % c(NP)) - adist % x(:) = get_real(NP) - adist % p(:) = get_real(NP) - adist % c(:) = get_real(NP) - end select - end do - deallocate(LC) - - end do - - deallocate(L) - - type is (NBodyPhaseSpace) - ! ======================================================================== - ! N-BODY PHASE SPACE DISTRIBUTION - - aedist % n_bodies = int(XSS(XSS_index)) - aedist % mass_ratio = XSS(XSS_index + 1) - aedist % A = awr - aedist % Q = Q_value - end select - - end subroutine get_energy_dist - -!=============================================================================== -! READ_UNR_RES reads in unresolved resonance probability tables if present. -!=============================================================================== - - subroutine read_unr_res(nuc) - type(Nuclide), intent(inout) :: nuc - - integer :: JXS23 ! location of URR data - integer :: lc ! locator - integer :: N ! # of incident energies - integer :: M ! # of probabilities - integer :: i ! index over incoming energies - integer :: j ! index over values - integer :: k ! index over probabilities - - ! determine locator for URR data - JXS23 = JXS(23) - - ! check if URR data is present - if (JXS23 /= 0) then - nuc % urr_present = .true. - allocate(nuc % urr_data) - lc = JXS23 - else - nuc % urr_present = .false. - return - end if - - ! read parameters - nuc % urr_data % n_energy = int(XSS(lc)) - nuc % urr_data % n_prob = int(XSS(lc + 1)) - nuc % urr_data % interp = int(XSS(lc + 2)) - nuc % urr_data % inelastic_flag = int(XSS(lc + 3)) - nuc % urr_data % absorption_flag = int(XSS(lc + 4)) - if (int(XSS(lc + 5)) == 0) then - nuc % urr_data % multiply_smooth = .false. - else - nuc % urr_data % multiply_smooth = .true. - end if - - ! if the inelastic competition flag indicates that the inelastic cross - ! section should be determined from a normal reaction cross section, we need - ! to set up a pointer to that reaction - nuc % urr_inelastic = NONE - if (nuc % urr_data % inelastic_flag > 0) then - do i = 1, nuc % n_reaction - if (nuc % reactions(i) % MT == nuc % urr_data % inelastic_flag) then - nuc % urr_inelastic = i - end if - end do - - ! Abort if no corresponding inelastic reaction was found - if (nuc % urr_inelastic == NONE) then - call fatal_error("Could not find inelastic reaction specified on & - &unresolved resonance probability table.") - end if - end if - - ! allocate incident energies and probability tables - N = nuc % urr_data % n_energy - M = nuc % urr_data % n_prob - allocate(nuc % urr_data % energy(N)) - allocate(nuc % urr_data % prob(N,6,M)) - - ! read incident energies - XSS_index = lc + 6 - nuc % urr_data % energy = get_real(N) - - ! read probability tables - do i = 1, N - do j = 1, 6 - do k = 1, M - nuc % urr_data % prob(i,j,k) = XSS(XSS_index) - XSS_index = XSS_index + 1 - end do - end do - end do - - ! Check for negative values - if (any(nuc % urr_data % prob < ZERO)) then - if (master) call warning("Negative value(s) found on probability table & - &for nuclide " // nuc % name) - end if - - end subroutine read_unr_res -!=============================================================================== -! GENERATE_NU_FISSION precalculates the microscopic nu-fission cross section for -! a given nuclide. This is done so that the nu_total function does not need to -! be called during cross section lookups. -!=============================================================================== - - subroutine generate_nu_fission(nuc) - type(Nuclide), intent(inout) :: nuc - - integer :: i ! index on nuclide energy grid - - do i = 1, size(nuc % energy) - nuc % nu_fission(i) = nuc % nu(nuc % energy(i), EMISSION_TOTAL) * & - nuc % fission(i) - end do - end subroutine generate_nu_fission - -!=============================================================================== -! READ_THERMAL_DATA reads elastic and inelastic cross sections and corresponding -! secondary energy/angle distributions derived from experimental S(a,b) -! data. Namely, this routine reads the ITIE, ITCE, ITXE, and ITCA blocks. -!=============================================================================== - - subroutine read_thermal_data(table) - type(SAlphaBeta), intent(inout) :: table - - integer :: i ! index for incoming energies - integer :: j ! index for outgoing energies - integer :: k ! index for outoging angles - integer :: lc ! location in XSS array - integer :: NE_in ! number of incoming energies - integer :: NE_out ! number of outgoing energies - integer :: NMU ! number of outgoing angles - integer :: JXS4 ! location of elastic energy table - integer(8), allocatable :: LOCC(:) ! Location of inelastic data - - ! read secondary energy mode for inelastic scattering - table % secondary_mode = NXS(7) - - ! read number of inelastic energies and allocate arrays - NE_in = int(XSS(JXS(1))) - table % n_inelastic_e_in = NE_in - allocate(table % inelastic_e_in(NE_in)) - allocate(table % inelastic_sigma(NE_in)) - - ! read inelastic energies and cross-sections - XSS_index = JXS(1) + 1 - table % inelastic_e_in = get_real(NE_in) - table % inelastic_sigma = get_real(NE_in) - - ! set threshold value - table % threshold_inelastic = table % inelastic_e_in(NE_in) - - ! allocate space for outgoing energy/angle for inelastic - ! scattering - if (table % secondary_mode == SAB_SECONDARY_EQUAL .or. & - table % secondary_mode == SAB_SECONDARY_SKEWED) then - NMU = NXS(3) + 1 - table % n_inelastic_mu = NMU - NE_out = NXS(4) - table % n_inelastic_e_out = NE_out - allocate(table % inelastic_e_out(NE_out, NE_in)) - allocate(table % inelastic_mu(NMU, NE_out, NE_in)) - else if (table % secondary_mode == SAB_SECONDARY_CONT) then - NMU = NXS(3) - 1 - table % n_inelastic_mu = NMU - allocate(table % inelastic_data(NE_in)) - allocate(LOCC(NE_in)) - ! NE_out will be determined later - end if - - ! read outgoing energy/angle distribution for inelastic scattering - if (table % secondary_mode == SAB_SECONDARY_EQUAL .or. & - table % secondary_mode == SAB_SECONDARY_SKEWED) then - lc = JXS(3) - 1 - do i = 1, NE_in - do j = 1, NE_out - ! read outgoing energy - table % inelastic_e_out(j,i) = XSS(lc + 1) - - ! read outgoing angles for this outgoing energy - do k = 1, NMU - table % inelastic_mu(k,j,i) = XSS(lc + 1 + k) - end do - - ! advance pointer - lc = lc + 1 + NMU - end do - end do - else if (table % secondary_mode == SAB_SECONDARY_CONT) then - ! Get the location pointers to each Ein's DistEnergySAB data - LOCC = get_int(NE_in) - ! Get the number of outgoing energies and allocate space accordingly - do i = 1, NE_in - NE_out = int(XSS(XSS_index + i - 1)) - table % inelastic_data(i) % n_e_out = NE_out - allocate(table % inelastic_data(i) % e_out (NE_out)) - allocate(table % inelastic_data(i) % e_out_pdf (NE_out)) - allocate(table % inelastic_data(i) % e_out_cdf (NE_out)) - allocate(table % inelastic_data(i) % mu (NMU, NE_out)) - end do - - ! Now we can fill the inelastic_data(i) attributes - do i = 1, NE_in - XSS_index = int(LOCC(i)) - NE_out = table % inelastic_data(i) % n_e_out - do j = 1, NE_out - table % inelastic_data(i) % e_out(j) = XSS(XSS_index + 1) - table % inelastic_data(i) % e_out_pdf(j) = XSS(XSS_index + 2) - table % inelastic_data(i) % e_out_cdf(j) = XSS(XSS_index + 3) - table % inelastic_data(i) % mu(:, j) = & - XSS(XSS_index + 4: XSS_index + 4 + NMU - 1) - XSS_index = XSS_index + 4 + NMU - 1 - end do - end do - end if - - ! read number of elastic energies and allocate arrays - JXS4 = JXS(4) - if (JXS4 /= 0) then - NE_in = int(XSS(JXS4)) - table % n_elastic_e_in = NE_in - allocate(table % elastic_e_in(NE_in)) - allocate(table % elastic_P(NE_in)) - - ! read elastic energies and P - XSS_index = JXS4 + 1 - table % elastic_e_in = get_real(NE_in) - table % elastic_P = get_real(NE_in) - - ! set threshold - table % threshold_elastic = table % elastic_e_in(NE_in) - - ! determine whether sigma=P or sigma = P/E - table % elastic_mode = NXS(5) - else - table % threshold_elastic = ZERO - table % n_elastic_e_in = 0 - end if - - ! allocate space for outgoing energy/angle for elastic scattering - NMU = NXS(6) + 1 - table % n_elastic_mu = NMU - if (NMU > 0) then - allocate(table % elastic_mu(NMU, NE_in)) - end if - - ! read equiprobable outgoing cosines for elastic scattering each - ! incoming energy - if (JXS4 /= 0 .and. NMU /= 0) then - lc = JXS(6) - 1 - do i = 1, NE_in - do j = 1, NMU - table % elastic_mu(j,i) = XSS(lc + j) - end do - lc = lc + NMU - end do - end if - - end subroutine read_thermal_data - -!=============================================================================== -! GET_INT returns an array of integers read from the current position in the XSS -! array -!=============================================================================== - - function get_int(n_values) result(array) - - integer, intent(in) :: n_values ! number of values to read - integer :: array(n_values) ! array of values - - array = int(XSS(XSS_index:XSS_index + n_values - 1)) - XSS_index = XSS_index + n_values - - end function get_int - -!=============================================================================== -! GET_REAL returns an array of real(8)s read from the current position in the -! XSS array -!=============================================================================== - - function get_real(n_values) result(array) - - integer, intent(in) :: n_values ! number of values to read - real(8) :: array(n_values) ! array of values - - array = XSS(XSS_index:XSS_index + n_values - 1) - XSS_index = XSS_index + n_values - - end function get_real - -end module ace diff --git a/src/angle_distribution.F90 b/src/angle_distribution.F90 index 282d51b73b..830ba836ca 100644 --- a/src/angle_distribution.F90 +++ b/src/angle_distribution.F90 @@ -1,7 +1,10 @@ module angle_distribution - use constants, only: ZERO, ONE - use distribution_univariate, only: DistributionContainer + use constants, only: ZERO, ONE, HISTOGRAM, LINEAR_LINEAR + use distribution_univariate, only: DistributionContainer, Tabular + use hdf5, only: HID_T, HSIZE_T + use hdf5_interface, only: read_attribute, get_shape, read_dataset, & + open_dataset, close_dataset use random_lcg, only: prn use search, only: binary_search @@ -21,6 +24,7 @@ module angle_distribution type(DistributionContainer), allocatable :: distribution(:) contains procedure :: sample => angle_sample + procedure :: from_hdf5 => angle_from_hdf5 end type AngleDistribution contains @@ -60,4 +64,68 @@ contains if (abs(mu) > ONE) mu = sign(ONE, mu) end function angle_sample + subroutine angle_from_hdf5(this, group_id) + class(AngleDistribution), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i, j + integer :: n + integer :: n_energy + integer(HID_T) :: dset_id + integer(HSIZE_T) :: dims(1), dims2(2) + integer, allocatable :: offsets(:) + integer, allocatable :: interp(:) + real(8), allocatable :: temp(:,:) + + ! Get incoming energies + dset_id = open_dataset(group_id, 'energy') + call get_shape(dset_id, dims) + n_energy = int(dims(1), 4) + allocate(this%energy(n_energy)) + allocate(this%distribution(n_energy)) + call read_dataset(this%energy, dset_id) + call close_dataset(dset_id) + + ! Get outgoing energy distribution data + dset_id = open_dataset(group_id, 'mu') + call read_attribute(offsets, dset_id, 'offsets') + call read_attribute(interp, dset_id, 'interpolation') + call get_shape(dset_id, dims2) + allocate(temp(dims2(1), dims2(2))) + call read_dataset(temp, dset_id) + call close_dataset(dset_id) + + do i = 1, n_energy + ! Determine number of outgoing energies + j = offsets(i) + if (i < n_energy) then + n = offsets(i+1) - j + else + n = size(temp, 1) - j + end if + + ! Create and initialize tabular distribution + allocate(Tabular :: this%distribution(i)%obj) + select type (mudist => this%distribution(i)%obj) + type is (Tabular) + mudist % interpolation = interp(i) + allocate(mudist % x(n), mudist % p(n), mudist % c(n)) + mudist % x(:) = temp(j+1:j+n, 1) + mudist % p(:) = temp(j+1:j+n, 2) + + ! To get answers that match ACE data, for now we still use the tabulated + ! CDF values that were passed through to the HDF5 library. At a later + ! time, we can remove the CDF values from the HDF5 library and + ! reconstruct them using the PDF + if (.true.) then + mudist % c(:) = temp(j+1:j+n, 3) + else + call mudist % initialize(temp(j+1:j+n, 1), temp(j+1:j+n, 2), interp(i)) + end if + end select + + j = j + n + end do + end subroutine angle_from_hdf5 + end module angle_distribution diff --git a/src/angleenergy_header.F90 b/src/angleenergy_header.F90 index 483bad856c..60d5443c46 100644 --- a/src/angleenergy_header.F90 +++ b/src/angleenergy_header.F90 @@ -1,5 +1,7 @@ module angleenergy_header + use hdf5, only: HID_T + !=============================================================================== ! ANGLEENERGY (abstract) defines a correlated or uncorrelated angle-energy ! distribution that is a function of incoming energy. Each derived type must @@ -10,6 +12,7 @@ module angleenergy_header type, abstract :: AngleEnergy contains procedure(angleenergy_sample_), deferred :: sample + procedure(angleenergy_from_hdf5_), deferred :: from_hdf5 end type AngleEnergy abstract interface @@ -20,6 +23,12 @@ module angleenergy_header real(8), intent(out) :: E_out real(8), intent(out) :: mu end subroutine angleenergy_sample_ + + subroutine angleenergy_from_hdf5_(this, group_id) + import AngleEnergy, HID_T + class(AngleEnergy), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + end subroutine angleenergy_from_hdf5_ end interface type :: AngleEnergyContainer diff --git a/src/constants.F90 b/src/constants.F90 index b3e5ed89b1..838830887c 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -237,6 +237,13 @@ module constants ASCII = 1, & ! ASCII cross section file BINARY = 2 ! Binary cross section file + ! Library types + integer, parameter :: & + LIBRARY_NEUTRON = 1, & + LIBRARY_THERMAL = 2, & + LIBRARY_PHOTON = 3, & + LIBRARY_MULTIGROUP = 4 + ! Probability table parameters integer, parameter :: & URR_CUM_PROB = 1, & diff --git a/src/endf_header.F90 b/src/endf_header.F90 index e9a073f4e6..8b6ad63f19 100644 --- a/src/endf_header.F90 +++ b/src/endf_header.F90 @@ -2,13 +2,16 @@ module endf_header use constants, only: ZERO, HISTOGRAM, LINEAR_LINEAR, LINEAR_LOG, & LOG_LINEAR, LOG_LOG + use hdf5_interface + use hdf5, only: HID_T, HSIZE_T use search, only: binary_search -implicit none + implicit none type, abstract :: Function1D contains procedure(function1d_evaluate_), deferred :: evaluate + procedure(function1d_from_hdf5_), deferred :: from_hdf5 end type Function1D abstract interface @@ -18,6 +21,12 @@ implicit none real(8), intent(in) :: x real(8) :: y end function function1d_evaluate_ + + subroutine function1d_from_hdf5_(this, dset_id) + import Function1D, HID_T + class(Function1D), intent(inout) :: this + integer(HID_T), intent(in) :: dset_id + end subroutine function1d_from_hdf5_ end interface !=============================================================================== @@ -27,6 +36,7 @@ implicit none type, extends(Function1D) :: Constant1D real(8) :: y contains + procedure :: from_hdf5 => constant1d_from_hdf5 procedure :: evaluate => constant1d_evaluate end type Constant1D @@ -37,6 +47,7 @@ implicit none type, extends(Function1D) :: Polynomial real(8), allocatable :: coef(:) ! coefficients contains + procedure :: from_hdf5 => polynomial_from_hdf5 procedure :: evaluate => polynomial_evaluate procedure :: from_ace => polynomial_from_ace end type Polynomial @@ -54,6 +65,7 @@ implicit none real(8), allocatable :: y(:) ! values of ordinate contains procedure :: from_ace => tabulated1d_from_ace + procedure :: from_hdf5 => tabulated1d_from_hdf5 procedure :: evaluate => tabulated1d_evaluate end type Tabulated1D @@ -63,6 +75,13 @@ contains ! Constant1D implementation !=============================================================================== + subroutine constant1d_from_hdf5(this, dset_id) + class(Constant1D), intent(inout) :: this + integer(HID_T), intent(in) :: dset_id + + call read_dataset(this % y, dset_id) + end subroutine constant1d_from_hdf5 + pure function constant1d_evaluate(this, x) result(y) class(Constant1D), intent(in) :: this real(8), intent(in) :: x @@ -93,6 +112,17 @@ contains this % coef(:) = xss(idx + 1 : idx + nc) end subroutine polynomial_from_ace + subroutine polynomial_from_hdf5(this, dset_id) + class(Polynomial), intent(inout) :: this + integer(HID_T), intent(in) :: dset_id + + integer(HSIZE_T) :: dims(1) + + call get_shape(dset_id, dims) + allocate(this % coef(dims(1))) + call read_dataset(this % coef, dset_id) + end subroutine polynomial_from_hdf5 + pure function polynomial_evaluate(this, x) result(y) class(Polynomial), intent(in) :: this real(8), intent(in) :: x @@ -148,6 +178,28 @@ contains this%y(:) = xss(idx + 2*nr + 2 + ne : idx + 2*nr + 1 + 2*ne) end subroutine tabulated1d_from_ace + subroutine tabulated1d_from_hdf5(this, dset_id) + class(Tabulated1D), intent(inout) :: this + integer(HID_T), intent(in) :: dset_id + + real(8), allocatable :: xy(:,:) + integer(HSIZE_T) :: dims(2) + + call read_attribute(this%nbt, dset_id, 'breakpoints') + call read_attribute(this%int, dset_id, 'interpolation') + this%n_regions = size(this%nbt) + + call get_shape(dset_id, dims) + this%n_pairs = int(dims(1), 4) + allocate(this%x(this%n_pairs)) + allocate(this%y(this%n_pairs)) + + allocate(xy(dims(1), dims(2))) + call read_dataset(xy, dset_id) + this%x(:) = xy(:,1) + this%y(:) = xy(:,2) + end subroutine tabulated1d_from_hdf5 + pure function tabulated1d_evaluate(this, x) result(y) class(Tabulated1D), intent(in) :: this real(8), intent(in) :: x ! x value to find y at diff --git a/src/energy_distribution.F90 b/src/energy_distribution.F90 index 3a42bb73db..54ae3f90c9 100644 --- a/src/energy_distribution.F90 +++ b/src/energy_distribution.F90 @@ -1,7 +1,9 @@ module energy_distribution - use constants, only: ZERO, ONE, TWO, PI, HISTOGRAM, LINEAR_LINEAR + use constants, only: ZERO, ONE, HALF, TWO, PI, HISTOGRAM, LINEAR_LINEAR use endf_header, only: Tabulated1D + use hdf5_interface + use hdf5 use math, only: maxwell_spectrum, watt_spectrum use random_lcg, only: prn use search, only: binary_search @@ -16,6 +18,7 @@ module energy_distribution type, abstract :: EnergyDistribution contains procedure(energy_distribution_sample_), deferred :: sample + procedure(energy_distribution_from_hdf5_), deferred :: from_hdf5 end type EnergyDistribution abstract interface @@ -25,6 +28,13 @@ module energy_distribution real(8), intent(in) :: E_in real(8) :: E_out end function energy_distribution_sample_ + + subroutine energy_distribution_from_hdf5_(this, group_id) + import EnergyDistribution + import HID_T + class(EnergyDistribution), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + end subroutine energy_distribution_from_hdf5_ end interface type :: EnergyDistributionContainer @@ -50,8 +60,23 @@ module energy_distribution ! each incoming energy contains procedure :: sample => equiprobable_sample + procedure :: from_hdf5 => equiprobable_from_hdf5 end type TabularEquiprobable +!=============================================================================== +! DISCRETEPHOTON gives the energy distribution for a discrete photon (usually +! used for photon production from an incident-neutron reaction) +!=============================================================================== + + type, extends(EnergyDistribution) :: DiscretePhoton + integer :: primary_flag + real(8) :: energy + real(8) :: A + contains + procedure :: sample => discrete_photon_sample + procedure :: from_hdf5 => discrete_photon_from_hdf5 + end type DiscretePhoton + !=============================================================================== ! LEVELINELASTIC gives the energy distribution for level inelastic scattering by ! neutrons as in ENDF MT=51--90. @@ -62,6 +87,7 @@ module energy_distribution real(8) :: mass_ratio contains procedure :: sample => level_inelastic_sample + procedure :: from_hdf5 => level_inelastic_from_hdf5 end type LevelInelastic !=============================================================================== @@ -86,6 +112,7 @@ module energy_distribution type(CTTable), allocatable :: distribution(:) contains procedure :: sample => continuous_sample + procedure :: from_hdf5 => continuous_from_hdf5 end type ContinuousTabular !=============================================================================== @@ -98,6 +125,7 @@ module energy_distribution real(8) :: u ! restriction energy contains procedure :: sample => maxwellenergy_sample + procedure :: from_hdf5 => maxwellenergy_from_hdf5 end type MaxwellEnergy !=============================================================================== @@ -110,6 +138,7 @@ module energy_distribution real(8) :: u contains procedure :: sample => evaporation_sample + procedure :: from_hdf5 => evaporation_from_hdf5 end type Evaporation !=============================================================================== @@ -123,6 +152,7 @@ module energy_distribution real(8) :: u contains procedure :: sample => watt_sample + procedure :: from_hdf5 => watt_from_hdf5 end type WattEnergy contains @@ -186,6 +216,31 @@ contains end if end function equiprobable_sample + subroutine equiprobable_from_hdf5(this, group_id) + class(TabularEquiprobable), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + end subroutine equiprobable_from_hdf5 + + function discrete_photon_sample(this, E_in) result(E_out) + class(DiscretePhoton), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + if (this % primary_flag == 2) then + E_out = this % energy + this % A/(this % A + 1)*E_in + else + E_out = this % energy + end if + end function discrete_photon_sample + + subroutine discrete_photon_from_hdf5(this, group_id) + class(DiscretePhoton), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + call read_attribute(this % primary_flag, group_id, 'primary_flag') + call read_attribute(this % energy, group_id, 'energy') + call read_attribute(this % A, group_id, 'atomic_weight_ratio') + end subroutine discrete_photon_from_hdf5 function level_inelastic_sample(this, E_in) result(E_out) class(LevelInelastic), intent(in) :: this @@ -195,6 +250,13 @@ contains E_out = this%mass_ratio*(E_in - this%threshold) end function level_inelastic_sample + subroutine level_inelastic_from_hdf5(this, group_id) + class(LevelInelastic), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + call read_attribute(this%threshold, group_id, 'threshold') + call read_attribute(this%mass_ratio, group_id, 'mass_ratio') + end subroutine level_inelastic_from_hdf5 function continuous_sample(this, E_in) result(E_out) class(ContinuousTabular), intent(in) :: this @@ -307,6 +369,111 @@ contains end if end function continuous_sample + subroutine continuous_from_hdf5(this, group_id) + class(ContinuousTabular), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i, j, k + integer :: n + integer :: n_energy + integer(HID_T) :: dset_id + integer(HSIZE_T) :: dims(1), dims2(2) + integer, allocatable :: temp(:,:) + integer, allocatable :: offsets(:) + integer, allocatable :: interp(:) + integer, allocatable :: n_discrete(:) + real(8), allocatable :: eout(:,:) + + ! Open incoming energy dataset + dset_id = open_dataset(group_id, 'energy') + + ! Get interpolation parameters + call read_attribute(temp, dset_id, 'interpolation') + allocate(this%breakpoints(size(temp, 1))) + allocate(this%interpolation(size(temp, 1))) + this%breakpoints(:) = temp(:, 1) + this%interpolation(:) = temp(:, 2) + this%n_region = size(this%breakpoints) + + ! Get incoming energies + call get_shape(dset_id, dims) + n_energy = int(dims(1), 4) + allocate(this%energy(n_energy)) + allocate(this%distribution(n_energy)) + call read_dataset(this%energy, dset_id) + call close_dataset(dset_id) + + ! Get outgoing energy distribution data + dset_id = open_dataset(group_id, 'distribution') + call read_attribute(offsets, dset_id, 'offsets') + call read_attribute(interp, dset_id, 'interpolation') + call read_attribute(n_discrete, dset_id, 'n_discrete_lines') + call get_shape(dset_id, dims2) + allocate(eout(dims2(1), dims2(2))) + call read_dataset(eout, dset_id) + call close_dataset(dset_id) + + do i = 1, n_energy + ! Determine number of outgoing energies + j = offsets(i) + if (i < n_energy) then + n = offsets(i+1) - j + else + n = size(eout, 1) - j + end if + + associate (d => this % distribution(i)) + ! Assign interpolation scheme and number of discrete lines + d % interpolation = interp(i) + d % n_discrete = n_discrete(i) + + ! Allocate arrays for energies and PDF/CDF + allocate(d % e_out(n)) + allocate(d % p(n)) + allocate(d % c(n)) + + ! Copy data + d % e_out(:) = eout(j+1:j+n, 1) + d % p(:) = eout(j+1:j+n, 2) + + ! To get answers that match ACE data, for now we still use the tabulated + ! CDF values that were passed through to the HDF5 library. At a later + ! time, we can remove the CDF values from the HDF5 library and + ! reconstruct them using the PDF + if (.true.) then + d % c(:) = eout(j+1:j+n, 3) + else + ! Calculate cumulative distribution function -- discrete portion + do k = 1, n_discrete(i) + if (k == 1) then + d % c(k) = d % p(k) + else + d % c(k) = d % c(k-1) + d % p(k) + end if + end do + + ! Continuous portion + do k = d % n_discrete + 1, n + if (k == d % n_discrete + 1) then + d % c(k) = sum(d % p(1:d % n_discrete)) + else + if (d % interpolation == HISTOGRAM) then + d % c(k) = d % c(k-1) + d % p(k-1) * & + (d % e_out(k) - d % e_out(k-1)) + elseif (d % interpolation == LINEAR_LINEAR) then + d % c(k) = d % c(k-1) + HALF*(d % p(k-1) + d % p(k)) * & + (d % e_out(k) - d % e_out(k-1)) + end if + end if + end do + + ! Normalize density and distribution functions + d % p(:) = d % p(:)/d % c(n) + d % c(:) = d % c(:)/d % c(n) + end if + end associate + end do + end subroutine continuous_from_hdf5 function maxwellenergy_sample(this, E_in) result(E_out) class(MaxwellEnergy), intent(in) :: this @@ -327,6 +494,18 @@ contains end do end function maxwellenergy_sample + subroutine maxwellenergy_from_hdf5(this, group_id) + class(MaxwellEnergy), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer(HID_T) :: dset_id + + call read_attribute(this%u, group_id, 'u') + dset_id = open_dataset(group_id, 'theta') + call this%theta%from_hdf5(dset_id) + call close_dataset(dset_id) + end subroutine maxwellenergy_from_hdf5 + function evaporation_sample(this, E_in) result(E_out) class(Evaporation), intent(in) :: this real(8), intent(in) :: E_in ! incoming energy @@ -351,6 +530,18 @@ contains E_out = x*theta end function evaporation_sample + subroutine evaporation_from_hdf5(this, group_id) + class(Evaporation), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer(HID_T) :: dset_id + + call read_attribute(this%u, group_id, 'u') + dset_id = open_dataset(group_id, 'theta') + call this%theta%from_hdf5(dset_id) + call close_dataset(dset_id) + end subroutine evaporation_from_hdf5 + function watt_sample(this, E_in) result(E_out) class(WattEnergy), intent(in) :: this real(8), intent(in) :: E_in ! incoming energy @@ -373,4 +564,21 @@ contains end do end function watt_sample + subroutine watt_from_hdf5(this, group_id) + class(WattEnergy), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer(HID_T) :: dset_id + + call read_attribute(this%u, group_id, 'u') + + dset_id = open_dataset(group_id, 'a') + call this%a%from_hdf5(dset_id) + call close_dataset(dset_id) + + dset_id = open_dataset(group_id, 'b') + call this%b%from_hdf5(dset_id) + call close_dataset(dset_id) + end subroutine watt_from_hdf5 + end module energy_distribution diff --git a/src/global.F90 b/src/global.F90 index 357887199e..1b1e5632a4 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -65,11 +65,7 @@ module global ! ============================================================================ ! CROSS SECTION RELATED VARIABLES NEEDED REGARDLESS OF CE OR MG - ! Cross section arrays - type(XsListing), allocatable, target :: xs_listings(:) ! cross_sections.xml listings - integer :: n_nuclides_total ! Number of nuclide cross section tables - integer :: n_listings ! Number of listings in cross_sections.xml ! Cross section caches type(NuclideMicroXS), allocatable :: micro_xs(:) ! Cache for each nuclide @@ -77,7 +73,6 @@ module global ! Dictionaries to look up cross sections and listings type(DictCharInt) :: nuclide_dict - type(DictCharInt) :: xs_listing_dict ! Default xs identifier (e.g. 70c or 300K) character(5):: default_xs @@ -107,7 +102,8 @@ module global ! Whether or not windowed multipole cross sections should be used. logical :: multipole_active = .false. - ! Total amount of nuclide ZAID and dictionary of nuclide ZAID and index + ! Total amount of nuclide ZAID and dictionary of nuclide ZAID and index -- + ! this is used when sampling unresolved resonance probability tables integer(8) :: n_nuc_zaid_total type(DictIntInt) :: nuc_zaid_dict @@ -498,7 +494,6 @@ contains end if if (allocated(sab_tables)) deallocate(sab_tables) - if (allocated(xs_listings)) deallocate(xs_listings) if (allocated(micro_xs)) deallocate(micro_xs) ! Deallocate external source @@ -553,7 +548,6 @@ contains call plot_dict % clear() call nuclide_dict % clear() call sab_dict % clear() - call xs_listing_dict % clear() ! Clear statepoint and sourcepoint batch set call statepoint_batch % clear() diff --git a/src/initialize.F90 b/src/initialize.F90 index 48b3ee61a9..37eeb1f3e5 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -1,6 +1,5 @@ module initialize - use ace, only: read_ace_xs use bank_header, only: Bank use constants use dict_header, only: DictIntInt, ElemKeyValueII @@ -109,19 +108,6 @@ contains end if if (run_mode /= MODE_PLOTTING) then - ! With the AWRs from the xs_listings, change all material specifications - ! so that they contain atom percents summing to 1 - call normalize_ao() - - ! Read ACE-format cross sections - call time_read_xs%start() - if (run_CE) then - call read_ace_xs() - else - call read_mgxs() - end if - call time_read_xs%stop() - ! Construct information needed for nuclear data if (run_CE) then ! Set undefined cell temperatures to match the material data. @@ -140,7 +126,10 @@ contains end select else ! Create material macroscopic data for MGXS + call time_read_xs%start() + call read_mgxs() call create_macro_xs() + call time_read_xs%stop() end if ! Allocate and setup tally stride, matching_bins, and tally maps @@ -800,71 +789,6 @@ contains end subroutine adjust_indices -!=============================================================================== -! NORMALIZE_AO normalizes the atom or weight percentages for each material -!=============================================================================== - - subroutine normalize_ao() - - integer :: index_list ! index in xs_listings array - integer :: i ! index in materials array - integer :: j ! index over nuclides in material - real(8) :: sum_percent ! summation - real(8) :: awr ! atomic weight ratio - real(8) :: x ! atom percent - logical :: percent_in_atom ! nuclides specified in atom percent? - logical :: density_in_atom ! density specified in atom/b-cm? - type(Material), pointer :: mat => null() - - ! first find the index in the xs_listings array for each nuclide in each - ! material - do i = 1, n_materials - mat => materials(i) - - percent_in_atom = (mat%atom_density(1) > ZERO) - density_in_atom = (mat%density > ZERO) - - sum_percent = ZERO - do j = 1, mat%n_nuclides - ! determine atomic weight ratio - index_list = xs_listing_dict%get_key(mat%names(j)) - awr = xs_listings(index_list)%awr - - ! if given weight percent, convert all values so that they are divided - ! by awr. thus, when a sum is done over the values, it's actually - ! sum(w/awr) - if (.not. percent_in_atom) then - mat%atom_density(j) = -mat%atom_density(j) / awr - end if - end do - - ! determine normalized atom percents. if given atom percents, this is - ! straightforward. if given weight percents, the value is w/awr and is - ! divided by sum(w/awr) - sum_percent = sum(mat%atom_density) - mat%atom_density = mat%atom_density / sum_percent - - ! Change density in g/cm^3 to atom/b-cm. Since all values are now in atom - ! percent, the sum needs to be re-evaluated as 1/sum(x*awr) - if (.not. density_in_atom) then - sum_percent = ZERO - do j = 1, mat%n_nuclides - index_list = xs_listing_dict%get_key(mat%names(j)) - awr = xs_listings(index_list)%awr - x = mat%atom_density(j) - sum_percent = sum_percent + x*awr - end do - sum_percent = ONE / sum_percent - mat%density = -mat%density * N_AVOGADRO & - / MASS_NEUTRON * sum_percent - end if - - ! Calculate nuclide atom densities - mat%atom_density = mat%density * mat%atom_density - end do - - end subroutine normalize_ao - !=============================================================================== ! CALCULATE_WORK determines how many particles each processor should simulate !=============================================================================== diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 3c6143e5a0..0fc96ef4b1 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -12,17 +12,22 @@ module input_xml use global use list_header, only: ListChar, ListInt, ListReal use mesh_header, only: RegularMesh + use multipole, only: multipole_read use output, only: write_message use plot_header use random_lcg, only: prn, seed use surface_header - use stl_vector, only: VectorInt - use string, only: str_to_int, str_to_real, tokenize, & - to_lower, to_str, starts_with, ends_with + use set_header, only: SetChar + use stl_vector, only: VectorInt, VectorReal, VectorChar + use string, only: to_lower, to_str, str_to_int, str_to_real, & + starts_with, ends_with, tokenize, split_string use tally_header, only: TallyObject, TallyFilter use tally_initialize, only: add_tallies use xml_interface + use hdf5 + use hdf5_interface + implicit none save @@ -39,15 +44,8 @@ contains subroutine read_input_xml() call read_settings_xml() - if (run_mode /= MODE_PLOTTING) then - if (run_CE) then - call read_ce_cross_sections_xml() - else - call read_mg_cross_sections_xml() - end if - end if call read_geometry_xml() - call read_materials_xml() + call read_materials() call read_tallies_xml() if (cmfd_run) call configure_cmfd() @@ -127,46 +125,42 @@ contains ! Find cross_sections.xml file -- the first place to look is the ! settings.xml file. If no file is found there, then we check the ! CROSS_SECTIONS environment variable - if (run_mode /= MODE_PLOTTING) then - if (.not. check_for_node(doc, "cross_sections") .and. & - run_mode /= MODE_PLOTTING) then - ! No cross_sections.xml file specified in settings.xml, check - ! environment variable - if (run_CE) then - call get_environment_variable("OPENMC_CROSS_SECTIONS", env_variable) + if (.not. check_for_node(doc, "cross_sections")) then + ! No cross_sections.xml file specified in settings.xml, check + ! environment variable + if (run_CE) then + call get_environment_variable("OPENMC_CROSS_SECTIONS", env_variable) + if (len_trim(env_variable) == 0) then + call get_environment_variable("CROSS_SECTIONS", env_variable) if (len_trim(env_variable) == 0) then - call get_environment_variable("CROSS_SECTIONS", env_variable) - if (len_trim(env_variable) == 0) then - call fatal_error("No cross_sections.xml file was specified in & - &settings.xml or in the OPENMC_CROSS_SECTIONS environment & - &variable. OpenMC needs such a file to identify where to & - &find ACE cross section libraries. Please consult the & - &user's guide at http://mit-crpg.github.io/openmc for & - &information on how to set up ACE cross section libraries.") - else - call warning("The CROSS_SECTIONS environment variable is & - &deprecated. Please update your environment to use & - &OPENMC_CROSS_SECTIONS instead.") - end if - end if - path_cross_sections = trim(env_variable) - else - call get_environment_variable("OPENMC_MG_CROSS_SECTIONS", & - env_variable) - if (len_trim(env_variable) == 0) then - call fatal_error("No mgxs.xml file was specified in & - &settings.xml or in the OPENMC_MG_CROSS_SECTIONS environment & + call fatal_error("No cross_sections.xml file was specified in & + &settings.xml or in the OPENMC_CROSS_SECTIONS environment & &variable. OpenMC needs such a file to identify where to & - &find the cross section libraries. Please consult the user's & - &guide at http://mit-crpg.github.io/openmc for information on & - &how to set up the cross section libraries.") + &find ACE cross section libraries. Please consult the & + &user's guide at http://mit-crpg.github.io/openmc for & + &information on how to set up ACE cross section libraries.") else - path_cross_sections = trim(env_variable) + call warning("The CROSS_SECTIONS environment variable is & + &deprecated. Please update your environment to use & + &OPENMC_CROSS_SECTIONS instead.") end if end if + path_cross_sections = trim(env_variable) else - call get_node_value(doc, "cross_sections", path_cross_sections) + call get_environment_variable("OPENMC_MG_CROSS_SECTIONS", env_variable) + if (len_trim(env_variable) == 0) then + call fatal_error("No mgxs.xml file was specified in & + &settings.xml or in the OPENMC_MG_CROSS_SECTIONS environment & + &variable. OpenMC needs such a file to identify where to & + &find ACE cross section libraries. Please consult the user's & + &guide at http://mit-crpg.github.io/openmc for information on & + &how to set up ACE cross section libraries.") + else + path_cross_sections = trim(env_variable) + end if end if + else + call get_node_value(doc, "cross_sections", path_cross_sections) end if ! Find the windowed multipole library @@ -2060,7 +2054,55 @@ contains ! for errors and placing properly-formatted data in the right data structures !=============================================================================== - subroutine read_materials_xml() + subroutine read_materials() + integer :: i, j + type(DictCharInt) :: library_dict + type(Library), allocatable :: libraries(:) + + if (run_CE) then + call read_ce_cross_sections_xml(libraries) + else + call read_mg_cross_sections_xml(libraries) + end if + + ! Creating dictionary that maps the name of the material to the entry + do i = 1, size(libraries) + do j = 1, size(libraries(i) % materials) + call library_dict % add_key(to_lower(libraries(i) % materials(j)), i) + end do + end do + + ! Check that 0K nuclides are listed in the cross_sections.xml file + if (allocated(nuclides_0K)) then + do i = 1, size(nuclides_0K) + if (.not. library_dict % has_key(to_lower(nuclides_0K(i) % name_0K))) then + call fatal_error("Could not find resonant scatterer " & + // trim(nuclides_0K(i) % name_0K) & + // " in cross_sections.xml file!") + end if + end do + end if + + ! Parse data from materials.xml + call read_materials_xml(libraries, library_dict) + + ! Read continuous-energy cross sections + if (run_CE) then + call time_read_xs%start() + call read_ce_cross_sections(libraries, library_dict) + call time_read_xs%stop() + end if + + ! Normalize atom/weight percents + call normalize_ao() + + ! Clear dictionary + call library_dict % clear() + end subroutine read_materials + + subroutine read_materials_xml(libraries, library_dict) + type(Library), intent(in) :: libraries(:) + type(DictCharInt), intent(inout) :: library_dict integer :: i ! loop index for materials integer :: j ! loop index for nuclides @@ -2068,23 +2110,20 @@ contains integer :: n ! number of nuclides integer :: n_sab ! number of sab tables for a material integer :: n_nuc_ele ! number of nuclides in an element - integer :: index_list ! index in xs_listings array + integer :: i_library ! index in libraries array integer :: index_nuclide ! index in nuclides - integer :: index_nuc_zaid ! index in nuclide ZAID integer :: index_sab ! index in sab_tables real(8) :: val ! value entered for density real(8) :: temp_dble ! temporary double prec. real logical :: file_exists ! does materials.xml exist? logical :: sum_density ! density is taken to be sum of nuclide densities - integer :: zaid ! ZAID of nuclide - character(12) :: name ! name of isotope, e.g. 92235.03c - character(12) :: alias ! alias of nuclide, e.g. U-235.03c + character(20) :: name ! name of isotope, e.g. 92235.03c character(MAX_WORD_LEN) :: units ! units on density character(MAX_LINE_LEN) :: filename ! absolute path to materials.xml character(MAX_LINE_LEN) :: temp_str ! temporary string when reading - type(ListChar) :: list_names ! temporary list of nuclide names - type(ListReal) :: list_density ! temporary list of nuclide densities - type(ListInt) :: list_iso_lab ! temporary list of isotropic lab scatterers + type(VectorChar) :: names ! temporary list of nuclide names + type(VectorReal) :: densities ! temporary list of nuclide densities + type(VectorInt) :: list_iso_lab ! temporary list of isotropic lab scatterers type(Material), pointer :: mat => null() type(Node), pointer :: doc => null() type(Node), pointer :: node_mat => null() @@ -2128,7 +2167,6 @@ contains ! Initialize count for number of nuclides/S(a,b) tables index_nuclide = 0 - index_nuc_zaid = 0 index_sab = 0 do i = 1, n_materials @@ -2153,13 +2191,6 @@ contains ! Copy material name if (check_for_node(node_mat, "name")) then call get_node_value(node_mat, "name", mat % name) - mat % name = to_lower(mat % name) - end if - - if (run_mode == MODE_PLOTTING) then - ! add to the dictionary and skip xs processing - call material_dict % add_key(mat % id, i) - cycle end if ! ======================================================================= @@ -2277,12 +2308,12 @@ contains name = to_lower(name) ! save name and density to list - call list_names % append(name) + call names % push_back(name) ! Check if no atom/weight percents were specified or if both atom and ! weight percents were specified if (units == 'macro') then - call list_density % append(ONE) + call densities % push_back(ONE) else call fatal_error("Units can only be macro for macroscopic data " & // trim(name)) @@ -2318,15 +2349,15 @@ contains if (check_for_node(node_nuc, "scattering")) then call get_node_value(node_nuc, "scattering", temp_str) if (adjustl(to_lower(temp_str)) == "iso-in-lab") then - call list_iso_lab % append(1) + call list_iso_lab % push_back(1) else if (adjustl(to_lower(temp_str)) == "data") then - call list_iso_lab % append(0) + call list_iso_lab % push_back(0) else call fatal_error("Scattering must be isotropic in lab or follow& & the ACE file data") end if else - call list_iso_lab % append(0) + call list_iso_lab % push_back(0) end if end if @@ -2335,15 +2366,14 @@ contains if (check_for_node(node_nuc, "xs")) & call get_node_value(node_nuc, "xs", name) name = trim(temp_str) // "." // trim(name) - name = to_lower(name) ! save name and density to list - call list_names % append(name) + call names % push_back(name) ! Check if no atom/weight percents were specified or if both atom and ! weight percents were specified if (units == 'macro') then - call list_density % append(ONE) + call densities % push_back(ONE) else if (.not. check_for_node(node_nuc, "ao") .and. & .not. check_for_node(node_nuc, "wo")) then @@ -2358,10 +2388,10 @@ contains ! Copy atom/weight percents if (check_for_node(node_nuc, "ao")) then call get_node_value(node_nuc, "ao", temp_dble) - call list_density % append(temp_dble) + call densities % push_back(temp_dble) else call get_node_value(node_nuc, "wo", temp_dble) - call list_density % append(-temp_dble) + call densities % push_back(-temp_dble) end if end if end do INDIVIDUAL_NUCLIDES @@ -2408,20 +2438,20 @@ contains end if ! Get current number of nuclides - n_nuc_ele = list_names % size() + n_nuc_ele = names % size() ! Expand element into naturally-occurring isotopes if (check_for_node(node_ele, "ao")) then call get_node_value(node_ele, "ao", temp_dble) - call expand_natural_element(name, temp_str, temp_dble, & - list_names, list_density) + call expand_natural_element(name, temp_str, temp_dble, names, & + densities) else call fatal_error("The ability to expand a natural element based on & &weight percentage is not yet supported.") end if ! Compute number of new nuclides from the natural element expansion - n_nuc_ele = list_names % size() - n_nuc_ele + n_nuc_ele = names % size() - n_nuc_ele ! Check enforced isotropic lab scattering if (run_CE) then @@ -2434,9 +2464,9 @@ contains ! Set ace or iso-in-lab scattering for each nuclide in element do k = 1, n_nuc_ele if (adjustl(to_lower(temp_str)) == "iso-in-lab") then - call list_iso_lab % append(1) + call list_iso_lab % push_back(1) else if (adjustl(to_lower(temp_str)) == "data") then - call list_iso_lab % append(0) + call list_iso_lab % push_back(0) else call fatal_error("Scattering must be isotropic in lab or follow& & the ACE file data") @@ -2450,7 +2480,7 @@ contains ! COPY NUCLIDES TO ARRAYS IN MATERIAL ! allocate arrays in Material object - n = list_names % size() + n = names % size() mat % n_nuclides = n allocate(mat % names(n)) allocate(mat % nuclide(n)) @@ -2459,27 +2489,21 @@ contains ALL_NUCLIDES: do j = 1, mat % n_nuclides ! Check that this nuclide is listed in the cross_sections.xml file - name = trim(list_names % get_item(j)) - if (.not. xs_listing_dict % has_key(to_lower(name))) then + name = trim(names % data(j)) + if (.not. library_dict % has_key(to_lower(name))) then call fatal_error("Could not find nuclide " // trim(name) & // " in cross_sections data file!") end if + i_library = library_dict % get_key(to_lower(name)) if (run_CE) then ! Check to make sure cross-section is continuous energy neutron table - n = len_trim(name) - if (name(n:n) /= 'c') then + if (libraries(i_library) % type /= LIBRARY_NEUTRON) then call fatal_error("Cross-section table " // trim(name) & // " is not a continuous-energy neutron table.") end if end if - ! Find xs_listing and set the name/alias according to the listing - index_list = xs_listing_dict % get_key(to_lower(name)) - name = xs_listings(index_list) % name - alias = xs_listings(index_list) % alias - zaid = xs_listings(index_list) % zaid - ! If this nuclide hasn't been encountered yet, we need to add its name ! and alias to the nuclide_dict if (.not. nuclide_dict % has_key(to_lower(name))) then @@ -2487,26 +2511,21 @@ contains mat % nuclide(j) = index_nuclide call nuclide_dict % add_key(to_lower(name), index_nuclide) - call nuclide_dict % add_key(to_lower(alias), index_nuclide) else mat % nuclide(j) = nuclide_dict % get_key(to_lower(name)) end if - ! Construct dict of nuclide zaid - if (.not. nuc_zaid_dict % has_key(zaid)) then - index_nuc_zaid = index_nuc_zaid + 1 - call nuc_zaid_dict % add_key(zaid, index_nuc_zaid) - end if - ! Copy name and atom/weight percent mat % names(j) = name - mat % atom_density(j) = list_density % get_item(j) + mat % atom_density(j) = densities % data(j) ! Cast integer isotropic lab scattering flag to boolean - if (list_iso_lab % get_item(j) == 1) then - mat % p0(j) = .true. - else - mat % p0(j) = .false. + if (run_CE) then + if (list_iso_lab % data(j) == 1) then + mat % p0(j) = .true. + else + mat % p0(j) = .false. + end if end if end do ALL_NUCLIDES @@ -2523,8 +2542,8 @@ contains if (sum_density) mat % density = sum(mat % atom_density) ! Clear lists - call list_names % clear() - call list_density % clear() + call names % clear() + call densities % clear() call list_iso_lab % clear() ! ======================================================================= @@ -2562,15 +2581,22 @@ contains mat % sab_names(j) = name ! Check that this nuclide is listed in the cross_sections.xml file - if (.not. xs_listing_dict % has_key(to_lower(name))) then + if (.not. library_dict % has_key(to_lower(name))) then call fatal_error("Could not find S(a,b) table " // trim(name) & // " in cross_sections.xml file!") end if ! Find index in xs_listing and set the name and alias according to the ! listing - index_list = xs_listing_dict % get_key(to_lower(name)) - name = xs_listings(index_list) % name + i_library = library_dict % get_key(to_lower(name)) + + if (run_CE) then + ! Check to make sure cross-section is continuous energy neutron table + if (libraries(i_library) % type /= LIBRARY_THERMAL) then + call fatal_error("Cross-section table " // trim(name) & + // " is not a S(a,b) table.") + end if + end if ! If this S(a,b) table hasn't been encountered yet, we need to add its ! name and alias to the sab_dict @@ -2592,7 +2618,6 @@ contains ! Set total number of nuclides and S(a,b) tables n_nuclides_total = index_nuclide n_sab_tables = index_sab - n_nuc_zaid_total = index_nuc_zaid ! Close materials XML file call close_xmldoc(doc) @@ -3270,10 +3295,10 @@ contains ! If a specific nuclide was specified word = to_lower(sarray(j)) - ! Append default_xs specifier to nuclide if needed - if ((default_xs /= '') .and. (.not. ends_with(sarray(j), 'c'))) then - word = trim(word) // "." // trim(default_xs) - end if +!!$ ! Append default_xs specifier to nuclide if needed +!!$ if ((default_xs /= '') .and. (.not. ends_with(sarray(j), 'c'))) then +!!$ word = trim(word) // "." // trim(default_xs) +!!$ end if ! Search through nuclides pair_list => nuclide_dict % keys() @@ -4516,19 +4541,19 @@ contains ! file contains a listing of the CE and MG cross sections that may be used. !=============================================================================== - subroutine read_ce_cross_sections_xml() + subroutine read_ce_cross_sections_xml(libraries) + type(Library), allocatable, intent(out) :: libraries(:) integer :: i ! loop index - integer :: filetype ! default file type - integer :: recl ! default record length - integer :: entries ! default number of entries + integer :: n + integer :: n_libraries logical :: file_exists ! does cross_sections.xml exist? - character(MAX_WORD_LEN) :: directory ! directory with cross sections - character(MAX_LINE_LEN) :: temp_str - type(XsListing), pointer :: listing => null() - type(Node), pointer :: doc => null() - type(Node), pointer :: node_ace => null() - type(NodeList), pointer :: node_ace_list => null() + character(MAX_WORD_LEN) :: directory ! directory with cross sections + character(MAX_WORD_LEN) :: words(MAX_WORDS) + character(10000) :: temp_str + type(Node), pointer :: doc + type(Node), pointer :: node_library + type(NodeList), pointer :: node_library_list ! Check if cross_sections.xml exists inquire(FILE=path_cross_sections, EXIST=file_exists) @@ -4553,118 +4578,64 @@ contains directory = path_cross_sections(1:i) end if - ! determine whether binary/ascii - temp_str = '' - if (check_for_node(doc, "filetype")) & - call get_node_value(doc, "filetype", temp_str) - if (trim(temp_str) == 'ascii') then - filetype = ASCII - elseif (trim(temp_str) == 'binary') then - filetype = BINARY - elseif (len_trim(temp_str) == 0) then - filetype = ASCII - else - call fatal_error("Unknown filetype in cross_sections.xml: " & - // trim(temp_str)) - end if - - ! copy default record length and entries for binary files - if (filetype == BINARY) then - call get_node_value(doc, "record_length", recl) - call get_node_value(doc, "entries", entries) - end if - - ! Get node list of all - call get_node_list(doc, "ace_table", node_ace_list) - n_listings = get_list_size(node_ace_list) + ! Get node list of all + call get_node_list(doc, "library", node_library_list) + n_libraries = get_list_size(node_library_list) ! Allocate xs_listings array - if (n_listings == 0) then - call fatal_error("No ACE table listings present in cross_sections.xml & + if (n_libraries == 0) then + call fatal_error("No cross section libraries present in cross_sections.xml & &file!") else - allocate(xs_listings(n_listings)) + allocate(libraries(n_libraries)) end if - do i = 1, n_listings - listing => xs_listings(i) - + do i = 1, n_libraries ! Get pointer to ace table XML node - call get_list_item(node_ace_list, i, node_ace) + call get_list_item(node_library_list, i, node_library) - ! copy a number of attributes - call get_node_value(node_ace, "name", listing % name) - if (check_for_node(node_ace, "alias")) & - call get_node_value(node_ace, "alias", listing % alias) - call get_node_value(node_ace, "zaid", listing % zaid) - call get_node_value(node_ace, "awr", listing % awr) - if (check_for_node(node_ace, "temperature")) & - call get_node_value(node_ace, "temperature", listing % kT) - call get_node_value(node_ace, "location", listing % location) - - ! determine type of cross section - if (ends_with(listing % name, 'c')) then - listing % type = ACE_NEUTRON - elseif (ends_with(listing % name, 't')) then - listing % type = ACE_THERMAL + ! Get list of materials + if (check_for_node(node_library, "materials")) then + call get_node_value(node_library, "materials", temp_str) + call split_string(temp_str, words, n) + allocate(libraries(i) % materials(n)) + libraries(i) % materials(:) = words(1:n) end if - ! set filetype, record length, and number of entries - if (check_for_node(node_ace, "filetype")) then - temp_str = '' - call get_node_value(node_ace, "filetype", temp_str) - if (temp_str == 'ascii') then - listing % filetype = ASCII - else if (temp_str == 'binary') then - listing % filetype = BINARY - end if + ! Get type of library + if (check_for_node(node_library, "type")) then + call get_node_value(node_library, "type", temp_str) + select case(to_lower(temp_str)) + case ('neutron') + libraries(i) % type = LIBRARY_NEUTRON + case ('thermal') + libraries(i) % type = LIBRARY_THERMAL + end select else - listing % filetype = filetype - end if - - ! Set record length and entries for binary files - if (filetype == BINARY) then - listing % recl = recl - listing % entries = entries - end if - - ! determine metastable state - if (.not. check_for_node(node_ace, "metastable")) then - listing % metastable = .false. - else - listing % metastable = .true. + call fatal_error("Missing library type") end if ! determine path of cross section table - if (check_for_node(node_ace, "path")) then - call get_node_value(node_ace, "path", temp_str) + if (check_for_node(node_library, "path")) then + call get_node_value(node_library, "path", temp_str) else - call fatal_error("Path missing for isotope " // listing % name) + call fatal_error("Missing library path") end if if (starts_with(temp_str, '/')) then - listing % path = trim(temp_str) + libraries(i) % path = trim(temp_str) else if (ends_with(directory,'/')) then - listing % path = trim(directory) // trim(temp_str) + libraries(i) % path = trim(directory) // trim(temp_str) else - listing % path = trim(directory) // '/' // trim(temp_str) + libraries(i) % path = trim(directory) // '/' // trim(temp_str) end if end if - ! create dictionary entry for both name and alias - call xs_listing_dict % add_key(to_lower(listing % name), i) - if (check_for_node(node_ace, "alias")) then - call xs_listing_dict % add_key(to_lower(listing % alias), i) - end if - end do - - ! Check that 0K nuclides are listed in the cross_sections.xml file - do i = 1, n_res_scatterers_total - if (.not. xs_listing_dict % has_key(trim(nuclides_0K(i) % name_0K))) then - call fatal_error("Could not find nuclide " & - // trim(nuclides_0K(i) % name_0K) & - // " in cross_sections.xml file!") + inquire(FILE=libraries(i) % path, EXIST=file_exists) + if (.not. file_exists) then + call warning("Cross section library " // trim(libraries(i) % path) // & + " does not exist.") end if end do @@ -4673,11 +4644,12 @@ contains end subroutine read_ce_cross_sections_xml - subroutine read_mg_cross_sections_xml() + subroutine read_mg_cross_sections_xml(libraries) + type(Library), allocatable, intent(out) :: libraries(:) integer :: i ! loop index - logical :: file_exists ! does mgxs.xml exist? - type(XsListing), pointer :: listing => null() + integer :: n_libraries + logical :: file_exists ! does cross_sections.xml exist? type(Node), pointer :: doc => null() type(Node), pointer :: node_xsdata => null() type(NodeList), pointer :: node_xsdata_list => null() @@ -4736,55 +4708,23 @@ contains ! Get node list of all call get_node_list(doc, "xsdata", node_xsdata_list) - n_listings = get_list_size(node_xsdata_list) + n_libraries = get_list_size(node_xsdata_list) ! Allocate xs_listings array - if (n_listings == 0) then + if (n_libraries == 0) then call fatal_error("At least one element must be present in & &mgxs.xml file!") else - allocate(xs_listings(n_listings)) + allocate(libraries(n_libraries)) end if - do i = 1, n_listings - listing => xs_listings(i) - + do i = 1, n_libraries ! Get pointer to xsdata table XML node call get_list_item(node_xsdata_list, i, node_xsdata) - ! copy a number of attributes - call get_node_value(node_xsdata, "name", listing % name) - listing % name = to_lower(listing % name) - listing % alias = listing % name - if (check_for_node(node_xsdata, "alias")) & - call get_node_value(node_xsdata, "alias", listing % alias) - listing % alias = to_lower(listing % alias) - if (check_for_node(node_xsdata, "zaid")) then - call get_node_value(node_xsdata, "zaid", listing % zaid) - else - listing % zaid = -1 - end if - if (check_for_node(node_xsdata, "awr")) then - call get_node_value(node_xsdata, "awr", listing % awr) - else - ! Set to a default of 1; this allows a macroscopic library to still - ! be used with materials with atom/b-cm units for testing purposes - listing % awr = ONE - end if - if (check_for_node(node_xsdata, "kT")) then - call get_node_value(node_xsdata, "kT", listing % kT) - else - listing % kT = 293.6_8 * K_BOLTZMANN - end if - - ! determine type of cross section - if (ends_with(listing % name, 'c')) then - listing % type = NEUTRON - end if - - ! create dictionary entry for both name and alias - call xs_listing_dict % add_key(to_lower(listing % name), i) - call xs_listing_dict % add_key(to_lower(listing % alias), i) + ! Get name of material + allocate(libraries(i) % materials(1)) + call get_node_value(node_xsdata, "name", libraries(i) % materials(1)) end do ! Close cross sections XML file @@ -4800,14 +4740,12 @@ contains ! evaluations of particular isotopes don't exist. !=============================================================================== - subroutine expand_natural_element(name, xs, density, list_names, & - list_density) - - character(*), intent(in) :: name - character(*), intent(in) :: xs - real(8), intent(in) :: density - type(ListChar), intent(inout) :: list_names - type(ListReal), intent(inout) :: list_density + subroutine expand_natural_element(name, xs, density, names, densities) + character(*), intent(in) :: name + character(*), intent(in) :: xs + real(8), intent(in) :: density + type(VectorChar), intent(inout) :: names + type(VectorReal), intent(inout) :: densities character(2) :: element_name @@ -4815,670 +4753,670 @@ contains select case (to_lower(element_name)) case ('h') - call list_names % append('1001.' // xs) - call list_density % append(density * 0.999885_8) - call list_names % append('1002.' // xs) - call list_density % append(density * 0.000115_8) + call names % push_back('H1.' // xs) + call densities % push_back(density * 0.999885_8) + call names % push_back('H2.' // xs) + call densities % push_back(density * 0.000115_8) case ('he') - call list_names % append('2003.' // xs) - call list_density % append(density * 0.00000134_8) - call list_names % append('2004.' // xs) - call list_density % append(density * 0.99999866_8) + call names % push_back('He3.' // xs) + call densities % push_back(density * 0.00000134_8) + call names % push_back('He4.' // xs) + call densities % push_back(density * 0.99999866_8) case ('li') - call list_names % append('3006.' // xs) - call list_density % append(density * 0.0759_8) - call list_names % append('3007.' // xs) - call list_density % append(density * 0.9241_8) + call names % push_back('Li6.' // xs) + call densities % push_back(density * 0.0759_8) + call names % push_back('Li7.' // xs) + call densities % push_back(density * 0.9241_8) case ('be') - call list_names % append('4009.' // xs) - call list_density % append(density) + call names % push_back('Be9.' // xs) + call densities % push_back(density) case ('b') - call list_names % append('5010.' // xs) - call list_density % append(density * 0.199_8) - call list_names % append('5011.' // xs) - call list_density % append(density * 0.801_8) + call names % push_back('B10.' // xs) + call densities % push_back(density * 0.199_8) + call names % push_back('B11.' // xs) + call densities % push_back(density * 0.801_8) case ('c') ! No evaluations split up Carbon into isotopes yet - call list_names % append('6000.' // xs) - call list_density % append(density) + call names % push_back('C0.' // xs) + call densities % push_back(density) case ('n') - call list_names % append('7014.' // xs) - call list_density % append(density * 0.99636_8) - call list_names % append('7015.' // xs) - call list_density % append(density * 0.00364_8) + call names % push_back('N14.' // xs) + call densities % push_back(density * 0.99636_8) + call names % push_back('N15.' // xs) + call densities % push_back(density * 0.00364_8) case ('o') if (default_expand == JEFF_32) then - call list_names % append('8016.' // xs) - call list_density % append(density * 0.99757_8) - call list_names % append('8017.' // xs) - call list_density % append(density * 0.00038_8) - call list_names % append('8018.' // xs) - call list_density % append(density * 0.00205_8) + call names % push_back('O16.' // xs) + call densities % push_back(density * 0.99757_8) + call names % push_back('O17.' // xs) + call densities % push_back(density * 0.00038_8) + call names % push_back('O18.' // xs) + call densities % push_back(density * 0.00205_8) elseif (default_expand >= JENDL_32 .and. default_expand <= JENDL_40) then - call list_names % append('8016.' // xs) - call list_density % append(density) + call names % push_back('O16.' // xs) + call densities % push_back(density) else - call list_names % append('8016.' // xs) - call list_density % append(density * 0.99962_8) - call list_names % append('8017.' // xs) - call list_density % append(density * 0.00038_8) + call names % push_back('O16.' // xs) + call densities % push_back(density * 0.99962_8) + call names % push_back('O17.' // xs) + call densities % push_back(density * 0.00038_8) end if case ('f') - call list_names % append('9019.' // xs) - call list_density % append(density) + call names % push_back('F19.' // xs) + call densities % push_back(density) case ('ne') - call list_names % append('10020.' // xs) - call list_density % append(density * 0.9048_8) - call list_names % append('10021.' // xs) - call list_density % append(density * 0.0027_8) - call list_names % append('10022.' // xs) - call list_density % append(density * 0.0925_8) + call names % push_back('Ne20.' // xs) + call densities % push_back(density * 0.9048_8) + call names % push_back('Ne21.' // xs) + call densities % push_back(density * 0.0027_8) + call names % push_back('Ne22.' // xs) + call densities % push_back(density * 0.0925_8) case ('na') - call list_names % append('11023.' // xs) - call list_density % append(density) + call names % push_back('Na23.' // xs) + call densities % push_back(density) case ('mg') - call list_names % append('12024.' // xs) - call list_density % append(density * 0.7899_8) - call list_names % append('12025.' // xs) - call list_density % append(density * 0.1000_8) - call list_names % append('12026.' // xs) - call list_density % append(density * 0.1101_8) + call names % push_back('Mg24.' // xs) + call densities % push_back(density * 0.7899_8) + call names % push_back('Mg25.' // xs) + call densities % push_back(density * 0.1000_8) + call names % push_back('Mg26.' // xs) + call densities % push_back(density * 0.1101_8) case ('al') - call list_names % append('13027.' // xs) - call list_density % append(density) + call names % push_back('Al27.' // xs) + call densities % push_back(density) case ('si') - call list_names % append('14028.' // xs) - call list_density % append(density * 0.92223_8) - call list_names % append('14029.' // xs) - call list_density % append(density * 0.04685_8) - call list_names % append('14030.' // xs) - call list_density % append(density * 0.03092_8) + call names % push_back('Si28.' // xs) + call densities % push_back(density * 0.92223_8) + call names % push_back('Si29.' // xs) + call densities % push_back(density * 0.04685_8) + call names % push_back('Si30.' // xs) + call densities % push_back(density * 0.03092_8) case ('p') - call list_names % append('15031.' // xs) - call list_density % append(density) + call names % push_back('P31.' // xs) + call densities % push_back(density) case ('s') - call list_names % append('16032.' // xs) - call list_density % append(density * 0.9499_8) - call list_names % append('16033.' // xs) - call list_density % append(density * 0.0075_8) - call list_names % append('16034.' // xs) - call list_density % append(density * 0.0425_8) - call list_names % append('16036.' // xs) - call list_density % append(density * 0.0001_8) + call names % push_back('S32.' // xs) + call densities % push_back(density * 0.9499_8) + call names % push_back('S33.' // xs) + call densities % push_back(density * 0.0075_8) + call names % push_back('S34.' // xs) + call densities % push_back(density * 0.0425_8) + call names % push_back('S36.' // xs) + call densities % push_back(density * 0.0001_8) case ('cl') - call list_names % append('17035.' // xs) - call list_density % append(density * 0.7576_8) - call list_names % append('17037.' // xs) - call list_density % append(density * 0.2424_8) + call names % push_back('Cl35.' // xs) + call densities % push_back(density * 0.7576_8) + call names % push_back('Cl37.' // xs) + call densities % push_back(density * 0.2424_8) case ('ar') - call list_names % append('18036.' // xs) - call list_density % append(density * 0.003336_8) - call list_names % append('18038.' // xs) - call list_density % append(density * 0.000629_8) - call list_names % append('18040.' // xs) - call list_density % append(density * 0.996035_8) + call names % push_back('Ar36.' // xs) + call densities % push_back(density * 0.003336_8) + call names % push_back('Ar38.' // xs) + call densities % push_back(density * 0.000629_8) + call names % push_back('Ar40.' // xs) + call densities % push_back(density * 0.996035_8) case ('k') - call list_names % append('19039.' // xs) - call list_density % append(density * 0.932581_8) - call list_names % append('19040.' // xs) - call list_density % append(density * 0.000117_8) - call list_names % append('19041.' // xs) - call list_density % append(density * 0.067302_8) + call names % push_back('K39.' // xs) + call densities % push_back(density * 0.932581_8) + call names % push_back('K40.' // xs) + call densities % push_back(density * 0.000117_8) + call names % push_back('K41.' // xs) + call densities % push_back(density * 0.067302_8) case ('ca') - call list_names % append('20040.' // xs) - call list_density % append(density * 0.96941_8) - call list_names % append('20042.' // xs) - call list_density % append(density * 0.00647_8) - call list_names % append('20043.' // xs) - call list_density % append(density * 0.00135_8) - call list_names % append('20044.' // xs) - call list_density % append(density * 0.02086_8) - call list_names % append('20046.' // xs) - call list_density % append(density * 0.00004_8) - call list_names % append('20048.' // xs) - call list_density % append(density * 0.00187_8) + call names % push_back('Ca40.' // xs) + call densities % push_back(density * 0.96941_8) + call names % push_back('Ca42.' // xs) + call densities % push_back(density * 0.00647_8) + call names % push_back('Ca43.' // xs) + call densities % push_back(density * 0.00135_8) + call names % push_back('Ca44.' // xs) + call densities % push_back(density * 0.02086_8) + call names % push_back('Ca46.' // xs) + call densities % push_back(density * 0.00004_8) + call names % push_back('Ca48.' // xs) + call densities % push_back(density * 0.00187_8) case ('sc') - call list_names % append('21045.' // xs) - call list_density % append(density) + call names % push_back('Sc45.' // xs) + call densities % push_back(density) case ('ti') - call list_names % append('22046.' // xs) - call list_density % append(density * 0.0825_8) - call list_names % append('22047.' // xs) - call list_density % append(density * 0.0744_8) - call list_names % append('22048.' // xs) - call list_density % append(density * 0.7372_8) - call list_names % append('22049.' // xs) - call list_density % append(density * 0.0541_8) - call list_names % append('22050.' // xs) - call list_density % append(density * 0.0518_8) + call names % push_back('Ti46.' // xs) + call densities % push_back(density * 0.0825_8) + call names % push_back('Ti47.' // xs) + call densities % push_back(density * 0.0744_8) + call names % push_back('Ti48.' // xs) + call densities % push_back(density * 0.7372_8) + call names % push_back('Ti49.' // xs) + call densities % push_back(density * 0.0541_8) + call names % push_back('Ti50.' // xs) + call densities % push_back(density * 0.0518_8) case ('v') if (default_expand == ENDF_BVII0 .or. default_expand == JEFF_311 & .or. default_expand == JEFF_32 .or. & (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then - call list_names % append('23000.' // xs) - call list_density % append(density) + call names % push_back('V0.' // xs) + call densities % push_back(density) else - call list_names % append('23050.' // xs) - call list_density % append(density * 0.0025_8) - call list_names % append('23051.' // xs) - call list_density % append(density * 0.9975_8) + call names % push_back('V50.' // xs) + call densities % push_back(density * 0.0025_8) + call names % push_back('V51.' // xs) + call densities % push_back(density * 0.9975_8) end if case ('cr') - call list_names % append('24050.' // xs) - call list_density % append(density * 0.04345_8) - call list_names % append('24052.' // xs) - call list_density % append(density * 0.83789_8) - call list_names % append('24053.' // xs) - call list_density % append(density * 0.09501_8) - call list_names % append('24054.' // xs) - call list_density % append(density * 0.02365_8) + call names % push_back('Cr50.' // xs) + call densities % push_back(density * 0.04345_8) + call names % push_back('Cr52.' // xs) + call densities % push_back(density * 0.83789_8) + call names % push_back('Cr53.' // xs) + call densities % push_back(density * 0.09501_8) + call names % push_back('Cr54.' // xs) + call densities % push_back(density * 0.02365_8) case ('mn') - call list_names % append('25055.' // xs) - call list_density % append(density) + call names % push_back('Mn55.' // xs) + call densities % push_back(density) case ('fe') - call list_names % append('26054.' // xs) - call list_density % append(density * 0.05845_8) - call list_names % append('26056.' // xs) - call list_density % append(density * 0.91754_8) - call list_names % append('26057.' // xs) - call list_density % append(density * 0.02119_8) - call list_names % append('26058.' // xs) - call list_density % append(density * 0.00282_8) + call names % push_back('Fe54.' // xs) + call densities % push_back(density * 0.05845_8) + call names % push_back('Fe56.' // xs) + call densities % push_back(density * 0.91754_8) + call names % push_back('Fe57.' // xs) + call densities % push_back(density * 0.02119_8) + call names % push_back('Fe58.' // xs) + call densities % push_back(density * 0.00282_8) case ('co') - call list_names % append('27059.' // xs) - call list_density % append(density) + call names % push_back('Co59.' // xs) + call densities % push_back(density) case ('ni') - call list_names % append('28058.' // xs) - call list_density % append(density * 0.68077_8) - call list_names % append('28060.' // xs) - call list_density % append(density * 0.26223_8) - call list_names % append('28061.' // xs) - call list_density % append(density * 0.011399_8) - call list_names % append('28062.' // xs) - call list_density % append(density * 0.036346_8) - call list_names % append('28064.' // xs) - call list_density % append(density * 0.009255_8) + call names % push_back('Ni58.' // xs) + call densities % push_back(density * 0.68077_8) + call names % push_back('Ni60.' // xs) + call densities % push_back(density * 0.26223_8) + call names % push_back('Ni61.' // xs) + call densities % push_back(density * 0.011399_8) + call names % push_back('Ni62.' // xs) + call densities % push_back(density * 0.036346_8) + call names % push_back('Ni64.' // xs) + call densities % push_back(density * 0.009255_8) case ('cu') - call list_names % append('29063.' // xs) - call list_density % append(density * 0.6915_8) - call list_names % append('29065.' // xs) - call list_density % append(density * 0.3085_8) + call names % push_back('Cu63.' // xs) + call densities % push_back(density * 0.6915_8) + call names % push_back('Cu65.' // xs) + call densities % push_back(density * 0.3085_8) case ('zn') if (default_expand == ENDF_BVII0 .or. default_expand == & JEFF_311 .or. default_expand == JEFF_312) then - call list_names % append('30000.' // xs) - call list_density % append(density) + call names % push_back('Zn0.' // xs) + call densities % push_back(density) else - call list_names % append('30064.' // xs) - call list_density % append(density * 0.4917_8) - call list_names % append('30066.' // xs) - call list_density % append(density * 0.2773_8) - call list_names % append('30067.' // xs) - call list_density % append(density * 0.0404_8) - call list_names % append('30068.' // xs) - call list_density % append(density * 0.1845_8) - call list_names % append('30070.' // xs) - call list_density % append(density * 0.0061_8) + call names % push_back('Zn64.' // xs) + call densities % push_back(density * 0.4917_8) + call names % push_back('Zn66.' // xs) + call densities % push_back(density * 0.2773_8) + call names % push_back('Zn67.' // xs) + call densities % push_back(density * 0.0404_8) + call names % push_back('Zn68.' // xs) + call densities % push_back(density * 0.1845_8) + call names % push_back('Zn70.' // xs) + call densities % push_back(density * 0.0061_8) end if case ('ga') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call list_names % append('31000.' // xs) - call list_density % append(density) + call names % push_back('Ga0.' // xs) + call densities % push_back(density) else - call list_names % append('31069.' // xs) - call list_density % append(density * 0.60108_8) - call list_names % append('31071.' // xs) - call list_density % append(density * 0.39892_8) + call names % push_back('Ha69.' // xs) + call densities % push_back(density * 0.60108_8) + call names % push_back('Ga71.' // xs) + call densities % push_back(density * 0.39892_8) end if case ('ge') - call list_names % append('32070.' // xs) - call list_density % append(density * 0.2057_8) - call list_names % append('32072.' // xs) - call list_density % append(density * 0.2745_8) - call list_names % append('32073.' // xs) - call list_density % append(density * 0.0775_8) - call list_names % append('32074.' // xs) - call list_density % append(density * 0.3650_8) - call list_names % append('32076.' // xs) - call list_density % append(density * 0.0773_8) + call names % push_back('Ge70.' // xs) + call densities % push_back(density * 0.2057_8) + call names % push_back('Ge72.' // xs) + call densities % push_back(density * 0.2745_8) + call names % push_back('Ge73.' // xs) + call densities % push_back(density * 0.0775_8) + call names % push_back('Ge74.' // xs) + call densities % push_back(density * 0.3650_8) + call names % push_back('Ge76.' // xs) + call densities % push_back(density * 0.0773_8) case ('as') - call list_names % append('33075.' // xs) - call list_density % append(density) + call names % push_back('As75.' // xs) + call densities % push_back(density) case ('se') - call list_names % append('34074.' // xs) - call list_density % append(density * 0.0089_8) - call list_names % append('34076.' // xs) - call list_density % append(density * 0.0937_8) - call list_names % append('34077.' // xs) - call list_density % append(density * 0.0763_8) - call list_names % append('34078.' // xs) - call list_density % append(density * 0.2377_8) - call list_names % append('34080.' // xs) - call list_density % append(density * 0.4961_8) - call list_names % append('34082.' // xs) - call list_density % append(density * 0.0873_8) + call names % push_back('Se74.' // xs) + call densities % push_back(density * 0.0089_8) + call names % push_back('Se76.' // xs) + call densities % push_back(density * 0.0937_8) + call names % push_back('Se77.' // xs) + call densities % push_back(density * 0.0763_8) + call names % push_back('Se78.' // xs) + call densities % push_back(density * 0.2377_8) + call names % push_back('Se80.' // xs) + call densities % push_back(density * 0.4961_8) + call names % push_back('Se82.' // xs) + call densities % push_back(density * 0.0873_8) case ('br') - call list_names % append('35079.' // xs) - call list_density % append(density * 0.5069_8) - call list_names % append('35081.' // xs) - call list_density % append(density * 0.4931_8) + call names % push_back('Br79.' // xs) + call densities % push_back(density * 0.5069_8) + call names % push_back('Br81.' // xs) + call densities % push_back(density * 0.4931_8) case ('kr') - call list_names % append('36078.' // xs) - call list_density % append(density * 0.00355_8) - call list_names % append('36080.' // xs) - call list_density % append(density * 0.02286_8) - call list_names % append('36082.' // xs) - call list_density % append(density * 0.11593_8) - call list_names % append('36083.' // xs) - call list_density % append(density * 0.11500_8) - call list_names % append('36084.' // xs) - call list_density % append(density * 0.56987_8) - call list_names % append('36086.' // xs) - call list_density % append(density * 0.17279_8) + call names % push_back('Kr78.' // xs) + call densities % push_back(density * 0.00355_8) + call names % push_back('Kr80.' // xs) + call densities % push_back(density * 0.02286_8) + call names % push_back('Kr82.' // xs) + call densities % push_back(density * 0.11593_8) + call names % push_back('Kr83.' // xs) + call densities % push_back(density * 0.11500_8) + call names % push_back('Kr84.' // xs) + call densities % push_back(density * 0.56987_8) + call names % push_back('Kr86.' // xs) + call densities % push_back(density * 0.17279_8) case ('rb') - call list_names % append('37085.' // xs) - call list_density % append(density * 0.7217_8) - call list_names % append('37087.' // xs) - call list_density % append(density * 0.2783_8) + call names % push_back('Rb85.' // xs) + call densities % push_back(density * 0.7217_8) + call names % push_back('Rb87.' // xs) + call densities % push_back(density * 0.2783_8) case ('sr') - call list_names % append('38084.' // xs) - call list_density % append(density * 0.0056_8) - call list_names % append('38086.' // xs) - call list_density % append(density * 0.0986_8) - call list_names % append('38087.' // xs) - call list_density % append(density * 0.0700_8) - call list_names % append('38088.' // xs) - call list_density % append(density * 0.8258_8) + call names % push_back('Sr84.' // xs) + call densities % push_back(density * 0.0056_8) + call names % push_back('Sr86.' // xs) + call densities % push_back(density * 0.0986_8) + call names % push_back('Sr87.' // xs) + call densities % push_back(density * 0.0700_8) + call names % push_back('Sr88.' // xs) + call densities % push_back(density * 0.8258_8) case ('y') - call list_names % append('39089.' // xs) - call list_density % append(density) + call names % push_back('Y89.' // xs) + call densities % push_back(density) case ('zr') - call list_names % append('40090.' // xs) - call list_density % append(density * 0.5145_8) - call list_names % append('40091.' // xs) - call list_density % append(density * 0.1122_8) - call list_names % append('40092.' // xs) - call list_density % append(density * 0.1715_8) - call list_names % append('40094.' // xs) - call list_density % append(density * 0.1738_8) - call list_names % append('40096.' // xs) - call list_density % append(density * 0.0280_8) + call names % push_back('Zr90.' // xs) + call densities % push_back(density * 0.5145_8) + call names % push_back('Zr91.' // xs) + call densities % push_back(density * 0.1122_8) + call names % push_back('Zr92.' // xs) + call densities % push_back(density * 0.1715_8) + call names % push_back('Zr94.' // xs) + call densities % push_back(density * 0.1738_8) + call names % push_back('Zr96.' // xs) + call densities % push_back(density * 0.0280_8) case ('nb') - call list_names % append('41093.' // xs) - call list_density % append(density) + call names % push_back('Nb93.' // xs) + call densities % push_back(density) case ('mo') - call list_names % append('42092.' // xs) - call list_density % append(density * 0.1453_8) - call list_names % append('42094.' // xs) - call list_density % append(density * 0.0915_8) - call list_names % append('42095.' // xs) - call list_density % append(density * 0.1584_8) - call list_names % append('42096.' // xs) - call list_density % append(density * 0.1667_8) - call list_names % append('42097.' // xs) - call list_density % append(density * 0.0960_8) - call list_names % append('42098.' // xs) - call list_density % append(density * 0.2439_8) - call list_names % append('42100.' // xs) - call list_density % append(density * 0.0982_8) + call names % push_back('Mo92.' // xs) + call densities % push_back(density * 0.1453_8) + call names % push_back('Mo94.' // xs) + call densities % push_back(density * 0.0915_8) + call names % push_back('Mo95.' // xs) + call densities % push_back(density * 0.1584_8) + call names % push_back('Mo96.' // xs) + call densities % push_back(density * 0.1667_8) + call names % push_back('Mo97.' // xs) + call densities % push_back(density * 0.0960_8) + call names % push_back('Mo98.' // xs) + call densities % push_back(density * 0.2439_8) + call names % push_back('Mo100.' // xs) + call densities % push_back(density * 0.0982_8) case ('ru') - call list_names % append('44096.' // xs) - call list_density % append(density * 0.0554_8) - call list_names % append('44098.' // xs) - call list_density % append(density * 0.0187_8) - call list_names % append('44099.' // xs) - call list_density % append(density * 0.1276_8) - call list_names % append('44100.' // xs) - call list_density % append(density * 0.1260_8) - call list_names % append('44101.' // xs) - call list_density % append(density * 0.1706_8) - call list_names % append('44102.' // xs) - call list_density % append(density * 0.3155_8) - call list_names % append('44104.' // xs) - call list_density % append(density * 0.1862_8) + call names % push_back('Ru96.' // xs) + call densities % push_back(density * 0.0554_8) + call names % push_back('Ru98.' // xs) + call densities % push_back(density * 0.0187_8) + call names % push_back('Ru99.' // xs) + call densities % push_back(density * 0.1276_8) + call names % push_back('Ru100.' // xs) + call densities % push_back(density * 0.1260_8) + call names % push_back('Ru101.' // xs) + call densities % push_back(density * 0.1706_8) + call names % push_back('Ru102.' // xs) + call densities % push_back(density * 0.3155_8) + call names % push_back('Ru104.' // xs) + call densities % push_back(density * 0.1862_8) case ('rh') - call list_names % append('45103.' // xs) - call list_density % append(density) + call names % push_back('Rh103.' // xs) + call densities % push_back(density) case ('pd') - call list_names % append('46102.' // xs) - call list_density % append(density * 0.0102_8) - call list_names % append('46104.' // xs) - call list_density % append(density * 0.1114_8) - call list_names % append('46105.' // xs) - call list_density % append(density * 0.2233_8) - call list_names % append('46106.' // xs) - call list_density % append(density * 0.2733_8) - call list_names % append('46108.' // xs) - call list_density % append(density * 0.2646_8) - call list_names % append('46110.' // xs) - call list_density % append(density * 0.1172_8) + call names % push_back('Pd102.' // xs) + call densities % push_back(density * 0.0102_8) + call names % push_back('Pd104.' // xs) + call densities % push_back(density * 0.1114_8) + call names % push_back('Pd105.' // xs) + call densities % push_back(density * 0.2233_8) + call names % push_back('Pd106.' // xs) + call densities % push_back(density * 0.2733_8) + call names % push_back('Pd108.' // xs) + call densities % push_back(density * 0.2646_8) + call names % push_back('Pd110.' // xs) + call densities % push_back(density * 0.1172_8) case ('ag') - call list_names % append('47107.' // xs) - call list_density % append(density * 0.51839_8) - call list_names % append('47109.' // xs) - call list_density % append(density * 0.48161_8) + call names % push_back('Ag107.' // xs) + call densities % push_back(density * 0.51839_8) + call names % push_back('Ag109.' // xs) + call densities % push_back(density * 0.48161_8) case ('cd') - call list_names % append('48106.' // xs) - call list_density % append(density * 0.0125_8) - call list_names % append('48108.' // xs) - call list_density % append(density * 0.0089_8) - call list_names % append('48110.' // xs) - call list_density % append(density * 0.1249_8) - call list_names % append('48111.' // xs) - call list_density % append(density * 0.1280_8) - call list_names % append('48112.' // xs) - call list_density % append(density * 0.2413_8) - call list_names % append('48113.' // xs) - call list_density % append(density * 0.1222_8) - call list_names % append('48114.' // xs) - call list_density % append(density * 0.2873_8) - call list_names % append('48116.' // xs) - call list_density % append(density * 0.0749_8) + call names % push_back('Cd106.' // xs) + call densities % push_back(density * 0.0125_8) + call names % push_back('Cd108.' // xs) + call densities % push_back(density * 0.0089_8) + call names % push_back('Cd110.' // xs) + call densities % push_back(density * 0.1249_8) + call names % push_back('Cd111.' // xs) + call densities % push_back(density * 0.1280_8) + call names % push_back('Cd112.' // xs) + call densities % push_back(density * 0.2413_8) + call names % push_back('Cd113.' // xs) + call densities % push_back(density * 0.1222_8) + call names % push_back('Cd114.' // xs) + call densities % push_back(density * 0.2873_8) + call names % push_back('Cd116.' // xs) + call densities % push_back(density * 0.0749_8) case ('in') - call list_names % append('49113.' // xs) - call list_density % append(density * 0.0429_8) - call list_names % append('49115.' // xs) - call list_density % append(density * 0.9571_8) + call names % push_back('In113.' // xs) + call densities % push_back(density * 0.0429_8) + call names % push_back('In115.' // xs) + call densities % push_back(density * 0.9571_8) case ('sn') - call list_names % append('50112.' // xs) - call list_density % append(density * 0.0097_8) - call list_names % append('50114.' // xs) - call list_density % append(density * 0.0066_8) - call list_names % append('50115.' // xs) - call list_density % append(density * 0.0034_8) - call list_names % append('50116.' // xs) - call list_density % append(density * 0.1454_8) - call list_names % append('50117.' // xs) - call list_density % append(density * 0.0768_8) - call list_names % append('50118.' // xs) - call list_density % append(density * 0.2422_8) - call list_names % append('50119.' // xs) - call list_density % append(density * 0.0859_8) - call list_names % append('50120.' // xs) - call list_density % append(density * 0.3258_8) - call list_names % append('50122.' // xs) - call list_density % append(density * 0.0463_8) - call list_names % append('50124.' // xs) - call list_density % append(density * 0.0579_8) + call names % push_back('Sn112.' // xs) + call densities % push_back(density * 0.0097_8) + call names % push_back('Sn114.' // xs) + call densities % push_back(density * 0.0066_8) + call names % push_back('Sn115.' // xs) + call densities % push_back(density * 0.0034_8) + call names % push_back('Sn116.' // xs) + call densities % push_back(density * 0.1454_8) + call names % push_back('Sn117.' // xs) + call densities % push_back(density * 0.0768_8) + call names % push_back('Sn118.' // xs) + call densities % push_back(density * 0.2422_8) + call names % push_back('Sn119.' // xs) + call densities % push_back(density * 0.0859_8) + call names % push_back('Sn120.' // xs) + call densities % push_back(density * 0.3258_8) + call names % push_back('Sn122.' // xs) + call densities % push_back(density * 0.0463_8) + call names % push_back('Sn124.' // xs) + call densities % push_back(density * 0.0579_8) case ('sb') - call list_names % append('51121.' // xs) - call list_density % append(density * 0.5721_8) - call list_names % append('51123.' // xs) - call list_density % append(density * 0.4279_8) + call names % push_back('Sb121.' // xs) + call densities % push_back(density * 0.5721_8) + call names % push_back('Sb123.' // xs) + call densities % push_back(density * 0.4279_8) case ('te') - call list_names % append('52120.' // xs) - call list_density % append(density * 0.0009_8) - call list_names % append('52122.' // xs) - call list_density % append(density * 0.0255_8) - call list_names % append('52123.' // xs) - call list_density % append(density * 0.0089_8) - call list_names % append('52124.' // xs) - call list_density % append(density * 0.0474_8) - call list_names % append('52125.' // xs) - call list_density % append(density * 0.0707_8) - call list_names % append('52126.' // xs) - call list_density % append(density * 0.1884_8) - call list_names % append('52128.' // xs) - call list_density % append(density * 0.3174_8) - call list_names % append('52130.' // xs) - call list_density % append(density * 0.3408_8) + call names % push_back('Te120.' // xs) + call densities % push_back(density * 0.0009_8) + call names % push_back('Te122.' // xs) + call densities % push_back(density * 0.0255_8) + call names % push_back('Te123.' // xs) + call densities % push_back(density * 0.0089_8) + call names % push_back('Te124.' // xs) + call densities % push_back(density * 0.0474_8) + call names % push_back('Te125.' // xs) + call densities % push_back(density * 0.0707_8) + call names % push_back('Te126.' // xs) + call densities % push_back(density * 0.1884_8) + call names % push_back('Te128.' // xs) + call densities % push_back(density * 0.3174_8) + call names % push_back('Te130.' // xs) + call densities % push_back(density * 0.3408_8) case ('i') - call list_names % append('53127.' // xs) - call list_density % append(density) + call names % push_back('I127.' // xs) + call densities % push_back(density) case ('xe') - call list_names % append('54124.' // xs) - call list_density % append(density * 0.000952_8) - call list_names % append('54126.' // xs) - call list_density % append(density * 0.000890_8) - call list_names % append('54128.' // xs) - call list_density % append(density * 0.019102_8) - call list_names % append('54129.' // xs) - call list_density % append(density * 0.264006_8) - call list_names % append('54130.' // xs) - call list_density % append(density * 0.040710_8) - call list_names % append('54131.' // xs) - call list_density % append(density * 0.212324_8) - call list_names % append('54132.' // xs) - call list_density % append(density * 0.269086_8) - call list_names % append('54134.' // xs) - call list_density % append(density * 0.104357_8) - call list_names % append('54136.' // xs) - call list_density % append(density * 0.088573_8) + call names % push_back('Xe124.' // xs) + call densities % push_back(density * 0.000952_8) + call names % push_back('Xe126.' // xs) + call densities % push_back(density * 0.000890_8) + call names % push_back('Xe128.' // xs) + call densities % push_back(density * 0.019102_8) + call names % push_back('Xe129.' // xs) + call densities % push_back(density * 0.264006_8) + call names % push_back('Xe130.' // xs) + call densities % push_back(density * 0.040710_8) + call names % push_back('Xe131.' // xs) + call densities % push_back(density * 0.212324_8) + call names % push_back('Xe132.' // xs) + call densities % push_back(density * 0.269086_8) + call names % push_back('Xe134.' // xs) + call densities % push_back(density * 0.104357_8) + call names % push_back('Xe136.' // xs) + call densities % push_back(density * 0.088573_8) case ('cs') - call list_names % append('55133.' // xs) - call list_density % append(density) + call names % push_back('Cs133.' // xs) + call densities % push_back(density) case ('ba') - call list_names % append('56130.' // xs) - call list_density % append(density * 0.00106_8) - call list_names % append('56132.' // xs) - call list_density % append(density * 0.00101_8) - call list_names % append('56134.' // xs) - call list_density % append(density * 0.02417_8) - call list_names % append('56135.' // xs) - call list_density % append(density * 0.06592_8) - call list_names % append('56136.' // xs) - call list_density % append(density * 0.07854_8) - call list_names % append('56137.' // xs) - call list_density % append(density * 0.11232_8) - call list_names % append('56138.' // xs) - call list_density % append(density * 0.71698_8) + call names % push_back('Ba130.' // xs) + call densities % push_back(density * 0.00106_8) + call names % push_back('Ba132.' // xs) + call densities % push_back(density * 0.00101_8) + call names % push_back('Ba134.' // xs) + call densities % push_back(density * 0.02417_8) + call names % push_back('Ba135.' // xs) + call densities % push_back(density * 0.06592_8) + call names % push_back('Ba136.' // xs) + call densities % push_back(density * 0.07854_8) + call names % push_back('Ba137.' // xs) + call densities % push_back(density * 0.11232_8) + call names % push_back('Ba138.' // xs) + call densities % push_back(density * 0.71698_8) case ('la') - call list_names % append('57138.' // xs) - call list_density % append(density * 0.0008881_8) - call list_names % append('57139.' // xs) - call list_density % append(density * 0.9991119_8) + call names % push_back('La138.' // xs) + call densities % push_back(density * 0.0008881_8) + call names % push_back('La139.' // xs) + call densities % push_back(density * 0.9991119_8) case ('ce') - call list_names % append('58136.' // xs) - call list_density % append(density * 0.00185_8) - call list_names % append('58138.' // xs) - call list_density % append(density * 0.00251_8) - call list_names % append('58140.' // xs) - call list_density % append(density * 0.88450_8) - call list_names % append('58142.' // xs) - call list_density % append(density * 0.11114_8) + call names % push_back('Ce136.' // xs) + call densities % push_back(density * 0.00185_8) + call names % push_back('Ce138.' // xs) + call densities % push_back(density * 0.00251_8) + call names % push_back('Ce140.' // xs) + call densities % push_back(density * 0.88450_8) + call names % push_back('Ce142.' // xs) + call densities % push_back(density * 0.11114_8) case ('pr') - call list_names % append('59141.' // xs) - call list_density % append(density) + call names % push_back('Pr141.' // xs) + call densities % push_back(density) case ('nd') - call list_names % append('60142.' // xs) - call list_density % append(density * 0.27152_8) - call list_names % append('60143.' // xs) - call list_density % append(density * 0.12174_8) - call list_names % append('60144.' // xs) - call list_density % append(density * 0.23798_8) - call list_names % append('60145.' // xs) - call list_density % append(density * 0.08293_8) - call list_names % append('60146.' // xs) - call list_density % append(density * 0.17189_8) - call list_names % append('60148.' // xs) - call list_density % append(density * 0.05756_8) - call list_names % append('60150.' // xs) - call list_density % append(density * 0.05638_8) + call names % push_back('Nd142.' // xs) + call densities % push_back(density * 0.27152_8) + call names % push_back('Nd143.' // xs) + call densities % push_back(density * 0.12174_8) + call names % push_back('Nd144.' // xs) + call densities % push_back(density * 0.23798_8) + call names % push_back('Nd145.' // xs) + call densities % push_back(density * 0.08293_8) + call names % push_back('Nd146.' // xs) + call densities % push_back(density * 0.17189_8) + call names % push_back('Nd148.' // xs) + call densities % push_back(density * 0.05756_8) + call names % push_back('Nd150.' // xs) + call densities % push_back(density * 0.05638_8) case ('sm') - call list_names % append('62144.' // xs) - call list_density % append(density * 0.0307_8) - call list_names % append('62147.' // xs) - call list_density % append(density * 0.1499_8) - call list_names % append('62148.' // xs) - call list_density % append(density * 0.1124_8) - call list_names % append('62149.' // xs) - call list_density % append(density * 0.1382_8) - call list_names % append('62150.' // xs) - call list_density % append(density * 0.0738_8) - call list_names % append('62152.' // xs) - call list_density % append(density * 0.2675_8) - call list_names % append('62154.' // xs) - call list_density % append(density * 0.2275_8) + call names % push_back('Sm144.' // xs) + call densities % push_back(density * 0.0307_8) + call names % push_back('Sm147.' // xs) + call densities % push_back(density * 0.1499_8) + call names % push_back('Sm148.' // xs) + call densities % push_back(density * 0.1124_8) + call names % push_back('Sm149.' // xs) + call densities % push_back(density * 0.1382_8) + call names % push_back('Sm150.' // xs) + call densities % push_back(density * 0.0738_8) + call names % push_back('Sm152.' // xs) + call densities % push_back(density * 0.2675_8) + call names % push_back('Sm154.' // xs) + call densities % push_back(density * 0.2275_8) case ('eu') - call list_names % append('63151.' // xs) - call list_density % append(density * 0.4781_8) - call list_names % append('63153.' // xs) - call list_density % append(density * 0.5219_8) + call names % push_back('Eu151.' // xs) + call densities % push_back(density * 0.4781_8) + call names % push_back('Eu153.' // xs) + call densities % push_back(density * 0.5219_8) case ('gd') - call list_names % append('64152.' // xs) - call list_density % append(density * 0.0020_8) - call list_names % append('64154.' // xs) - call list_density % append(density * 0.0218_8) - call list_names % append('64155.' // xs) - call list_density % append(density * 0.1480_8) - call list_names % append('64156.' // xs) - call list_density % append(density * 0.2047_8) - call list_names % append('64157.' // xs) - call list_density % append(density * 0.1565_8) - call list_names % append('64158.' // xs) - call list_density % append(density * 0.2484_8) - call list_names % append('64160.' // xs) - call list_density % append(density * 0.2186_8) + call names % push_back('Gd152.' // xs) + call densities % push_back(density * 0.0020_8) + call names % push_back('Gd154.' // xs) + call densities % push_back(density * 0.0218_8) + call names % push_back('Gd155.' // xs) + call densities % push_back(density * 0.1480_8) + call names % push_back('Gd156.' // xs) + call densities % push_back(density * 0.2047_8) + call names % push_back('Gd157.' // xs) + call densities % push_back(density * 0.1565_8) + call names % push_back('Gd158.' // xs) + call densities % push_back(density * 0.2484_8) + call names % push_back('Gd160.' // xs) + call densities % push_back(density * 0.2186_8) case ('tb') - call list_names % append('65159.' // xs) - call list_density % append(density) + call names % push_back('Tb159.' // xs) + call densities % push_back(density) case ('dy') - call list_names % append('66156.' // xs) - call list_density % append(density * 0.00056_8) - call list_names % append('66158.' // xs) - call list_density % append(density * 0.00095_8) - call list_names % append('66160.' // xs) - call list_density % append(density * 0.02329_8) - call list_names % append('66161.' // xs) - call list_density % append(density * 0.18889_8) - call list_names % append('66162.' // xs) - call list_density % append(density * 0.25475_8) - call list_names % append('66163.' // xs) - call list_density % append(density * 0.24896_8) - call list_names % append('66164.' // xs) - call list_density % append(density * 0.28260_8) + call names % push_back('Dy156.' // xs) + call densities % push_back(density * 0.00056_8) + call names % push_back('Dy158.' // xs) + call densities % push_back(density * 0.00095_8) + call names % push_back('Dy160.' // xs) + call densities % push_back(density * 0.02329_8) + call names % push_back('Dy161.' // xs) + call densities % push_back(density * 0.18889_8) + call names % push_back('Dy162.' // xs) + call densities % push_back(density * 0.25475_8) + call names % push_back('Dy163.' // xs) + call densities % push_back(density * 0.24896_8) + call names % push_back('Dy164.' // xs) + call densities % push_back(density * 0.28260_8) case ('ho') - call list_names % append('67165.' // xs) - call list_density % append(density) + call names % push_back('Ho165.' // xs) + call densities % push_back(density) case ('er') - call list_names % append('68162.' // xs) - call list_density % append(density * 0.00139_8) - call list_names % append('68164.' // xs) - call list_density % append(density * 0.01601_8) - call list_names % append('68166.' // xs) - call list_density % append(density * 0.33503_8) - call list_names % append('68167.' // xs) - call list_density % append(density * 0.22869_8) - call list_names % append('68168.' // xs) - call list_density % append(density * 0.26978_8) - call list_names % append('68170.' // xs) - call list_density % append(density * 0.14910_8) + call names % push_back('Er162.' // xs) + call densities % push_back(density * 0.00139_8) + call names % push_back('Er164.' // xs) + call densities % push_back(density * 0.01601_8) + call names % push_back('Er166.' // xs) + call densities % push_back(density * 0.33503_8) + call names % push_back('Er167.' // xs) + call densities % push_back(density * 0.22869_8) + call names % push_back('Er168.' // xs) + call densities % push_back(density * 0.26978_8) + call names % push_back('Er170.' // xs) + call densities % push_back(density * 0.14910_8) case ('tm') - call list_names % append('69169.' // xs) - call list_density % append(density) + call names % push_back('Tm169.' // xs) + call densities % push_back(density) case ('yb') - call list_names % append('70168.' // xs) - call list_density % append(density * 0.00123_8) - call list_names % append('70170.' // xs) - call list_density % append(density * 0.02982_8) - call list_names % append('70171.' // xs) - call list_density % append(density * 0.1409_8) - call list_names % append('70172.' // xs) - call list_density % append(density * 0.2168_8) - call list_names % append('70173.' // xs) - call list_density % append(density * 0.16103_8) - call list_names % append('70174.' // xs) - call list_density % append(density * 0.32026_8) - call list_names % append('70176.' // xs) - call list_density % append(density * 0.12996_8) + call names % push_back('Yb168.' // xs) + call densities % push_back(density * 0.00123_8) + call names % push_back('Yb170.' // xs) + call densities % push_back(density * 0.02982_8) + call names % push_back('Yb171.' // xs) + call densities % push_back(density * 0.1409_8) + call names % push_back('Yb172.' // xs) + call densities % push_back(density * 0.2168_8) + call names % push_back('Yb173.' // xs) + call densities % push_back(density * 0.16103_8) + call names % push_back('Yb174.' // xs) + call densities % push_back(density * 0.32026_8) + call names % push_back('Yb176.' // xs) + call densities % push_back(density * 0.12996_8) case ('lu') - call list_names % append('71175.' // xs) - call list_density % append(density * 0.97401_8) - call list_names % append('71176.' // xs) - call list_density % append(density * 0.02599_8) + call names % push_back('Lu175.' // xs) + call densities % push_back(density * 0.97401_8) + call names % push_back('Lu176.' // xs) + call densities % push_back(density * 0.02599_8) case ('hf') - call list_names % append('72174.' // xs) - call list_density % append(density * 0.0016_8) - call list_names % append('72176.' // xs) - call list_density % append(density * 0.0526_8) - call list_names % append('72177.' // xs) - call list_density % append(density * 0.1860_8) - call list_names % append('72178.' // xs) - call list_density % append(density * 0.2728_8) - call list_names % append('72179.' // xs) - call list_density % append(density * 0.1362_8) - call list_names % append('72180.' // xs) - call list_density % append(density * 0.3508_8) + call names % push_back('Hf174.' // xs) + call densities % push_back(density * 0.0016_8) + call names % push_back('Hf176.' // xs) + call densities % push_back(density * 0.0526_8) + call names % push_back('Hf177.' // xs) + call densities % push_back(density * 0.1860_8) + call names % push_back('Hf178.' // xs) + call densities % push_back(density * 0.2728_8) + call names % push_back('Hf179.' // xs) + call densities % push_back(density * 0.1362_8) + call names % push_back('Hf180.' // xs) + call densities % push_back(density * 0.3508_8) case ('ta') if (default_expand == ENDF_BVII0 .or. & (default_expand >= JEFF_311 .and. default_expand <= JEFF_312) .or. & (default_expand >= JENDL_32 .and. default_expand <= JENDL_40)) then - call list_names % append('73181.' // xs) - call list_density % append(density) + call names % push_back('Ta181.' // xs) + call densities % push_back(density) else - call list_names % append('73180.' // xs) - call list_density % append(density * 0.0001201_8) - call list_names % append('73181.' // xs) - call list_density % append(density * 0.9998799_8) + call names % push_back('Ta180.' // xs) + call densities % push_back(density * 0.0001201_8) + call names % push_back('Ta181.' // xs) + call densities % push_back(density * 0.9998799_8) end if case ('w') @@ -5486,139 +5424,139 @@ contains .or. default_expand == JEFF_312 .or. & (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then ! Combine W-180 with W-182 - call list_names % append('74182.' // xs) - call list_density % append(density * 0.2662_8) - call list_names % append('74183.' // xs) - call list_density % append(density * 0.1431_8) - call list_names % append('74184.' // xs) - call list_density % append(density * 0.3064_8) - call list_names % append('74186.' // xs) - call list_density % append(density * 0.2843_8) + call names % push_back('W182.' // xs) + call densities % push_back(density * 0.2662_8) + call names % push_back('W183.' // xs) + call densities % push_back(density * 0.1431_8) + call names % push_back('W184.' // xs) + call densities % push_back(density * 0.3064_8) + call names % push_back('W186.' // xs) + call densities % push_back(density * 0.2843_8) else - call list_names % append('74180.' // xs) - call list_density % append(density * 0.0012_8) - call list_names % append('74182.' // xs) - call list_density % append(density * 0.2650_8) - call list_names % append('74183.' // xs) - call list_density % append(density * 0.1431_8) - call list_names % append('74184.' // xs) - call list_density % append(density * 0.3064_8) - call list_names % append('74186.' // xs) - call list_density % append(density * 0.2843_8) + call names % push_back('W180.' // xs) + call densities % push_back(density * 0.0012_8) + call names % push_back('W182.' // xs) + call densities % push_back(density * 0.2650_8) + call names % push_back('W183.' // xs) + call densities % push_back(density * 0.1431_8) + call names % push_back('W184.' // xs) + call densities % push_back(density * 0.3064_8) + call names % push_back('W186.' // xs) + call densities % push_back(density * 0.2843_8) end if case ('re') - call list_names % append('75185.' // xs) - call list_density % append(density * 0.3740_8) - call list_names % append('75187.' // xs) - call list_density % append(density * 0.6260_8) + call names % push_back('Re185.' // xs) + call densities % push_back(density * 0.3740_8) + call names % push_back('Re187.' // xs) + call densities % push_back(density * 0.6260_8) case ('os') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call list_names % append('76000.' // xs) - call list_density % append(density) + call names % push_back('Os0.' // xs) + call densities % push_back(density) else - call list_names % append('76184.' // xs) - call list_density % append(density * 0.0002_8) - call list_names % append('76186.' // xs) - call list_density % append(density * 0.0159_8) - call list_names % append('76187.' // xs) - call list_density % append(density * 0.0196_8) - call list_names % append('76188.' // xs) - call list_density % append(density * 0.1324_8) - call list_names % append('76189.' // xs) - call list_density % append(density * 0.1615_8) - call list_names % append('76190.' // xs) - call list_density % append(density * 0.2626_8) - call list_names % append('76192.' // xs) - call list_density % append(density * 0.4078_8) + call names % push_back('Os184.' // xs) + call densities % push_back(density * 0.0002_8) + call names % push_back('Os186.' // xs) + call densities % push_back(density * 0.0159_8) + call names % push_back('Os187.' // xs) + call densities % push_back(density * 0.0196_8) + call names % push_back('Os188.' // xs) + call densities % push_back(density * 0.1324_8) + call names % push_back('Os189.' // xs) + call densities % push_back(density * 0.1615_8) + call names % push_back('Os190.' // xs) + call densities % push_back(density * 0.2626_8) + call names % push_back('Os192.' // xs) + call densities % push_back(density * 0.4078_8) end if case ('ir') - call list_names % append('77191.' // xs) - call list_density % append(density * 0.373_8) - call list_names % append('77193.' // xs) - call list_density % append(density * 0.627_8) + call names % push_back('Ir191.' // xs) + call densities % push_back(density * 0.373_8) + call names % push_back('Ir193.' // xs) + call densities % push_back(density * 0.627_8) case ('pt') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call list_names % append('78000.' // xs) - call list_density % append(density) + call names % push_back('Pt0.' // xs) + call densities % push_back(density) else - call list_names % append('78190.' // xs) - call list_density % append(density * 0.00012_8) - call list_names % append('78192.' // xs) - call list_density % append(density * 0.00782_8) - call list_names % append('78194.' // xs) - call list_density % append(density * 0.3286_8) - call list_names % append('78195.' // xs) - call list_density % append(density * 0.3378_8) - call list_names % append('78196.' // xs) - call list_density % append(density * 0.2521_8) - call list_names % append('78198.' // xs) - call list_density % append(density * 0.07356_8) + call names % push_back('Pt190.' // xs) + call densities % push_back(density * 0.00012_8) + call names % push_back('Pt192.' // xs) + call densities % push_back(density * 0.00782_8) + call names % push_back('Pt194.' // xs) + call densities % push_back(density * 0.3286_8) + call names % push_back('Pt195.' // xs) + call densities % push_back(density * 0.3378_8) + call names % push_back('Pt196.' // xs) + call densities % push_back(density * 0.2521_8) + call names % push_back('Pt198.' // xs) + call densities % push_back(density * 0.07356_8) end if case ('au') - call list_names % append('79197.' // xs) - call list_density % append(density) + call names % push_back('Au197.' // xs) + call densities % push_back(density) case ('hg') - call list_names % append('80196.' // xs) - call list_density % append(density * 0.0015_8) - call list_names % append('80198.' // xs) - call list_density % append(density * 0.0997_8) - call list_names % append('80199.' // xs) - call list_density % append(density * 0.1687_8) - call list_names % append('80200.' // xs) - call list_density % append(density * 0.2310_8) - call list_names % append('80201.' // xs) - call list_density % append(density * 0.1318_8) - call list_names % append('80202.' // xs) - call list_density % append(density * 0.2986_8) - call list_names % append('80204.' // xs) - call list_density % append(density * 0.0687_8) + call names % push_back('Hg196.' // xs) + call densities % push_back(density * 0.0015_8) + call names % push_back('Hg198.' // xs) + call densities % push_back(density * 0.0997_8) + call names % push_back('Hg199.' // xs) + call densities % push_back(density * 0.1687_8) + call names % push_back('Hg200.' // xs) + call densities % push_back(density * 0.2310_8) + call names % push_back('Hg201.' // xs) + call densities % push_back(density * 0.1318_8) + call names % push_back('Hg202.' // xs) + call densities % push_back(density * 0.2986_8) + call names % push_back('Hg204.' // xs) + call densities % push_back(density * 0.0687_8) case ('tl') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call list_names % append('81000.' // xs) - call list_density % append(density) + call names % push_back('Tl0.' // xs) + call densities % push_back(density) else - call list_names % append('81203.' // xs) - call list_density % append(density * 0.2952_8) - call list_names % append('81205.' // xs) - call list_density % append(density * 0.7048_8) + call names % push_back('Tl203.' // xs) + call densities % push_back(density * 0.2952_8) + call names % push_back('Tl205.' // xs) + call densities % push_back(density * 0.7048_8) end if case ('pb') - call list_names % append('82204.' // xs) - call list_density % append(density * 0.014_8) - call list_names % append('82206.' // xs) - call list_density % append(density * 0.241_8) - call list_names % append('82207.' // xs) - call list_density % append(density * 0.221_8) - call list_names % append('82208.' // xs) - call list_density % append(density * 0.524_8) + call names % push_back('Pb204.' // xs) + call densities % push_back(density * 0.014_8) + call names % push_back('Pb206.' // xs) + call densities % push_back(density * 0.241_8) + call names % push_back('Pb207.' // xs) + call densities % push_back(density * 0.221_8) + call names % push_back('Pb208.' // xs) + call densities % push_back(density * 0.524_8) case ('bi') - call list_names % append('83209.' // xs) - call list_density % append(density) + call names % push_back('Bi209.' // xs) + call densities % push_back(density) case ('th') - call list_names % append('90232.' // xs) - call list_density % append(density) + call names % push_back('Th232.' // xs) + call densities % push_back(density) case ('pa') - call list_names % append('91231.' // xs) - call list_density % append(density) + call names % push_back('Pa231.' // xs) + call densities % push_back(density) case ('u') - call list_names % append('92234.' // xs) - call list_density % append(density * 0.000054_8) - call list_names % append('92235.' // xs) - call list_density % append(density * 0.007204_8) - call list_names % append('92238.' // xs) - call list_density % append(density * 0.992742_8) + call names % push_back('U234.' // xs) + call densities % push_back(density * 0.000054_8) + call names % push_back('U235.' // xs) + call densities % push_back(density * 0.007204_8) + call names % push_back('U238.' // xs) + call densities % push_back(density * 0.992742_8) case default call fatal_error("Cannot expand element: " // name) @@ -5714,4 +5652,405 @@ contains end do end subroutine generate_rpn +!=============================================================================== +! NORMALIZE_AO normalizes the atom or weight percentages for each material +!=============================================================================== + + subroutine normalize_ao() + integer :: i ! index in materials array + integer :: j ! index over nuclides in material + real(8) :: sum_percent ! summation + real(8) :: awr ! atomic weight ratio + real(8) :: x ! atom percent + logical :: percent_in_atom ! nuclides specified in atom percent? + logical :: density_in_atom ! density specified in atom/b-cm? + + do i = 1, size(materials) + associate (mat => materials(i)) + percent_in_atom = (mat % atom_density(1) > ZERO) + density_in_atom = (mat % density > ZERO) + + sum_percent = ZERO + do j = 1, size(mat % nuclide) + ! determine atomic weight ratio + if (run_CE) then + awr = nuclides(mat % nuclide(j)) % awr + else + awr = ONE + end if + + ! if given weight percent, convert all values so that they are divided + ! by awr. thus, when a sum is done over the values, it's actually + ! sum(w/awr) + if (.not. percent_in_atom) then + mat % atom_density(j) = -mat % atom_density(j) / awr + end if + end do + + ! determine normalized atom percents. if given atom percents, this is + ! straightforward. if given weight percents, the value is w/awr and is + ! divided by sum(w/awr) + sum_percent = sum(mat % atom_density) + mat % atom_density = mat % atom_density / sum_percent + + ! Change density in g/cm^3 to atom/b-cm. Since all values are now in atom + ! percent, the sum needs to be re-evaluated as 1/sum(x*awr) + if (.not. density_in_atom) then + sum_percent = ZERO + do j = 1, mat % n_nuclides + if (run_CE) then + awr = nuclides(mat % nuclide(j)) % awr + else + awr = ONE + end if + x = mat % atom_density(j) + sum_percent = sum_percent + x*awr + end do + sum_percent = ONE / sum_percent + mat%density = -mat % density * N_AVOGADRO & + / MASS_NEUTRON * sum_percent + end if + + ! Calculate nuclide atom densities + mat % atom_density = mat % density * mat % atom_density + end associate + end do + + end subroutine normalize_ao + +!=============================================================================== +! ASSIGN_SAB_TABLES assigns S(alpha,beta) tables to specific nuclides within +! materials so the code knows when to apply bound thermal scattering data +!=============================================================================== + + subroutine assign_sab_tables() + integer :: i ! index in materials array + integer :: j ! index over nuclides in material + integer :: k ! index over S(a,b) tables in material + integer :: m ! position for sorting + integer :: temp_nuclide ! temporary value for sorting + integer :: temp_table ! temporary value for sorting + + do i = 1, size(materials) + ! Skip materials with no S(a,b) tables + if (.not. allocated(materials(i) % i_sab_tables)) cycle + + associate (mat => materials(i)) + + ASSIGN_SAB: do k = 1, size(mat % i_sab_tables) + ! In order to know which nuclide the S(a,b) table applies to, we need + ! to search through the list of nuclides for one which has a matching + ! zaid + associate (sab => sab_tables(mat % i_sab_tables(k))) + FIND_NUCLIDE: do j = 1, size(mat % nuclide) + if (any(sab % zaid == nuclides(mat % nuclide(j)) % zaid)) then + mat % i_sab_nuclides(k) = j + exit FIND_NUCLIDE + end if + end do FIND_NUCLIDE + end associate + + ! Check to make sure S(a,b) table matched a nuclide + if (mat % i_sab_nuclides(k) == NONE) then + call fatal_error("S(a,b) table " // trim(mat % & + sab_names(k)) // " did not match any nuclide on material " & + // trim(to_str(mat % id))) + end if + end do ASSIGN_SAB + + ! If there are multiple S(a,b) tables, we need to make sure that the + ! entries in i_sab_nuclides are sorted or else they won't be applied + ! correctly in the cross_section module. The algorithm here is a simple + ! insertion sort -- don't need anything fancy! + + if (size(mat % i_sab_tables) > 1) then + SORT_SAB: do k = 2, size(mat % i_sab_tables) + ! Save value to move + m = k + temp_nuclide = mat % i_sab_nuclides(k) + temp_table = mat % i_sab_tables(k) + + MOVE_OVER: do + ! Check if insertion value is greater than (m-1)th value + if (temp_nuclide >= mat % i_sab_nuclides(m-1)) exit + + ! Move values over until hitting one that's not larger + mat % i_sab_nuclides(m) = mat % i_sab_nuclides(m-1) + mat % i_sab_tables(m) = mat % i_sab_tables(m-1) + m = m - 1 + + ! Exit if we've reached the beginning of the list + if (m == 1) exit + end do MOVE_OVER + + ! Put the original value into its new position + mat % i_sab_nuclides(m) = temp_nuclide + mat % i_sab_tables(m) = temp_table + end do SORT_SAB + end if + + ! Deallocate temporary arrays for names of nuclides and S(a,b) tables + if (allocated(mat % names)) deallocate(mat % names) + end associate + end do + end subroutine assign_sab_tables + + subroutine read_ce_cross_sections(libraries, library_dict) + type(Library), intent(in) :: libraries(:) + type(DictCharInt), intent(inout) :: library_dict + + integer :: i, j + integer :: i_library + integer :: i_nuclide + integer :: i_sab + integer :: index_nuc_zaid ! index in nuclide ZAID + integer :: zaid ! ZAID of nuclide + integer(HID_T) :: file_id + integer(HID_T) :: group_id + logical :: mp_found ! if windowed multipole libraries were found + character(MAX_WORD_LEN) :: name + type(SetChar) :: already_read + + allocate(nuclides(n_nuclides_total)) + allocate(sab_tables(n_sab_tables)) +!$omp parallel + allocate(micro_xs(n_nuclides_total)) +!$omp end parallel + + index_nuc_zaid = 0 + + ! Read cross sections + do i = 1, size(materials) + do j = 1, size(materials(i) % names) + name = materials(i) % names(j) + + if (.not. already_read % contains(name)) then + i_library = library_dict % get_key(to_lower(name)) + i_nuclide = nuclide_dict % get_key(to_lower(name)) + + call write_message('Reading ' // trim(name) // ' from ' // & + trim(libraries(i_library) % path), 6) + + ! Read nuclide data from HDF5 + file_id = file_open(libraries(i_library) % path, 'r') + group_id = open_group(file_id, name) + call nuclides(i_nuclide) % from_hdf5(group_id) + call close_group(group_id) + call file_close(file_id) + + ! Assign resonant scattering data + if (treat_res_scat) call read_0K_elastic_scattering(& + nuclides(i_nuclide), libraries, library_dict) + + ! Determine if minimum/maximum energy for this nuclide is greater/less + ! than the previous + energy_min_neutron = max(energy_min_neutron, nuclides(i_nuclide) % energy(1)) + energy_max_neutron = min(energy_max_neutron, nuclides(i_nuclide) % energy(& + size(nuclides(i_nuclide) % energy))) + + ! Add name and alias to dictionary + call already_read % add(name) + + ! Construct dictionary mapping nuclide zaids to [1,N] -- used for + ! unresolved resonance probability tables + zaid = nuclides(i_nuclide) % zaid + if (.not. nuc_zaid_dict % has_key(zaid)) then + index_nuc_zaid = index_nuc_zaid + 1 + call nuc_zaid_dict % add_key(zaid, index_nuc_zaid) + end if + + ! Read multipole file into the appropriate entry on the nuclides array + if (multipole_active) call read_multipole_data(i_nuclide) + end if + + ! Check if material is fissionable + if (nuclides(materials(i) % nuclide(j)) % fissionable) then + materials(i) % fissionable = .true. + end if + end do + end do + + do i = 1, size(materials) + ! Skip materials with no S(a,b) tables + if (.not. allocated(materials(i) % sab_names)) cycle + + do j = 1, size(materials(i) % sab_names) + ! Get name of S(a,b) table + name = materials(i) % sab_names(j) + + if (.not. already_read % contains(name)) then + i_library = library_dict % get_key(to_lower(name)) + i_sab = sab_dict % get_key(to_lower(name)) + + call write_message('Reading ' // trim(name) // ' from ' // & + trim(libraries(i_library) % path), 6) + + ! Read S(a,b) data from HDF5 + file_id = file_open(libraries(i_library) % path, 'r') + group_id = open_group(file_id, name) + call sab_tables(i_sab) % from_hdf5(group_id) + call close_group(group_id) + call file_close(file_id) + + ! Add name to dictionary + call already_read % add(name) + end if + end do + end do + + n_nuc_zaid_total = index_nuc_zaid + + ! Associate S(a,b) tables with specific nuclides + call assign_sab_tables() + + ! Show which nuclide results in lowest energy for neutron transport + do i = 1, size(nuclides) + if (nuclides(i) % energy(nuclides(i) % n_grid) == energy_max_neutron) then + call write_message("Maximum neutron transport energy: " // & + trim(to_str(energy_max_neutron)) // " MeV for " // & + trim(adjustl(nuclides(i) % name)), 6) + exit + end if + end do + + ! If the user wants multipole, make sure we found a multipole library. + if (multipole_active) then + mp_found = .false. + do i = 1, size(nuclides) + if (nuclides(i) % mp_present) then + mp_found = .true. + exit + end if + end do + if (.not. mp_found) call warning("Windowed multipole functionality is & + &turned on, but no multipole libraries were found. Set the & + & element in settings.xml or the & + &OPENMC_MULTIPOLE_LIBRARY environment variable.") + end if + + end subroutine read_ce_cross_sections + +!=============================================================================== +! READ_0K_ELASTIC_SCATTERING +!=============================================================================== + + subroutine read_0K_elastic_scattering(nuc, libraries, library_dict) + type(Nuclide), intent(inout) :: nuc + type(Library), intent(in) :: libraries(:) + type(DictCharInt), intent(inout) :: library_dict + + integer :: i, j + integer :: i_library + integer(HID_T) :: file_id + integer(HID_T) :: group_id + real(8) :: xs_cdf_sum + character(MAX_WORD_LEN) :: name + type(Nuclide) :: resonant_nuc + + do i = 1, size(nuclides_0K) + if (nuc % name == nuclides_0K(i) % name) then + ! Copy basic information from settings.xml + nuc % resonant = .true. + nuc % name_0K = trim(nuclides_0K(i) % name_0K) + nuc % scheme = trim(nuclides_0K(i) % scheme) + nuc % E_min = nuclides_0K(i) % E_min + nuc % E_max = nuclides_0K(i) % E_max + + ! Get index in libraries array + name = nuc % name_0K + i_library = library_dict % get_key(to_lower(name)) + + call write_message('Reading ' // trim(name) // ' 0K data from ' // & + trim(libraries(i_library) % path), 6) + + ! Read nuclide data from HDF5 + file_id = file_open(libraries(i_library) % path, 'r') + group_id = open_group(file_id, name) + call resonant_nuc % from_hdf5(group_id) + call close_group(group_id) + call file_close(file_id) + + ! Copy 0K energy grid and elastic scattering cross section + call move_alloc(TO=nuc % energy_0K, FROM=resonant_nuc % energy) + call move_alloc(TO=nuc % elastic_0K, FROM=resonant_nuc % elastic) + nuc % n_grid_0K = size(nuc % energy_0K) + + ! Build CDF for 0K elastic scattering + xs_cdf_sum = ZERO + allocate(nuc % xs_cdf(size(nuc % energy_0K))) + + do j = 1, size(nuc % energy_0K) - 1 + ! Negative cross sections result in a CDF that is not monotonically + ! increasing. Set all negative xs values to ZERO. + if (nuc % elastic_0K(j) < ZERO) nuc % elastic_0K(j) = ZERO + + ! build xs cdf + xs_cdf_sum = xs_cdf_sum & + + (sqrt(nuc % energy_0K(j)) * nuc % elastic_0K(j) & + + sqrt(nuc % energy_0K(j+1)) * nuc % elastic_0K(j+1)) / TWO & + * (nuc % energy_0K(j+1) - nuc % energy_0K(j)) + nuc % xs_cdf(j) = xs_cdf_sum + end do + + exit + end if + end do + + end subroutine read_0K_elastic_scattering + +!=============================================================================== +! READ_MULTIPOLE_DATA checks for the existence of a multipole library in the +! directory and loads it using multipole_read +!=============================================================================== + + subroutine read_multipole_data(i_table) + + integer, intent(in) :: i_table ! index in nuclides/sab_tables + + integer :: i + logical :: file_exists ! Does multipole library exist? + character(7) :: readable ! Is multipole library readable? + character(6) :: zaid_string ! String of the ZAID + character(MAX_FILE_LEN+9) :: filename ! Path to multipole xs library + + ! For the time being, and I know this is a bit hacky, we just assume + ! that the file will be zaid.h5. + associate (nuc => nuclides(i_table)) + + write(zaid_string, '(I6.6)') nuc % zaid + filename = trim(path_multipole) // zaid_string // ".h5" + + ! Check if Multipole library exists and is readable + inquire(FILE=filename, EXIST=file_exists, READ=readable) + if (.not. file_exists) then + nuc % mp_present = .false. + return + elseif (readable(1:3) == 'NO') then + call fatal_error("Multipole library '" // trim(filename) // "' is not & + &readable! Change file permissions with chmod command.") + end if + + ! Display message + call write_message("Loading Multipole XS table: " // filename, 6) + + allocate(nuc % multipole) + + ! Call the read routine + call multipole_read(filename, nuc % multipole, i_table) + nuc % mp_present = .true. + + ! Recreate nu-fission cross section + if (nuc % fissionable) then + do i = 1, size(nuc % energy) + nuc % nu_fission(i) = nuc % nu(nuc % energy(i), EMISSION_TOTAL) * & + nuc % fission(i) + end do + else + nuc % nu_fission(:) = ZERO + end if + + end associate + + end subroutine read_multipole_data + end module input_xml diff --git a/src/material_header.F90 b/src/material_header.F90 index 91c4cdfb82..be4c860e22 100644 --- a/src/material_header.F90 +++ b/src/material_header.F90 @@ -27,8 +27,8 @@ module material_header integer, allocatable :: i_sab_tables(:) ! index in sab_tables ! Temporary names read during initialization - character(12), allocatable :: names(:) ! isotope names - character(12), allocatable :: sab_names(:) ! name of S(a,b) table + character(20), allocatable :: names(:) ! isotope names + character(20), allocatable :: sab_names(:) ! name of S(a,b) table ! Does this material contain fissionable nuclides? logical :: fissionable = .false. diff --git a/src/mgxs_data.F90 b/src/mgxs_data.F90 index 38d6ebc6c5..491bd84091 100644 --- a/src/mgxs_data.F90 +++ b/src/mgxs_data.F90 @@ -23,10 +23,9 @@ contains integer :: i ! index in materials array integer :: j ! index over nuclides in material - integer :: i_listing ! index in xs_listings array + integer :: i_xsdata ! index in list integer :: i_nuclide ! index in nuclides - character(12) :: name ! name of isotope, e.g. 92235.03c - character(12) :: alias ! alias of isotope, e.g. U-235.03c + character(20) :: name ! name of isotope, e.g. 92235.03c integer :: representation ! Data representation type(Material), pointer :: mat type(SetChar) :: already_read @@ -37,6 +36,7 @@ contains character(MAX_LINE_LEN) :: temp_str logical :: get_kfiss, get_fiss integer :: l + type(DictCharInt) :: xsdata_dict ! Check if cross_sections.xml exists inquire(FILE=path_cross_sections, EXIST=file_exists) @@ -53,7 +53,17 @@ contains ! Get node list of all call get_node_list(doc, "xsdata", node_xsdata_list) - n_listings = get_list_size(node_xsdata_list) + + ! Build dictionary mapping nuclide names to an index in the node + ! list + do i = 1, get_list_size(node_xsdata_list) + ! Get pointer to xsdata table XML node + call get_list_item(node_xsdata_list, i, node_xsdata) + + ! Get name and create pair (name, i) + call get_node_value(node_xsdata, "name", name) + call xsdata_dict % add_key(to_lower(name), i) + end do ! allocate arrays for ACE table storage and cross section cache allocate(nuclides_MG(n_nuclides_total)) @@ -89,13 +99,11 @@ contains name = mat % names(j) if (.not. already_read % contains(name)) then - i_listing = xs_listing_dict % get_key(to_lower(name)) + i_xsdata = xsdata_dict % get_key(to_lower(name)) i_nuclide = mat % nuclide(j) - name = xs_listings(i_listing) % name - alias = xs_listings(i_listing) % alias ! Get pointer to xsdata table XML node - call get_list_item(node_xsdata_list, i_listing, node_xsdata) + call get_list_item(node_xsdata_list, i_xsdata, node_xsdata) call write_message("Loading " // trim(name) // " Data...", 5) @@ -125,11 +133,10 @@ contains ! Now read in the data specific to the type we just declared call nuclides_MG(i_nuclide) % obj % init_file(node_xsdata, & - energy_groups, get_kfiss, get_fiss, max_order, i_listing) + energy_groups, get_kfiss, get_fiss, max_order) - ! Add name and alias to dictionary + ! Add name to dictionary call already_read % add(name) - call already_read % add(alias) end if end do NUCLIDE_LOOP end do MATERIAL_LOOP @@ -185,8 +192,8 @@ contains allocate(MgxsAngle :: macro_xs(i_mat) % obj) end select call macro_xs(i_mat) % obj % combine(mat, nuclides_MG, energy_groups, & - max_order, scatt_type, i_mat) + max_order, scatt_type) end do end subroutine create_macro_xs -end module mgxs_data \ No newline at end of file +end module mgxs_data diff --git a/src/mgxs_header.F90 b/src/mgxs_header.F90 index 753f4e1498..06dd1e2138 100644 --- a/src/mgxs_header.F90 +++ b/src/mgxs_header.F90 @@ -21,7 +21,6 @@ module mgxs_header character(len=104) :: name ! name of dataset, e.g. 92235.03c integer :: zaid ! Z and A identifier, e.g. 92235 real(8) :: awr ! Atomic Weight Ratio - integer :: listing ! index in xs_listings real(8) :: kT ! temperature in MeV (k*T) ! Fission information @@ -54,8 +53,8 @@ module mgxs_header !=============================================================================== abstract interface - subroutine mgxs_init_file_(this,node_xsdata,groups,get_kfiss,get_fiss, & - max_order,i_listing) + subroutine mgxs_init_file_(this, node_xsdata, groups, get_kfiss, get_fiss, & + max_order) import Mgxs, Node class(Mgxs), intent(inout) :: this ! Working Object type(Node), pointer, intent(in) :: node_xsdata ! Data from MGXS xml @@ -63,7 +62,6 @@ module mgxs_header logical, intent(in) :: get_kfiss ! Need Kappa-Fission? logical, intent(in) :: get_fiss ! Should we get fiss data? integer, intent(in) :: max_order ! Maximum requested order - integer, intent(in) :: i_listing ! Index of listings array end subroutine mgxs_init_file_ subroutine mgxs_print_(this, unit) @@ -96,8 +94,7 @@ module mgxs_header end function mgxs_calc_f_ - subroutine mgxs_combine_(this,mat,nuclides,groups,max_order,scatt_type, & - i_listing) + subroutine mgxs_combine_(this, mat, nuclides, groups, max_order, scatt_type) import Mgxs, Material, MgxsContainer class(Mgxs), intent(inout) :: this ! The Mgxs to initialize type(Material), pointer, intent(in) :: mat ! base material @@ -105,7 +102,6 @@ module mgxs_header integer, intent(in) :: groups ! Number of E groups integer, intent(in) :: max_order ! Maximum requested order integer, intent(in) :: scatt_type ! Legendre or Tabular Scatt? - integer, intent(in) :: i_listing ! Index in listings end subroutine mgxs_combine_ function mgxs_sample_fission_(this, gin, uvw) result(gout) @@ -201,10 +197,9 @@ module mgxs_header ! the xsdata object node itself. !=============================================================================== - subroutine mgxs_init_file(this, node_xsdata, i_listing) + subroutine mgxs_init_file(this, node_xsdata) class(Mgxs), intent(inout) :: this ! Working Object type(Node), pointer, intent(in) :: node_xsdata ! Data from MGXS xml - integer, intent(in) :: i_listing ! Index in listings array character(MAX_LINE_LEN) :: temp_str @@ -254,20 +249,16 @@ module mgxs_header call fatal_error("Fissionable element must be set!") end if - ! Keep track of what listing is associated with this nuclide - this % listing = i_listing - end subroutine mgxs_init_file subroutine mgxsiso_init_file(this, node_xsdata, groups, get_kfiss, get_fiss, & - max_order, i_listing) + max_order) class(MgxsIso), intent(inout) :: this ! Working Object type(Node), pointer, intent(in) :: node_xsdata ! Data from MGXS xml integer, intent(in) :: groups ! Number of Energy groups logical, intent(in) :: get_kfiss ! Need Kappa-Fission? logical, intent(in) :: get_fiss ! Need fiss data? integer, intent(in) :: max_order ! Maximum requested order - integer, intent(in) :: i_listing ! Index in listings array type(Node), pointer :: node_legendre_mu character(MAX_LINE_LEN) :: temp_str @@ -282,7 +273,7 @@ module mgxs_header integer :: legendre_mu_points, imu ! Call generic data gathering routine (will populate the metadata) - call mgxs_init_file(this, node_xsdata, i_listing) + call mgxs_init_file(this, node_xsdata) ! Load the more specific data allocate(this % nu_fission(groups)) @@ -564,14 +555,13 @@ module mgxs_header end subroutine mgxsiso_init_file subroutine mgxsang_init_file(this, node_xsdata, groups, get_kfiss, get_fiss, & - max_order, i_listing) + max_order) class(MgxsAngle), intent(inout) :: this ! Working Object type(Node), pointer, intent(in) :: node_xsdata ! Data from MGXS xml integer, intent(in) :: groups ! Number of Energy groups logical, intent(in) :: get_kfiss ! Need Kappa-Fission? logical, intent(in) :: get_fiss ! Should we get fiss data? integer, intent(in) :: max_order ! Maximum requested order - integer, intent(in) :: i_listing ! Index in listings array type(Node), pointer :: node_legendre_mu character(MAX_LINE_LEN) :: temp_str @@ -586,7 +576,7 @@ module mgxs_header integer :: legendre_mu_points, imu, ipol, iazi ! Call generic data gathering routine (will populate the metadata) - call mgxs_init_file(this, node_xsdata, i_listing) + call mgxs_init_file(this, node_xsdata) if (check_for_node(node_xsdata, "num_polar")) then call get_node_value(node_xsdata, "num_polar", this % n_pol) @@ -1318,11 +1308,10 @@ module mgxs_header ! objects !=============================================================================== - subroutine mgxs_combine(this, mat, scatt_type, i_listing) + subroutine mgxs_combine(this, mat, scatt_type) class(Mgxs), intent(inout) :: this ! The Mgxs to initialize type(Material), pointer, intent(in) :: mat ! base material integer, intent(in) :: scatt_type ! How is data presented - integer, intent(in) :: i_listing ! Index in listings ! Fill in meta-data from material information if (mat % name == "") then @@ -1331,7 +1320,6 @@ module mgxs_header this % name = mat % name end if this % zaid = -mat % id - this % listing = i_listing this % fissionable = mat % fissionable this % scatt_type = scatt_type @@ -1342,15 +1330,13 @@ module mgxs_header end subroutine mgxs_combine - subroutine mgxsiso_combine(this, mat, nuclides, groups, max_order, scatt_type, & - i_listing) + subroutine mgxsiso_combine(this, mat, nuclides, groups, max_order, scatt_type) class(MgxsIso), intent(inout) :: this ! The Mgxs to initialize type(Material), pointer, intent(in) :: mat ! base material type(MgxsContainer), intent(in) :: nuclides(:) ! List of nuclides to harvest from integer, intent(in) :: groups ! Number of E groups integer, intent(in) :: max_order ! Maximum requested order integer, intent(in) :: scatt_type ! How is data presented - integer, intent(in) :: i_listing ! Index in listings integer :: i ! loop index over nuclides integer :: gin, gout ! group indices @@ -1361,7 +1347,7 @@ module mgxs_header real(8), allocatable :: scatt_coeffs(:, :, :) ! Set the meta-data - call mgxs_combine(this, mat, scatt_type, i_listing) + call mgxs_combine(this, mat, scatt_type) ! Determine the scattering type of our data and ensure all scattering orders ! are the same. @@ -1538,15 +1524,13 @@ module mgxs_header end subroutine mgxsiso_combine - subroutine mgxsang_combine(this, mat, nuclides, groups, max_order, scatt_type, & - i_listing) + subroutine mgxsang_combine(this, mat, nuclides, groups, max_order, scatt_type) class(MgxsAngle), intent(inout) :: this ! The Mgxs to initialize type(Material), pointer, intent(in) :: mat ! base material type(MgxsContainer), intent(in) :: nuclides(:) ! List of nuclides to harvest from integer, intent(in) :: groups ! Number of E groups integer, intent(in) :: max_order ! Maximum requested order integer, intent(in) :: scatt_type ! Legendre or Tabular Scatt? - integer, intent(in) :: i_listing ! Index in listings integer :: i ! loop index over nuclides integer :: gin, gout ! group indices @@ -1558,7 +1542,7 @@ module mgxs_header real(8), allocatable :: mult_denom(:, :, :, :), scatt_coeffs(:, :, :, :, :) ! Set the meta-data - call mgxs_combine(this, mat, scatt_type, i_listing) + call mgxs_combine(this, mat, scatt_type) ! Get the number of each polar and azi angles and make sure all the ! NuclideAngle types have the same number of these angles @@ -1939,4 +1923,4 @@ module mgxs_header end subroutine find_angle -end module mgxs_header \ No newline at end of file +end module mgxs_header diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 2c59e700d4..be61ff8b9e 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -5,13 +5,18 @@ module nuclide_header use constants use dict_header, only: DictIntInt use endf, only: reaction_name, is_fission, is_disappearance - use endf_header, only: Function1D + use endf_header, only: Function1D, Constant1D, Polynomial, Tabulated1D use error, only: fatal_error, warning + use hdf5, only: HID_T, HSIZE_T, SIZE_T, h5iget_name_f + use h5lt, only: h5ltpath_valid_f + use hdf5_interface, only: read_attribute, open_group, close_group, & + open_dataset, read_dataset, close_dataset, get_shape use list_header, only: ListInt use math, only: evaluate_legendre use multipole_header, only: MultipoleArray use product_header, only: AngleEnergyContainer use reaction_header, only: Reaction + use secondary_uncorrelated, only: UncorrelatedAngleEnergy use stl_vector, only: VectorInt use string use urr_header, only: UrrData @@ -26,14 +31,14 @@ module nuclide_header type :: Nuclide ! Nuclide meta-data - character(12) :: name ! name of nuclide, e.g. 92235.03c + character(20) :: name ! name of nuclide, e.g. U235.71c integer :: zaid ! Z and A identifier, e.g. 92235 + integer :: metastable ! metastable state real(8) :: awr ! Atomic Weight Ratio - integer :: listing ! index in xs_listings real(8) :: kT ! temperature in MeV (k*T) ! Fission information - logical :: fissionable ! nuclide is fissionable? + logical :: fissionable = .false. ! nuclide is fissionable? ! Energy grid information integer :: n_grid ! # of nuclide grid points @@ -61,13 +66,13 @@ module nuclide_header ! Fission information logical :: has_partial_fission = .false. ! nuclide has partial fission reactions? - integer :: n_fission ! # of fission reactions + integer :: n_fission = 0 ! # of fission reactions integer :: n_precursor = 0 ! # of delayed neutron precursors integer, allocatable :: index_fission(:) ! indices in reactions class(Function1D), allocatable :: total_nu ! Unresolved resonance data - logical :: urr_present + logical :: urr_present = .false. integer :: urr_inelastic type(UrrData), pointer :: urr_data => null() @@ -84,7 +89,9 @@ module nuclide_header contains procedure :: clear => nuclide_clear procedure :: print => nuclide_print + procedure :: from_hdf5 => nuclide_from_hdf5 procedure :: nu => nuclide_nu + procedure, private :: create_derived => nuclide_create_derived end type Nuclide !=============================================================================== @@ -144,24 +151,14 @@ module nuclide_header end type MaterialMacroXS !=============================================================================== -! XSLISTING contains data read from a CE or MG cross_sections.xml file -! (or equivalent) +! LIBRARY contains data read from a cross_sections.xml file !=============================================================================== - type XsListing - character(12) :: name ! table name, e.g. 92235.70c - character(12) :: alias ! table alias, e.g. U-235.70c - integer :: type ! type of table (cont-E neutron, S(A,b), etc) - integer :: zaid ! ZAID identifier = 1000*Z + A - integer :: filetype ! ASCII or BINARY - integer :: location ! location of table within library - integer :: recl ! record length for library - integer :: entries ! number of entries per record - real(8) :: awr ! atomic weight ratio (# of neutron masses) - real(8) :: kT ! Boltzmann constant * temperature (MeV) - logical :: metastable ! is this nuclide metastable? - character(MAX_FILE_LEN) :: path ! path to library containing table - end type XsListing + type Library + integer :: type + character(MAX_WORD_LEN), allocatable :: materials(:) + character(MAX_FILE_LEN) :: path + end type Library contains @@ -173,18 +170,254 @@ module nuclide_header class(Nuclide), intent(inout) :: this ! The Nuclide object to clear if (associated(this % urr_data)) deallocate(this % urr_data) - - call this % reaction_index % clear() - if (associated(this % multipole)) deallocate(this % multipole) end subroutine nuclide_clear + subroutine nuclide_from_hdf5(this, group_id) + class(Nuclide), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i + integer :: Z + integer :: A + integer :: n_reaction + integer :: hdf5_err + integer(HID_T) :: urr_group, nu_group + integer(HID_T) :: energy_dset + integer(HID_T) :: rx_group + integer(HID_T) :: total_nu + integer(SIZE_T) :: name_len, name_file_len + integer(HSIZE_T) :: dims(1) + character(MAX_WORD_LEN) :: temp + logical :: exists + + ! Get name of nuclide from group + name_len = len(this % name) + call h5iget_name_f(group_id, this % name, name_len, name_file_len, hdf5_err) + + ! Get rid of leading '/' + this % name = trim(this % name(2:)) + + call read_attribute(Z, group_id, 'Z') + call read_attribute(A, group_id, 'A') + call read_attribute(this % metastable, group_id, 'metastable') + this % zaid = 1000*Z + A + 400*this % metastable + call read_attribute(this % awr, group_id, 'atomic_weight_ratio') + call read_attribute(this % kT, group_id, 'temperature') + call read_attribute(n_reaction, group_id, 'n_reaction') + this % n_reaction = n_reaction + + ! Read energy grid + energy_dset = open_dataset(group_id, 'energy') + call get_shape(energy_dset, dims) + this % n_grid = int(dims(1), 4) + allocate(this % energy(this % n_grid)) + call read_dataset(this % energy, energy_dset) + call close_dataset(energy_dset) + + ! Read reactions + allocate(this % reactions(n_reaction)) + do i = 1, size(this % reactions) + rx_group = open_group(group_id, 'reaction_' // trim(to_str(i - 1))) + call this % reactions(i) % from_hdf5(rx_group) + call close_group(rx_group) + end do + + ! Read unresolved resonance probability tables if present + call h5ltpath_valid_f(group_id, 'urr', .true., exists, hdf5_err) + if (exists) then + this % urr_present = .true. + allocate(this % urr_data) + urr_group = open_group(group_id, 'urr') + call this % urr_data % from_hdf5(urr_group) + + ! if the inelastic competition flag indicates that the inelastic cross + ! section should be determined from a normal reaction cross section, we need + ! to get the index of the reaction + if (this % urr_data % inelastic_flag > 0) then + do i = 1, size(this % reactions) + if (this % reactions(i) % MT == this % urr_data % inelastic_flag) then + this % urr_inelastic = i + end if + end do + + ! Abort if no corresponding inelastic reaction was found + if (this % urr_inelastic == NONE) then + call fatal_error("Could not find inelastic reaction specified on & + &unresolved resonance probability table.") + end if + end if + + ! Check for negative values + if (any(this % urr_data % prob < ZERO)) then + call warning("Negative value(s) found on probability table & + &for nuclide " // this % name) + end if + end if + + ! Check for nu-total + call h5ltpath_valid_f(group_id, 'total_nu', .true., exists, hdf5_err) + if (exists) then + nu_group = open_group(group_id, 'total_nu') + + ! Read total nu data + total_nu = open_dataset(nu_group, 'yield') + call read_attribute(temp, total_nu, 'type') + select case (temp) + case ('constant') + allocate(Constant1D :: this % total_nu) + case ('tabulated') + allocate(Tabulated1D :: this % total_nu) + case ('polynomial') + allocate(Polynomial :: this % total_nu) + end select + call this % total_nu % from_hdf5(total_nu) + call close_dataset(total_nu) + + call close_group(nu_group) + end if + + ! Create derived cross section data + call this % create_derived() + + end subroutine nuclide_from_hdf5 + + subroutine nuclide_create_derived(this) + class(Nuclide), intent(inout) :: this + + integer :: i + integer :: j + integer :: k + integer :: m + integer :: n + integer :: i_fission + type(ListInt) :: MTs + + ! Allocate and initialize derived cross sections + allocate(this % total(this % n_grid)) + allocate(this % elastic(this % n_grid)) + allocate(this % fission(this % n_grid)) + allocate(this % nu_fission(this % n_grid)) + allocate(this % absorption(this % n_grid)) + this % total(:) = ZERO + this % elastic(:) = ZERO + this % fission(:) = ZERO + this % nu_fission(:) = ZERO + this % absorption(:) = ZERO + + i_fission = 0 + + do i = 1, size(this % reactions) + call MTs % append(this % reactions(i) % MT) + call this % reaction_index % add_key(this % reactions(i) % MT, i) + + associate (rx => this % reactions(i)) + j = rx % threshold + n = size(rx % sigma) + + ! Skip total inelastic level scattering, gas production cross sections + ! (MT=200+), etc. + if (rx % MT == N_LEVEL .or. rx % MT == N_NONELASTIC) cycle + if (rx % MT > N_5N2P .and. rx % MT < N_P0) cycle + + ! Skip level cross sections if total is available + if (rx % MT >= N_P0 .and. rx % MT <= N_PC .and. MTs % contains(N_P)) cycle + if (rx % MT >= N_D0 .and. rx % MT <= N_DC .and. MTs % contains(N_D)) cycle + if (rx % MT >= N_T0 .and. rx % MT <= N_TC .and. MTs % contains(N_T)) cycle + if (rx % MT >= N_3HE0 .and. rx % MT <= N_3HEC .and. MTs % contains(N_3HE)) cycle + if (rx % MT >= N_A0 .and. rx % MT <= N_AC .and. MTs % contains(N_A)) cycle + if (rx % MT >= N_2N0 .and. rx % MT <= N_2NC .and. MTs % contains(N_2N)) cycle + + ! Copy elastic + if (rx % MT == ELASTIC) this % elastic(:) = rx % sigma + + ! Add contribution to total cross section + this % total(j:j+n-1) = this % total(j:j+n-1) + rx % sigma + + ! Add contribution to absorption cross section + if (is_disappearance(rx % MT)) then + this % absorption(j:j+n-1) = this % absorption(j:j+n-1) + rx % sigma + end if + + ! Information about fission reactions + if (rx % MT == N_FISSION) then + allocate(this % index_fission(1)) + elseif (rx % MT == N_F) then + allocate(this % index_fission(PARTIAL_FISSION_MAX)) + this % has_partial_fission = .true. + end if + + ! Add contribution to fission cross section + if (is_fission(rx % MT)) then + this % fissionable = .true. + this % fission(j:j+n-1) = this % fission(j:j+n-1) + rx % sigma + + ! Also need to add fission cross sections to absorption + this % absorption(j:j+n-1) = this % absorption(j:j+n-1) + rx % sigma + + ! If total fission reaction is present, there's no need to store the + ! reaction cross-section since it was copied to this % fission + if (rx % MT == N_FISSION) deallocate(rx % sigma) + + ! Keep track of this reaction for easy searching later + i_fission = i_fission + 1 + this % index_fission(i_fission) = i + this % n_fission = this % n_fission + 1 + + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< + ! Before the secondary distribution refactor, when the angle/energy + ! distribution was uncorrelated, no angle was actually sampled. With + ! the refactor, an angle is always sampled for an uncorrelated + ! distribution even when no angle distribution exists in the ACE file + ! (isotropic is assumed). To preserve the RNG stream, we explicitly + ! mark fission reactions so that we avoid the angle sampling. + do k = 1, size(rx % products) + if (rx % products(k) % particle == NEUTRON) then + do m = 1, size(rx % products(k) % distribution) + associate (aedist => rx % products(k) % distribution(m) % obj) + select type (aedist) + type is (UncorrelatedAngleEnergy) + aedist % fission = .true. + end select + end associate + end do + end if + end do + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< + end if + end associate + end do + + ! Determine number of delayed neutron precursors + if (this % fissionable) then + do i = 1, size(this % reactions(this % index_fission(1)) % products) + if (this % reactions(this % index_fission(1)) % products(i) % & + emission_mode == EMISSION_DELAYED) then + this % n_precursor = this % n_precursor + 1 + end if + end do + end if + + ! Calculate nu-fission cross section + if (this % fissionable) then + do i = 1, size(this % energy) + this % nu_fission(i) = this % nu(this % energy(i), EMISSION_TOTAL) * & + this % fission(i) + end do + else + this % nu_fission(:) = ZERO + end if + + ! Clear MTs set + call MTs % clear() + end subroutine nuclide_create_derived + !=============================================================================== ! NUCLIDE_NU is an interface to the number of fission neutrons produced !=============================================================================== - function nuclide_nu(this, E, emission_mode, group) result(nu) + pure function nuclide_nu(this, E, emission_mode, group) result(nu) class(Nuclide), intent(in) :: this real(8), intent(in) :: E integer, intent(in) :: emission_mode @@ -237,8 +470,8 @@ module nuclide_header if (allocated(this % total_nu)) then nu = this % total_nu % evaluate(E) else - associate (rx => this % reactions(this % index_fission(1))) - nu = rx % products(1) % yield % evaluate(E) + associate (product => this % reactions(this % index_fission(1)) % products(1)) + nu = product % yield % evaluate(E) end associate end if end select diff --git a/src/output.F90 b/src/output.F90 index d7dfe7e1c2..09df23f0d5 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -741,7 +741,6 @@ contains integer :: filter_index ! index in results array for filters integer :: score_index ! scoring bin index integer :: i_nuclide ! index in nuclides array - integer :: i_listing ! index in xs_listings array integer :: n_order ! loop index for moment orders integer :: nm_order ! loop index for Ynm moment orders integer :: unit_tally ! tallies.out file unit @@ -908,13 +907,8 @@ contains write(UNIT=unit_tally, FMT='(1X,2A,1X,A)') repeat(" ", indent), & "Total Material" else - if (run_CE) then - i_listing = nuclides(i_nuclide) % listing - else - i_listing = nuclides_MG(i_nuclide) % obj % listing - end if write(UNIT=unit_tally, FMT='(1X,2A,1X,A)') repeat(" ", indent), & - trim(xs_listings(i_listing) % alias) + trim(nuclides(i_nuclide) % name) end if indent = indent + 2 diff --git a/src/product_header.F90 b/src/product_header.F90 index e20c173b4c..fbe0ee71f0 100644 --- a/src/product_header.F90 +++ b/src/product_header.F90 @@ -4,7 +4,15 @@ module product_header use constants, only: ZERO, MAX_WORD_LEN, EMISSION_PROMPT, EMISSION_DELAYED, & EMISSION_TOTAL, NEUTRON, PHOTON use endf_header, only: Tabulated1D, Function1D, Constant1D, Polynomial + use hdf5, only: HID_T + use hdf5_interface, only: read_attribute, open_group, close_group, & + open_dataset, close_dataset, read_dataset use random_lcg, only: prn + use secondary_correlated, only: CorrelatedAngleEnergy + use secondary_kalbach, only: KalbachMann + use secondary_nbody, only: NBodyPhaseSpace + use secondary_uncorrelated, only: UncorrelatedAngleEnergy + use string, only: to_str !=============================================================================== ! REACTIONPRODUCT stores a data for a reaction product including its yield and @@ -23,6 +31,7 @@ module product_header type(AngleEnergyContainer), allocatable :: distribution(:) contains procedure :: sample => reactionproduct_sample + procedure :: from_hdf5 => reactionproduct_from_hdf5 end type ReactionProduct contains @@ -59,4 +68,89 @@ contains end subroutine reactionproduct_sample + subroutine reactionproduct_from_hdf5(this, group_id) + class(ReactionProduct), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i + integer :: n + integer(HID_T) :: dgroup + integer(HID_T) :: app + integer(HID_T) :: yield + character(MAX_WORD_LEN) :: temp + + ! Read particle type + call read_attribute(temp, group_id, 'particle') + select case (temp) + case ('neutron') + this % particle = NEUTRON + case ('photon') + this % particle = PHOTON + end select + + ! Read emission mode and decay rate + call read_attribute(temp, group_id, 'emission_mode') + select case (temp) + case ('prompt') + this % emission_mode = EMISSION_PROMPT + case ('delayed') + this % emission_mode = EMISSION_DELAYED + case ('total') + this % emission_mode = EMISSION_TOTAL + end select + + ! Read decay rate for delayed emission + if (this % emission_mode == EMISSION_DELAYED) then + call read_attribute(this % decay_rate, group_id, 'decay_rate') + end if + + ! Read secondary particle yield + yield = open_dataset(group_id, 'yield') + call read_attribute(temp, yield, 'type') + select case (temp) + case ('constant') + allocate(Constant1D :: this % yield) + case ('tabulated') + allocate(Tabulated1D :: this % yield) + case ('polynomial') + allocate(Polynomial :: this % yield) + end select + call this % yield % from_hdf5(yield) + call close_dataset(yield) + + call read_attribute(n, group_id, 'n_distribution') + allocate(this%applicability(n)) + allocate(this%distribution(n)) + + do i = 1, n + dgroup = open_group(group_id, trim('distribution_' // to_str(i - 1))) + + ! Read applicability + if (n > 1) then + app = open_dataset(dgroup, 'applicability') + call this%applicability(i)%from_hdf5(app) + call close_dataset(app) + end if + + ! Read type of distribution and allocate accordingly + call read_attribute(temp, dgroup, 'type') + select case (temp) + case ('uncorrelated') + allocate(UncorrelatedAngleEnergy :: this%distribution(i)%obj) + case ('correlated') + allocate(CorrelatedAngleEnergy :: this%distribution(i)%obj) + case ('nbody') + allocate(NBodyPhaseSpace :: this%distribution(i)%obj) + case ('kalbach-mann') + allocate(KalbachMann :: this%distribution(i)%obj) + end select + + ! Read distribution data + call this%distribution(i)%obj%from_hdf5(dgroup) + + call close_group(dgroup) + end do + + end subroutine reactionproduct_from_hdf5 + end module product_header diff --git a/src/reaction_header.F90 b/src/reaction_header.F90 index 160ad63239..8af75b3cf2 100644 --- a/src/reaction_header.F90 +++ b/src/reaction_header.F90 @@ -1,6 +1,10 @@ module reaction_header + use hdf5, only: HID_T, HSIZE_T + use hdf5_interface, only: read_attribute, open_group, close_group, & + open_dataset, read_dataset, close_dataset, get_shape use product_header, only: ReactionProduct + use string, only: to_str implicit none @@ -16,6 +20,44 @@ module reaction_header logical :: scatter_in_cm ! scattering system in center-of-mass? real(8), allocatable :: sigma(:) ! Cross section values type(ReactionProduct), allocatable :: products(:) + contains + procedure :: from_hdf5 => reaction_from_hdf5 end type Reaction +contains + + subroutine reaction_from_hdf5(this, group_id) + class(Reaction), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i + integer :: cm + integer :: n_product + integer(HID_T) :: pgroup + integer(HID_T) :: xs + integer(HSIZE_T) :: dims(1) + + call read_attribute(this % Q_value, group_id, 'Q_value') + call read_attribute(this % MT, group_id, 'MT') + call read_attribute(this % threshold, group_id, 'threshold_idx') + call read_attribute(cm, group_id, 'center_of_mass') + this % scatter_in_cm = (cm == 1) + + ! Read cross section + xs = open_dataset(group_id, 'xs') + call get_shape(xs, dims) + allocate(this % sigma(dims(1))) + call read_dataset(this % sigma, xs) + call close_dataset(xs) + + ! Read products + call read_attribute(n_product, group_id, 'n_product') + allocate(this % products(n_product)) + do i = 1, n_product + pgroup = open_group(group_id, 'product_' // trim(to_str(i - 1))) + call this % products(i) % from_hdf5(pgroup) + call close_group(pgroup) + end do + end subroutine reaction_from_hdf5 + end module reaction_header diff --git a/src/relaxng/materials.rnc b/src/relaxng/materials.rnc index 21b36c07e1..1b5b7c705a 100644 --- a/src/relaxng/materials.rnc +++ b/src/relaxng/materials.rnc @@ -11,8 +11,7 @@ element materials { } & element nuclide { - (element name { xsd:string { maxLength = "7" } } | - attribute name { xsd:string { maxLength = "7" } }) & + (element name { xsd:string } | attribute name { xsd:string }) & (element xs { xsd:string { maxLength = "5" } } | attribute xs { xsd:string { maxLength = "5" } })? & (element scattering { ( "data" | "iso-in-lab" ) } | @@ -44,8 +43,7 @@ element materials { }* & element sab { - (element name { xsd:string { maxLength = "7" } } | - attribute name { xsd:string { maxLength = "7" } }) & + (element name { xsd:string } | attribute name { xsd:string }) & (element xs { xsd:string { maxLength = "5" } } | attribute xs { xsd:string { maxLength = "5" } })? }* diff --git a/src/relaxng/materials.rng b/src/relaxng/materials.rng index 6a4bc39645..e93f201655 100644 --- a/src/relaxng/materials.rng +++ b/src/relaxng/materials.rng @@ -57,26 +57,22 @@ - - 7 - + - - 7 - + - 3 + 5 - 3 + 5 @@ -123,25 +119,21 @@ - - 7 - + - - 7 - + - 3 + 5 - 3 + 5 @@ -167,12 +159,12 @@ - 3 + 5 - 3 + 5 @@ -219,26 +211,22 @@ - - 7 - + - - 7 - + - 3 + 5 - 3 + 5 @@ -252,7 +240,7 @@ - 3 + 5 diff --git a/src/sab_header.F90 b/src/sab_header.F90 index 695f735c05..3e9e18fab3 100644 --- a/src/sab_header.F90 +++ b/src/sab_header.F90 @@ -3,6 +3,12 @@ module sab_header use, intrinsic :: ISO_FORTRAN_ENV use constants + use distribution_univariate, only: Tabular + use hdf5, only: HID_T, HSIZE_T + use h5lt, only: h5ltpath_valid_f + use hdf5_interface, only: read_attribute, get_shape, open_group, close_group, & + open_dataset, read_dataset, close_dataset + use secondary_correlated, only: CorrelatedAngleEnergy use string, only: to_str implicit none @@ -27,10 +33,10 @@ module sab_header !=============================================================================== type SAlphaBeta - character(10) :: name ! name of table, e.g. lwtr.10t - real(8) :: awr ! weight of nucleus in neutron masses - real(8) :: kT ! temperature in MeV (k*T) - integer :: n_zaid ! Number of valid zaids + character(100) :: name ! name of table, e.g. lwtr.10t + real(8) :: awr ! weight of nucleus in neutron masses + real(8) :: kT ! temperature in MeV (k*T) + integer :: n_zaid ! Number of valid zaids integer, allocatable :: zaid(:) ! List of valid Z and A identifiers, e.g. 6012 ! threshold for S(a,b) treatment (usually ~4 eV) @@ -61,90 +67,247 @@ module sab_header real(8), allocatable :: elastic_P(:) real(8), allocatable :: elastic_mu(:,:) contains - procedure :: print => print_sab_table + procedure :: print => salphabeta_print + procedure :: from_hdf5 => salphabeta_from_hdf5 end type SAlphaBeta - contains +contains !=============================================================================== ! PRINT_SAB_TABLE displays information about a S(a,b) table containing data ! describing thermal scattering from bound materials such as hydrogen in water. !=============================================================================== - subroutine print_sab_table(this, unit) - class(SAlphaBeta), intent(in) :: this - integer, intent(in), optional :: unit + subroutine salphabeta_print(this, unit) + class(SAlphaBeta), intent(in) :: this + integer, intent(in), optional :: unit - integer :: size_sab ! memory used by S(a,b) table - integer :: unit_ ! unit to write to - integer :: i ! Loop counter for parsing through this % zaid - integer :: char_count ! Counter for the number of characters on a line + integer :: size_sab ! memory used by S(a,b) table + integer :: unit_ ! unit to write to + integer :: i ! Loop counter for parsing through this % zaid + integer :: char_count ! Counter for the number of characters on a line - ! set default unit for writing information - if (present(unit)) then - unit_ = unit + ! set default unit for writing information + if (present(unit)) then + unit_ = unit + else + unit_ = OUTPUT_UNIT + end if + + ! Basic S(a,b) table information + write(unit_,*) 'S(a,b) Table ' // trim(this % name) + write(unit_,'(A)',advance="no") ' zaids = ' + ! Initialize the counter based on the above string + char_count = 11 + do i = 1, this % n_zaid + ! Deal with a line thats too long + if (char_count >= 73) then ! 73 = 80 - (5 ZAID chars + 1 space + 1 comma) + ! End the line + write(unit_,*) "" + ! Add 11 leading blanks + write(unit_,'(A)', advance="no") " " + ! reset the counter to 11 + char_count = 11 + end if + if (i < this % n_zaid) then + ! Include a comma + write(unit_,'(A)',advance="no") trim(to_str(this % zaid(i))) // ", " + char_count = char_count + len(trim(to_str(this % zaid(i)))) + 2 else - unit_ = OUTPUT_UNIT + ! Don't include a comma, since we are all done + write(unit_,'(A)',advance="no") trim(to_str(this % zaid(i))) end if - ! Basic S(a,b) table information - write(unit_,*) 'S(a,b) Table ' // trim(this % name) - write(unit_,'(A)',advance="no") ' zaids = ' - ! Initialize the counter based on the above string - char_count = 11 - do i = 1, this % n_zaid - ! Deal with a line thats too long - if (char_count >= 73) then ! 73 = 80 - (5 ZAID chars + 1 space + 1 comma) - ! End the line - write(unit_,*) "" - ! Add 11 leading blanks - write(unit_,'(A)', advance="no") " " - ! reset the counter to 11 - char_count = 11 - end if - if (i < this % n_zaid) then - ! Include a comma - write(unit_,'(A)',advance="no") trim(to_str(this % zaid(i))) // ", " - char_count = char_count + len(trim(to_str(this % zaid(i)))) + 2 - else - ! Don't include a comma, since we are all done - write(unit_,'(A)',advance="no") trim(to_str(this % zaid(i))) - end if + end do + write(unit_,*) "" ! Move to next line + write(unit_,*) ' awr = ' // trim(to_str(this % awr)) + write(unit_,*) ' kT = ' // trim(to_str(this % kT)) - end do - write(unit_,*) "" ! Move to next line - write(unit_,*) ' awr = ' // trim(to_str(this % awr)) - write(unit_,*) ' kT = ' // trim(to_str(this % kT)) + ! Inelastic data + write(unit_,*) ' # of Incoming Energies (Inelastic) = ' // & + trim(to_str(this % n_inelastic_e_in)) + write(unit_,*) ' # of Outgoing Energies (Inelastic) = ' // & + trim(to_str(this % n_inelastic_e_out)) + write(unit_,*) ' # of Outgoing Angles (Inelastic) = ' // & + trim(to_str(this % n_inelastic_mu)) + write(unit_,*) ' Threshold for Inelastic = ' // & + trim(to_str(this % threshold_inelastic)) - ! Inelastic data - write(unit_,*) ' # of Incoming Energies (Inelastic) = ' // & - trim(to_str(this % n_inelastic_e_in)) - write(unit_,*) ' # of Outgoing Energies (Inelastic) = ' // & - trim(to_str(this % n_inelastic_e_out)) - write(unit_,*) ' # of Outgoing Angles (Inelastic) = ' // & - trim(to_str(this % n_inelastic_mu)) - write(unit_,*) ' Threshold for Inelastic = ' // & - trim(to_str(this % threshold_inelastic)) + ! Elastic data + if (this % n_elastic_e_in > 0) then + write(unit_,*) ' # of Incoming Energies (Elastic) = ' // & + trim(to_str(this % n_elastic_e_in)) + write(unit_,*) ' # of Outgoing Angles (Elastic) = ' // & + trim(to_str(this % n_elastic_mu)) + write(unit_,*) ' Threshold for Elastic = ' // & + trim(to_str(this % threshold_elastic)) + end if - ! Elastic data - if (this % n_elastic_e_in > 0) then - write(unit_,*) ' # of Incoming Energies (Elastic) = ' // & - trim(to_str(this % n_elastic_e_in)) - write(unit_,*) ' # of Outgoing Angles (Elastic) = ' // & - trim(to_str(this % n_elastic_mu)) - write(unit_,*) ' Threshold for Elastic = ' // & - trim(to_str(this % threshold_elastic)) + ! Determine memory used by S(a,b) table and write out + size_sab = 8 * (this % n_inelastic_e_in * (2 + this % n_inelastic_e_out * & + (1 + this % n_inelastic_mu)) + this % n_elastic_e_in * & + (2 + this % n_elastic_mu)) + write(unit_,*) ' Memory Used = ' // trim(to_str(size_sab)) // ' bytes' + + ! Blank line at end + write(unit_,*) + + end subroutine salphabeta_print + + subroutine salphabeta_from_hdf5(this, group_id) + class(SAlphaBeta), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i, j + integer :: n_energy, n_energy_out, n_mu + integer :: hdf5_err + integer(HID_T) :: elastic_group + integer(HID_T) :: inelastic_group + integer(HID_T) :: dset_id + integer(HSIZE_T) :: dims2(2) + integer(HSIZE_T) :: dims3(3) + real(8), allocatable :: temp(:,:) + character(20) :: type + logical :: exists + type(CorrelatedAngleEnergy) :: correlated_dist + + call read_attribute(this % awr, group_id, 'atomic_weight_ratio') + call read_attribute(this % kT, group_id, 'temperature') + call read_attribute(this % zaid, group_id, 'zaids') + this % n_zaid = size(this % zaid) + + ! Coherent elastic data + call h5ltpath_valid_f(group_id, 'elastic', .true., exists, hdf5_err) + if (exists) then + ! Read cross section data + elastic_group = open_group(group_id, 'elastic') + dset_id = open_dataset(elastic_group, 'xs') + call read_attribute(type, dset_id, 'type') + call get_shape(dset_id, dims2) + allocate(temp(dims2(1), dims2(2))) + call read_dataset(temp, dset_id) + call close_dataset(dset_id) + + ! Set cross section data and type + this % n_elastic_e_in = int(dims2(1), 4) + allocate(this % elastic_e_in(this % n_elastic_e_in)) + allocate(this % elastic_P(this % n_elastic_e_in)) + this % elastic_e_in(:) = temp(:, 1) + this % elastic_P(:) = temp(:, 2) + select case (type) + case ('tab1') + this % elastic_mode = SAB_ELASTIC_DISCRETE + case ('bragg') + this % elastic_mode = SAB_ELASTIC_EXACT + end select + deallocate(temp) + + ! Set elastic threshold + this % threshold_elastic = this % elastic_e_in(this % n_elastic_e_in) + + ! Read angle distribution + if (this % elastic_mode /= SAB_ELASTIC_EXACT) then + dset_id = open_dataset(elastic_group, 'mu_out') + call get_shape(dset_id, dims2) + this % n_elastic_mu = int(dims2(1), 4) + allocate(this % elastic_mu(dims2(1), dims2(2))) + call read_dataset(this % elastic_mu, dset_id) + call close_dataset(dset_id) end if - ! Determine memory used by S(a,b) table and write out - size_sab = 8 * (this % n_inelastic_e_in * (2 + this % n_inelastic_e_out * & - (1 + this % n_inelastic_mu)) + this % n_elastic_e_in * & - (2 + this % n_elastic_mu)) - write(unit_,*) ' Memory Used = ' // trim(to_str(size_sab)) // ' bytes' + call close_group(elastic_group) + end if - ! Blank line at end - write(unit_,*) + ! Inelastic data + call h5ltpath_valid_f(group_id, 'inelastic', .true., exists, hdf5_err) + if (exists) then + ! Read type of inelastic data + inelastic_group = open_group(group_id, 'inelastic') + call read_attribute(type, inelastic_group, 'secondary_mode') + select case (type) + case ('equal') + this % secondary_mode = SAB_SECONDARY_EQUAL + case ('skewed') + this % secondary_mode = SAB_SECONDARY_SKEWED + case ('continuous') + this % secondary_mode = SAB_SECONDARY_CONT + end select - end subroutine print_sab_table + ! Read cross section data + dset_id = open_dataset(inelastic_group, 'xs') + call get_shape(dset_id, dims2) + allocate(temp(dims2(1), dims2(2))) + call read_dataset(temp, dset_id) + call close_dataset(dset_id) + + ! Set cross section data + this % n_inelastic_e_in = int(dims2(1), 4) + allocate(this % inelastic_e_in(this % n_inelastic_e_in)) + allocate(this % inelastic_sigma(this % n_inelastic_e_in)) + this % inelastic_e_in(:) = temp(:, 1) + this % inelastic_sigma(:) = temp(:, 2) + deallocate(temp) + + ! Set inelastic threshold + this % threshold_inelastic = this % inelastic_e_in(this % n_inelastic_e_in) + + if (this % secondary_mode /= SAB_SECONDARY_CONT) then + ! Read energy distribution + dset_id = open_dataset(inelastic_group, 'energy_out') + call get_shape(dset_id, dims2) + this % n_inelastic_e_out = int(dims2(1), 4) + allocate(this % inelastic_e_out(dims2(1), dims2(2))) + call read_dataset(this % inelastic_e_out, dset_id) + call close_dataset(dset_id) + + ! Read angle distribution + dset_id = open_dataset(inelastic_group, 'mu_out') + call get_shape(dset_id, dims3) + this % n_inelastic_mu = int(dims3(1), 4) + allocate(this % inelastic_mu(dims3(1), dims3(2), dims3(3))) + call read_dataset(this % inelastic_mu, dset_id) + call close_dataset(dset_id) + else + ! Read correlated angle-energy distribution + call correlated_dist % from_hdf5(inelastic_group) + + ! Convert to S(a,b) native format + n_energy = size(correlated_dist % energy) + allocate(this % inelastic_data(n_energy)) + do i = 1, n_energy + associate (edist => correlated_dist % distribution(i)) + ! Get number of outgoing energies for incoming energy i + n_energy_out = size(edist % e_out) + this % inelastic_data(i) % n_e_out = n_energy_out + allocate(this % inelastic_data(i) % e_out(n_energy_out)) + allocate(this % inelastic_data(i) % e_out_pdf(n_energy_out)) + allocate(this % inelastic_data(i) % e_out_cdf(n_energy_out)) + + ! Copy outgoing energy distribution + this % inelastic_data(i) % e_out(:) = edist % e_out + this % inelastic_data(i) % e_out_pdf(:) = edist % p + this % inelastic_data(i) % e_out_cdf(:) = edist % c + + do j = 1, n_energy_out + select type (adist => edist % angle(j) % obj) + type is (Tabular) + ! On first pass, allocate space for angles + if (j == 1) then + n_mu = size(adist % x) + this % n_inelastic_mu = n_mu + allocate(this % inelastic_data(i) % mu(n_mu, n_energy_out)) + end if + + ! Copy outgoing angles + this % inelastic_data(i) % mu(:, j) = adist % x + end select + end do + end associate + end do + end if + + call close_group(inelastic_group) + end if + end subroutine salphabeta_from_hdf5 end module sab_header diff --git a/src/secondary_correlated.F90 b/src/secondary_correlated.F90 index b556d02dc5..0576b28f63 100644 --- a/src/secondary_correlated.F90 +++ b/src/secondary_correlated.F90 @@ -1,8 +1,11 @@ module secondary_correlated use angleenergy_header, only: AngleEnergy - use constants, only: ZERO, ONE, TWO, HISTOGRAM, LINEAR_LINEAR - use distribution_univariate, only: DistributionContainer + use constants, only: ZERO, ONE, HALF, TWO, HISTOGRAM, LINEAR_LINEAR + use distribution_univariate, only: DistributionContainer, Tabular + use hdf5, only: HID_T, HSIZE_T + use hdf5_interface, only: get_shape, read_attribute, open_dataset, & + read_dataset, close_dataset use random_lcg, only: prn use search, only: binary_search @@ -28,6 +31,7 @@ module secondary_correlated type(AngleEnergyTable), allocatable :: distribution(:) ! outgoing E/mu distributions contains procedure :: sample => correlated_sample + procedure :: from_hdf5 => correlated_from_hdf5 end type CorrelatedAngleEnergy contains @@ -145,4 +149,156 @@ contains end if end subroutine correlated_sample + subroutine correlated_from_hdf5(this, group_id) + class(CorrelatedAngleEnergy), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i, j, k + integer :: n_energy + integer :: m, n + integer :: offset_mu + integer :: interp_mu + integer(HID_T) :: dset_id + integer(HSIZE_T) :: dims(1), dims2(2) + integer, allocatable :: temp(:,:) + integer, allocatable :: offsets(:) + integer, allocatable :: interp(:) + integer, allocatable :: n_discrete(:) + real(8), allocatable :: eout(:,:) + real(8), allocatable :: mu(:,:) + + ! Open incoming energy dataset + dset_id = open_dataset(group_id, 'energy') + + ! Get interpolation parameters + call read_attribute(temp, dset_id, 'interpolation') + allocate(this%breakpoints(size(temp, 1))) + allocate(this%interpolation(size(temp, 1))) + this%breakpoints(:) = temp(:, 1) + this%interpolation(:) = temp(:, 2) + this%n_region = size(this%breakpoints) + deallocate(temp) + + ! Get incoming energies + call get_shape(dset_id, dims) + n_energy = int(dims(1), 4) + allocate(this%energy(n_energy)) + allocate(this%distribution(n_energy)) + call read_dataset(this%energy, dset_id) + call close_dataset(dset_id) + + ! Get outgoing energy distribution data + dset_id = open_dataset(group_id, 'energy_out') + call read_attribute(offsets, dset_id, 'offsets') + call read_attribute(interp, dset_id, 'interpolation') + call read_attribute(n_discrete, dset_id, 'n_discrete_lines') + call get_shape(dset_id, dims2) + allocate(eout(dims2(1), dims2(2))) + call read_dataset(eout, dset_id) + call close_dataset(dset_id) + + ! Get outgoing angle data + dset_id = open_dataset(group_id, 'mu') + call get_shape(dset_id, dims2) + allocate(mu(dims2(1), dims2(2))) + call read_dataset(mu, dset_id) + call close_dataset(dset_id) + + do i = 1, n_energy + ! Determine number of outgoing energies + j = offsets(i) + if (i < n_energy) then + n = offsets(i+1) - j + else + n = size(eout, 1) - j + end if + + associate (d => this % distribution(i)) + ! Assign interpolation scheme and number of discrete lines + d % interpolation = interp(i) + d % n_discrete = n_discrete(i) + + ! Allocate arrays for energies and PDF/CDF + allocate(d % e_out(n)) + allocate(d % p(n)) + allocate(d % c(n)) + allocate(d % angle(n)) + + ! Copy data + d % e_out(:) = eout(j+1:j+n, 1) + d % p(:) = eout(j+1:j+n, 2) + d % c(:) = eout(j+1:j+n, 3) + + ! To get answers that match ACE data, for now we still use the tabulated + ! CDF values that were passed through to the HDF5 library. At a later + ! time, we can remove the CDF values from the HDF5 library and + ! reconstruct them using the PDF + if (.false.) then + ! Calculate cumulative distribution function -- discrete portion + do k = 1, d % n_discrete + if (k == 1) then + d % c(k) = d % p(k) + else + d % c(k) = d % c(k-1) + d % p(k) + end if + end do + + ! Continuous portion + do k = d % n_discrete + 1, n + if (k == d % n_discrete + 1) then + d % c(k) = sum(d % p(1:d % n_discrete)) + else + if (d % interpolation == HISTOGRAM) then + d % c(k) = d % c(k-1) + d % p(k-1) * & + (d % e_out(k) - d % e_out(k-1)) + elseif (d % interpolation == LINEAR_LINEAR) then + d % c(k) = d % c(k-1) + HALF*(d % p(k-1) + d % p(k)) * & + (d % e_out(k) - d % e_out(k-1)) + end if + end if + end do + + ! Normalize density and distribution functions + d % p(:) = d % p(:)/d % c(n) + d % c(:) = d % c(:)/d % c(n) + end if + end associate + + do j = 1, n + allocate(Tabular :: this%distribution(i)%angle(j)%obj) + select type(mudist => this%distribution(i)%angle(j)%obj) + type is (Tabular) + ! Get interpolation scheme + interp_mu = nint(eout(offsets(i)+j, 4)) + + ! Determine offset and size of distribution + offset_mu = nint(eout(offsets(i)+j, 5)) + if (offsets(i) + j < size(eout, 1)) then + m = nint(eout(offsets(i)+j+1, 5)) - offset_mu + else + m = size(mu, 1) - offset_mu + end if + + ! To get answers that match ACE data, for now we still use the tabulated + ! CDF values that were passed through to the HDF5 library. At a later + ! time, we can remove the CDF values from the HDF5 library and + ! reconstruct them using the PDF + if (.true.) then + mudist % interpolation = interp_mu + allocate(mudist % x(m)) + allocate(mudist % p(m)) + allocate(mudist % c(m)) + mudist % x(:) = mu(offset_mu+1:offset_mu+m, 1) + mudist % p(:) = mu(offset_mu+1:offset_mu+m, 2) + mudist % c(:) = mu(offset_mu+1:offset_mu+m, 3) + else + ! Initialize tabular distribution + call mudist % initialize(mu(offset_mu+1:offset_mu+m, 1), & + mu(offset_mu+1:offset_mu+m, 2), interp_mu) + end if + end select + end do + end do + end subroutine correlated_from_hdf5 + end module secondary_correlated diff --git a/src/secondary_kalbach.F90 b/src/secondary_kalbach.F90 index 668917d62a..920d17869c 100644 --- a/src/secondary_kalbach.F90 +++ b/src/secondary_kalbach.F90 @@ -1,7 +1,10 @@ module secondary_kalbach use angleenergy_header, only: AngleEnergy - use constants, only: ZERO, ONE, TWO, HISTOGRAM, LINEAR_LINEAR + use constants, only: ZERO, HALF, ONE, TWO, HISTOGRAM, LINEAR_LINEAR + use hdf5, only: HID_T, HSIZE_T + use hdf5_interface, only: read_attribute, read_dataset, open_dataset, & + close_dataset, get_shape use random_lcg, only: prn use search, only: binary_search @@ -29,6 +32,7 @@ module secondary_kalbach type(KalbachMannTable), allocatable :: distribution(:) ! outgoing E/mu parameters contains procedure :: sample => kalbachmann_sample + procedure :: from_hdf5 => kalbachmann_from_hdf5 end type KalbachMann contains @@ -161,4 +165,116 @@ contains end subroutine kalbachmann_sample + subroutine kalbachmann_from_hdf5(this, group_id) + class(KalbachMann), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i, j, k + integer :: n + integer :: n_energy + integer(HID_T) :: dset_id + integer(HSIZE_T) :: dims(1), dims2(2) + integer, allocatable :: temp(:,:) + integer, allocatable :: offsets(:) + integer, allocatable :: interp(:) + integer, allocatable :: n_discrete(:) + real(8), allocatable :: eout(:,:) + + ! Open incoming energy dataset + dset_id = open_dataset(group_id, 'energy') + + ! Get interpolation parameters + call read_attribute(temp, dset_id, 'interpolation') + allocate(this%breakpoints(size(temp, 1))) + allocate(this%interpolation(size(temp, 1))) + this%breakpoints(:) = temp(:, 1) + this%interpolation(:) = temp(:, 2) + this%n_region = size(this%breakpoints) + + ! Get incoming energies + call get_shape(dset_id, dims) + n_energy = int(dims(1), 4) + allocate(this%energy(n_energy)) + allocate(this%distribution(n_energy)) + call read_dataset(this%energy, dset_id) + call close_dataset(dset_id) + + ! Get outgoing energy distribution data + dset_id = open_dataset(group_id, 'distribution') + call read_attribute(offsets, dset_id, 'offsets') + call read_attribute(interp, dset_id, 'interpolation') + call read_attribute(n_discrete, dset_id, 'n_discrete_lines') + call get_shape(dset_id, dims2) + allocate(eout(dims2(1), dims2(2))) + call read_dataset(eout, dset_id) + call close_dataset(dset_id) + + do i = 1, n_energy + ! Determine number of outgoing energies + j = offsets(i) + if (i < n_energy) then + n = offsets(i+1) - j + else + n = size(eout, 1) - j + end if + + associate (d => this%distribution(i)) + ! Assign interpolation scheme and number of discrete lines + d % interpolation = interp(i) + d % n_discrete = n_discrete(i) + + ! Allocate arrays for energies and PDF/CDF + allocate(d % e_out(n)) + allocate(d % p(n)) + allocate(d % c(n)) + allocate(d % r(n)) + allocate(d % a(n)) + + ! Copy data + d % e_out(:) = eout(j+1:j+n, 1) + d % p(:) = eout(j+1:j+n, 2) + d % c(:) = eout(j+1:j+n, 3) + d % r(:) = eout(j+1:j+n, 4) + d % a(:) = eout(j+1:j+n, 5) + + + ! To get answers that match ACE data, for now we still use the tabulated + ! CDF values that were passed through to the HDF5 library. At a later + ! time, we can remove the CDF values from the HDF5 library and + ! reconstruct them using the PDF + if (.false.) then + ! Calculate cumulative distribution function -- discrete portion + do k = 1, d % n_discrete + if (k == 1) then + d % c(k) = d % p(k) + else + d % c(k) = d % c(k-1) + d % p(k) + end if + end do + + ! Continuous portion + do k = d % n_discrete + 1, n + if (k == d % n_discrete + 1) then + d % c(k) = sum(d % p(1:d % n_discrete)) + else + if (d % interpolation == HISTOGRAM) then + d % c(k) = d % c(k-1) + d % p(k-1) * & + (d % e_out(k) - d % e_out(k-1)) + elseif (d % interpolation == LINEAR_LINEAR) then + d % c(k) = d % c(k-1) + HALF*(d % p(k-1) + d % p(k)) * & + (d % e_out(k) - d % e_out(k-1)) + end if + end if + end do + + ! Normalize density and distribution functions + d % p(:) = d % p(:)/d % c(n) + d % c(:) = d % c(:)/d % c(n) + end if + end associate + + j = j + n + end do + end subroutine kalbachmann_from_hdf5 + end module secondary_kalbach diff --git a/src/secondary_nbody.F90 b/src/secondary_nbody.F90 index 71cae6fa2a..d45c598793 100644 --- a/src/secondary_nbody.F90 +++ b/src/secondary_nbody.F90 @@ -2,6 +2,8 @@ module secondary_nbody use angleenergy_header, only: AngleEnergy use constants, only: ONE, TWO, PI + use hdf5, only: HID_T + use hdf5_interface, only: read_attribute use math, only: maxwell_spectrum use random_lcg, only: prn @@ -18,6 +20,7 @@ module secondary_nbody real(8) :: Q contains procedure :: sample => nbody_sample + procedure :: from_hdf5 => nbody_from_hdf5 end type NBodyPhaseSpace contains @@ -67,4 +70,14 @@ contains E_out = E_max * v end subroutine nbody_sample + subroutine nbody_from_hdf5(this, group_id) + class(NBodyPhaseSpace), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + call read_attribute(this%mass_ratio, group_id, 'total_mass') + call read_attribute(this%n_bodies, group_id, 'n_particles') + call read_attribute(this%A, group_id, 'atomic_weight_ratio') + call read_attribute(this%Q, group_id, 'q_value') + end subroutine nbody_from_hdf5 + end module secondary_nbody diff --git a/src/secondary_uncorrelated.F90 b/src/secondary_uncorrelated.F90 index 7bc8fa13d9..3158913cc6 100644 --- a/src/secondary_uncorrelated.F90 +++ b/src/secondary_uncorrelated.F90 @@ -2,8 +2,13 @@ module secondary_uncorrelated use angle_distribution, only: AngleDistribution use angleenergy_header, only: AngleEnergy - use constants, only: ONE, TWO - use energy_distribution, only: EnergyDistribution + use constants, only: ONE, TWO, MAX_WORD_LEN + use energy_distribution, only: EnergyDistribution, LevelInelastic, & + ContinuousTabular, MaxwellEnergy, Evaporation, WattEnergy, DiscretePhoton + use error, only: warning + use h5lt, only: h5ltpath_valid_f + use hdf5, only: HID_T + use hdf5_interface, only: read_attribute, open_group, close_group use random_lcg, only: prn !=============================================================================== @@ -18,6 +23,7 @@ module secondary_uncorrelated class(EnergyDistribution), allocatable :: energy contains procedure :: sample => uncorrelated_sample + procedure :: from_hdf5 => uncorrelated_from_hdf5 end type UncorrelatedAngleEnergy contains @@ -45,4 +51,55 @@ contains E_out = this%energy%sample(E_in) end subroutine uncorrelated_sample + subroutine uncorrelated_from_hdf5(this, group_id) + class(UncorrelatedAngleEnergy), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + logical :: exists + integer :: hdf5_err + integer(HID_T) :: energy_group + integer(HID_T) :: angle_group + character(MAX_WORD_LEN) :: type + + ! Check if energy group is present + call h5ltpath_valid_f(group_id, 'angle', .true., exists, hdf5_err) + + if (exists) then + angle_group = open_group(group_id, 'angle') + call this%angle%from_hdf5(angle_group) + call close_group(angle_group) + end if + + ! Check if energy group is present + call h5ltpath_valid_f(group_id, 'energy', .true., exists, hdf5_err) + + if (exists) then + energy_group = open_group(group_id, 'energy') + call read_attribute(type, energy_group, 'type') + select case (type) + case ('discrete_photon') + allocate(DiscretePhoton :: this%energy) + case ('level') + allocate(LevelInelastic :: this%energy) + case ('continuous') + allocate(ContinuousTabular :: this%energy) + case ('maxwell') + allocate(MaxwellEnergy :: this%energy) + case ('evaporation') + allocate(Evaporation :: this%energy) + case ('watt') + allocate(WattEnergy :: this%energy) + case default + call warning("Energy distribution type '" // trim(type) & + // "' not implemented.") + end select + + if (allocated(this % energy)) then + call this%energy%from_hdf5(energy_group) + end if + + call close_group(energy_group) + end if + end subroutine uncorrelated_from_hdf5 + end module secondary_uncorrelated diff --git a/src/state_point.F90 b/src/state_point.F90 index f379501343..87ef4ead77 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -43,7 +43,7 @@ contains subroutine write_state_point() integer :: i, j, k - integer :: i_list, i_xs + integer :: i_xs integer :: n_order ! loop index for moment orders integer :: nm_order ! loop index for Ynm moment orders integer, allocatable :: id_array(:) @@ -295,20 +295,11 @@ contains allocate(str_array(tally % n_nuclide_bins)) NUCLIDE_LOOP: do j = 1, tally % n_nuclide_bins if (tally % nuclide_bins(j) > 0) then - ! Get index in cross section listings for this nuclide - if (run_CE) then - i_list = nuclides(tally % nuclide_bins(j)) % listing - else - i_list = nuclides_MG(tally % nuclide_bins(j)) % obj % listing - end if - - ! Determine position of . in alias string (e.g. "U-235.71c"). If - ! no . is found, just use the entire string. - i_xs = index(xs_listings(i_list) % alias, '.') + i_xs = index(nuclides(tally % nuclide_bins(j)) % name, '.') if (i_xs > 0) then - str_array(j) = xs_listings(i_list) % alias(1:i_xs - 1) + str_array(j) = nuclides(tally % nuclide_bins(j)) % name(1 : i_xs-1) else - str_array(j) = xs_listings(i_list) % alias + str_array(j) = nuclides(tally % nuclide_bins(j)) % name end if else str_array(j) = 'total' diff --git a/src/stl_vector.F90 b/src/stl_vector.F90 index 8038628fb6..c7f2246ff8 100644 --- a/src/stl_vector.F90 +++ b/src/stl_vector.F90 @@ -38,6 +38,7 @@ module stl_vector implicit none private + integer, parameter :: VECTOR_CHAR_LEN = 255 real(8), parameter :: GROWTH_FACTOR = 1.5 type, public :: VectorInt @@ -76,6 +77,24 @@ module stl_vector procedure :: size => size_real end type VectorReal + type, public :: VectorChar + integer, private :: size_ = 0 + integer, private :: capacity_ = 0 + character(VECTOR_CHAR_LEN), allocatable :: data(:) + contains + procedure :: capacity => capacity_char + procedure :: clear => clear_char + generic :: initialize => & + initialize_fill_char + procedure, private :: initialize_fill_char + procedure :: pop_back => pop_back_char + procedure :: push_back => push_back_char + procedure :: reserve => reserve_char + procedure :: resize => resize_char + procedure :: shrink_to_fit => shrink_to_fit_char + procedure :: size => size_char + end type VectorChar + contains !=============================================================================== @@ -348,4 +367,143 @@ contains size = this%size_ end function size_real +!=============================================================================== +! Implementation of VectorChar +!=============================================================================== + + pure function capacity_char(this) result(capacity) + class(VectorChar), intent(in) :: this + integer :: capacity + + capacity = this%capacity_ + end function capacity_char + + subroutine clear_char(this) + class(VectorChar), intent(inout) :: this + + ! Since char is trivially destructible, we only need to set size to zero and + ! can leave capacity as is + this%size_ = 0 + end subroutine clear_char + + subroutine initialize_fill_char(this, n, val) + class(VectorChar), intent(inout) :: this + integer, intent(in) :: n + character(*), optional, intent(in) :: val + + integer :: i + character(VECTOR_CHAR_LEN) :: val_ + + ! If no value given, fill the vector with empty strings + if (present(val)) then + val_ = val + else + val_ = '' + end if + + if (allocated(this%data)) deallocate(this%data) + + allocate(this%data(n)) + do i = 1, n + this%data(i) = val_ + end do + this%size_ = n + this%capacity_ = n + end subroutine initialize_fill_char + + subroutine pop_back_char(this) + class(VectorChar), intent(inout) :: this + if (this%size_ > 0) this%size_ = this%size_ - 1 + end subroutine pop_back_char + + subroutine push_back_char(this, val) + class(VectorChar), intent(inout) :: this + character(*), intent(in) :: val + + integer :: capacity + character(VECTOR_CHAR_LEN), allocatable :: data(:) + + if (this%capacity_ == this%size_) then + ! Create new data array that is GROWTH_FACTOR larger. Note that + if (this%capacity_ == 0) then + capacity = 8 + else + capacity = int(GROWTH_FACTOR*this%capacity_) + end if + allocate(data(capacity)) + + ! Copy existing elements + if (this%size_ > 0) data(1:this%size_) = this%data + + ! Move allocation + call move_alloc(FROM=data, TO=this%data) + this%capacity_ = capacity + end if + + ! Increase size of vector by one and set new element + this%size_ = this%size_ + 1 + this%data(this%size_) = val + end subroutine push_back_char + + subroutine reserve_char(this, n) + class(VectorChar), intent(inout) :: this + integer, intent(in) :: n + + character(VECTOR_CHAR_LEN), allocatable :: data(:) + + if (n > this%capacity_) then + allocate(data(n)) + + ! Copy existing elements + if (this%size_ > 0) data(1:this%size_) = this%data(1:this%size_) + + ! Move allocation + call move_alloc(FROM=data, TO=this%data) + this%capacity_ = n + end if + end subroutine reserve_char + + subroutine resize_char(this, n, val) + class(VectorChar), intent(inout) :: this + integer, intent(in) :: n + character(*), intent(in), optional :: val + + if (n < this%size_) then + this%size_ = n + elseif (n > this%size_) then + ! If requested size is greater than capacity, first reserve that many + ! elements + if (n > this%capacity_) call this%reserve(n) + + ! Fill added elements with specified value and increase size + if (present(val)) this%data(this%size_ + 1 : n) = val + this%size_ = n + end if + + end subroutine resize_char + + subroutine shrink_to_fit_char(this) + class(VectorChar), intent(inout) :: this + + character(VECTOR_CHAR_LEN), allocatable :: data(:) + + if (this%capacity_ > this%size_) then + if (this%size_ > 0) then + allocate(data(this%size_)) + data(:) = this%data(1:this%size_) + call move_alloc(FROM=data, TO=this%data) + this%capacity_ = this%size_ + else + if (allocated(this%data)) deallocate(this%data) + end if + end if + end subroutine shrink_to_fit_char + + pure function size_char(this) result(size) + class(VectorChar), intent(in) :: this + integer :: size + + size = this%size_ + end function size_char + end module stl_vector diff --git a/src/summary.F90 b/src/summary.F90 index 2ec96042c1..9ad9aa23c0 100644 --- a/src/summary.F90 +++ b/src/summary.F90 @@ -128,11 +128,11 @@ contains allocate(zaids(n_nuclides_total)) do i = 1, n_nuclides_total if (run_CE) then - nucnames(i) = xs_listings(nuclides(i) % listing) % alias + nucnames(i) = nuclides(i) % name awrs(i) = nuclides(i) % awr zaids(i) = nuclides(i) % zaid else - nucnames(i) = xs_listings(nuclides_MG(i) % obj % listing) % alias + nucnames(i) = nuclides_MG(i) % obj % name awrs(i) = nuclides_MG(i) % obj % awr zaids(i) = nuclides_MG(i) % obj % zaid end if @@ -508,8 +508,7 @@ contains integer :: i integer :: j - integer :: i_list - character(12), allocatable :: nucnames(:) + character(20), allocatable :: nucnames(:) integer(HID_T) :: materials_group integer(HID_T) :: material_group type(Material), pointer :: m @@ -540,11 +539,10 @@ contains allocate(nucnames(m%n_nuclides)) do j = 1, m%n_nuclides if (run_CE) then - i_list = nuclides(m%nuclide(j))%listing + nucnames(j) = nuclides(m%nuclide(j))%name else - i_list = nuclides_MG(m%nuclide(j))%obj%listing + nucnames(j) = nuclides_MG(m%nuclide(j))%obj%name end if - nucnames(j) = xs_listings(i_list)%alias end do ! Write temporary array to 'nuclides' @@ -575,7 +573,7 @@ contains integer(HID_T), intent(in) :: file_id integer :: i, j, k - integer :: i_list, i_xs + integer :: i_xs integer :: n_order ! loop index for moment orders integer :: nm_order ! loop index for Ynm moment orders integer(HID_T) :: tallies_group @@ -705,16 +703,11 @@ contains allocate(str_array(t%n_nuclide_bins)) NUCLIDE_LOOP: do j = 1, t%n_nuclide_bins if (t%nuclide_bins(j) > 0) then - if (run_CE) then - i_list = nuclides(t % nuclide_bins(j)) % listing - else - i_list = nuclides_MG(t % nuclide_bins(j)) % obj % listing - end if - i_xs = index(xs_listings(i_list)%alias, '.') + i_xs = index(nuclides(t%nuclide_bins(j))%name, '.') if (i_xs > 0) then - str_array(j) = xs_listings(i_list)%alias(1:i_xs - 1) + str_array(j) = nuclides(t%nuclide_bins(j))%name(1 : i_xs-1) else - str_array(j) = xs_listings(i_list)%alias + str_array(j) = nuclides(t%nuclide_bins(j))%name end if else str_array(j) = 'total' diff --git a/src/urr_header.F90 b/src/urr_header.F90 index 96e182d2e3..cc41d43ccc 100644 --- a/src/urr_header.F90 +++ b/src/urr_header.F90 @@ -1,5 +1,9 @@ module urr_header + use hdf5, only: HID_T, HSIZE_T + use hdf5_interface, only: read_attribute, open_dataset, read_dataset, & + close_dataset, get_shape + implicit none !=============================================================================== @@ -15,6 +19,55 @@ module urr_header logical :: multiply_smooth ! multiply by smooth cross section? real(8), allocatable :: energy(:) ! incident energies real(8), allocatable :: prob(:,:,:) ! actual probabibility tables + contains + procedure :: from_hdf5 => urr_from_hdf5 end type UrrData +contains + + subroutine urr_from_hdf5(this, group_id) + class(UrrData), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + + integer :: i, j, k + integer(HID_T) :: energy + integer(HID_T) :: table + integer(HSIZE_T) :: dims(1) + integer(HSIZE_T) :: dims3(3) + real(8), allocatable :: temp(:,:,:) + + ! Read interpolation and other flags + call read_attribute(this % interp, group_id, 'interpolation') + call read_attribute(this % inelastic_flag, group_id, 'inelastic') + call read_attribute(this % absorption_flag, group_id, 'absorption') + call read_attribute(i, group_id, 'multiply_smooth') + this % multiply_smooth = (i == 1) + + ! Read energies at which tables exist + energy = open_dataset(group_id, 'energy') + call get_shape(energy, dims) + this % n_energy = int(dims(1), 4) + allocate(this % energy(this % n_energy)) + call read_dataset(this % energy, energy) + call close_dataset(energy) + + ! Read URR tables + table = open_dataset(group_id, 'table') + call get_shape(table, dims3) + this % n_prob = int(dims3(1), 4) + allocate(temp(this % n_prob, 6, this % n_energy)) + call read_dataset(temp, table) + call close_dataset(table) + + ! Swap first and last indices + allocate(this % prob(this % n_energy, 6, this % n_prob)) + do i = 1, this % n_energy + do j = 1, 6 + do k = 1, this % n_prob + this % prob(i, j, k) = temp(k, j, i) + end do + end do + end do + end subroutine urr_from_hdf5 + end module urr_header diff --git a/tests/input_set.py b/tests/input_set.py index 13c0e99a72..827484022d 100644 --- a/tests/input_set.py +++ b/tests/input_set.py @@ -24,250 +24,250 @@ class InputSet(object): # Define materials. fuel = openmc.Material(name='Fuel', material_id=1) fuel.set_density('g/cm3', 10.062) - fuel.add_nuclide("U-234", 4.9476e-6) - fuel.add_nuclide("U-235", 4.8218e-4) - fuel.add_nuclide("U-236", 9.0402e-5) - fuel.add_nuclide("U-238", 2.1504e-2) - fuel.add_nuclide("Np-237", 7.3733e-6) - fuel.add_nuclide("Pu-238", 1.5148e-6) - fuel.add_nuclide("Pu-239", 1.3955e-4) - fuel.add_nuclide("Pu-240", 3.4405e-5) - fuel.add_nuclide("Pu-241", 2.1439e-5) - fuel.add_nuclide("Pu-242", 3.7422e-6) - fuel.add_nuclide("Am-241", 4.5041e-7) - fuel.add_nuclide("Am-242m", 9.2301e-9) - fuel.add_nuclide("Am-243", 4.7878e-7) - fuel.add_nuclide("Cm-242", 1.0485e-7) - fuel.add_nuclide("Cm-243", 1.4268e-9) - fuel.add_nuclide("Cm-244", 8.8756e-8) - fuel.add_nuclide("Cm-245", 3.5285e-9) - fuel.add_nuclide("Mo-95", 2.6497e-5) - fuel.add_nuclide("Tc-99", 3.2772e-5) - fuel.add_nuclide("Ru-101", 3.0742e-5) - fuel.add_nuclide("Ru-103", 2.3505e-6) - fuel.add_nuclide("Ag-109", 2.0009e-6) - fuel.add_nuclide("Xe-135", 1.0801e-8) - fuel.add_nuclide("Cs-133", 3.4612e-5) - fuel.add_nuclide("Nd-143", 2.6078e-5) - fuel.add_nuclide("Nd-145", 1.9898e-5) - fuel.add_nuclide("Sm-147", 1.6128e-6) - fuel.add_nuclide("Sm-149", 1.1627e-7) - fuel.add_nuclide("Sm-150", 7.1727e-6) - fuel.add_nuclide("Sm-151", 5.4947e-7) - fuel.add_nuclide("Sm-152", 3.0221e-6) - fuel.add_nuclide("Eu-153", 2.6209e-6) - fuel.add_nuclide("Gd-155", 1.5369e-9) - fuel.add_nuclide("O-16", 4.5737e-2) + fuel.add_nuclide("U234", 4.9476e-6) + fuel.add_nuclide("U235", 4.8218e-4) + fuel.add_nuclide("U236", 9.0402e-5) + fuel.add_nuclide("U238", 2.1504e-2) + fuel.add_nuclide("Np237", 7.3733e-6) + fuel.add_nuclide("Pu238", 1.5148e-6) + fuel.add_nuclide("Pu239", 1.3955e-4) + fuel.add_nuclide("Pu240", 3.4405e-5) + fuel.add_nuclide("Pu241", 2.1439e-5) + fuel.add_nuclide("Pu242", 3.7422e-6) + fuel.add_nuclide("Am241", 4.5041e-7) + fuel.add_nuclide("Am242_m1", 9.2301e-9) + fuel.add_nuclide("Am243", 4.7878e-7) + fuel.add_nuclide("Cm242", 1.0485e-7) + fuel.add_nuclide("Cm243", 1.4268e-9) + fuel.add_nuclide("Cm244", 8.8756e-8) + fuel.add_nuclide("Cm245", 3.5285e-9) + fuel.add_nuclide("Mo95", 2.6497e-5) + fuel.add_nuclide("Tc99", 3.2772e-5) + fuel.add_nuclide("Ru101", 3.0742e-5) + fuel.add_nuclide("Ru103", 2.3505e-6) + fuel.add_nuclide("Ag109", 2.0009e-6) + fuel.add_nuclide("Xe135", 1.0801e-8) + fuel.add_nuclide("Cs133", 3.4612e-5) + fuel.add_nuclide("Nd143", 2.6078e-5) + fuel.add_nuclide("Nd145", 1.9898e-5) + fuel.add_nuclide("Sm147", 1.6128e-6) + fuel.add_nuclide("Sm149", 1.1627e-7) + fuel.add_nuclide("Sm150", 7.1727e-6) + fuel.add_nuclide("Sm151", 5.4947e-7) + fuel.add_nuclide("Sm152", 3.0221e-6) + fuel.add_nuclide("Eu153", 2.6209e-6) + fuel.add_nuclide("Gd155", 1.5369e-9) + fuel.add_nuclide("O16", 4.5737e-2) clad = openmc.Material(name='Cladding', material_id=2) clad.set_density('g/cm3', 5.77) - clad.add_nuclide("Zr-90", 0.5145) - clad.add_nuclide("Zr-91", 0.1122) - clad.add_nuclide("Zr-92", 0.1715) - clad.add_nuclide("Zr-94", 0.1738) - clad.add_nuclide("Zr-96", 0.0280) + clad.add_nuclide("Zr90", 0.5145) + clad.add_nuclide("Zr91", 0.1122) + clad.add_nuclide("Zr92", 0.1715) + clad.add_nuclide("Zr94", 0.1738) + clad.add_nuclide("Zr96", 0.0280) cold_water = openmc.Material(name='Cold borated water', material_id=3) cold_water.set_density('atom/b-cm', 0.07416) - cold_water.add_nuclide("H-1", 2.0) - cold_water.add_nuclide("O-16", 1.0) - cold_water.add_nuclide("B-10", 6.490e-4) - cold_water.add_nuclide("B-11", 2.689e-3) - cold_water.add_s_alpha_beta('HH2O', '71t') + cold_water.add_nuclide("H1", 2.0) + cold_water.add_nuclide("O16", 1.0) + cold_water.add_nuclide("B10", 6.490e-4) + cold_water.add_nuclide("B11", 2.689e-3) + cold_water.add_s_alpha_beta('c_H_in_H2O', '71t') hot_water = openmc.Material(name='Hot borated water', material_id=4) hot_water.set_density('atom/b-cm', 0.06614) - hot_water.add_nuclide("H-1", 2.0) - hot_water.add_nuclide("O-16", 1.0) - hot_water.add_nuclide("B-10", 6.490e-4) - hot_water.add_nuclide("B-11", 2.689e-3) - hot_water.add_s_alpha_beta('HH2O', '71t') + hot_water.add_nuclide("H1", 2.0) + hot_water.add_nuclide("O16", 1.0) + hot_water.add_nuclide("B10", 6.490e-4) + hot_water.add_nuclide("B11", 2.689e-3) + hot_water.add_s_alpha_beta('c_H_in_H2O', '71t') rpv_steel = openmc.Material(name='Reactor pressure vessel steel', material_id=5) rpv_steel.set_density('g/cm3', 7.9) - rpv_steel.add_nuclide("Fe-54", 0.05437098, 'wo') - rpv_steel.add_nuclide("Fe-56", 0.88500663, 'wo') - rpv_steel.add_nuclide("Fe-57", 0.0208008, 'wo') - rpv_steel.add_nuclide("Fe-58", 0.00282159, 'wo') - rpv_steel.add_nuclide("Ni-58", 0.0067198, 'wo') - rpv_steel.add_nuclide("Ni-60", 0.0026776, 'wo') - rpv_steel.add_nuclide("Ni-61", 0.0001183, 'wo') - rpv_steel.add_nuclide("Ni-62", 0.0003835, 'wo') - rpv_steel.add_nuclide("Ni-64", 0.0001008, 'wo') - rpv_steel.add_nuclide("Mn-55", 0.01, 'wo') - rpv_steel.add_nuclide("Mo-92", 0.000849, 'wo') - rpv_steel.add_nuclide("Mo-94", 0.0005418, 'wo') - rpv_steel.add_nuclide("Mo-95", 0.0009438, 'wo') - rpv_steel.add_nuclide("Mo-96", 0.0010002, 'wo') - rpv_steel.add_nuclide("Mo-97", 0.0005796, 'wo') - rpv_steel.add_nuclide("Mo-98", 0.0014814, 'wo') - rpv_steel.add_nuclide("Mo-100", 0.0006042, 'wo') - rpv_steel.add_nuclide("Si-28", 0.00367464, 'wo') - rpv_steel.add_nuclide("Si-29", 0.00019336, 'wo') - rpv_steel.add_nuclide("Si-30", 0.000132, 'wo') - rpv_steel.add_nuclide("Cr-50", 0.00010435, 'wo') - rpv_steel.add_nuclide("Cr-52", 0.002092475, 'wo') - rpv_steel.add_nuclide("Cr-53", 0.00024185, 'wo') - rpv_steel.add_nuclide("Cr-54", 6.1325e-05, 'wo') - rpv_steel.add_nuclide("C-Nat", 0.0025, 'wo') - rpv_steel.add_nuclide("Cu-63", 0.0013696, 'wo') - rpv_steel.add_nuclide("Cu-65", 0.0006304, 'wo') + rpv_steel.add_nuclide("Fe54", 0.05437098, 'wo') + rpv_steel.add_nuclide("Fe56", 0.88500663, 'wo') + rpv_steel.add_nuclide("Fe57", 0.0208008, 'wo') + rpv_steel.add_nuclide("Fe58", 0.00282159, 'wo') + rpv_steel.add_nuclide("Ni58", 0.0067198, 'wo') + rpv_steel.add_nuclide("Ni60", 0.0026776, 'wo') + rpv_steel.add_nuclide("Ni61", 0.0001183, 'wo') + rpv_steel.add_nuclide("Ni62", 0.0003835, 'wo') + rpv_steel.add_nuclide("Ni64", 0.0001008, 'wo') + rpv_steel.add_nuclide("Mn55", 0.01, 'wo') + rpv_steel.add_nuclide("Mo92", 0.000849, 'wo') + rpv_steel.add_nuclide("Mo94", 0.0005418, 'wo') + rpv_steel.add_nuclide("Mo95", 0.0009438, 'wo') + rpv_steel.add_nuclide("Mo96", 0.0010002, 'wo') + rpv_steel.add_nuclide("Mo97", 0.0005796, 'wo') + rpv_steel.add_nuclide("Mo98", 0.0014814, 'wo') + rpv_steel.add_nuclide("Mo100", 0.0006042, 'wo') + rpv_steel.add_nuclide("Si28", 0.00367464, 'wo') + rpv_steel.add_nuclide("Si29", 0.00019336, 'wo') + rpv_steel.add_nuclide("Si30", 0.000132, 'wo') + rpv_steel.add_nuclide("Cr50", 0.00010435, 'wo') + rpv_steel.add_nuclide("Cr52", 0.002092475, 'wo') + rpv_steel.add_nuclide("Cr53", 0.00024185, 'wo') + rpv_steel.add_nuclide("Cr54", 6.1325e-05, 'wo') + rpv_steel.add_nuclide("C0", 0.0025, 'wo') + rpv_steel.add_nuclide("Cu63", 0.0013696, 'wo') + rpv_steel.add_nuclide("Cu65", 0.0006304, 'wo') lower_rad_ref = openmc.Material(name='Lower radial reflector', material_id=6) lower_rad_ref.set_density('g/cm3', 4.32) - lower_rad_ref.add_nuclide("H-1", 0.0095661, 'wo') - lower_rad_ref.add_nuclide("O-16", 0.0759107, 'wo') - lower_rad_ref.add_nuclide("B-10", 3.08409e-5, 'wo') - lower_rad_ref.add_nuclide("B-11", 1.40499e-4, 'wo') - lower_rad_ref.add_nuclide("Fe-54", 0.035620772088, 'wo') - lower_rad_ref.add_nuclide("Fe-56", 0.579805982228, 'wo') - lower_rad_ref.add_nuclide("Fe-57", 0.01362750048, 'wo') - lower_rad_ref.add_nuclide("Fe-58", 0.001848545204, 'wo') - lower_rad_ref.add_nuclide("Ni-58", 0.055298376566, 'wo') - lower_rad_ref.add_nuclide("Ni-60", 0.022034425592, 'wo') - lower_rad_ref.add_nuclide("Ni-61", 0.000973510811, 'wo') - lower_rad_ref.add_nuclide("Ni-62", 0.003155886695, 'wo') - lower_rad_ref.add_nuclide("Ni-64", 0.000829500336, 'wo') - lower_rad_ref.add_nuclide("Mn-55", 0.0182870, 'wo') - lower_rad_ref.add_nuclide("Si-28", 0.00839976771, 'wo') - lower_rad_ref.add_nuclide("Si-29", 0.00044199679, 'wo') - lower_rad_ref.add_nuclide("Si-30", 0.0003017355, 'wo') - lower_rad_ref.add_nuclide("Cr-50", 0.007251360806, 'wo') - lower_rad_ref.add_nuclide("Cr-52", 0.145407678031, 'wo') - lower_rad_ref.add_nuclide("Cr-53", 0.016806340306, 'wo') - lower_rad_ref.add_nuclide("Cr-54", 0.004261520857, 'wo') - lower_rad_ref.add_s_alpha_beta('HH2O', '71t') + lower_rad_ref.add_nuclide("H1", 0.0095661, 'wo') + lower_rad_ref.add_nuclide("O16", 0.0759107, 'wo') + lower_rad_ref.add_nuclide("B10", 3.08409e-5, 'wo') + lower_rad_ref.add_nuclide("B11", 1.40499e-4, 'wo') + lower_rad_ref.add_nuclide("Fe54", 0.035620772088, 'wo') + lower_rad_ref.add_nuclide("Fe56", 0.579805982228, 'wo') + lower_rad_ref.add_nuclide("Fe57", 0.01362750048, 'wo') + lower_rad_ref.add_nuclide("Fe58", 0.001848545204, 'wo') + lower_rad_ref.add_nuclide("Ni58", 0.055298376566, 'wo') + lower_rad_ref.add_nuclide("Ni60", 0.022034425592, 'wo') + lower_rad_ref.add_nuclide("Ni61", 0.000973510811, 'wo') + lower_rad_ref.add_nuclide("Ni62", 0.003155886695, 'wo') + lower_rad_ref.add_nuclide("Ni64", 0.000829500336, 'wo') + lower_rad_ref.add_nuclide("Mn55", 0.0182870, 'wo') + lower_rad_ref.add_nuclide("Si28", 0.00839976771, 'wo') + lower_rad_ref.add_nuclide("Si29", 0.00044199679, 'wo') + lower_rad_ref.add_nuclide("Si30", 0.0003017355, 'wo') + lower_rad_ref.add_nuclide("Cr50", 0.007251360806, 'wo') + lower_rad_ref.add_nuclide("Cr52", 0.145407678031, 'wo') + lower_rad_ref.add_nuclide("Cr53", 0.016806340306, 'wo') + lower_rad_ref.add_nuclide("Cr54", 0.004261520857, 'wo') + lower_rad_ref.add_s_alpha_beta('c_H_in_H2O', '71t') upper_rad_ref = openmc.Material(name='Upper radial reflector /' 'Top plate region', material_id=7) upper_rad_ref.set_density('g/cm3', 4.28) - upper_rad_ref.add_nuclide("H-1", 0.0086117, 'wo') - upper_rad_ref.add_nuclide("O-16", 0.0683369, 'wo') - upper_rad_ref.add_nuclide("B-10", 2.77638e-5, 'wo') - upper_rad_ref.add_nuclide("B-11", 1.26481e-4, 'wo') - upper_rad_ref.add_nuclide("Fe-54", 0.035953677186, 'wo') - upper_rad_ref.add_nuclide("Fe-56", 0.585224740891, 'wo') - upper_rad_ref.add_nuclide("Fe-57", 0.01375486056, 'wo') - upper_rad_ref.add_nuclide("Fe-58", 0.001865821363, 'wo') - upper_rad_ref.add_nuclide("Ni-58", 0.055815129186, 'wo') - upper_rad_ref.add_nuclide("Ni-60", 0.022240333032, 'wo') - upper_rad_ref.add_nuclide("Ni-61", 0.000982608081, 'wo') - upper_rad_ref.add_nuclide("Ni-62", 0.003185377845, 'wo') - upper_rad_ref.add_nuclide("Ni-64", 0.000837251856, 'wo') - upper_rad_ref.add_nuclide("Mn-55", 0.0184579, 'wo') - upper_rad_ref.add_nuclide("Si-28", 0.00847831314, 'wo') - upper_rad_ref.add_nuclide("Si-29", 0.00044612986, 'wo') - upper_rad_ref.add_nuclide("Si-30", 0.000304557, 'wo') - upper_rad_ref.add_nuclide("Cr-50", 0.00731912987, 'wo') - upper_rad_ref.add_nuclide("Cr-52", 0.146766614995, 'wo') - upper_rad_ref.add_nuclide("Cr-53", 0.01696340737, 'wo') - upper_rad_ref.add_nuclide("Cr-54", 0.004301347765, 'wo') - upper_rad_ref.add_s_alpha_beta('HH2O', '71t') + upper_rad_ref.add_nuclide("H1", 0.0086117, 'wo') + upper_rad_ref.add_nuclide("O16", 0.0683369, 'wo') + upper_rad_ref.add_nuclide("B10", 2.77638e-5, 'wo') + upper_rad_ref.add_nuclide("B11", 1.26481e-4, 'wo') + upper_rad_ref.add_nuclide("Fe54", 0.035953677186, 'wo') + upper_rad_ref.add_nuclide("Fe56", 0.585224740891, 'wo') + upper_rad_ref.add_nuclide("Fe57", 0.01375486056, 'wo') + upper_rad_ref.add_nuclide("Fe58", 0.001865821363, 'wo') + upper_rad_ref.add_nuclide("Ni58", 0.055815129186, 'wo') + upper_rad_ref.add_nuclide("Ni60", 0.022240333032, 'wo') + upper_rad_ref.add_nuclide("Ni61", 0.000982608081, 'wo') + upper_rad_ref.add_nuclide("Ni62", 0.003185377845, 'wo') + upper_rad_ref.add_nuclide("Ni64", 0.000837251856, 'wo') + upper_rad_ref.add_nuclide("Mn55", 0.0184579, 'wo') + upper_rad_ref.add_nuclide("Si28", 0.00847831314, 'wo') + upper_rad_ref.add_nuclide("Si29", 0.00044612986, 'wo') + upper_rad_ref.add_nuclide("Si30", 0.000304557, 'wo') + upper_rad_ref.add_nuclide("Cr50", 0.00731912987, 'wo') + upper_rad_ref.add_nuclide("Cr52", 0.146766614995, 'wo') + upper_rad_ref.add_nuclide("Cr53", 0.01696340737, 'wo') + upper_rad_ref.add_nuclide("Cr54", 0.004301347765, 'wo') + upper_rad_ref.add_s_alpha_beta('c_H_in_H2O', '71t') bot_plate = openmc.Material(name='Bottom plate region', material_id=8) bot_plate.set_density('g/cm3', 7.184) - bot_plate.add_nuclide("H-1", 0.0011505, 'wo') - bot_plate.add_nuclide("O-16", 0.0091296, 'wo') - bot_plate.add_nuclide("B-10", 3.70915e-6, 'wo') - bot_plate.add_nuclide("B-11", 1.68974e-5, 'wo') - bot_plate.add_nuclide("Fe-54", 0.03855611055, 'wo') - bot_plate.add_nuclide("Fe-56", 0.627585036425, 'wo') - bot_plate.add_nuclide("Fe-57", 0.014750478, 'wo') - bot_plate.add_nuclide("Fe-58", 0.002000875025, 'wo') - bot_plate.add_nuclide("Ni-58", 0.059855207342, 'wo') - bot_plate.add_nuclide("Ni-60", 0.023850159704, 'wo') - bot_plate.add_nuclide("Ni-61", 0.001053732407, 'wo') - bot_plate.add_nuclide("Ni-62", 0.003415945715, 'wo') - bot_plate.add_nuclide("Ni-64", 0.000897854832, 'wo') - bot_plate.add_nuclide("Mn-55", 0.0197940, 'wo') - bot_plate.add_nuclide("Si-28", 0.00909197802, 'wo') - bot_plate.add_nuclide("Si-29", 0.00047842098, 'wo') - bot_plate.add_nuclide("Si-30", 0.000326601, 'wo') - bot_plate.add_nuclide("Cr-50", 0.007848910646, 'wo') - bot_plate.add_nuclide("Cr-52", 0.157390026871, 'wo') - bot_plate.add_nuclide("Cr-53", 0.018191270146, 'wo') - bot_plate.add_nuclide("Cr-54", 0.004612692337, 'wo') - bot_plate.add_s_alpha_beta('HH2O', '71t') + bot_plate.add_nuclide("H1", 0.0011505, 'wo') + bot_plate.add_nuclide("O16", 0.0091296, 'wo') + bot_plate.add_nuclide("B10", 3.70915e-6, 'wo') + bot_plate.add_nuclide("B11", 1.68974e-5, 'wo') + bot_plate.add_nuclide("Fe54", 0.03855611055, 'wo') + bot_plate.add_nuclide("Fe56", 0.627585036425, 'wo') + bot_plate.add_nuclide("Fe57", 0.014750478, 'wo') + bot_plate.add_nuclide("Fe58", 0.002000875025, 'wo') + bot_plate.add_nuclide("Ni58", 0.059855207342, 'wo') + bot_plate.add_nuclide("Ni60", 0.023850159704, 'wo') + bot_plate.add_nuclide("Ni61", 0.001053732407, 'wo') + bot_plate.add_nuclide("Ni62", 0.003415945715, 'wo') + bot_plate.add_nuclide("Ni64", 0.000897854832, 'wo') + bot_plate.add_nuclide("Mn55", 0.0197940, 'wo') + bot_plate.add_nuclide("Si28", 0.00909197802, 'wo') + bot_plate.add_nuclide("Si29", 0.00047842098, 'wo') + bot_plate.add_nuclide("Si30", 0.000326601, 'wo') + bot_plate.add_nuclide("Cr50", 0.007848910646, 'wo') + bot_plate.add_nuclide("Cr52", 0.157390026871, 'wo') + bot_plate.add_nuclide("Cr53", 0.018191270146, 'wo') + bot_plate.add_nuclide("Cr54", 0.004612692337, 'wo') + bot_plate.add_s_alpha_beta('c_H_in_H2O', '71t') bot_nozzle = openmc.Material(name='Bottom nozzle region', material_id=9) bot_nozzle.set_density('g/cm3', 2.53) - bot_nozzle.add_nuclide("H-1", 0.0245014, 'wo') - bot_nozzle.add_nuclide("O-16", 0.1944274, 'wo') - bot_nozzle.add_nuclide("B-10", 7.89917e-5, 'wo') - bot_nozzle.add_nuclide("B-11", 3.59854e-4, 'wo') - bot_nozzle.add_nuclide("Fe-54", 0.030411411144, 'wo') - bot_nozzle.add_nuclide("Fe-56", 0.495012237964, 'wo') - bot_nozzle.add_nuclide("Fe-57", 0.01163454624, 'wo') - bot_nozzle.add_nuclide("Fe-58", 0.001578204652, 'wo') - bot_nozzle.add_nuclide("Ni-58", 0.047211231662, 'wo') - bot_nozzle.add_nuclide("Ni-60", 0.018811987544, 'wo') - bot_nozzle.add_nuclide("Ni-61", 0.000831139127, 'wo') - bot_nozzle.add_nuclide("Ni-62", 0.002694352115, 'wo') - bot_nozzle.add_nuclide("Ni-64", 0.000708189552, 'wo') - bot_nozzle.add_nuclide("Mn-55", 0.0156126, 'wo') - bot_nozzle.add_nuclide("Si-28", 0.007171335558, 'wo') - bot_nozzle.add_nuclide("Si-29", 0.000377356542, 'wo') - bot_nozzle.add_nuclide("Si-30", 0.0002576079, 'wo') - bot_nozzle.add_nuclide("Cr-50", 0.006190885148, 'wo') - bot_nozzle.add_nuclide("Cr-52", 0.124142524198, 'wo') - bot_nozzle.add_nuclide("Cr-53", 0.014348496148, 'wo') - bot_nozzle.add_nuclide("Cr-54", 0.003638294506, 'wo') - bot_nozzle.add_s_alpha_beta('HH2O', '71t') + bot_nozzle.add_nuclide("H1", 0.0245014, 'wo') + bot_nozzle.add_nuclide("O16", 0.1944274, 'wo') + bot_nozzle.add_nuclide("B10", 7.89917e-5, 'wo') + bot_nozzle.add_nuclide("B11", 3.59854e-4, 'wo') + bot_nozzle.add_nuclide("Fe54", 0.030411411144, 'wo') + bot_nozzle.add_nuclide("Fe56", 0.495012237964, 'wo') + bot_nozzle.add_nuclide("Fe57", 0.01163454624, 'wo') + bot_nozzle.add_nuclide("Fe58", 0.001578204652, 'wo') + bot_nozzle.add_nuclide("Ni58", 0.047211231662, 'wo') + bot_nozzle.add_nuclide("Ni60", 0.018811987544, 'wo') + bot_nozzle.add_nuclide("Ni61", 0.000831139127, 'wo') + bot_nozzle.add_nuclide("Ni62", 0.002694352115, 'wo') + bot_nozzle.add_nuclide("Ni64", 0.000708189552, 'wo') + bot_nozzle.add_nuclide("Mn55", 0.0156126, 'wo') + bot_nozzle.add_nuclide("Si28", 0.007171335558, 'wo') + bot_nozzle.add_nuclide("Si29", 0.000377356542, 'wo') + bot_nozzle.add_nuclide("Si30", 0.0002576079, 'wo') + bot_nozzle.add_nuclide("Cr50", 0.006190885148, 'wo') + bot_nozzle.add_nuclide("Cr52", 0.124142524198, 'wo') + bot_nozzle.add_nuclide("Cr53", 0.014348496148, 'wo') + bot_nozzle.add_nuclide("Cr54", 0.003638294506, 'wo') + bot_nozzle.add_s_alpha_beta('c_H_in_H2O', '71t') top_nozzle = openmc.Material(name='Top nozzle region', material_id=10) top_nozzle.set_density('g/cm3', 1.746) - top_nozzle.add_nuclide("H-1", 0.0358870, 'wo') - top_nozzle.add_nuclide("O-16", 0.2847761, 'wo') - top_nozzle.add_nuclide("B-10", 1.15699e-4, 'wo') - top_nozzle.add_nuclide("B-11", 5.27075e-4, 'wo') - top_nozzle.add_nuclide("Fe-54", 0.02644016154, 'wo') - top_nozzle.add_nuclide("Fe-56", 0.43037146399, 'wo') - top_nozzle.add_nuclide("Fe-57", 0.0101152584, 'wo') - top_nozzle.add_nuclide("Fe-58", 0.00137211607, 'wo') - top_nozzle.add_nuclide("Ni-58", 0.04104621835, 'wo') - top_nozzle.add_nuclide("Ni-60", 0.0163554502, 'wo') - top_nozzle.add_nuclide("Ni-61", 0.000722605975, 'wo') - top_nozzle.add_nuclide("Ni-62", 0.002342513875, 'wo') - top_nozzle.add_nuclide("Ni-64", 0.0006157116, 'wo') - top_nozzle.add_nuclide("Mn-55", 0.0135739, 'wo') - top_nozzle.add_nuclide("Si-28", 0.006234853554, 'wo') - top_nozzle.add_nuclide("Si-29", 0.000328078746, 'wo') - top_nozzle.add_nuclide("Si-30", 0.0002239677, 'wo') - top_nozzle.add_nuclide("Cr-50", 0.005382452306, 'wo') - top_nozzle.add_nuclide("Cr-52", 0.107931450781, 'wo') - top_nozzle.add_nuclide("Cr-53", 0.012474806806, 'wo') - top_nozzle.add_nuclide("Cr-54", 0.003163190107, 'wo') - top_nozzle.add_s_alpha_beta('HH2O', '71t') + top_nozzle.add_nuclide("H1", 0.0358870, 'wo') + top_nozzle.add_nuclide("O16", 0.2847761, 'wo') + top_nozzle.add_nuclide("B10", 1.15699e-4, 'wo') + top_nozzle.add_nuclide("B11", 5.27075e-4, 'wo') + top_nozzle.add_nuclide("Fe54", 0.02644016154, 'wo') + top_nozzle.add_nuclide("Fe56", 0.43037146399, 'wo') + top_nozzle.add_nuclide("Fe57", 0.0101152584, 'wo') + top_nozzle.add_nuclide("Fe58", 0.00137211607, 'wo') + top_nozzle.add_nuclide("Ni58", 0.04104621835, 'wo') + top_nozzle.add_nuclide("Ni60", 0.0163554502, 'wo') + top_nozzle.add_nuclide("Ni61", 0.000722605975, 'wo') + top_nozzle.add_nuclide("Ni62", 0.002342513875, 'wo') + top_nozzle.add_nuclide("Ni64", 0.0006157116, 'wo') + top_nozzle.add_nuclide("Mn55", 0.0135739, 'wo') + top_nozzle.add_nuclide("Si28", 0.006234853554, 'wo') + top_nozzle.add_nuclide("Si29", 0.000328078746, 'wo') + top_nozzle.add_nuclide("Si30", 0.0002239677, 'wo') + top_nozzle.add_nuclide("Cr50", 0.005382452306, 'wo') + top_nozzle.add_nuclide("Cr52", 0.107931450781, 'wo') + top_nozzle.add_nuclide("Cr53", 0.012474806806, 'wo') + top_nozzle.add_nuclide("Cr54", 0.003163190107, 'wo') + top_nozzle.add_s_alpha_beta('c_H_in_H2O', '71t') top_fa = openmc.Material(name='Top of fuel assemblies', material_id=11) top_fa.set_density('g/cm3', 3.044) - top_fa.add_nuclide("H-1", 0.0162913, 'wo') - top_fa.add_nuclide("O-16", 0.1292776, 'wo') - top_fa.add_nuclide("B-10", 5.25228e-5, 'wo') - top_fa.add_nuclide("B-11", 2.39272e-4, 'wo') - top_fa.add_nuclide("Zr-90", 0.43313403903, 'wo') - top_fa.add_nuclide("Zr-91", 0.09549277374, 'wo') - top_fa.add_nuclide("Zr-92", 0.14759527104, 'wo') - top_fa.add_nuclide("Zr-94", 0.15280552077, 'wo') - top_fa.add_nuclide("Zr-96", 0.02511169542, 'wo') - top_fa.add_s_alpha_beta('HH2O', '71t') + top_fa.add_nuclide("H1", 0.0162913, 'wo') + top_fa.add_nuclide("O16", 0.1292776, 'wo') + top_fa.add_nuclide("B10", 5.25228e-5, 'wo') + top_fa.add_nuclide("B11", 2.39272e-4, 'wo') + top_fa.add_nuclide("Zr90", 0.43313403903, 'wo') + top_fa.add_nuclide("Zr91", 0.09549277374, 'wo') + top_fa.add_nuclide("Zr92", 0.14759527104, 'wo') + top_fa.add_nuclide("Zr94", 0.15280552077, 'wo') + top_fa.add_nuclide("Zr96", 0.02511169542, 'wo') + top_fa.add_s_alpha_beta('c_H_in_H2O', '71t') bot_fa = openmc.Material(name='Bottom of fuel assemblies', material_id=12) bot_fa.set_density('g/cm3', 1.762) - bot_fa.add_nuclide("H-1", 0.0292856, 'wo') - bot_fa.add_nuclide("O-16", 0.2323919, 'wo') - bot_fa.add_nuclide("B-10", 9.44159e-5, 'wo') - bot_fa.add_nuclide("B-11", 4.30120e-4, 'wo') - bot_fa.add_nuclide("Zr-90", 0.3741373658, 'wo') - bot_fa.add_nuclide("Zr-91", 0.0824858164, 'wo') - bot_fa.add_nuclide("Zr-92", 0.1274914944, 'wo') - bot_fa.add_nuclide("Zr-94", 0.1319920622, 'wo') - bot_fa.add_nuclide("Zr-96", 0.0216912612, 'wo') - bot_fa.add_s_alpha_beta('HH2O', '71t') + bot_fa.add_nuclide("H1", 0.0292856, 'wo') + bot_fa.add_nuclide("O16", 0.2323919, 'wo') + bot_fa.add_nuclide("B10", 9.44159e-5, 'wo') + bot_fa.add_nuclide("B11", 4.30120e-4, 'wo') + bot_fa.add_nuclide("Zr90", 0.3741373658, 'wo') + bot_fa.add_nuclide("Zr91", 0.0824858164, 'wo') + bot_fa.add_nuclide("Zr92", 0.1274914944, 'wo') + bot_fa.add_nuclide("Zr94", 0.1319920622, 'wo') + bot_fa.add_nuclide("Zr96", 0.0216912612, 'wo') + bot_fa.add_s_alpha_beta('c_H_in_H2O', '71t') # Define the materials file. self.materials.default_xs = '71c' @@ -592,26 +592,26 @@ class PinCellInputSet(object): # Define materials. fuel = openmc.Material(name='Fuel') fuel.set_density('g/cm3', 10.29769) - fuel.add_nuclide("U-234", 4.4843e-6) - fuel.add_nuclide("U-235", 5.5815e-4) - fuel.add_nuclide("U-238", 2.2408e-2) - fuel.add_nuclide("O-16", 4.5829e-2) + 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("Zr-90", 2.1827e-2) - clad.add_nuclide("Zr-91", 4.7600e-3) - clad.add_nuclide("Zr-92", 7.2758e-3) - clad.add_nuclide("Zr-94", 7.3734e-3) - clad.add_nuclide("Zr-96", 1.1879e-3) + 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("H-1", 4.9457e-2) - hot_water.add_nuclide("O-16", 2.4672e-2) - hot_water.add_nuclide("B-10", 8.0042e-6) - hot_water.add_nuclide("B-11", 3.2218e-5) - hot_water.add_s_alpha_beta('HH2O', '71t') + 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' diff --git a/tests/test_asymmetric_lattice/inputs_true.dat b/tests/test_asymmetric_lattice/inputs_true.dat index f40e661b33..d503a3a0bb 100644 --- a/tests/test_asymmetric_lattice/inputs_true.dat +++ b/tests/test_asymmetric_lattice/inputs_true.dat @@ -1 +1 @@ -9b859eb5501c05b6a652d299bd0cadc0a924ffae31117babbdc9f7f8ca87689322c275818eb0dde0ff5fa78317d8d8f1585b18dcc772e3ff4ed499de8a491dc3 \ No newline at end of file +a55899cd2ed0a8ec5d44003139da639f87f5f03ee76b2d6577db6a8c2014849e4277f8e68fa874ac6795e4cbc4eb6e4031d726cafe6e663e84787d1ecd8e7f86 \ No newline at end of file diff --git a/tests/test_cmfd_feed/materials.xml b/tests/test_cmfd_feed/materials.xml index 7b4baf9e15..8f32169d92 100644 --- a/tests/test_cmfd_feed/materials.xml +++ b/tests/test_cmfd_feed/materials.xml @@ -4,9 +4,9 @@ - - - + + + diff --git a/tests/test_cmfd_nofeed/materials.xml b/tests/test_cmfd_nofeed/materials.xml index 7b4baf9e15..8f32169d92 100644 --- a/tests/test_cmfd_nofeed/materials.xml +++ b/tests/test_cmfd_nofeed/materials.xml @@ -4,9 +4,9 @@ - - - + + + diff --git a/tests/test_complex_cell/materials.xml b/tests/test_complex_cell/materials.xml index 60ec996735..a9e69b8bc6 100644 --- a/tests/test_complex_cell/materials.xml +++ b/tests/test_complex_cell/materials.xml @@ -5,11 +5,11 @@ - + - + diff --git a/tests/test_confidence_intervals/materials.xml b/tests/test_confidence_intervals/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_confidence_intervals/materials.xml +++ b/tests/test_confidence_intervals/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_density/materials.xml b/tests/test_density/materials.xml index 36947d066d..c474c5c65c 100644 --- a/tests/test_density/materials.xml +++ b/tests/test_density/materials.xml @@ -3,24 +3,24 @@ - + - + - + - - - + + + diff --git a/tests/test_distribmat/inputs_true.dat b/tests/test_distribmat/inputs_true.dat index 9c8a86bfa7..1212a28e59 100644 --- a/tests/test_distribmat/inputs_true.dat +++ b/tests/test_distribmat/inputs_true.dat @@ -1 +1 @@ -96c54eb4f1da175445bf2187449ee32c9ff435d8c60e9421a4a16497aae9f233e3e494f531892dd55f6ac1a06e0240799503ff19e14e2436a0b0f0d83ba56cb8 \ No newline at end of file +46df57157980545d90b482acfb01f525b84c0e623fa93a5d9c08a65723d677ef1c092360219a3c7fcf5110c6ba32f1eacbd5c5eaed40be4bfe154f302400c0a4 \ No newline at end of file diff --git a/tests/test_distribmat/test_distribmat.py b/tests/test_distribmat/test_distribmat.py index 96d41c3fbe..a8d013996e 100644 --- a/tests/test_distribmat/test_distribmat.py +++ b/tests/test_distribmat/test_distribmat.py @@ -17,16 +17,16 @@ class DistribmatTestHarness(PyAPITestHarness): moderator = openmc.Material(material_id=1) moderator.set_density('g/cc', 1.0) - moderator.add_nuclide('H-1', 2.0) - moderator.add_nuclide('O-16', 1.0) + moderator.add_nuclide('H1', 2.0) + moderator.add_nuclide('O16', 1.0) dense_fuel = openmc.Material(material_id=2) dense_fuel.set_density('g/cc', 4.5) - dense_fuel.add_nuclide('U-235', 1.0) + dense_fuel.add_nuclide('U235', 1.0) light_fuel = openmc.Material(material_id=3) light_fuel.set_density('g/cc', 2.0) - light_fuel.add_nuclide('U-235', 1.0) + light_fuel.add_nuclide('U235', 1.0) mats_file = openmc.Materials([moderator, dense_fuel, light_fuel]) mats_file.default_xs = '71c' diff --git a/tests/test_eigenvalue_genperbatch/materials.xml b/tests/test_eigenvalue_genperbatch/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_eigenvalue_genperbatch/materials.xml +++ b/tests/test_eigenvalue_genperbatch/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_eigenvalue_no_inactive/materials.xml b/tests/test_eigenvalue_no_inactive/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_eigenvalue_no_inactive/materials.xml +++ b/tests/test_eigenvalue_no_inactive/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_energy_grid/materials.xml b/tests/test_energy_grid/materials.xml index 45ccc65540..ed9b38d901 100644 --- a/tests/test_energy_grid/materials.xml +++ b/tests/test_energy_grid/materials.xml @@ -3,9 +3,9 @@ - - - + + + diff --git a/tests/test_energy_laws/materials.xml b/tests/test_energy_laws/materials.xml index 97f9b84be1..c70e071cff 100644 --- a/tests/test_energy_laws/materials.xml +++ b/tests/test_energy_laws/materials.xml @@ -3,9 +3,9 @@ 71c - - - - + + + + diff --git a/tests/test_entropy/materials.xml b/tests/test_entropy/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_entropy/materials.xml +++ b/tests/test_entropy/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_filter_distribcell/case-1/materials.xml b/tests/test_filter_distribcell/case-1/materials.xml index 0bb9a35a3e..891cc9fd0e 100644 --- a/tests/test_filter_distribcell/case-1/materials.xml +++ b/tests/test_filter_distribcell/case-1/materials.xml @@ -6,13 +6,13 @@ - + - - + + diff --git a/tests/test_filter_distribcell/case-2/materials.xml b/tests/test_filter_distribcell/case-2/materials.xml index 0bb9a35a3e..891cc9fd0e 100644 --- a/tests/test_filter_distribcell/case-2/materials.xml +++ b/tests/test_filter_distribcell/case-2/materials.xml @@ -6,13 +6,13 @@ - + - - + + diff --git a/tests/test_filter_distribcell/case-3/materials.xml b/tests/test_filter_distribcell/case-3/materials.xml index 8f50a6a60c..6a5916a837 100644 --- a/tests/test_filter_distribcell/case-3/materials.xml +++ b/tests/test_filter_distribcell/case-3/materials.xml @@ -6,120 +6,120 @@ - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + diff --git a/tests/test_filter_distribcell/case-4/materials.xml b/tests/test_filter_distribcell/case-4/materials.xml index 19678c2a15..ab9f8688ed 100644 --- a/tests/test_filter_distribcell/case-4/materials.xml +++ b/tests/test_filter_distribcell/case-4/materials.xml @@ -3,16 +3,16 @@ 71c - + - - - + + + - + diff --git a/tests/test_filter_mesh_2d/materials.xml b/tests/test_filter_mesh_2d/materials.xml index 9c0b74f3f1..f5a9e61bea 100644 --- a/tests/test_filter_mesh_2d/materials.xml +++ b/tests/test_filter_mesh_2d/materials.xml @@ -6,267 +6,267 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/tests/test_filter_mesh_3d/materials.xml b/tests/test_filter_mesh_3d/materials.xml index 9c0b74f3f1..f5a9e61bea 100644 --- a/tests/test_filter_mesh_3d/materials.xml +++ b/tests/test_filter_mesh_3d/materials.xml @@ -6,267 +6,267 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/tests/test_fixed_source/materials.xml b/tests/test_fixed_source/materials.xml index ab7a76bc00..6c52b25015 100644 --- a/tests/test_fixed_source/materials.xml +++ b/tests/test_fixed_source/materials.xml @@ -3,8 +3,8 @@ - - + + diff --git a/tests/test_infinite_cell/materials.xml b/tests/test_infinite_cell/materials.xml index 2e5b48381a..1c2d649420 100644 --- a/tests/test_infinite_cell/materials.xml +++ b/tests/test_infinite_cell/materials.xml @@ -3,12 +3,12 @@ - + - + diff --git a/tests/test_iso_in_lab/inputs_true.dat b/tests/test_iso_in_lab/inputs_true.dat index bd722c9f67..34f522872e 100644 --- a/tests/test_iso_in_lab/inputs_true.dat +++ b/tests/test_iso_in_lab/inputs_true.dat @@ -1 +1 @@ -85faac9b8c725ec9242ebc3793b70dcd1c8e58aeb4296345aefd8031304263bd66eaad0c6f1c61a1c644b73f397699856ab3d76d2b397295176650b4069acc9e \ No newline at end of file +c05fdb7815ccc1dcd2f260429b9139ad96ad4a7d1643e2bb938e3cd61268451363538ef4e41c5eaf73a64dbace43b2bd4489d5ff012a33104c2c1d6fa61146eb \ No newline at end of file diff --git a/tests/test_lattice/materials.xml b/tests/test_lattice/materials.xml index 4edf926d56..67240c4c9d 100644 --- a/tests/test_lattice/materials.xml +++ b/tests/test_lattice/materials.xml @@ -15,127 +15,127 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - - + + + - - - + + + - - - - + + + + - - + + - + - - - + + + - - - - + + + + - + - - - - - + + + + + - + - - - - + + + + diff --git a/tests/test_lattice_hex/materials.xml b/tests/test_lattice_hex/materials.xml index 987a25ab14..92d10fa815 100644 --- a/tests/test_lattice_hex/materials.xml +++ b/tests/test_lattice_hex/materials.xml @@ -4,39 +4,39 @@ - - - + + + - - - + + + - - - - - + + + + + - - - - - - - + + + + + + + diff --git a/tests/test_lattice_mixed/materials.xml b/tests/test_lattice_mixed/materials.xml index 987a25ab14..92d10fa815 100644 --- a/tests/test_lattice_mixed/materials.xml +++ b/tests/test_lattice_mixed/materials.xml @@ -4,39 +4,39 @@ - - - + + + - - - + + + - - - - - + + + + + - - - - - - - + + + + + + + diff --git a/tests/test_lattice_multiple/materials.xml b/tests/test_lattice_multiple/materials.xml index 9c0b74f3f1..f5a9e61bea 100644 --- a/tests/test_lattice_multiple/materials.xml +++ b/tests/test_lattice_multiple/materials.xml @@ -6,267 +6,267 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/tests/test_mgxs_library_ce_to_mg/inputs_true.dat b/tests/test_mgxs_library_ce_to_mg/inputs_true.dat index 9633a46a80..332c2df5fd 100644 --- a/tests/test_mgxs_library_ce_to_mg/inputs_true.dat +++ b/tests/test_mgxs_library_ce_to_mg/inputs_true.dat @@ -1 +1 @@ -34d5891f6f17c2d4b686b814ba61ba0045bc4289e278b1c3c47dbba59b83837fcfe15f2b8d58e7a2b07627b73d51e40348d70e9ed36dbb7cc94468d61c068c4c \ No newline at end of file +fb9c9180f692198548ca14543b29a8b623b382a19932999b2140ca4dd440f2102ba2fdbcb500ede3b8829aa85e1b4498151d280f1422d2d6b1bb5789aff34d71 \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index 79ca0ec660..d92cc888a7 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -317a63a9dd3bfd84e969667b00f46018e56c04c356461a75103f63569e6b70c84d0da7f5e611faaf1b2631330b05ab4346223d3d843018ce0ce8876671a450c0 \ No newline at end of file +855919f7a333acff6423527b82656d6a472ea8416002fb475c2d21c676e2f75f5c040d209a3e9a3a6118cf944f2c1bfb8cf2318273b890861d790b1927791a35 \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index dc67b7c562..9c33eeab44 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -88849ac150f9c389e67de96356dfceb0bde08643f68ca25699e67d263995b95893d7340a2b08b2f0f5075fc5020f73553c5287ec6c56ace2f35ce0214961e123 \ No newline at end of file +3a3b7f75b326c94a8e5c7efe3046b2fdb887e9f75ecf6eb27587f9450c77cf8fd6acc4198c15bffb4e7ceead6d7b4327c19536bbf9cc35dfaae3f4ce4c26cc1a \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index 79ca0ec660..d92cc888a7 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -317a63a9dd3bfd84e969667b00f46018e56c04c356461a75103f63569e6b70c84d0da7f5e611faaf1b2631330b05ab4346223d3d843018ce0ce8876671a450c0 \ No newline at end of file +855919f7a333acff6423527b82656d6a472ea8416002fb475c2d21c676e2f75f5c040d209a3e9a3a6118cf944f2c1bfb8cf2318273b890861d790b1927791a35 \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index 79ca0ec660..d92cc888a7 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -317a63a9dd3bfd84e969667b00f46018e56c04c356461a75103f63569e6b70c84d0da7f5e611faaf1b2631330b05ab4346223d3d843018ce0ce8876671a450c0 \ No newline at end of file +855919f7a333acff6423527b82656d6a472ea8416002fb475c2d21c676e2f75f5c040d209a3e9a3a6118cf944f2c1bfb8cf2318273b890861d790b1927791a35 \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index 8dbb564c65..ea7655c916 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -eebb1469278f470b5859ed83e9b6526e7c4e3fed503bd22e414c6dc13b19b8e4cb6a44e3c14269e6e173f43056eda78268f455662ae119280bc18ea6a071dac7 \ No newline at end of file +739796983940a1bad601998cf9ea2f90453a994477c7f675c2fd404d1864fe04a7fbfb5a15c5fe7cf9bad016b78432ba0910baba6f9cc026143761e9f526b62a \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 4f47bd417f..d8ebe19a1b 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -a631b8a347f344d822e6300ed2576caa7c05a74daedeb4aaaabfb89570942cff1bbd47ad7f81306e668e12266404f7abdcf680fdfeb5a4835579892e32bf57e8 \ No newline at end of file +d56c6bae6bf3cd8950d3f50f089458c1c6c807be780fc97570532c6af6eb7e3057968d3345bd3c363f01315271129ef7b2ca028b05767353e601dc37b035f8a7 \ No newline at end of file diff --git a/tests/test_multipole/inputs_true.dat b/tests/test_multipole/inputs_true.dat index 5890332edf..801536d07e 100644 --- a/tests/test_multipole/inputs_true.dat +++ b/tests/test_multipole/inputs_true.dat @@ -1 +1 @@ -28df9e4c4729798d35741e6e9a4f910f3386c831acc54325d0e583bd989065a487cea6981068d8669bc80c3388b166c002c2127446936733f8f3f0da3e154bae \ No newline at end of file +c727431ebef7a5987dade28f4cd940c566142f97b5ce01fbf9343d680caf9056623f0fac550db64f8f1043fa2cd8230155cfcbbcaffd1ae92cede723974596d7 \ No newline at end of file diff --git a/tests/test_multipole/test_multipole.py b/tests/test_multipole/test_multipole.py index 7c3615ad72..bd6822bdf5 100644 --- a/tests/test_multipole/test_multipole.py +++ b/tests/test_multipole/test_multipole.py @@ -16,12 +16,12 @@ class MultipoleTestHarness(PyAPITestHarness): moderator = openmc.Material(material_id=1) moderator.set_density('g/cc', 1.0) - moderator.add_nuclide('H-1', 2.0) - moderator.add_nuclide('O-16', 1.0) + moderator.add_nuclide('H1', 2.0) + moderator.add_nuclide('O16', 1.0) dense_fuel = openmc.Material(material_id=2) dense_fuel.set_density('g/cc', 4.5) - dense_fuel.add_nuclide('U-235', 1.0) + dense_fuel.add_nuclide('U235', 1.0) mats_file = openmc.Materials([moderator, dense_fuel]) mats_file.default_xs = '71c' diff --git a/tests/test_natural_element/materials.xml b/tests/test_natural_element/materials.xml index 5a3b3bbc6d..60d60b81ff 100644 --- a/tests/test_natural_element/materials.xml +++ b/tests/test_natural_element/materials.xml @@ -8,9 +8,9 @@ - - - + + + @@ -18,7 +18,7 @@ - + diff --git a/tests/test_output/materials.xml b/tests/test_output/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_output/materials.xml +++ b/tests/test_output/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_particle_restart_eigval/materials.xml b/tests/test_particle_restart_eigval/materials.xml index 1fd2fb1c75..5ff4b736f5 100644 --- a/tests/test_particle_restart_eigval/materials.xml +++ b/tests/test_particle_restart_eigval/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_particle_restart_fixed/materials.xml b/tests/test_particle_restart_fixed/materials.xml index deddaef97f..f132f97630 100644 --- a/tests/test_particle_restart_fixed/materials.xml +++ b/tests/test_particle_restart_fixed/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_periodic/inputs_true.dat b/tests/test_periodic/inputs_true.dat index d50d0b8592..56d3e01bfe 100644 --- a/tests/test_periodic/inputs_true.dat +++ b/tests/test_periodic/inputs_true.dat @@ -1 +1 @@ -af589996f2930337afe34ba9894098ff5efe3b29b6e927117220b718bf29b630ffdbc931754d465a8e8100125a8aa997dbe10aab322b43f69d59710573996a6d \ No newline at end of file +0766f3e0ac9b3d26bf5529eb3c92e0337698994d663b6a68dd8c1340807d6941c7589d777430782bc7b78590adced55f0f55b1de71a7c70d453f78d4ca469d8d \ No newline at end of file diff --git a/tests/test_periodic/test_periodic.py b/tests/test_periodic/test_periodic.py index 558514575a..0260711043 100644 --- a/tests/test_periodic/test_periodic.py +++ b/tests/test_periodic/test_periodic.py @@ -11,13 +11,13 @@ class PeriodicTest(PyAPITestHarness): def _build_inputs(self): # Define materials water = openmc.Material(1) - water.add_nuclide('H-1', 2.0) - water.add_nuclide('O-16', 1.0) - water.add_s_alpha_beta('HH2O', '71t') + water.add_nuclide('H1', 2.0) + water.add_nuclide('O16', 1.0) + water.add_s_alpha_beta('c_H_in_H2O', '71t') water.set_density('g/cc', 1.0) fuel = openmc.Material(2) - fuel.add_nuclide('U-235', 1.0) + fuel.add_nuclide('U235', 1.0) fuel.set_density('g/cc', 4.5) materials = openmc.Materials((water, fuel)) diff --git a/tests/test_plot/materials.xml b/tests/test_plot/materials.xml index f90a5e7f81..826f670a48 100644 --- a/tests/test_plot/materials.xml +++ b/tests/test_plot/materials.xml @@ -3,17 +3,17 @@ - + - + - + diff --git a/tests/test_ptables_off/materials.xml b/tests/test_ptables_off/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_ptables_off/materials.xml +++ b/tests/test_ptables_off/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_quadric_surfaces/materials.xml b/tests/test_quadric_surfaces/materials.xml index 0150332b3c..606253bec0 100644 --- a/tests/test_quadric_surfaces/materials.xml +++ b/tests/test_quadric_surfaces/materials.xml @@ -3,8 +3,8 @@ - - + + diff --git a/tests/test_reflective_plane/materials.xml b/tests/test_reflective_plane/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_reflective_plane/materials.xml +++ b/tests/test_reflective_plane/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_resonance_scattering/inputs_true.dat b/tests/test_resonance_scattering/inputs_true.dat index f2a875c7eb..fdfb2b84e3 100644 --- a/tests/test_resonance_scattering/inputs_true.dat +++ b/tests/test_resonance_scattering/inputs_true.dat @@ -1 +1 @@ -ece83bb075ed8144af89ce7cebf1577dcb2489d2e9ce4afbe61a3e4398837e7a9aaa2ae0cea0a6542f51ca5e0d119b570c675ed1dca0d74237cd5fdce0b606a3 \ No newline at end of file +a97844ec7ab45b9e8c1d5849c99414dfa1408956fd951fa783ffa99f78770cd4644a3fb5abe038b0f835ef233ccea2b014e8bd7448f06769944383035ef38ac6 \ No newline at end of file diff --git a/tests/test_resonance_scattering/test_resonance_scattering.py b/tests/test_resonance_scattering/test_resonance_scattering.py index b752cf7f3b..0d70c0d8d6 100644 --- a/tests/test_resonance_scattering/test_resonance_scattering.py +++ b/tests/test_resonance_scattering/test_resonance_scattering.py @@ -12,10 +12,10 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): # Materials mat = openmc.Material(material_id=1) mat.set_density('g/cc', 1.0) - mat.add_nuclide('U-238', 1.0) - mat.add_nuclide('U-235', 0.02) - mat.add_nuclide('Pu-239', 0.02) - mat.add_nuclide('H-1', 20.0) + mat.add_nuclide('U238', 1.0) + mat.add_nuclide('U235', 0.02) + mat.add_nuclide('Pu239', 0.02) + mat.add_nuclide('H1', 20.0) mats_file = openmc.Materials([mat]) mats_file.default_xs = '71c' @@ -37,8 +37,7 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): geometry.export_to_xml() # Settings - nuclide = openmc.Nuclide('U-238', '71c') - nuclide.zaid = 92238 + nuclide = openmc.Nuclide('U238', '71c') res_scatt_dbrc = openmc.ResonanceScattering() res_scatt_dbrc.nuclide = nuclide res_scatt_dbrc.nuclide_0K = nuclide # This is a bad idea! Just for tests @@ -46,8 +45,7 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): res_scatt_dbrc.E_min = 1e-6 res_scatt_dbrc.E_max = 210e-6 - nuclide = openmc.Nuclide('U-235', '71c') - nuclide.zaid = 92235 + nuclide = openmc.Nuclide('U235', '71c') res_scatt_wcm = openmc.ResonanceScattering() res_scatt_wcm.nuclide = nuclide res_scatt_wcm.nuclide_0K = nuclide @@ -55,8 +53,7 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): res_scatt_wcm.E_min = 1e-6 res_scatt_wcm.E_max = 210e-6 - nuclide = openmc.Nuclide('Pu-239', '71c') - nuclide.zaid = 94239 + nuclide = openmc.Nuclide('Pu239', '71c') res_scatt_ares = openmc.ResonanceScattering() res_scatt_ares.nuclide = nuclide res_scatt_ares.nuclide_0K = nuclide diff --git a/tests/test_rotation/materials.xml b/tests/test_rotation/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_rotation/materials.xml +++ b/tests/test_rotation/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_salphabeta/materials.xml b/tests/test_salphabeta/materials.xml index b51395f184..2bc401e49c 100644 --- a/tests/test_salphabeta/materials.xml +++ b/tests/test_salphabeta/materials.xml @@ -5,39 +5,39 @@ - - - + + + - - - + + + - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/tests/test_score_current/materials.xml b/tests/test_score_current/materials.xml index 9c0b74f3f1..f5a9e61bea 100644 --- a/tests/test_score_current/materials.xml +++ b/tests/test_score_current/materials.xml @@ -6,267 +6,267 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/tests/test_seed/materials.xml b/tests/test_seed/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_seed/materials.xml +++ b/tests/test_seed/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_source/inputs_true.dat b/tests/test_source/inputs_true.dat index 69a1e2ea84..f11998e6cf 100644 --- a/tests/test_source/inputs_true.dat +++ b/tests/test_source/inputs_true.dat @@ -1 +1 @@ -526c91551d9a80dc01216e5cb04162253f12ec684cc2b4912ca18cfc510f1ea2e5303029f1c1607882082b0c2c8a47f25dd5be14678f449a1579e3601d1bdec5 \ No newline at end of file +27ceb546499a4134eac08ffb22d02ce21d67f12617d43a02991b443e9aca7b7eca818d03e146676c0b352abaef6505423e48edef24cfd7a8fdb148cb3dbcdb1f \ No newline at end of file diff --git a/tests/test_source/test_source.py b/tests/test_source/test_source.py index 0abae4344e..09a13efaae 100644 --- a/tests/test_source/test_source.py +++ b/tests/test_source/test_source.py @@ -15,7 +15,7 @@ class SourceTestHarness(PyAPITestHarness): def _build_inputs(self): mat1 = openmc.Material(material_id=1) mat1.set_density('g/cm3', 4.5) - mat1.add_nuclide(openmc.Nuclide('U-235', '71c'), 1.0) + mat1.add_nuclide(openmc.Nuclide('U235', '71c'), 1.0) materials = openmc.Materials([mat1]) materials.export_to_xml() diff --git a/tests/test_source_file/materials.xml b/tests/test_source_file/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_source_file/materials.xml +++ b/tests/test_source_file/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_batch/materials.xml b/tests/test_sourcepoint_batch/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_sourcepoint_batch/materials.xml +++ b/tests/test_sourcepoint_batch/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_interval/materials.xml b/tests/test_sourcepoint_interval/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_sourcepoint_interval/materials.xml +++ b/tests/test_sourcepoint_interval/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_latest/materials.xml b/tests/test_sourcepoint_latest/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_sourcepoint_latest/materials.xml +++ b/tests/test_sourcepoint_latest/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_restart/materials.xml b/tests/test_sourcepoint_restart/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_sourcepoint_restart/materials.xml +++ b/tests/test_sourcepoint_restart/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_batch/materials.xml b/tests/test_statepoint_batch/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_statepoint_batch/materials.xml +++ b/tests/test_statepoint_batch/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_interval/materials.xml b/tests/test_statepoint_interval/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_statepoint_interval/materials.xml +++ b/tests/test_statepoint_interval/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_restart/materials.xml b/tests/test_statepoint_restart/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_statepoint_restart/materials.xml +++ b/tests/test_statepoint_restart/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_sourcesep/materials.xml b/tests/test_statepoint_sourcesep/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_statepoint_sourcesep/materials.xml +++ b/tests/test_statepoint_sourcesep/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_survival_biasing/materials.xml b/tests/test_survival_biasing/materials.xml index 1748e09fda..facad016bf 100644 --- a/tests/test_survival_biasing/materials.xml +++ b/tests/test_survival_biasing/materials.xml @@ -3,8 +3,8 @@ - - + + diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index e3d37be300..ddab630f25 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -ea09926d8f5c6c96529bf5529f4deb3be78eda2da80adbbf3440147c337587358c2b1823bc72df9463676135573eb481dcd361b735f18365216645ee81092f1e \ No newline at end of file +a392a7a8f27fd2f959b06a6809df29b3482e215da175b19846c248af44dc2ee7e2b05269b802dd9d6ed434506b05092f349436a0048411adab6b296dba0bd683 \ No newline at end of file diff --git a/tests/test_tallies/test_tallies.py b/tests/test_tallies/test_tallies.py index 9e40d4185d..e51e4616f5 100644 --- a/tests/test_tallies/test_tallies.py +++ b/tests/test_tallies/test_tallies.py @@ -155,7 +155,7 @@ class TalliesTestHarness(PyAPITestHarness): total_tallies[0].scores = ['total'] for t in total_tallies[1:]: t.scores = ['total-y4'] - t.nuclides = ['U-235', 'total'] + t.nuclides = ['U235', 'total'] total_tallies[1].estimator = 'tracklength' total_tallies[2].estimator = 'analog' total_tallies[3].estimator = 'collision' diff --git a/tests/test_tally_aggregation/inputs_true.dat b/tests/test_tally_aggregation/inputs_true.dat index 055ac76fd4..9c79787555 100644 --- a/tests/test_tally_aggregation/inputs_true.dat +++ b/tests/test_tally_aggregation/inputs_true.dat @@ -1 +1 @@ -f819f1b3564ca1df1e235f120f4bd65003cd80935fa8261f0a5982b7e7ec5b2e7497716673c142fab99f3fb26c174ac7a12e145b9a6f2caf707d2a07702f6eb2 \ No newline at end of file +67daf0d74cddb40ecbbc7e3793a3302866adcb1617fe2dc454dd161c06105e65027523f5e5954d80b961ba6c6abf14114b8be5c4d5b7682eaddffc1288d3e7c8 \ No newline at end of file diff --git a/tests/test_tally_aggregation/test_tally_aggregation.py b/tests/test_tally_aggregation/test_tally_aggregation.py index fdc086e682..76284ef9dc 100644 --- a/tests/test_tally_aggregation/test_tally_aggregation.py +++ b/tests/test_tally_aggregation/test_tally_aggregation.py @@ -16,9 +16,9 @@ class TallyAggregationTestHarness(PyAPITestHarness): self._input_set.settings.output = {'summary': True} # Initialize the nuclides - u235 = openmc.Nuclide('U-235') - u238 = openmc.Nuclide('U-238') - pu239 = openmc.Nuclide('Pu-239') + u235 = openmc.Nuclide('U235') + u238 = openmc.Nuclide('U238') + pu239 = openmc.Nuclide('Pu239') # Initialize the filters energy_filter = openmc.Filter(type='energy', bins=[0.0, 0.253e-6, @@ -60,7 +60,7 @@ class TallyAggregationTestHarness(PyAPITestHarness): outstr += ', '.join(map(str, tally_sum.std_dev)) # Sum across all nuclides - tally_sum = tally.summation(nuclides=['U-235', 'U-238', 'Pu-239']) + tally_sum = tally.summation(nuclides=['U235', 'U238', 'Pu239']) outstr += ', '.join(map(str, tally_sum.mean)) outstr += ', '.join(map(str, tally_sum.std_dev)) diff --git a/tests/test_tally_arithmetic/inputs_true.dat b/tests/test_tally_arithmetic/inputs_true.dat index d7b854a51d..b56c17b6b6 100644 --- a/tests/test_tally_arithmetic/inputs_true.dat +++ b/tests/test_tally_arithmetic/inputs_true.dat @@ -1 +1 @@ -bb7e730630f7bb4694a27fd77c3c0171f70c78df2681acc26b0ef88bcff367523b11335f487b46269325adbcee7faeb756484af64055c3c91b0103f7ed962053 \ No newline at end of file +c8772a174e2162030f0315a318991085f1a5c0b054883a5f071d520e34f9ecf7d309f25700067bea8685e2b6324a19a003bd6f6ab38161ee87c95257b5a6ae69 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/test_tally_arithmetic.py b/tests/test_tally_arithmetic/test_tally_arithmetic.py index a5919909f3..20f86d97bf 100644 --- a/tests/test_tally_arithmetic/test_tally_arithmetic.py +++ b/tests/test_tally_arithmetic/test_tally_arithmetic.py @@ -19,9 +19,9 @@ class TallyArithmeticTestHarness(PyAPITestHarness): tallies_file = openmc.Tallies() # Initialize the nuclides - u235 = openmc.Nuclide('U-235') - u238 = openmc.Nuclide('U-238') - pu239 = openmc.Nuclide('Pu-239') + u235 = openmc.Nuclide('U235') + u238 = openmc.Nuclide('U238') + pu239 = openmc.Nuclide('Pu239') # Initialize Mesh mesh = openmc.Mesh(mesh_id=1) diff --git a/tests/test_tally_assumesep/materials.xml b/tests/test_tally_assumesep/materials.xml index 9c0b74f3f1..f5a9e61bea 100644 --- a/tests/test_tally_assumesep/materials.xml +++ b/tests/test_tally_assumesep/materials.xml @@ -6,267 +6,267 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/tests/test_tally_nuclides/materials.xml b/tests/test_tally_nuclides/materials.xml index 2761be30cf..e9667b41f4 100644 --- a/tests/test_tally_nuclides/materials.xml +++ b/tests/test_tally_nuclides/materials.xml @@ -6,7 +6,7 @@ - + diff --git a/tests/test_tally_nuclides/tallies.xml b/tests/test_tally_nuclides/tallies.xml index cf20668c83..3440dbf217 100644 --- a/tests/test_tally_nuclides/tallies.xml +++ b/tests/test_tally_nuclides/tallies.xml @@ -7,7 +7,7 @@
- Pu-239 + Pu239 total absorption fission scatter diff --git a/tests/test_tally_slice_merge/inputs_true.dat b/tests/test_tally_slice_merge/inputs_true.dat index 771a1de8e8..16d11b6d2b 100644 --- a/tests/test_tally_slice_merge/inputs_true.dat +++ b/tests/test_tally_slice_merge/inputs_true.dat @@ -1 +1 @@ -8e54df241233bf8d5424afa0a22cc23c614a3541e5d7cc64036b5284edd28fe2353905ffdfebb446a4dd0202dda6a7da6d0110af00b4ca79117ec1dbe0584ba7 \ No newline at end of file +a17354ce54bcb5ce93e861ae95fd932c45fe60c733d999aa180d5dee636f43130fac5b003c615e23c65d44fe55f376ef4c86596b78603ab217d7e37fd694074d \ No newline at end of file diff --git a/tests/test_tally_slice_merge/results_true.dat b/tests/test_tally_slice_merge/results_true.dat index f986a91def..89d415b0d6 100644 --- a/tests/test_tally_slice_merge/results_true.dat +++ b/tests/test_tally_slice_merge/results_true.dat @@ -1,67 +1,67 @@ cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 0.00e+00 6.25e-07 U-235 fission 1.08e-01 7.94e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 0.00e+00 6.25e-07 U-235 nu-fission 2.64e-01 1.94e-02 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 0.00e+00 6.25e-07 U-238 fission 1.51e-07 1.00e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 0.00e+00 6.25e-07 U-238 nu-fission 3.76e-07 2.50e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 6.25e-07 2.00e+01 U-235 fission 3.12e-02 2.56e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 6.25e-07 2.00e+01 U-235 nu-fission 7.65e-02 6.24e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 6.25e-07 2.00e+01 U-238 fission 2.00e-02 1.30e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 6.25e-07 2.00e+01 U-238 nu-fission 5.56e-02 3.78e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 0.00e+00 6.25e-07 U-235 fission 4.43e-02 7.21e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 0.00e+00 6.25e-07 U-235 nu-fission 1.08e-01 1.76e-02 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 0.00e+00 6.25e-07 U-238 fission 6.14e-08 9.64e-09 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 0.00e+00 6.25e-07 U-238 nu-fission 1.53e-07 2.40e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 6.25e-07 2.00e+01 U-235 fission 1.39e-02 1.06e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 6.25e-07 2.00e+01 U-235 nu-fission 3.40e-02 2.61e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 6.25e-07 2.00e+01 U-238 fission 9.72e-03 1.21e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 27 6.25e-07 2.00e+01 U-238 nu-fission 2.71e-02 3.80e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 21 0.00e+00 6.25e-07 U-235 fission 1.08e-01 7.94e-03 -1 21 0.00e+00 6.25e-07 U-235 nu-fission 2.64e-01 1.94e-02 -2 21 0.00e+00 6.25e-07 U-238 fission 1.51e-07 1.00e-08 -3 21 0.00e+00 6.25e-07 U-238 nu-fission 3.76e-07 2.50e-08 -4 21 6.25e-07 2.00e+01 U-235 fission 3.12e-02 2.56e-03 -5 21 6.25e-07 2.00e+01 U-235 nu-fission 7.65e-02 6.24e-03 -6 21 6.25e-07 2.00e+01 U-238 fission 2.00e-02 1.30e-03 -7 21 6.25e-07 2.00e+01 U-238 nu-fission 5.56e-02 3.78e-03 -8 27 0.00e+00 6.25e-07 U-235 fission 4.43e-02 7.21e-03 -9 27 0.00e+00 6.25e-07 U-235 nu-fission 1.08e-01 1.76e-02 -10 27 0.00e+00 6.25e-07 U-238 fission 6.14e-08 9.64e-09 -11 27 0.00e+00 6.25e-07 U-238 nu-fission 1.53e-07 2.40e-08 -12 27 6.25e-07 2.00e+01 U-235 fission 1.39e-02 1.06e-03 -13 27 6.25e-07 2.00e+01 U-235 nu-fission 3.40e-02 2.61e-03 -14 27 6.25e-07 2.00e+01 U-238 fission 9.72e-03 1.21e-03 -15 27 6.25e-07 2.00e+01 U-238 nu-fission 2.71e-02 3.80e-03 +0 21 0.00e+00 6.25e-07 U235 fission 1.08e-01 7.94e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U235 nu-fission 2.64e-01 1.94e-02 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U238 fission 1.51e-07 1.00e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U238 nu-fission 3.76e-07 2.50e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U235 fission 3.12e-02 2.56e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U235 nu-fission 7.65e-02 6.24e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U238 fission 2.00e-02 1.30e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 6.25e-07 2.00e+01 U238 nu-fission 5.56e-02 3.78e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U235 fission 4.43e-02 7.21e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U235 nu-fission 1.08e-01 1.76e-02 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U238 fission 6.14e-08 9.64e-09 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 0.00e+00 6.25e-07 U238 nu-fission 1.53e-07 2.40e-08 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U235 fission 1.39e-02 1.06e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U235 nu-fission 3.40e-02 2.61e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U238 fission 9.72e-03 1.21e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 27 6.25e-07 2.00e+01 U238 nu-fission 2.71e-02 3.80e-03 cell energy low [MeV] energy high [MeV] nuclide score mean std. dev. +0 21 0.00e+00 6.25e-07 U235 fission 1.08e-01 7.94e-03 +1 21 0.00e+00 6.25e-07 U235 nu-fission 2.64e-01 1.94e-02 +2 21 0.00e+00 6.25e-07 U238 fission 1.51e-07 1.00e-08 +3 21 0.00e+00 6.25e-07 U238 nu-fission 3.76e-07 2.50e-08 +4 21 6.25e-07 2.00e+01 U235 fission 3.12e-02 2.56e-03 +5 21 6.25e-07 2.00e+01 U235 nu-fission 7.65e-02 6.24e-03 +6 21 6.25e-07 2.00e+01 U238 fission 2.00e-02 1.30e-03 +7 21 6.25e-07 2.00e+01 U238 nu-fission 5.56e-02 3.78e-03 +8 27 0.00e+00 6.25e-07 U235 fission 4.43e-02 7.21e-03 +9 27 0.00e+00 6.25e-07 U235 nu-fission 1.08e-01 1.76e-02 +10 27 0.00e+00 6.25e-07 U238 fission 6.14e-08 9.64e-09 +11 27 0.00e+00 6.25e-07 U238 nu-fission 1.53e-07 2.40e-08 +12 27 6.25e-07 2.00e+01 U235 fission 1.39e-02 1.06e-03 +13 27 6.25e-07 2.00e+01 U235 nu-fission 3.40e-02 2.61e-03 +14 27 6.25e-07 2.00e+01 U238 fission 9.72e-03 1.21e-03 +15 27 6.25e-07 2.00e+01 U238 nu-fission 2.71e-02 3.80e-03 sum(distribcell) energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U-235 fission 0.00e+00 0.00e+00 -1 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U-235 nu-fission 0.00e+00 0.00e+00 -2 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U-238 fission 0.00e+00 0.00e+00 -3 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U-238 nu-fission 0.00e+00 0.00e+00 -4 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U-235 fission 0.00e+00 0.00e+00 -5 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U-235 nu-fission 0.00e+00 0.00e+00 -6 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U-238 fission 0.00e+00 0.00e+00 -7 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U-238 nu-fission 0.00e+00 0.00e+00 -8 (500, 5000, 50000) 0.00e+00 6.25e-07 U-235 fission 0.00e+00 0.00e+00 -9 (500, 5000, 50000) 0.00e+00 6.25e-07 U-235 nu-fission 0.00e+00 0.00e+00 -10 (500, 5000, 50000) 0.00e+00 6.25e-07 U-238 fission 0.00e+00 0.00e+00 -11 (500, 5000, 50000) 0.00e+00 6.25e-07 U-238 nu-fission 0.00e+00 0.00e+00 -12 (500, 5000, 50000) 6.25e-07 2.00e+01 U-235 fission 0.00e+00 0.00e+00 -13 (500, 5000, 50000) 6.25e-07 2.00e+01 U-235 nu-fission 0.00e+00 0.00e+00 -14 (500, 5000, 50000) 6.25e-07 2.00e+01 U-238 fission 0.00e+00 0.00e+00 -15 (500, 5000, 50000) 6.25e-07 2.00e+01 U-238 nu-fission 0.00e+00 0.00e+00 +0 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U235 fission 0.00e+00 0.00e+00 +1 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U235 nu-fission 0.00e+00 0.00e+00 +2 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U238 fission 0.00e+00 0.00e+00 +3 (0, 100, 2000, 30000) 0.00e+00 6.25e-07 U238 nu-fission 0.00e+00 0.00e+00 +4 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U235 fission 0.00e+00 0.00e+00 +5 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U235 nu-fission 0.00e+00 0.00e+00 +6 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U238 fission 0.00e+00 0.00e+00 +7 (0, 100, 2000, 30000) 6.25e-07 2.00e+01 U238 nu-fission 0.00e+00 0.00e+00 +8 (500, 5000, 50000) 0.00e+00 6.25e-07 U235 fission 0.00e+00 0.00e+00 +9 (500, 5000, 50000) 0.00e+00 6.25e-07 U235 nu-fission 0.00e+00 0.00e+00 +10 (500, 5000, 50000) 0.00e+00 6.25e-07 U238 fission 0.00e+00 0.00e+00 +11 (500, 5000, 50000) 0.00e+00 6.25e-07 U238 nu-fission 0.00e+00 0.00e+00 +12 (500, 5000, 50000) 6.25e-07 2.00e+01 U235 fission 0.00e+00 0.00e+00 +13 (500, 5000, 50000) 6.25e-07 2.00e+01 U235 nu-fission 0.00e+00 0.00e+00 +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 U-235 fission 9.18e-03 1.62e-03 -1 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U-235 nu-fission 2.24e-02 3.94e-03 -2 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U-238 fission 1.31e-08 2.08e-09 -3 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U-238 nu-fission 3.26e-08 5.19e-09 -4 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-235 fission 8.40e-04 2.13e-04 -5 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-235 nu-fission 2.06e-03 5.17e-04 -6 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-238 fission 7.05e-04 3.42e-04 -7 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U-238 nu-fission 1.99e-03 1.01e-03 -8 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-235 fission 8.77e-03 1.30e-03 -9 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-235 nu-fission 2.14e-02 3.18e-03 -10 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-238 fission 1.24e-08 1.74e-09 -11 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U-238 nu-fission 3.08e-08 4.33e-09 -12 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-235 fission 2.30e-03 6.20e-04 -13 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-235 nu-fission 5.63e-03 1.52e-03 -14 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-238 fission 1.45e-03 7.19e-04 -15 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U-238 nu-fission 3.97e-03 1.98e-03 +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 diff --git a/tests/test_tally_slice_merge/test_tally_slice_merge.py b/tests/test_tally_slice_merge/test_tally_slice_merge.py index 78ea4fe9d5..2794539d24 100644 --- a/tests/test_tally_slice_merge/test_tally_slice_merge.py +++ b/tests/test_tally_slice_merge/test_tally_slice_merge.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import division + import os import sys import glob @@ -20,7 +22,7 @@ class TallySliceMergeTestHarness(PyAPITestHarness): tallies_file = openmc.Tallies() # Define nuclides and scores to add to both tallies - self.nuclides = ['U-235', 'U-238'] + self.nuclides = ['U235', 'U238'] self.scores = ['fission', 'nu-fission'] # Define filters for energy and spatial domain @@ -60,7 +62,7 @@ class TallySliceMergeTestHarness(PyAPITestHarness): # Merge all cell tallies together while len(tallies) != 1: - halfway = int(len(tallies) / 2) + halfway = len(tallies) // 2 zip_split = zip(tallies[:halfway], tallies[halfway:]) tallies = list(map(lambda xy: xy[0].merge(xy[1]), zip_split)) diff --git a/tests/test_trace/materials.xml b/tests/test_trace/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_trace/materials.xml +++ b/tests/test_trace/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_track_output/materials.xml b/tests/test_track_output/materials.xml index e2b96cb534..017797aa1e 100644 --- a/tests/test_track_output/materials.xml +++ b/tests/test_track_output/materials.xml @@ -4,92 +4,92 @@ - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + diff --git a/tests/test_translation/materials.xml b/tests/test_translation/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_translation/materials.xml +++ b/tests/test_translation/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_trigger_batch_interval/materials.xml b/tests/test_trigger_batch_interval/materials.xml index 2761be30cf..e9667b41f4 100644 --- a/tests/test_trigger_batch_interval/materials.xml +++ b/tests/test_trigger_batch_interval/materials.xml @@ -6,7 +6,7 @@ - + diff --git a/tests/test_trigger_batch_interval/tallies.xml b/tests/test_trigger_batch_interval/tallies.xml index cf20668c83..3440dbf217 100644 --- a/tests/test_trigger_batch_interval/tallies.xml +++ b/tests/test_trigger_batch_interval/tallies.xml @@ -7,7 +7,7 @@ - Pu-239 + Pu239 total absorption fission scatter diff --git a/tests/test_trigger_no_batch_interval/materials.xml b/tests/test_trigger_no_batch_interval/materials.xml index 2761be30cf..e9667b41f4 100644 --- a/tests/test_trigger_no_batch_interval/materials.xml +++ b/tests/test_trigger_no_batch_interval/materials.xml @@ -6,7 +6,7 @@ - + diff --git a/tests/test_trigger_no_batch_interval/tallies.xml b/tests/test_trigger_no_batch_interval/tallies.xml index cf20668c83..3440dbf217 100644 --- a/tests/test_trigger_no_batch_interval/tallies.xml +++ b/tests/test_trigger_no_batch_interval/tallies.xml @@ -7,7 +7,7 @@ - Pu-239 + Pu239 total absorption fission scatter diff --git a/tests/test_trigger_no_status/materials.xml b/tests/test_trigger_no_status/materials.xml index 2761be30cf..e9667b41f4 100644 --- a/tests/test_trigger_no_status/materials.xml +++ b/tests/test_trigger_no_status/materials.xml @@ -6,7 +6,7 @@ - + diff --git a/tests/test_trigger_no_status/tallies.xml b/tests/test_trigger_no_status/tallies.xml index cf20668c83..3440dbf217 100644 --- a/tests/test_trigger_no_status/tallies.xml +++ b/tests/test_trigger_no_status/tallies.xml @@ -7,7 +7,7 @@ - Pu-239 + Pu239 total absorption fission scatter diff --git a/tests/test_trigger_tallies/materials.xml b/tests/test_trigger_tallies/materials.xml index 2761be30cf..e9667b41f4 100644 --- a/tests/test_trigger_tallies/materials.xml +++ b/tests/test_trigger_tallies/materials.xml @@ -6,7 +6,7 @@ - + diff --git a/tests/test_trigger_tallies/tallies.xml b/tests/test_trigger_tallies/tallies.xml index 2dbc836ee5..0d66e1538e 100644 --- a/tests/test_trigger_tallies/tallies.xml +++ b/tests/test_trigger_tallies/tallies.xml @@ -7,7 +7,7 @@ - Pu-239 + Pu239 total absorption fission scatter diff --git a/tests/test_triso/inputs_true.dat b/tests/test_triso/inputs_true.dat index 3e54e5e6fe..04119a2dc8 100644 --- a/tests/test_triso/inputs_true.dat +++ b/tests/test_triso/inputs_true.dat @@ -1 +1 @@ -2dcfd1a17cba671874e60192a7355deb57e2e51467a474fd168c8b51e454a977edb34df07ae11625c0a43906112152c75113e442a9a8f240a4c9d1a11ee4771d \ No newline at end of file +f33e6653b883200457df2ff2ba9cf715d5ddaa1296dd71d277c6f1d9d5b7831cc92aaf1e97509d26e5a93235cd9f775c0cfaa5ebc3dfe8fc71469bac166d362b \ No newline at end of file diff --git a/tests/test_triso/test_triso.py b/tests/test_triso/test_triso.py index d1ac4e5cdc..9a8fb0c3be 100644 --- a/tests/test_triso/test_triso.py +++ b/tests/test_triso/test_triso.py @@ -19,35 +19,35 @@ class TRISOTestHarness(PyAPITestHarness): # Define TRISO matrials fuel = openmc.Material() fuel.set_density('g/cm3', 10.5) - fuel.add_nuclide('U-235', 0.14154) - fuel.add_nuclide('U-238', 0.85846) - fuel.add_nuclide('C-Nat', 0.5) - fuel.add_nuclide('O-16', 1.5) + fuel.add_nuclide('U235', 0.14154) + fuel.add_nuclide('U238', 0.85846) + fuel.add_nuclide('C0', 0.5) + fuel.add_nuclide('O16', 1.5) porous_carbon = openmc.Material() porous_carbon.set_density('g/cm3', 1.0) - porous_carbon.add_nuclide('C-Nat', 1.0) - porous_carbon.add_s_alpha_beta('Graph', '71t') + porous_carbon.add_nuclide('C0', 1.0) + porous_carbon.add_s_alpha_beta('c_Graphite', '71t') ipyc = openmc.Material() ipyc.set_density('g/cm3', 1.90) - ipyc.add_nuclide('C-Nat', 1.0) - ipyc.add_s_alpha_beta('Graph', '71t') + ipyc.add_nuclide('C0', 1.0) + ipyc.add_s_alpha_beta('c_Graphite', '71t') sic = openmc.Material() sic.set_density('g/cm3', 3.20) sic.add_element('Si', 1.0) - sic.add_nuclide('C-Nat', 1.0) + sic.add_nuclide('C0', 1.0) opyc = openmc.Material() opyc.set_density('g/cm3', 1.87) - opyc.add_nuclide('C-Nat', 1.0) - opyc.add_s_alpha_beta('Graph', '71t') + opyc.add_nuclide('C0', 1.0) + opyc.add_s_alpha_beta('c_Graphite', '71t') graphite = openmc.Material() graphite.set_density('g/cm3', 1.1995) - graphite.add_nuclide('C-Nat', 1.0) - graphite.add_s_alpha_beta('Graph', '71t') + graphite.add_nuclide('C0', 1.0) + graphite.add_s_alpha_beta('c_Graphite', '71t') # Create TRISO particles spheres = [openmc.Sphere(R=r*1e-4) diff --git a/tests/test_uniform_fs/materials.xml b/tests/test_uniform_fs/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_uniform_fs/materials.xml +++ b/tests/test_uniform_fs/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_union_energy_grids/materials.xml b/tests/test_union_energy_grids/materials.xml index 45ccc65540..ed9b38d901 100644 --- a/tests/test_union_energy_grids/materials.xml +++ b/tests/test_union_energy_grids/materials.xml @@ -3,9 +3,9 @@ - - - + + + diff --git a/tests/test_universe/materials.xml b/tests/test_universe/materials.xml index 315c0fa848..23d7f969db 100644 --- a/tests/test_universe/materials.xml +++ b/tests/test_universe/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_void/materials.xml b/tests/test_void/materials.xml index b8f9938246..4768bad0bc 100644 --- a/tests/test_void/materials.xml +++ b/tests/test_void/materials.xml @@ -8,56 +8,56 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - + + + + - - + + From 9230203efb8f78523fc058873b96546d61350b1a Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 13 May 2016 22:09:36 -0500 Subject: [PATCH 52/82] Remove unused table types in openmc.data.ace --- openmc/data/ace.py | 367 +-------------------------------------------- 1 file changed, 1 insertion(+), 366 deletions(-) diff --git a/openmc/data/ace.py b/openmc/data/ace.py index 16c18dfb49..358d987896 100644 --- a/openmc/data/ace.py +++ b/openmc/data/ace.py @@ -1856,371 +1856,6 @@ class Reaction(object): return rxn -class DosimetryTable(Table): - def __init__(self, name, atomic_weight_ratio, temperature): - super(DosimetryTable, self).__init__( - name, atomic_weight_ratio, temperature) - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - -class NeutronDiscreteTable(Table): - - def __init__(self, name, atomic_weight_ratio, temperature): - super(NeutronDiscreteTable, self).__init__( - name, atomic_weight_ratio, temperature) - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - -class NeutronMGTable(Table): - - def __init__(self, name, atomic_weight_ratio, temperature): - super(NeutronMGTable, self).__init__( - name, atomic_weight_ratio, temperature) - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - -class PhotoatomicTable(Table): - - def __init__(self, name, atomic_weight_ratio, temperature): - super(PhotoatomicTable, self).__init__( - name, atomic_weight_ratio, temperature) - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - def _read_all(self): - self._read_eszg() - self._read_jinc() - self._read_jcoh() - self._read_heating() - self._read_compton_data() - - def _read_eszg(self): - # Determine number of energies on common energy grid - n_energies = self._nxs[3] - - # Read cross sections - idx = self._jxs[1] - data = np.asarray(self._xss[idx:idx + 5*n_energies]) - data.shape = (5, n_energies) - self.energy = data[0] - self.incoherent = data[1] - self.coherent = data[2] - self.photoelectric = data[3] - self.pairproduction = data[4] - - def _read_jinc(self): - # Read incoherent scattering function - idx = self._jxs[2] - self.incoherent_scattering = self._xss[idx:idx + 21] - - def _read_jcoh(self): - # Read coherent form factors and integrated coherent form factors - idx = self._jxs[3] - self.int_coherent_form_factors = self._xss[idx:idx + 55] - self.coherent_form_factors = self._xss[idx + 55:idx + 2*55] - - def _read_jflo(self): - raise NotImplementedError - - def _read_heating(self): - idx = self._jxs[5] - self.avg_heating = self._xss[idx:idx + self._nxs[3]] - - def _read_compton_data(self): - # Determine number of Compton profiles - n_shells = self._nxs[5] - - if n_shells > 0: - # Number of electrons per shell - idx = self._jxs[6] - self.electrons_per_shell = np.asarray( - self._xss[idx:idx + n_shells], dtype=int) - - # Binding energy per shell - idx = self._jxs[7] - self.binding_energy_per_shell = self._xss[idx:idx + n_shells] - - # Probability of interaction per shell - idx = self._jxs[8] - self.probability_per_shell = self._xss[idx:idx + n_shells] - - # Initialize arrays for Compton profile data - self.compton_profile_interp = np.zeros(n_shells) - self.compton_profile_momentum = [] - self.compton_profile_pdf = [] - self.compton_profile_cdf = [] - - for i in range(n_shells): - # Get locator for SWD block - loca = int(self._xss[self._jxs[9] + i]) - idx = self._jxs[10] + loca - 1 - - # Get interpolation parameter and number of momentum entries - self.compton_profile_interp[i] = int(self._xss[idx]) - n_momentum = int(self._xss[idx + 1]) - idx += 2 - - # Get momentum entries, PDF, and CDF - data = self._xss[idx:idx + 3*n_momentum] - data.shape = (3, n_momentum) - self.compton_profile_momentum.append(data[0]) - self.compton_profile_pdf.append(data[1]) - self.compton_profile_cdf.append(data[2]) - - -class PhotoatomicMGTable(Table): - - def __init__(self, name, atomic_weight_ratio, temperature): - super(PhotoatomicMGTable, self).__init__( - name, atomic_weight_ratio, temperature) - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - -class ElectronTable(Table): - - def __init__(self, name, atomic_weight_ratio, temperature): - super(ElectronTable, self).__init__( - name, atomic_weight_ratio, temperature) - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - -class PhotonuclearTable(Table): - - def __init__(self, name, atomic_weight_ratio, temperature): - super(PhotonuclearTable, self).__init__( - name, atomic_weight_ratio, temperature) - self.reactions = OrderedDict() - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - def _read_all(self): - self._read_basic() - self._read_cross_sections() - self._read_secondaries() - self._read_angular_distributions() - self._read_energy_distributions() - - def _read_basic(self): - n_energies = self._nxs[3] - - # Read energy mesh - idx = self._jxs[1] - self.energy = self._xss[idx:idx + n_energies] - - # Read total cross section - idx = self._jxs[2] - self.total_xs = self._xss[idx:idx + n_energies] - - # Read non-elastic and elastic cross section - if self._jxs[4] > 0: - idx = self._jxs[3] - self.non_elastic_xs = self._xss[idx:idx + n_energies] - idx = self._jxs[4] - self.elastic_xs = self._xss[idx:idx + n_energies] - else: - self.non_elastic_xs = self.total_xs.copy() - self.elastic_xs = np.zeros(n_energies) - - # Read heating numbers - idx = self._jxs[5] - if idx > 0: - self.heating_number = self._xss[idx:idx + n_energies] - else: - self.heating_number = np.zeros(n_energies) - - def _read_cross_sections(self): - # Determine number of reactions - n_reactions = self._nxs[4] - - # Read list of MT numbers and Q values - mts = np.asarray(self._xss[self._jxs[6]:self._jxs[6] + - n_reactions], dtype=int) - qvalues = np.asarray(self._xss[self._jxs[7]:self._jxs[7] + - n_reactions]) - - # Create reactions in dictionary - reactions = [(mt, Reaction(mt, self)) for mt in mts] - self.reactions.update(reactions) - - for i, rx in enumerate(self.reactions.values()): - # Copy Q values - rx.Q_value = qvalues[i] - - # Determine starting index on energy grid and number of energies - idx = self._jxs[9] + int(self._xss[self._jxs[8] + i]) - 1 - rx.threshold_idx = int(self._xss[idx]) - n_energies = int(self._xss[idx + 1]) - energy = self.energy[rx.threshold_idx:rx.threshold_idx + n_energies] - idx += 2 - - # Read reaction cross setion - xs = self._xss[idx:idx + n_energies] - rx.xs = Tabulated1D(energy, xs, [], []) - - def _read_secondaries(self): - names = {1: 'neutron', 2: 'photon', 3: 'electron', - 9: 'proton', 31: 'deuteron', 32: 'triton', - 33: 'helium3', 34: 'alpha'} - - n_particles = self._nxs[5] - n_entries = self._nxs[7] - - idx = self._jxs[10] - ixs = np.asarray(self._xss[idx:idx + n_particles*n_entries], dtype=int) - ixs.shape = (n_particles, n_entries) - self.ixs = ixs.transpose() - - self.particles = [] - - for j in range(n_particles): - # Create dictionary for particle - particle = {} - self.particles.append(particle) - - # Get secondary particle type/name - particle['ipt'] = self.ixs[0, j] - particle['name'] = names[particle['ipt']] - - # Number of reactions that produce secondary particle - n_producing = self.ixs[1, j] - - # Particle-production cross section - idx = self.ixs[2, j] - particle['ie_production'] = int(self._xss[idx]) - ne = int(self._xss[idx + 1]) - idx += 2 - particle['production'] = self._xss[idx:idx + ne] - - # Average heating numbers - idx = self.ixs[3, j] - particle['ie_heating'] = int(self._xss[idx]) - ne = int(self._xss[idx + 1]) - idx += 2 - particle['heating_number'] = self._xss[idx:idx + ne] - - # MTs of particle production reactions - idx = self.ixs[4, j] - particle['mt_producing'] = np.asarray( - self._xss[idx:idx + n_producing], dtype=int) - - # Coordinate system of reaction producing secondary particle - idx = self.ixs[5, j] - particle['center_of_mass'] = [i < 0 for i in - self._xss[idx:idx + n_producing]] - - # Reaction yields - particle['yield'] = {} - for k in range(n_producing): - # Create dictionary for yield data - yieldData = {} - - # Read reaction yield data for a single MT - idx = self.ixs[7, j] + int(self._xss[self.ixs[6, j] + k]) - 1 - - yieldData['mftype'] = int(self._xss[idx]) - idx += 1 - - if yieldData['mftype'] in (6, 12, 16): - # Yield data from ENDF File 6 or 12 - mtmult = int(self._xss[idx]) - assert mtmult == particle['mt_producing'][k] - - # Read yield as function of energy - yieldData['multiplicity'] = _get_tabulated_1d( - self._xss, idx + 1) - - elif yieldData['mftype'] == 13: - # Production cross section for corresponding MT - yieldData['ie'] = int(self._xss[idx]) - ne = int(self._xss[idx + 1]) - idx += 2 - yieldData['cross_section'] = self._xss[idx:idx + ne] - - # Add reaction yield data to dictionary - mt = particle['mt_producing'][k] - particle['yield'][mt] = yieldData - - def _read_angular_distributions(self): - for j, particle in enumerate(self.particles): - # Create dictionary for angular distributions - angular_dists = {} - particle['angular_distribution'] = angular_dists - - for k, mt in enumerate(particle['mt_producing']): - landp = int(self._xss[self.ixs[8, j] + k]) - - # check if angular distribution data exists - if landp == -1: - # Angular distribution data are specified through the - # DLWP block - continue - elif landp == 0: - # No angular distribution data are given for this - # reaction, isotropic scattering is assumed - ie = self.reactions[mt].threshold_idx - ne = len(self.reactions[mt].sigma) - angular_dists[mt] = AngularDistribution.isotropic( - np.array([self.energy[ie], self.energy[ie + ne - 1]])) - continue - - idx = self.ixs[9, j] + landp - 1 - - angular_dists[mt] = AngularDistribution() - angular_dists[mt].read(self._xss, idx, self.ixs[9, j]) - - def _read_energy_distributions(self): - for j, particle in enumerate(self.particles): - # Create dictionary for energy distributions - energy_dists = {} - particle['energy_distribution'] = energy_dists - - for k, mt in enumerate(particle['mt_producing']): - # Determine locator for kth energy distribution - ldlwp = int(self._xss[self.ixs[10, j] + k]) - - # Read energy distribution data - energy_dists[mt] = self._get_energy_distribution( - self.ixs[11, j], ldlwp) table_types = { "c": NeutronTable, - "t": SabTable, - "y": DosimetryTable, - "d": NeutronDiscreteTable, - "p": PhotoatomicTable, - "m": NeutronMGTable, - "g": PhotoatomicMGTable, - "e": ElectronTable, - "u": PhotonuclearTable} + "t": SabTable} From e19291118e1398f399e780db5c6f661c265a9fc7 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 9 Jun 2016 14:52:58 -0500 Subject: [PATCH 53/82] Refactor use of ACE tables to generate neutron/thermal scattering data --- data/convert_hdf5.py | 96 - data/cross_sections.xml | 2076 --------------------- data/cross_sections_ascii.xml | 2066 --------------------- data/cross_sections_nndc.xml | 870 --------- data/cross_sections_serpent.xml | 2707 ---------------------------- data/get_nndc_data.py | 50 +- docs/source/index.rst | 6 +- docs/source/methods/physics.rst | 410 ++--- docs/source/pythonapi/index.rst | 8 +- openmc/data/__init__.py | 3 + openmc/data/ace.py | 1573 +--------------- openmc/data/angle_distribution.py | 68 +- openmc/data/angle_energy.py | 70 + openmc/data/container.py | 39 + openmc/data/correlated.py | 117 +- openmc/data/energy_distribution.py | 227 ++- openmc/data/kalbach_mann.py | 94 +- openmc/data/library.py | 47 + openmc/data/nbody.py | 24 + openmc/data/neutron.py | 405 +++++ openmc/data/reaction.py | 512 ++++++ openmc/data/thermal.py | 305 +++- openmc/data/urr.py | 39 + openmc/mgxs/library.py | 4 +- openmc/mgxs/mgxs.py | 70 +- openmc/mgxs_library.py | 2 +- openmc/nuclide.py | 6 +- openmc/tallies.py | 14 +- scripts/openmc-ace-to-hdf5 | 139 ++ scripts/openmc-ascii-to-binary | 13 - scripts/openmc-update-inputs | 66 + scripts/openmc-xsdata-to-xml | 148 -- scripts/openmc-xsdir-to-xml | 288 --- src/reaction_header.F90 | 2 +- src/relaxng/cross_sections.rnc | 29 +- src/relaxng/cross_sections.rng | 112 +- 36 files changed, 2467 insertions(+), 10238 deletions(-) delete mode 100644 data/convert_hdf5.py delete mode 100644 data/cross_sections.xml delete mode 100644 data/cross_sections_ascii.xml delete mode 100644 data/cross_sections_nndc.xml delete mode 100644 data/cross_sections_serpent.xml create mode 100644 openmc/data/library.py create mode 100644 openmc/data/neutron.py create mode 100644 openmc/data/reaction.py create mode 100755 scripts/openmc-ace-to-hdf5 delete mode 100755 scripts/openmc-ascii-to-binary delete mode 100755 scripts/openmc-xsdata-to-xml delete mode 100755 scripts/openmc-xsdir-to-xml diff --git a/data/convert_hdf5.py b/data/convert_hdf5.py deleted file mode 100644 index 3f5fcfdb74..0000000000 --- a/data/convert_hdf5.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python - -import glob -import os -from xml.dom.minidom import getDOMImplementation - -import openmc.data.ace - - -if not os.path.isdir('nndc_hdf5'): - os.mkdir('nndc_hdf5') - -nndc_files = glob.glob('nndc/293.6K/*.ace') -nndc_thermal_files = glob.glob('nndc/tsl/*.acer') - -thermal_names = {'al': 'c_Al27', - 'be': 'c_Be', - 'bebeo': 'c_Be_in_BeO', - 'benzine': 'c_Benzine', - 'dd2o': 'c_D_in_D2O', - 'fe': 'c_Fe56', - 'graphite': 'c_Graphite', - 'hch2': 'c_H_in_CH2', - 'hh2o': 'c_H_in_H2O', - 'hzrh': 'c_H_in_ZrH', - 'lch4': 'c_liquid_CH4', - 'obeo': 'c_O_in_BeO', - 'orthod': 'c_ortho_D', - 'orthoh': 'c_ortho_H', - 'ouo2': 'c_O_in_UO2', - 'parad': 'c_para_D', - 'parah': 'c_para_H', - 'sch4': 'c_solid_CH4', - 'uuo2': 'c_U_in_UO2', - 'zrzrh': 'c_Zr_in_ZrH'} - -impl = getDOMImplementation() -doc = impl.createDocument(None, "cross_sections", None) -doc_root = doc.documentElement - -for f in sorted(nndc_files): - print('Converting {}...'.format(f)) - - # Deterine output file name - dirname, basename = os.path.split(f) - root, ext = os.path.splitext(basename) - outfile = os.path.join('nndc_hdf5', root + '.h5') - if os.path.exists(outfile): - os.remove(outfile) - - # Determine elemental symbol, mass number and metastable state - element, mass_number, temp = basename.split('_') - metastable = int(mass_number[-1]) if 'm' in mass_number else 0 - mass_number = int(mass_number[:3]) - - # Parse ACE file, create HDF5 file - t = openmc.data.ace.get_table(f) - t.export_to_hdf5(outfile, element, mass_number, metastable) - xs = t.name.split('.')[1] - if metastable > 0: - name = "{}{}_m{}.{}".format(element, mass_number, metastable, xs) - else: - name = "{}{}.{}".format(element, mass_number, xs) - - # Add entry to XML listing - libraryNode = doc.createElement("library") - libraryNode.setAttribute("path", root + '.h5') - libraryNode.setAttribute("materials", name) - libraryNode.setAttribute("type", "neutron") - doc_root.appendChild(libraryNode) - -for f in sorted(nndc_thermal_files): - print('Converting {}...'.format(f)) - - # Deterine output file name - dirname, basename = os.path.split(f) - root, ext = os.path.splitext(basename) - outfile = os.path.join('nndc_hdf5', root + '.h5') - if os.path.exists(outfile): - os.remove(outfile) - - # Parse ACE file, create HDF5 file - t = openmc.data.ace.get_table(f) - t.export_to_hdf5(outfile, thermal_names[root]) - xs = t.name.split('.')[1] - - # Add entry to XML listing - libraryNode = doc.createElement("library") - libraryNode.setAttribute("path", root + '.h5') - libraryNode.setAttribute("materials", thermal_names[root] + '.' + xs) - libraryNode.setAttribute("type", "thermal") - doc_root.appendChild(libraryNode) - -# Write cross_sections.xml -lines = doc.toprettyxml(indent=' ') -open(os.path.join('nndc_hdf5', 'cross_sections.xml'), 'w').write(lines) diff --git a/data/cross_sections.xml b/data/cross_sections.xml deleted file mode 100644 index 180021064c..0000000000 --- a/data/cross_sections.xml +++ /dev/null @@ -1,2076 +0,0 @@ - - - - /opt/mcnp/data - - - binary - - - 4096 - - - 512 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/cross_sections_ascii.xml b/data/cross_sections_ascii.xml deleted file mode 100644 index b0f083bb27..0000000000 --- a/data/cross_sections_ascii.xml +++ /dev/null @@ -1,2066 +0,0 @@ - - - /opt/mcnp/data - ascii - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/cross_sections_nndc.xml b/data/cross_sections_nndc.xml deleted file mode 100644 index 3a7a5ca72e..0000000000 --- a/data/cross_sections_nndc.xml +++ /dev/null @@ -1,870 +0,0 @@ - - - ascii - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/cross_sections_serpent.xml b/data/cross_sections_serpent.xml deleted file mode 100644 index 9597903090..0000000000 --- a/data/cross_sections_serpent.xml +++ /dev/null @@ -1,2707 +0,0 @@ - - - - /opt/serpent/xsdata/endfb7/acedata - - ascii - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/get_nndc_data.py b/data/get_nndc_data.py index 844abea812..a0429fba5d 100755 --- a/data/get_nndc_data.py +++ b/data/get_nndc_data.py @@ -20,10 +20,6 @@ try: except ImportError: from urllib2 import urlopen -cwd = os.getcwd() -sys.path.insert(0, os.path.join(cwd, '..')) -from openmc.data.ace import ascii_to_binary - baseUrl = 'http://www.nndc.bnl.gov/endf/b7.1/aceFiles/' files = ['ENDF-B-VII.1-neutron-293.6K.tar.gz', 'ENDF-B-VII.1-tsl.tar.gz'] @@ -114,12 +110,6 @@ text = text.replace('6012', '6000', 1) with open(graphite, 'w') as fh: fh.write(text) -# ============================================================================== -# COPY CROSS_SECTIONS.XML - -print('Copying cross_sections_nndc.xml...') -shutil.copyfile('cross_sections_nndc.xml', 'nndc/cross_sections.xml') - # ============================================================================== # PROMPT USER TO DELETE .TAR.GZ FILES @@ -140,44 +130,26 @@ if not response or response.lower().startswith('y'): os.remove(f) # ============================================================================== -# PROMPT USER TO CONVERT ASCII TO BINARY +# PROMPT USER TO GENERATE HDF5 LIBRARY # Ask user to convert if not args.batch: if sys.version_info[0] < 3: - response = raw_input('Convert ACE files to binary? ([y]/n) ') + response = raw_input('Generate HDF5 library? ([y]/n) ') else: - response = input('Convert ACE files to binary? ([y]/n) ') + response = input('Generate HDF5 library? ([y]/n) ') else: response = 'y' # Convert files if requested if not response or response.lower().startswith('y'): + # get a list of all ACE files + ace_files = sorted(glob.glob(os.path.join('nndc', '**', '*.ace*'))) - # get a list of directories - ace_dirs = glob.glob(os.path.join('nndc', '*K')) - ace_dirs += glob.glob(os.path.join('nndc', 'tsl')) + # Ensure 'import openmc.data' works in the openmc-ace-to-xml script + cwd = os.getcwd() + env = os.environ.copy() + env['PYTHONPATH'] = os.path.join(cwd, '..') - # loop around ace directories - for d in ace_dirs: - print('Converting {0}...'.format(d)) - - # get a list of files to convert - ace_files = glob.glob(os.path.join(d, '*.ace*')) - - # convert files - for f in ace_files: - print(' Converting {0}...'.format(os.path.split(f)[1])) - ascii_to_binary(f, f) - - # Change cross_sections.xml file - xs_file = os.path.join('nndc', 'cross_sections.xml') - asc_str = "ascii" - bin_str = " binary \n " - bin_str += " 4096 \n " - bin_str += " 512 " - with open(xs_file) as fh: - text = fh.read() - text = text.replace(asc_str, bin_str) - with open(xs_file, 'w') as fh: - fh.write(text) + subprocess.call(['../scripts/openmc-ace-to-hdf5', '-d', 'nndc_hdf5'] + + ace_files, env=env) diff --git a/docs/source/index.rst b/docs/source/index.rst index 413107c343..8fe680a702 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -5,9 +5,9 @@ The OpenMC Monte Carlo Code OpenMC is a Monte Carlo particle transport simulation code focused on neutron criticality calculations. It is capable of simulating 3D models based on constructive solid geometry with second-order surfaces. OpenMC supports either -continuous-energy or multi-group transport. The continuous-energy -particle interaction data is based on ACE format cross sections, also used -in the MCNP and Serpent Monte Carlo codes. +continuous-energy or multi-group transport. The continuous-energy particle +interaction data is based on a native HDF5 format that can be generated from ACE +files used by the MCNP and Serpent Monte Carlo codes. OpenMC was originally developed by members of the `Computational Reactor Physics Group`_ at the `Massachusetts Institute of Technology`_ starting diff --git a/docs/source/methods/physics.rst b/docs/source/methods/physics.rst index b246584c8b..530d4ac418 100644 --- a/docs/source/methods/physics.rst +++ b/docs/source/methods/physics.rst @@ -279,9 +279,9 @@ idiosyncrasies in treating fission. In an eigenvalue calculation, secondary neutrons from fission are only "banked" for use in the next generation rather than being tracked as secondary neutrons from elastic and inelastic scattering would be. On top of this, fission is sometimes broken into first-chance fission, -second-chance fission, etc. An ACE table either lists the partial fission -reactions with secondary energy distributions for each one, or a total fission -reaction with a single secondary energy distribution. +second-chance fission, etc. The nuclear data file either lists the partial +fission reactions with secondary energy distributions for each one, or a total +fission reaction with a single secondary energy distribution. When a fission reaction is sampled in OpenMC (either total fission or, if data exists, first- or second-chance fission), the following algorithm is used to @@ -290,7 +290,7 @@ number of prompt and delayed neutrons must be determined to decide whether the secondary neutrons will be prompt or delayed. This is important because delayed neutrons have a markedly different spectrum from prompt neutrons, one that has a lower average energy of emission. The total number of neutrons emitted -:math:`\nu_t` is given as a function of incident energy in the ACE format. Two +:math:`\nu_t` is given as a function of incident energy in the ENDF format. Two representations exist for :math:`\nu_t`. The first is a polynomial of order :math:`N` with coefficients :math:`c_0,c_1,\dots,c_N`. If :math:`\nu_t` has this format, we can evaluate it at incoming energy :math:`E` by using the equation @@ -347,26 +347,52 @@ provided as group-wise data instead of in a continuous-energy format. In this case, the outgoing energy of the fission neutrons are represented as histograms by way of either the nu-fission matrix or chi vector. ------------------------------------------ -Secondary Angles and Energy Distributions ------------------------------------------ +------------------------------------ +Secondary Angle-Energy Distributions +------------------------------------ Note that this section is specific to continuous-energy mode since the multi-group scattering process has already been described including the secondary energy and angle sampling. -For any reactions with secondary neutrons, it is necessary to sample secondary -angle and energy distributions. This includes elastic and inelastic scattering, -fission, and :math:`(n,xn)` reactions. In some cases, the angle and energy -distributions may be specified separately, and in other cases, they may be -specified as a correlated angle-energy distribution. In the following sections, -we will outline the methods used to sample secondary distributions as well as -how they are used to modify the state of a particle. +For a reaction with secondary products, it is necessary to determine the +outgoing angle and energy of the products. For any reaction other than elastic +and level inelastic scattering, the outgoing energy must be determined based on +tabulated or parameterized data. The `ENDF-6 Format`_ specifies a variety of +ways that the secondary energy distribution can be represented. ENDF File 5 +contains uncorrelated energy distribution whereas ENDF File 6 contains +correlated energy-angle distributions. The ACE format specifies its own +representations based loosely on the formats given in ENDF-6. OpenMC's HDF5 +nuclear data files use a combination of ENDF and ACE distributions; in this +section, we will describe how the outgoing angle and energy of secondary +particles are sampled. + +One of the subtleties in the nuclear data format is the fact that a single +reaction product can have multiple angle-energy distributions. This is mainly +useful for reactions with multiple products of the same type in the exit channel +such as :math:`(n,2n)` or :math:`(n,3n)`. In these types of reactions, each +neutron is emitted corresponding to a different excitation level of the compound +nucleus, and thus in general the neutrons will originate from different energy +distributions. If multiple angle-energy distributions are present, they are +assigned incoming-energy-dependent probabilities that can then be used to +randomly select one. + +Once a distribution has been selected, the procedure for determining the +outgoing angle and energy will depend on the type of the distribution. + +Uncorrelated Angle-Energy Distributions +--------------------------------------- + +The first set of distributions we will look at are uncorrelated angle-energy +distributions, where angle and energy are specified separately. For these +distributions, OpenMC first samples the angular distribution as described +:ref:`sample-angle` and then samples an energy as described in +:ref:`sample-energy`. .. _sample-angle: -Sampling Secondary Angle Distributions --------------------------------------- +Sampling Angular Distributions +++++++++++++++++++++++++++++++ For elastic scattering, it is only necessary to specific a secondary angle distribution since the outgoing energy can be determined analytically. Other @@ -374,15 +400,14 @@ reactions may also have separate secondary angle and secondary energy distributions that are uncorrelated. In these cases, the secondary angle distribution is represented as either -- An Isotropic angular distribution, -- An equiprobable distribution with 32 bins, or +- An isotropic angular distribution, - A tabular distribution. Isotropic Angular Distribution -++++++++++++++++++++++++++++++ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -In the first case, no data needs to be stored on the ACE table, and the cosine -of the scattering angle is simply calculated as +In the first case, no data is stored in the nuclear data file, and the cosine of +the scattering angle is simply calculated as .. math:: :label: isotropic-angle @@ -392,42 +417,17 @@ of the scattering angle is simply calculated as where :math:`\mu` is the cosine of the scattering angle and :math:`\xi` is a random number sampled uniformly on :math:`[0,1)`. -Equiprobable Angle Bin Distribution -+++++++++++++++++++++++++++++++++++ - -For a 32 equiprobable bin distribution, we select a random number :math:`\xi` to -sample a cosine bin :math:`i` such that - -.. math:: - :label: equiprobable-bin - - i = 1 + \lfloor 32\xi \rfloor. - -The same random number can then also be used to interpolate between neighboring -:math:`\mu` values to get the final scattering cosine: - -.. math:: - :label: equiprobable-cosine - - \mu = \mu_i + (32\xi - i) (\mu_{i+1} - \mu_i) - -where :math:`\mu_i` is the :math:`i`-th scattering cosine. - .. _angle-tabular: Tabular Angular Distribution -++++++++++++++++++++++++++++ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -As the `MCNP Manual`_ points out, using an equiprobable bin distribution works -well for high-probability regions of the scattering cosine probability, but for -low-probability regions it is not very accurate. Thus, a more accurate method is -to represent the scattering cosine with a tabular distribution. In this case, we -have a table of cosines and their corresponding values for a probability -distribution function and cumulative distribution function. For each incoming -neutron energy :math:`E_i`, let us call :math:`p_{i,j}` the j-th value in the -probability distribution function and :math:`c_{i,j}` the j-th value in the -cumulative distribution function. We first find the interpolation factor on the -incoming energy grid: +In this case, we have a table of cosines and their corresponding values for a +probability distribution function and cumulative distribution function. For each +incoming neutron energy :math:`E_i`, let us call :math:`p_{i,j}` the j-th value +in the probability distribution function and :math:`c_{i,j}` the j-th value in +the cumulative distribution function. We first find the interpolation factor on +the incoming energy grid: .. math:: :label: interpolation-factor @@ -545,89 +545,11 @@ linear-linear interpolation: .. _sample-energy: -Sampling Secondary Energy and Correlated Angle/Energy Distributions -------------------------------------------------------------------- +Sampling Energy Distributions ++++++++++++++++++++++++++++++ -For a reaction with secondary neutrons, it is necessary to determine the -outgoing energy of the neutrons. For any reaction other than elastic scattering, -the outgoing energy must be determined based on tabulated or parameterized -data. The `ENDF-6 Format`_ specifies a variety of ways that the secondary energy -distribution can be represented. ENDF File 5 contains uncorrelated energy -distribution where ENDF File 6 contains correlated energy-angle -distributions. The ACE format specifies its own representations based loosely on -the formats given in ENDF-6. In this section, we will describe how the outgoing -energy of secondary particles is determined based on each ACE law. - -One of the subtleties in the ACE format is the fact that a single reaction can -have multiple secondary energy distributions. This is mainly useful for -reactions with multiple neutrons in the exit channel such as :math:`(n,2n)` or -:math:`(n,3n)`. In these types of reactions, each neutron is emitted -corresponding to a different excitation level of the compound nucleus, and thus -in general the neutrons will originate from different energy distributions. If -multiple energy distributions are present, they are assigned probabilities that -can then be used to randomly select one. - -Once a secondary energy distribution has been sampled, the procedure for -determining the outgoing energy will depend on which ACE law has been specified -for the data. - -.. _ace-law-1: - -ACE Law 1 - Tabular Equiprobable Energy Bins -++++++++++++++++++++++++++++++++++++++++++++ - -In the tabular equiprobable bin representation, an array of equiprobable -outgoing energy bins is given for a number of incident energies. While the -representation itself is simple, the complexity lies in how one interpolates -between incident as well as outgoing energies on such a table. If one performs -simple interpolation between tables for neighboring incident energies, it is -possible that the resulting energies would violate laws governing the -kinematics, i.e. the outgoing energy may be outside the range of available -energy in the reaction. - -To avoid this situation, the accepted practice is to use a process known as -scaled interpolation [Doyas]_. First, we find the tabulated incident energies -which bound the actual incoming energy of the particle, i.e. find :math:`i` such -that :math:`E_i < E < E_{i+1}` and calculate the interpolation factor :math:`f` -via :eq:`interpolation-factor`. Then, we interpolate between the minimum and -maximum energies of the outgoing energy distributions corresponding to -:math:`E_i` and :math:`E_{i+1}`: - -.. math:: - :label: ace-law-1-minmax - - E_{min} = E_{i,1} + f ( E_{i+1,1} - E_i ) \\ - E_{max} = E_{i,M} + f ( E_{i+1,M} - E_M ) - -where :math:`E_{min}` and :math:`E_{max}` are the minimum and maximum outgoing -energies of a scaled distribution, :math:`E_{i,j}` is the j-th outgoing energy -corresponding to the incoming energy :math:`E_i`, and :math:`M` is the number of -outgoing energy bins. Next, statistical interpolation is performed to choose -between using the outgoing energy distributions corresponding to energy -:math:`E_i` and :math:`E_{i+1}`. Let :math:`\ell` be the chosen table where -:math:`\ell = i` if :math:`\xi_1 > f` and :math:`\ell = i + 1` otherwise, and -:math:`\xi_1` is a random number. Now, we randomly sample an equiprobable -outgoing energy bin :math:`j` and interpolate between successive values on the -outgoing energy distribution: - -.. math:: - :label: ace-law-1-intermediate - - \hat{E} = E_{\ell,j} + \xi_2 (E_{\ell,j+1} - E_{\ell,j}) - -where :math:`\xi_2` is a random number sampled uniformly on :math:`[0,1)`. Since -this outgoing energy may violate reaction kinematics, we then scale it to the -minimum and maximum energies we calculated earlier to get the final outgoing -energy: - -.. math:: - :label: ace-law-1-energy - - E' = E_{min} + \frac{\hat{E} - E_{\ell,1}}{E_{\ell,M} - E_{\ell,1}} - (E_{max} - E_{min}) - -ACE Law 3 - Inelastic Level Scattering -++++++++++++++++++++++++++++++++++++++ +Inelastic Level Scattering +^^^^^^^^^^^^^^^^^^^^^^^^^^ It can be shown (see Foderaro_) that in inelastic level scattering, the outgoing energy of the neutron :math:`E'` can be related to the Q-value of the reaction @@ -640,31 +562,50 @@ and the incoming energy: where :math:`A` is the mass of the target nucleus measured in neutron masses. -.. _ace-law-4: +.. _continuous-tabular: -ACE Law 4 - Continuous Tabular Distribution -+++++++++++++++++++++++++++++++++++++++++++ +Continuous Tabular Distribution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This representation is very similar to :ref:`ace-law-1` except that instead of -equiprobable outgoing energy bins, the outgoing energy distribution for each -incoming energy is represented with a probability distribution function. For -each incoming neutron energy :math:`E_i`, let us call :math:`p_{i,j}` the j-th -value in the probability distribution function, :math:`c_{i,j}` the j-th value -in the cumulative distribution function, and :math:`E_{i,j}` the j-th outgoing -energy. +In a continuous tabular distribution, a tabulated energy distribution is +provided for each of a set of incoming energies. While the representation itself +is simple, the complexity lies in how one interpolates between incident as well +as outgoing energies on such a table. If one performs simple interpolation +between tables for neighboring incident energies, it is possible that the +resulting energies would violate laws governing the kinematics, i.e., the +outgoing energy may be outside the range of available energy in the reaction. -We proceed first as we did for ACE Law 1, determining the bounding energies of -the particle's incoming energy such that :math:`E_i < E < E_{i+1}` and -calculating an interpolation factor :math:`f` with equation -:eq:`interpolation-factor`. Next, statistical interpolation is performed to -choose between using the outgoing energy distributions corresponding to energy -:math:`E_i` and :math:`E_{i+1}`. Let :math:`\ell` be the chosen table where -:math:`\ell = i` if :math:`\xi_1 > f` and :math:`\ell = i + 1` otherwise, and -:math:`\xi_1` is a random number. Then, we sample an outgoing energy bin +To avoid this situation, the accepted practice is to use a process known as +scaled interpolation [Doyas]_. First, we find the tabulated incident energies +which bound the actual incoming energy of the particle, i.e., find :math:`i` +such that :math:`E_i < E < E_{i+1}` and calculate the interpolation factor +:math:`f` via :eq:`interpolation-factor`. Then, we interpolate between the +minimum and maximum energies of the outgoing energy distributions corresponding +to :math:`E_i` and :math:`E_{i+1}`: + +.. math:: + :label: continuous-minmax + + E_{min} = E_{i,1} + f ( E_{i+1,1} - E_{i,1} ) \\ + E_{max} = E_{i,M} + f ( E_{i+1,M} - E_{i,M} ) + +where :math:`E_{min}` and :math:`E_{max}` are the minimum and maximum outgoing +energies of a scaled distribution, :math:`E_{i,j}` is the j-th outgoing energy +corresponding to the incoming energy :math:`E_i`, and :math:`M` is the number of +outgoing energy bins. + +Next, statistical interpolation is performed to choose between using the +outgoing energy distributions corresponding to energy :math:`E_i` and +:math:`E_{i+1}`. Let :math:`\ell` be the chosen table where :math:`\ell = i` if +:math:`\xi_1 > f` and :math:`\ell = i + 1` otherwise, and :math:`\xi_1` is a +random number. For each incoming neutron energy :math:`E_i`, let us call +:math:`p_{i,j}` the j-th value in the probability distribution function, +:math:`c_{i,j}` the j-th value in the cumulative distribution function, and +:math:`E_{i,j}` the j-th outgoing energy. We then sample an outgoing energy bin :math:`j` using the cumulative distribution function: .. math:: - :label: ace-law-4-sample-cdf + :label: continuous-sample-cdf c_{\ell,j} < \xi_2 < c_{\ell,j+1} @@ -692,22 +633,22 @@ If linear-linear interpolation is to be used, the outgoing energy on the \right ). Since this outgoing energy may violate reaction kinematics, we then scale it to -minimum and maximum energies interpolated between the neighboring outgoing -energy distributions to get the final outgoing energy: +minimum and maximum energies calculated in equation :eq:`continuous-minmax` to +get the final outgoing energy: .. math:: - :label: ace-law-4-energy + :label: continuous-eout E' = E_{min} + \frac{\hat{E} - E_{\ell,1}}{E_{\ell,M} - E_{\ell,1}} (E_{max} - E_{min}) where :math:`E_{min}` and :math:`E_{max}` are defined the same as in equation -:eq:`ace-law-1-minmax`. +:eq:`continuous-minmax`. .. _maxwell: -ACE Law 7 - Maxwell Fission Spectrum -++++++++++++++++++++++++++++++++++++ +Maxwell Fission Spectrum +^^^^^^^^^^^^^^^^^^^^^^^^ One representation of the secondary energies for neutrons from fission is the so-called Maxwell spectrum. A probability distribution for the Maxwell spectrum @@ -720,7 +661,7 @@ can be written in the form where :math:`E` is the incoming energy of the neutron and :math:`T` is the so-called nuclear temperature, which is a function of the incoming energy of the -neutron. The ACE format contains a list of nuclear temperatures versus incoming +neutron. The ENDF format contains a list of nuclear temperatures versus incoming energies. The nuclear temperature is interpolated between neighboring incoming energies using a specified interpolation law. Once the temperature :math:`T` is determined, we then calculate a candidate outgoing energy based on rule C64 in @@ -740,12 +681,12 @@ interval. The outgoing energy is only accepted if 0 \le E' \le E - U -where :math:`U` is called the restriction energy and is specified on the ACE -table. If the outgoing energy is rejected, it is resampled using equation +where :math:`U` is called the restriction energy and is specified in the ENDF +data. If the outgoing energy is rejected, it is resampled using equation :eq:`maxwell-E-candidate`. -ACE Law 9 - Evaporation Spectrum -++++++++++++++++++++++++++++++++ +Evaporation Spectrum +^^^^^^^^^^^^^^^^^^^^ Evaporation spectra are primarily used in compound nucleus processes where a secondary particle can "evaporate" from the compound nucleus if it has @@ -759,7 +700,7 @@ be written in the form where :math:`E` is the incoming energy of the neutron and :math:`T` is the nuclear temperature, which is a function of the incoming energy of the -neutron. The ACE format contains a list of nuclear temperatures versus incoming +neutron. The ENDF format contains a list of nuclear temperatures versus incoming energies. The nuclear temperature is interpolated between neighboring incoming energies using a specified interpolation law. Once the temperature :math:`T` is determined, we then calculate a candidate outgoing energy based on the algorithm @@ -777,11 +718,11 @@ energy as in equation :eq:`maxwell-restriction`. This algorithm has a much higher rejection efficiency than the standard technique, i.e. rule C45 in the `Monte Carlo Sampler`_. -ACE Law 11 - Energy-Dependent Watt Spectrum -+++++++++++++++++++++++++++++++++++++++++++ +Energy-Dependent Watt Spectrum +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The probability distribution for a Watt fission spectrum can be written in the -form +The probability distribution for a [Watt]_ fission spectrum can be written in +the form .. math:: :label: watt-spectrum @@ -805,29 +746,37 @@ where :math:`\xi` is a random number sampled on the interval :math:`[0,1)`. The outgoing energy is only accepted according to a specified restriction energy :math:`U` as defined in equation :eq:`maxwell-restriction`. -This algorithm can be found in Forrest Brown's lectures_ on Monte Carlo methods -and is an unpublished sampling scheme based on the original Watt spectrum -derivation [Watt]_. +A derivation of the algorithm described here can be found in a paper by Romano_. -ACE Law 44 - Kalbach-Mann Correlated Scattering -+++++++++++++++++++++++++++++++++++++++++++++++ +Product Angle-Energy Distributions +---------------------------------- -This law is very similar to ACE Law 4 except now the outgoing angle of the -neutron is correlated to the outgoing energy and is not sampled from a separate -distribution. For each incident neutron energy :math:`E_i` tabulated, there is -an array of precompound factors :math:`R_{i,j}` and angular distribution slopes -:math:`A_{i,j}` corresponding to each outgoing energy bin :math:`j` in addition -to the outgoing energies and distribution functions as in ACE Law 4. +If the secondary distribution for a product was given in file 6 in ENDF, the +angle and energy are correlated with one another and cannot be sampled +separately. Several representations exist in ENDF/ACE for correlated +angle-energy distributions. + +Kalbach-Mann Correlated Scattering +++++++++++++++++++++++++++++++++++ + +This law is very similar to the uncorrelated continuous tabular energy +distribution except now the outgoing angle of the neutron is correlated to the +outgoing energy and is not sampled from a separate distribution. For each +incident neutron energy :math:`E_i` tabulated, there is an array of precompound +factors :math:`R_{i,j}` and angular distribution slopes :math:`A_{i,j}` +corresponding to each outgoing energy bin :math:`j` in addition to the outgoing +energies and distribution functions as in :ref:`continuous-tabular`. The calculation of the outgoing energy of the neutron proceeds exactly the same -as in the algorithm described in :ref:`ace-law-4`. In that algorithm, we found -an interpolation factor :math:`f`, statistically sampled an incoming energy bin -:math:`\ell`, and sampled an outgoing energy bin :math:`j` based on the -tabulated cumulative distribution function. Once the outgoing energy has been -determined with equation :eq:`ace-law-4-energy`, we then need to calculate the -outgoing angle based on the tabulated Kalbach-Mann parameters. These parameters -themselves are subject to either histogram or linear-linear interpolation on the -outgoing energy grid. For histogram interpolation, the parameters are +as in the algorithm described in :ref:`continuous-tabular`. In that algorithm, +we found an interpolation factor :math:`f`, statistically sampled an incoming +energy bin :math:`\ell`, and sampled an outgoing energy bin :math:`j` based on +the tabulated cumulative distribution function. Once the outgoing energy has +been determined with equation :eq:`continuous-eout`, we then need to calculate +the outgoing angle based on the tabulated Kalbach-Mann parameters. These +parameters themselves are subject to either histogram or linear-linear +interpolation on the outgoing energy grid. For histogram interpolation, the +parameters are .. math:: :label: KM-parameters-histogram @@ -873,52 +822,55 @@ outgoing angle is \mu = \frac{1}{A} \ln \left ( \xi_4 e^A + (1 - \xi_4) e^{-A} \right ). -.. _ace-law-61: +.. _correlated-energy-angle: -ACE Law 61 - Correlated Energy and Angle Distribution -+++++++++++++++++++++++++++++++++++++++++++++++++++++ +Correlated Energy and Angle Distribution +++++++++++++++++++++++++++++++++++++++++ -This law is very similar to ACE Law 44 in the sense that the outgoing angle of -the neutron is correlated to the outgoing energy and is not sampled from a -separate distribution. In this case though, rather than being determined from an -analytical distribution function, the cosine of the scattering angle is -determined from a tabulated distribution. For each incident energy :math:`i` and -outgoing energy :math:`j`, there is a tabulated angular distribution. +This distribution is very similar to a Kalbach-Mann distribution in the sense +that the outgoing angle of the neutron is correlated to the outgoing energy and +is not sampled from a separate distribution. In this case though, rather than +being determined from an analytical distribution function, the cosine of the +scattering angle is determined from a tabulated distribution. For each incident +energy :math:`i` and outgoing energy :math:`j`, there is a tabulated angular +distribution. The calculation of the outgoing energy of the neutron proceeds exactly the same -as in the algorithm described in :ref:`ace-law-4`. In that algorithm, we found -an interpolation factor :math:`f`, statistically sampled an incoming energy bin -:math:`\ell`, and sampled an outgoing energy bin :math:`j` based on the -tabulated cumulative distribution function. Once the outgoing energy has been -determined with equation :eq:`ace-law-4-energy`, we then need to decide which -angular distribution to use. If histogram interpolation was used on the outgoing -energy bins, then we use the angular distribution corresponding to incoming -energy bin :math:`\ell` and outgoing energy bin :math:`j`. If linear-linear -interpolation was used on the outgoing energy bins, then we use the whichever -angular distribution was closer to the sampled value of the cumulative -distribution function for the outgoing energy. The actual algorithm used to -sample the chosen tabular angular distribution has been previously described in -:ref:`angle-tabular`. +as in the algorithm described in :ref:`continuous-tabular`. In that algorithm, +we found an interpolation factor :math:`f`, statistically sampled an incoming +energy bin :math:`\ell`, and sampled an outgoing energy bin :math:`j` based on +the tabulated cumulative distribution function. Once the outgoing energy has +been determined with equation :eq:`continuous-eout`, we then need to decide +which angular distribution to use. If histogram interpolation was used on the +outgoing energy bins, then we use the angular distribution corresponding to +incoming energy bin :math:`\ell` and outgoing energy bin :math:`j`. If +linear-linear interpolation was used on the outgoing energy bins, then we use +the whichever angular distribution was closer to the sampled value of the +cumulative distribution function for the outgoing energy. The actual algorithm +used to sample the chosen tabular angular distribution has been previously +described in :ref:`angle-tabular`. -ACE Law 66 - N-Body Phase Space Distribution -++++++++++++++++++++++++++++++++++++++++++++ +N-Body Phase Space Distribution ++++++++++++++++++++++++++++++++ Reactions in which there are more than two products of similar masses are sometimes best treated by using what's known as an N-body phase distribution. This distribution has the following probability density function -for outgoing energy of the :math:`i`-th particle in the center-of-mass system: +for outgoing energy and angle of the :math:`i`-th particle in the center-of-mass +system: .. math:: :label: n-body-pdf - p_i(E') dE' = C_n \sqrt{E'} (E_i^{max} - E')^{(3n/2) - 4} dE' + p_i(\mu, E') dE' d\mu = C_n \sqrt{E'} (E_i^{max} - E')^{(3n/2) - 4} dE' d\mu where :math:`n` is the number of outgoing particles, :math:`C_n` is a normalization constant, :math:`E_i^{max}` is the maximum center-of-mass energy -for particle :math:`i`, and :math:`E'` is the outgoing energy. The algorithm for -sampling the outgoing energy is based on algorithms R28, C45, and C64 in the -`Monte Carlo Sampler`_. First we calculate the maximum energy in the -center-of-mass using the following equation: +for particle :math:`i`, and :math:`E'` is the outgoing energy. We see in +equation :eq:`n-body-pdf` that the angle is simply isotropic in the +center-of-mass system. The algorithm for sampling the outgoing energy is based +on algorithms R28, C45, and C64 in the `Monte Carlo Sampler`_. First we +calculate the maximum energy in the center-of-mass using the following equation: .. math:: :label: n-body-emax @@ -961,7 +913,7 @@ distribution. First, the documentation (and code) for MCNP5-1.60 has a mistake in the algorithm for :math:`n = 4`. That being said, there are no existing nuclear data evaluations which use an N-body phase space distribution with :math:`n = 4`, so the error would not affect any calculations. In the -ENDF/B-VII.0 nuclear data evaluation, only one reaction uses an N-body phase +ENDF/B-VII.1 nuclear data evaluation, only one reaction uses an N-body phase space distribution at all, the :math:`(n,2n)` reaction with H-2. .. _transform-coordinates: @@ -1527,16 +1479,16 @@ accordingly. Continuous Outgoing Energies ++++++++++++++++++++++++++++ -If the thermal data was processed with :math:`iwt=2` in NJOY, then the -outgoing energy spectra is represented by a continuous outgoing energy spectra -in tabular form with linear-linear interpolation. The sampling of the outgoing -energy portion of this format is very similar to :ref:`ACE Law 61`, -but the sampling of the correlated angle is performed as it was in the other -two representations discussed in this sub-section. In the Law 61 algorithm, -we found an interpolation factor :math:`f`, statistically sampled an incoming +If the thermal data was processed with :math:`iwt=2` in NJOY, then the outgoing +energy spectra is represented by a continuous outgoing energy spectra in tabular +form with linear-linear interpolation. The sampling of the outgoing energy +portion of this format is very similar to :ref:`correlated-energy-angle`, but +the sampling of the correlated angle is performed as it was in the other two +representations discussed in this sub-section. In the Law 61 algorithm, we +found an interpolation factor :math:`f`, statistically sampled an incoming energy bin :math:`\ell`, and sampled an outgoing energy bin :math:`j` based on the tabulated cumulative distribution function. Once the outgoing energy has -been determined with equation :eq:`ace-law-4-energy`, we then need to decide +been determined with equation :eq:`continuous-eout`, we then need to decide which angular distribution data to use. Like the linear-linear interpolation case in Law 61, the angular distribution closest to the sampled value of the cumulative distribution function for the outgoing energy is utilized. The @@ -1723,6 +1675,8 @@ another. .. _MC21: http://www.osti.gov/bridge/servlets/purl/903083-HT5p1o/903083.pdf +.. _Romano: http://dx.doi.org/10.1016/j.cpc.2014.11.001 + .. _Sutton and Brown: http://www.osti.gov/bridge/product.biblio.jsp?osti_id=307911 .. _lectures: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-05-4983.pdf diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index a17af8ac67..854c2bc4c1 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -328,8 +328,11 @@ Core Classes :nosignatures: :template: myclass.rst + openmc.data.IncidentNeutron + openmc.data.Reaction openmc.data.Product openmc.data.Tabulated1D + openmc.data.ThermalScattering openmc.data.CoherentElastic Angle-Energy Distributions @@ -370,11 +373,6 @@ Classes openmc.data.ace.Library openmc.data.ace.Table - openmc.data.ace.NeutronTable - openmc.data.ace.SabTable - openmc.data.ace.PhotoatomicTable - openmc.data.ace.PhotonuclearTable - openmc.data.ace.Reaction Functions +++++++++ diff --git a/openmc/data/__init__.py b/openmc/data/__init__.py index 32de3b598e..c6a1baf9df 100644 --- a/openmc/data/__init__.py +++ b/openmc/data/__init__.py @@ -1,4 +1,6 @@ from .data import * +from .neutron import * +from .reaction import * from .ace import * from .angle_distribution import * from .container import * @@ -11,3 +13,4 @@ from .kalbach_mann import * from .nbody import * from .thermal import * from .urr import * +from .library import * diff --git a/openmc/data/ace.py b/openmc/data/ace.py index 358d987896..2a39e208a2 100644 --- a/openmc/data/ace.py +++ b/openmc/data/ace.py @@ -21,26 +21,9 @@ from os import SEEK_CUR import struct import sys from warnings import warn -from collections import OrderedDict -from copy import deepcopy import numpy as np -from numpy.polynomial import Polynomial -import h5py -from . import atomic_number, atomic_symbol, reaction_name -from .container import Tabulated1D, interpolation_scheme -from .angle_distribution import AngleDistribution -from .energy_distribution import * -from .product import Product -from .angle_energy import AngleEnergy -from .kalbach_mann import KalbachMann -from .uncorrelated import UncorrelatedAngleEnergy -from .correlated import CorrelatedAngleEnergy -from .nbody import NBodyPhaseSpace -from .thermal import CoherentElastic -from .urr import ProbabilityTables -from openmc.stats import Tabular, Discrete, Uniform, Mixture if sys.version_info[0] >= 3: basestring = str @@ -120,47 +103,6 @@ def ascii_to_binary(ascii_file, binary_file): binary.close() -def _get_tabulated_1d(array, idx=0): - """Create a Tabulated1D object from array. - - Parameters - ---------- - array : numpy.ndarray - Array is formed as a 1 dimensional array as follows: [number of regions, - final pair for each region, interpolation parameters, number of pairs, - x-values, y-values] - idx : int, optional - Offset to read from in array (default of zero) - - Returns - ------- - openmc.data.Tabulated1D - Tabulated data object - - """ - - # Get number of regions and pairs - n_regions = int(array[idx]) - n_pairs = int(array[idx + 1 + 2*n_regions]) - - # Get interpolation information - idx += 1 - if n_regions > 0: - nbt = np.asarray(array[idx:idx + n_regions], dtype=int) - interp = np.asarray(array[idx + n_regions:idx + 2*n_regions], dtype=int) - else: - # NR=0 regions implies linear-linear interpolation by default - nbt = np.array([n_pairs]) - interp = np.array([2]) - - # Get (x,y) pairs - idx += 2*n_regions + 1 - x = array[idx:idx + n_pairs] - y = array[idx + n_pairs:idx + 2*n_pairs] - - return Tabulated1D(x, y, nbt, interp) - - def get_table(filename, name=None): """Read a single table from an ACE file @@ -181,30 +123,14 @@ def get_table(filename, name=None): lib = Library(filename) if name is None: - return list(lib.tables.values())[0] + return lib.tables[0] else: - return lib.tables[name] - - -def get_all_tables(filename): - """Read all tables from an ACE file - - Parameters - ---------- - filename : str - Path of the ACE library to load table from - name : str, optional - Name of table to load, e.g. '92235.71c' - - Returns - ------- - list of openmc.data.ace.Table - ACE tables read from the file - - """ - - lib = Library(filename) - return list(lib.tables.values()) + for table in lib.tables: + if table.name == name: + return table + else: + raise ValueError('Could not find ACE table with name: {}' + .format(name)) class Library(object): @@ -224,10 +150,8 @@ class Library(object): Attributes ---------- - tables : dict - Dictionary whose keys are the names of the ACE tables and whose values - are the instances of subclasses of :class:`Table` - (e.g. :class:`NeutronTable`) + tables : list + List of :class:`Table` instances """ @@ -237,7 +161,7 @@ class Library(object): if table_names is not None: table_names = set(table_names) - self.tables = {} + self.tables = [] # Determine whether file is ASCII or binary try: @@ -291,10 +215,11 @@ class Library(object): # material name, atomic_weight_ratio, temperature, date, comment, mat = \ struct.unpack(str('=10sdd10s70s10s'), fh.read(116)) - name = name.strip() + name = name.decode().strip() # Read ZAID/awr combinations - izaw_pairs = struct.unpack(str('=' + 16*'id'), fh.read(192)) + data = struct.unpack(str('=' + 16*'id'), fh.read(192)) + pairs = list(zip(data[::2], data[1::2])) # Read NXS nxs = list(struct.unpack(str('=16i'), fh.read(64))) @@ -303,30 +228,14 @@ class Library(object): length = nxs[0] n_records = (length + entries - 1)//entries - # name is bytes, make it a string - name = name.decode() # verify that we are supposed to read this table in if (table_names is not None) and (name not in table_names): fh.seek(start_position + recl_length*(n_records + 1)) continue - # ensure we have a valid table type - if len(name) == 0 or name[-1] not in table_types: - warn("Unsupported table: " + name, RuntimeWarning) - fh.seek(start_position + recl_length*(n_records + 1)) - continue - - # get the table - table = table_types[name[-1]](name, atomic_weight_ratio, temperature) - if verbose: temperature_in_K = round(temperature * 1e6 / 8.617342e-5) print("Loading nuclide {0} at {1} K".format(name, temperature_in_K)) - self.tables[name] = table - - # If table is S(a,b), add zaids - zaids = np.array(izaw_pairs[::2]) - table.zaids = zaids[np.nonzero(zaids)] # Read JXS jxs = list(struct.unpack(str('=32i'), fh.read(128))) @@ -336,20 +245,22 @@ class Library(object): xss = list(struct.unpack(str('={0}d'.format(length)), fh.read(length*8))) - # Insert empty object at beginning of NXS, JXS, and XSS arrays so - # that the indexing will be the same as Fortran. This makes it - # easier to follow the ACE format specification. + # Insert zeros at beginning of NXS, JXS, and XSS arrays so that the + # indexing will be the same as Fortran. This makes it easier to + # follow the ACE format specification. nxs.insert(0, 0) - table._nxs = np.array(nxs, dtype=int) + nxs = np.array(nxs, dtype=int) jxs.insert(0, 0) - table._jxs = np.array(jxs, dtype=int) + jxs = np.array(jxs, dtype=int) xss.insert(0, 0.0) - table._xss = np.array(xss) + xss = np.array(xss) - # Read all data blocks - table._read_all() + # Create ACE table with data read in + table = Table(name, atomic_weight_ratio, temperature, pairs, + nxs, jxs, xss) + self.tables.append(table) # Advance to next record fh.seek(start_position + recl_length*(n_records + 1)) @@ -397,7 +308,9 @@ class Library(object): atomic_weight_ratio = float(words[1]) temperature = float(words[2]) - izaw_pairs = (' '.join(lines[2:6])).split() + datastr = ' '.join(lines[2:6]).split() + pairs = list(zip(map(int, datastr[::2]), + map(float, datastr[1::2]))) datastr = '0 ' + ' '.join(lines[6:8]) nxs = np.fromstring(datastr, sep=' ', dtype=int) @@ -417,14 +330,6 @@ class Library(object): lines = [fh.readline() for i in range(13)] continue - # ensure we have a valid table type - if len(name) == 0 or name[-1] not in table_types: - warn("Unsupported table: " + name, RuntimeWarning) - fh.seek(n_bytes, SEEK_CUR) - fh.readline() - lines = [fh.readline() for i in range(13)] - continue - # read and fix over-shoot lines += fh.readlines(n_bytes) if 12 + n_lines < len(lines): @@ -432,41 +337,32 @@ class Library(object): lines = lines[:12+n_lines] fh.seek(-goback, SEEK_CUR) - # get the table - table = table_types[name[-1]](name, atomic_weight_ratio, temperature) - if verbose: temperature_in_K = round(temperature * 1e6 / 8.617342e-5) print("Loading nuclide {0} at {1} K".format(name, temperature_in_K)) - self.tables[name] = table # Read comment - table.comment = lines[1].strip() - - # If table is S(a,b), add zaids - if isinstance(table, SabTable): - zaids = np.fromiter(map(int, izaw_pairs[::2]), int) - table.zaids = zaids[np.nonzero(zaids)] - - # Add NXS, JXS, and XSS arrays to table Insert empty object at - # beginning of NXS, JXS, and XSS arrays so that the indexing will be - # the same as Fortran. This makes it easier to follow the ACE format - # specification. - table._nxs = nxs + comment = lines[1].strip() + # Insert zeros at beginning of NXS, JXS, and XSS arrays so that the + # indexing will be the same as Fortran. This makes it easier to + # follow the ACE format specification. datastr = '0 ' + ' '.join(lines[8:12]) - table._jxs = np.fromstring(datastr, dtype=int, sep=' ') + jxs = np.fromstring(datastr, dtype=int, sep=' ') datastr = '0.0 ' + ''.join(lines[12:12+n_lines]) - table._xss = np.fromstring(datastr, sep=' ') + xss = np.fromstring(datastr, sep=' ') + + table = Table(name, atomic_weight_ratio, temperature, pairs, + nxs, jxs, xss) + self.tables.append(table) # Read all data blocks - table._read_all() lines = [fh.readline() for i in range(13)] class Table(object): - """Abstract superclass of all other classes for cross section tables. + """ACE cross section table Parameters ---------- @@ -475,1387 +371,28 @@ class Table(object): atomic_weight_ratio : float Atomic mass ratio of the target nuclide. temperature : float - Temperature of the target nuclide in eV. - - Attributes - ---------- - name : str - ZAID identifier of the table, e.g. '92235.70c'. - atomic_weight_ratio : float - Atomic mass ratio of the target nuclide. - temperature : float - Temperature of the target nuclide in eV. + Temperature of the target nuclide in MeV. + pairs : list of tuple + 16 pairs of ZAIDs and atomic weight ratios. Used for thermal scattering + tables to indicate what isotopes scattering is applied to. + nxs : numpy.ndarray + Array that defines various lengths with in the table + jxs : numpy.ndarray + Array that gives locations in the ``xss`` array for various blocks of + data + xss : numpy.ndarray + Raw data for the ACE table """ - - def __init__(self, name, atomic_weight_ratio, temperature): + def __init__(self, name, atomic_weight_ratio, temperature, pairs, + nxs, jxs, xss): self.name = name self.atomic_weight_ratio = atomic_weight_ratio self.temperature = temperature - - def _read_all(self): - raise NotImplementedError - - def _get_continuous_tabular(self, idx, ldis): - """Get continuous tabular energy distribution (ACE law 4) starting at specified - index in the XSS array. - - Parameters - ---------- - idx : int - Index in XSS array of the start of the energy distribution data - (LDIS + LOCC - 1) - ldis : int - Index in XSS array of the start of the energy distribution block - (e.g. JXS[11]) - - Returns - ------- - openmc.data.energy_distribution.ContinuousTabular - Continuous tabular energy distribution - - """ - - # Read number of interpolation regions and incoming energies - n_regions = int(self._xss[idx]) - n_energy_in = int(self._xss[idx + 1 + 2*n_regions]) - - # Get interpolation information - idx += 1 - if n_regions > 0: - breakpoints = np.asarray(self._xss[idx:idx + n_regions], dtype=int) - interpolation = np.asarray(self._xss[idx + n_regions: - idx + 2*n_regions], dtype=int) - else: - breakpoints = np.array([n_energy_in]) - interpolation = np.array([2]) - - # Incoming energies at which distributions exist - idx += 2 * n_regions + 1 - energy = self._xss[idx:idx + n_energy_in] - - # Location of distributions - idx += n_energy_in - loc_dist = np.asarray(self._xss[idx:idx + n_energy_in], dtype=int) - - # Initialize variables - energy_out = [] - - # Read each outgoing energy distribution - for i in range(n_energy_in): - idx = ldis + loc_dist[i] - 1 - - # intt = interpolation scheme (1=hist, 2=lin-lin) - INTTp = int(self._xss[idx]) - intt = INTTp % 10 - n_discrete_lines = (INTTp - intt)//10 - if intt not in (1, 2): - warn("Interpolation scheme for continuous tabular distribution " - "is not histogram or linear-linear.") - intt = 2 - - n_energy_out = int(self._xss[idx + 1]) - data = self._xss[idx + 2:idx + 2 + 3*n_energy_out] - data.shape = (3, n_energy_out) - - # Create continuous distribution - eout_continuous = Tabular(data[0][n_discrete_lines:], - data[1][n_discrete_lines:], - interpolation_scheme[intt]) - eout_continuous.c = data[2][n_discrete_lines:] - - # If discrete lines are present, create a mixture distribution - if n_discrete_lines > 0: - eout_discrete = Discrete(data[0][:n_discrete_lines], - data[1][:n_discrete_lines]) - eout_discrete.c = data[2][:n_discrete_lines] - if n_discrete_lines == n_energy_out: - eout_i = eout_discrete - else: - p_discrete = min(sum(eout_discrete.p), 1.0) - eout_i = Mixture([p_discrete, 1. - p_discrete], - [eout_discrete, eout_continuous]) - else: - eout_i = eout_continuous - - energy_out.append(eout_i) - - return ContinuousTabular(breakpoints, interpolation, energy, - energy_out) - - def _get_general_evaporation(self, idx): - # Read nuclear temperature as Tabulated1D - theta = _get_tabulated_1d(array, idx) - - # X-function - nr = int(array[idx]) - ne = int(array[idx + 1 + 2*nr]) - idx += 2 + 2*nr + 2*ne - net = int(array[idx]) - x = array[idx + 1:idx + 1 + net] - - raise NotImplementedError("Where'd you get this ACE file from?") - - def _get_maxwell_energy(self, idx): - # Read nuclear temperature as Tabulated1D - theta = _get_tabulated_1d(self._xss, idx) - - # Restriction energy - nr = int(self._xss[idx]) - ne = int(self._xss[idx + 1 + 2*nr]) - u = self._xss[idx + 2 + 2*nr + 2*ne] - - return MaxwellEnergy(theta, u) - - def _get_evaporation(self, idx): - # Read nuclear temperature as Tabulated1D - theta = _get_tabulated_1d(self._xss, idx) - - # Restriction energy - nr = int(self._xss[idx]) - ne = int(self._xss[idx + 1 + 2*nr]) - u = self._xss[idx + 2 + 2*nr + 2*ne] - - return Evaporation(theta, u) - - def _get_watt_energy(self, idx): - # Energy-dependent a parameter - a = _get_tabulated_1d(self._xss, idx) - - # Advance index - nr = int(self._xss[idx]) - ne = int(self._xss[idx + 1 + 2*nr]) - idx += 2 + 2*nr + 2*ne - - # Energy-dependent b parameter - b = _get_tabulated_1d(self._xss, idx) - - # Advance index - nr = int(self._xss[idx]) - ne = int(self._xss[idx + 1 + 2*nr]) - idx += 2 + 2*nr + 2*ne - - # Restriction energy - u = self._xss[idx] - - return WattEnergy(a, b, u) - - def _get_kalbach_mann(self, idx, ldis): - # Read number of interpolation regions and incoming energies - n_regions = int(self._xss[idx]) - n_energy_in = int(self._xss[idx + 1 + 2*n_regions]) - - # Get interpolation information - idx += 1 - if n_regions > 0: - breakpoints = np.asarray(self._xss[idx:idx + n_regions], dtype=int) - interpolation = np.asarray(self._xss[idx + n_regions: - idx + 2*n_regions], dtype=int) - else: - breakpoints = np.array([n_energy_in]) - interpolation = np.array([2]) - - # Incoming energies at which distributions exist - idx += 2 * n_regions + 1 - energy = self._xss[idx:idx + n_energy_in] - - # Location of distributions - idx += n_energy_in - loc_dist = np.asarray(self._xss[idx:idx + n_energy_in], dtype=int) - - # Initialize variables - energy_out = [] - km_r = [] - km_a = [] - - # Read each outgoing energy distribution - for i in range(n_energy_in): - idx = ldis + loc_dist[i] - 1 - - # intt = interpolation scheme (1=hist, 2=lin-lin) - INTTp = int(self._xss[idx]) - intt = INTTp % 10 - n_discrete_lines = (INTTp - intt)//10 - if intt not in (1, 2): - warn("Interpolation scheme for continuous tabular distribution " - "is not histogram or linear-linear.") - intt = 2 - - n_energy_out = int(self._xss[idx + 1]) - data = self._xss[idx + 2:idx + 2 + 5*n_energy_out] - data.shape = (5, n_energy_out) - - # Create continuous distribution - eout_continuous = Tabular(data[0][n_discrete_lines:], - data[1][n_discrete_lines:], - interpolation_scheme[intt]) - eout_continuous.c = data[2][n_discrete_lines:] - - # If discrete lines are present, create a mixture distribution - if n_discrete_lines > 0: - eout_discrete = Discrete(data[0][:n_discrete_lines], - data[1][:n_discrete_lines]) - eout_discrete.c = data[2][:n_discrete_lines] - if n_discrete_lines == n_energy_out: - eout_i = eout_discrete - else: - p_discrete = min(sum(eout_discrete.p), 1.0) - eout_i = Mixture([p_discrete, 1. - p_discrete], - [eout_discrete, eout_continuous]) - else: - eout_i = eout_continuous - - energy_out.append(eout_i) - km_r.append(Tabulated1D(data[0], data[3])) - km_a.append(Tabulated1D(data[0], data[4])) - - return KalbachMann(breakpoints, interpolation, energy, energy_out, - km_r, km_a) - - def _get_correlated(self, idx, ldis): - # Read number of interpolation regions and incoming energies - n_regions = int(self._xss[idx]) - n_energy_in = int(self._xss[idx + 1 + 2*n_regions]) - - # Get interpolation information - idx += 1 - if n_regions > 0: - breakpoints = np.asarray(self._xss[idx:idx + n_regions], dtype=int) - interpolation = np.asarray(self._xss[idx + n_regions: - idx + 2*n_regions], dtype=int) - else: - breakpoints = np.array([n_energy_in]) - interpolation = np.array([2]) - - # Incoming energies at which distributions exist - idx += 2 * n_regions + 1 - energy = self._xss[idx:idx + n_energy_in] - - # Location of distributions - idx += n_energy_in - loc_dist = np.asarray(self._xss[idx:idx + n_energy_in], dtype=int) - - # Initialize list of distributions - energy_out = [] - mu = [] - - # Read each outgoing energy distribution - for i in range(n_energy_in): - idx = ldis + loc_dist[i] - 1 - - # intt = interpolation scheme (1=hist, 2=lin-lin) - INTTp = int(self._xss[idx]) - intt = INTTp % 10 - n_discrete_lines = (INTTp - intt)//10 - if intt not in (1, 2): - warn("Interpolation scheme for continuous tabular distribution " - "is not histogram or linear-linear.") - intt = 2 - - # Secondary energy distribution - n_energy_out = int(self._xss[idx + 1]) - data = self._xss[idx + 2:idx + 2 + 4*n_energy_out] - data.shape = (4, n_energy_out) - - # Create continuous distribution - eout_continuous = Tabular(data[0][n_discrete_lines:], - data[1][n_discrete_lines:], - interpolation_scheme[intt], - ignore_negative=True) - eout_continuous.c = data[2][n_discrete_lines:] - - # If discrete lines are present, create a mixture distribution - if n_discrete_lines > 0: - eout_discrete = Discrete(data[0][:n_discrete_lines], - data[1][:n_discrete_lines]) - eout_discrete.c = data[2][:n_discrete_lines] - if n_discrete_lines == n_energy_out: - eout_i = eout_discrete - else: - p_discrete = min(sum(eout_discrete.p), 1.0) - eout_i = Mixture([p_discrete, 1. - p_discrete], - [eout_discrete, eout_continuous]) - else: - eout_i = eout_continuous - - energy_out.append(eout_i) - - lc = np.asarray(data[3], dtype=int) - - # Secondary angular distributions - mu_i = [] - for j in range(n_energy_out): - if lc[j] > 0: - idx = ldis + abs(lc[j]) - 1 - - intt = int(self._xss[idx]) - n_cosine = int(self._xss[idx + 1]) - data = self._xss[idx + 2:idx + 2 + 3*n_cosine] - data.shape = (3, n_cosine) - - mu_ij = Tabular(data[0], data[1], interpolation_scheme[intt]) - mu_ij.c = data[2] - else: - # Isotropic distribution - mu_ij = Uniform(-1., 1.) - - mu_i.append(mu_ij) - - # Add cosine distributions for this incoming energy to list - mu.append(mu_i) - - return CorrelatedAngleEnergy(breakpoints, interpolation, energy, - energy_out, mu) - - def _get_energy_distribution(self, location_dist, location_start, rx=None): - """Returns an EnergyDistribution object from data read in starting at - location_start. - - Parameters - ---------- - location_dist : int - Index in the XSS array corresponding to the start of a block, - e.g. JXS(11) for the the DLW block. - location_start : int - Index in the XSS array corresponding to the start of an energy - distribution array - rx : Reaction - Reaction this energy distribution will be associated with - - Returns - ------- - distribution : openmc.data.AngleEnergy - Secondary angle-energy distribution - - """ - - # Set starting index for energy distribution - idx = location_dist + location_start - 1 - - law = int(self._xss[idx + 1]) - location_data = int(self._xss[idx + 2]) - - # Position index for reading law data - idx = location_dist + location_data - 1 - - # Parse energy distribution data - if law == 2: - primary_flag = int(self._xss[idx]) - energy = self._xss[idx + 1] - distribution = UncorrelatedAngleEnergy() - distribution.energy = DiscretePhoton(primary_flag, energy, - self.atomic_weight_ratio) - elif law in (3, 33): - threshold, mass_ratio = self._xss[idx:idx + 2] - distribution = UncorrelatedAngleEnergy() - distribution.energy = LevelInelastic(threshold, mass_ratio) - elif law == 4: - distribution = UncorrelatedAngleEnergy() - distribution.energy = self._get_continuous_tabular(idx, location_dist) - elif law == 5: - distribution = UncorrelatedAngleEnergy() - distribution.energy = self._get_general_evaporation(idx) - elif law == 7: - distribution = UncorrelatedAngleEnergy() - distribution.energy = self._get_maxwell_energy(idx) - elif law == 9: - distribution = UncorrelatedAngleEnergy() - distribution.energy = self._get_evaporation(idx) - elif law == 11: - distribution = UncorrelatedAngleEnergy() - distribution.energy = self._get_watt_energy(idx) - elif law == 44: - distribution = self._get_kalbach_mann(idx, location_dist) - elif law == 61: - distribution = self._get_correlated(idx, location_dist) - elif law == 66: - n_particles = int(self._xss[idx]) - total_mass = self._xss[idx + 1] - distribution = NBodyPhaseSpace(total_mass, n_particles, - self.atomic_weight_ratio, rx.Q_value) - else: - raise IOError("Unsupported ACE secondary energy " - "distribution law {0}".format(law)) - - return distribution - - -class NeutronTable(Table): - """A NeutronTable object contains continuous-energy neutron interaction data - read from an ACE-formatted table. These objects are not normally - instantiated by the user but rather created when reading data using a - Library object and stored within the :attr:`Library.tables` attribute. - - Parameters - ---------- - name : str - ZAID identifier of the table, e.g. '92235.70c'. - atomic_weight_ratio : float - Atomic mass ratio of the target nuclide. - temperature : float - Temperature of the target nuclide in eV. - - Attributes - ---------- - absorption_xs : numpy.ndarray - The microscopic absorption cross section for each value on the energy - grid. - atomic_weight_ratio : float - Atomic weight ratio of the target nuclide. - energy : numpy.ndarray - The energy values (MeV) at which reaction cross-sections are tabulated. - heating_number : numpy.ndarray - The total heating number for each value on the energy grid in MeV-b. - name : str - ZAID identifier of the table, e.g. 92235.70c. - reactions : collections.OrderedDict - Contains the cross sections, secondary angle and energy distributions, - and other associated data for each reaction. The keys are the MT values - and the values are Reaction objects. - temperature : float - Temperature of the target nuclide in eV. - total_xs : numpy.ndarray - The microscopic total cross section for each value on the energy grid in b. - urr : None or openmc.data.ProbabilityTables - Unresolved resonance region probability tables - - """ - - def __init__(self, name, atomic_weight_ratio, temperature): - super(NeutronTable, self).__init__(name, atomic_weight_ratio, temperature) - self.absorption_xs = None - self.energy = None - self.heating_number = None - self.total_xs = None - self.reactions = OrderedDict() - self.urr = None + self.pairs = pairs + self.nxs = nxs + self.jxs = jxs + self.xss = xss def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - def __iter__(self): - return iter(self.reactions.values()) - - def _read_all(self): - self._read_cross_sections() - self._read_nu() - self._read_secondaries() - self._read_photon_production_data() - self._read_unr() - - def _read_cross_sections(self): - """Read reaction cross sections and other data. - - Reads and parses the ESZ, MTR, LQR, TRY, LSIG, and SIG blocks. These - blocks contain the energy grid, all reaction cross sections, the total - cross section, average heating numbers, and a list of reactions with - their Q-values and multiplicites. - """ - - # Determine number of energies on nuclide grid and number of reactions - # excluding elastic scattering - n_energies = self._nxs[3] - n_reactions = self._nxs[4] - - # Read energy grid and total, absorption, elastic scattering, and - # heating cross sections -- note that this appear separate from the rest - # of the reaction cross sections - arr = self._xss[self._jxs[1]:self._jxs[1] + 5*n_energies] - arr.shape = (5, n_energies) - self.energy, self.total_xs, self.absorption_xs, \ - elastic_xs, self.heating_number = arr - - # Create elastic scattering reaction - elastic_scatter = Reaction(2, self) - elastic_scatter.products.append(Product('neutron')) - elastic_scatter.xs = Tabulated1D(self.energy, elastic_xs) - self.reactions[2] = elastic_scatter - - # Create all other reactions with MT values - mts = np.asarray(self._xss[self._jxs[3]:self._jxs[3] + n_reactions], dtype=int) - qvalues = np.asarray(self._xss[self._jxs[4]:self._jxs[4] + - n_reactions], dtype=float) - tys = np.asarray(self._xss[self._jxs[5]:self._jxs[5] + n_reactions], dtype=int) - - # Create all reactions other than elastic scatter - reactions = [(mt, Reaction(mt, self)) for mt in mts] - self.reactions.update(reactions) - - # Loop over all reactions other than elastic scattering - for i, rx in enumerate(list(self.reactions.values())[1:]): - # Copy Q values determine if scattering should be treated in the - # center-of-mass or lab system - rx.Q_value = qvalues[i] - rx.center_of_mass = (tys[i] < 0) - - # For neutron-producing reactions, get yield - if rx.MT < 100: - if tys[i] != 19: - if abs(tys[i]) > 100: - # Energy-dependent neutron yield - idx = self._jxs[11] + abs(tys[i]) - 101 - yield_ = _get_tabulated_1d(self._xss, idx) - else: - yield_ = abs(tys[i]) - - neutron = Product('neutron') - neutron.yield_ = yield_ - rx.products.append(neutron) - - # Get locator for cross-section data - loc = int(self._xss[self._jxs[6] + i]) - - # Determine starting index on energy grid - rx.threshold_idx = int(self._xss[self._jxs[7] + loc - 1]) - 1 - - # Determine number of energies in reaction - n_energies = int(self._xss[self._jxs[7] + loc]) - energy = self.energy[rx.threshold_idx:rx.threshold_idx + n_energies] - - # Read reaction cross section - xs = self._xss[self._jxs[7] + loc + 1:self._jxs[7] + loc + 1 + n_energies] - rx.xs = Tabulated1D(energy, xs) - - def _read_nu(self): - """Read the NU block -- this contains information on the prompt and delayed - neutron precursor yields, decay constants, etc - - """ - # No NU block - if self._jxs[2] == 0: - return - - products = [] - derived_products = [] - - # Either prompt nu or total nu is given - if self._xss[self._jxs[2]] > 0: - whichnu = 'prompt' if self._jxs[24] > 0 else 'total' - - neutron = Product('neutron') - neutron.emission_mode = whichnu - - idx = self._jxs[2] - LNU = int(self._xss[idx]) - if LNU == 1: - # Polynomial function form of nu - NC = int(self._xss[idx+1]) - coefficients = self._xss[idx+2 : idx+2+NC] - neutron.yield_ = Polynomial(coefficients) - elif LNU == 2: - # Tabular data form of nu - neutron.yield_ = _get_tabulated_1d(self._xss, idx + 1) - - products.append(neutron) - - # Both prompt nu and total nu - elif self._xss[self._jxs[2]] < 0: - # Read prompt neutron yield - prompt_neutron = Product('neutron') - prompt_neutron.emission_mode = 'prompt' - - idx = self._jxs[2] + 1 - LNU = int(self._xss[idx]) - if LNU == 1: - # Polynomial function form of nu - NC = int(self._xss[idx+1]) - coefficients = self._xss[idx+2 : idx+2+NC] - prompt_neutron.yield_ = Polynomial(coefficients) - elif LNU == 2: - # Tabular data form of nu - prompt_neutron.yield_ = _get_tabulated_1d(self._xss, idx + 1) - - # Read total neutron yield - total_neutron = Product('neutron') - total_neutron.emission_mode = 'total' - - idx = self._jxs[2] + int(abs(self._xss[self._jxs[2]])) + 1 - LNU = int(self._xss[idx]) - - if LNU == 1: - # Polynomial function form of nu - NC = int(self._xss[idx+1]) - coefficients = self._xss[idx+2 : idx+2+NC] - total_neutron.yield_ = Polynomial(coefficients) - elif LNU == 2: - # Tabular data form of nu - total_neutron.yield_ = _get_tabulated_1d(self._xss, idx + 1) - - products.append(prompt_neutron) - derived_products.append(total_neutron) - - # Check for delayed nu data - if self._jxs[24] > 0: - yield_delayed = _get_tabulated_1d(self._xss, self._jxs[24] + 1) - - # Delayed neutron precursor distribution - idx = self._jxs[25] - n_group = self._nxs[8] - total_group_probability = 0. - for i, group in enumerate(range(n_group)): - delayed_neutron = Product('neutron') - delayed_neutron.emission_mode = 'delayed' - delayed_neutron.decay_rate = self._xss[idx] - - group_probability = _get_tabulated_1d(self._xss, idx + 1) - if np.all(group_probability.y == group_probability.y[0]): - delayed_neutron.yield_ = deepcopy(yield_delayed) - delayed_neutron.yield_.y *= group_probability.y[0] - total_group_probability += group_probability.y[0] - else: - raise NotImplementedError( - 'Delayed neutron with energy-dependent ' - 'group probability') - - # Advance position - nr = int(self._xss[idx + 1]) - ne = int(self._xss[idx + 2 + 2*nr]) - idx += 3 + 2*nr + 2*ne - - # Energy distribution for delayed fission neutrons - location_start = int(self._xss[self._jxs[26] + group]) - delayed_neutron.distribution.append( - self._get_energy_distribution(self._jxs[27], location_start)) - - products.append(delayed_neutron) - - # Renormalize delayed neutron yields to reflect fact that in ACE - # file, the sum of the group probabilities is not exactly one - for product in products[1:]: - product.yield_.y /= total_group_probability - - # Copy fission neutrons to reactions - for MT, rx in self.reactions.items(): - if MT in (18, 19, 20, 21, 38): - rx.products = deepcopy(products) - if derived_products: - rx.derived_products = deepcopy(derived_products) - - def _get_angle_distribution(self, location_dist, location_start): - # Set starting index for angle distribution - idx = location_dist + location_start - 1 - - # Number of energies at which angular distributions are tabulated - n_energies = int(self._xss[idx]) - idx += 1 - - # Incoming energy grid - energy = self._xss[idx:idx + n_energies] - idx += n_energies - - # Read locations for angular distributions - lc = np.asarray(self._xss[idx:idx + n_energies], dtype=int) - idx += n_energies - - mu = [] - for i in range(n_energies): - if lc[i] > 0: - # Equiprobable 32 bin distribution - idx = location_dist + abs(lc[i]) - 1 - cos = self._xss[idx:idx + 33] - pdf = np.zeros(33) - pdf[:32] = 1.0/(32.0*np.diff(cos)) - cdf = np.linspace(0.0, 1.0, 33) - - mu_i = Tabular(cos, pdf, 'histogram', ignore_negative=True) - mu_i.c = cdf - elif lc[i] < 0: - # Tabular angular distribution - idx = location_dist + abs(lc[i]) - 1 - intt = int(self._xss[idx]) - n_points = int(self._xss[idx + 1]) - data = self._xss[idx + 2:idx + 2 + 3*n_points] - data.shape = (3, n_points) - - mu_i = Tabular(data[0], data[1], interpolation_scheme[intt]) - mu_i.c = data[2] - else: - # Isotropic angular distribution - mu_i = Uniform(-1., 1.) - - mu.append(mu_i) - - return AngleDistribution(energy, mu) - - def _read_secondaries(self): - """Read angle/energy distributions for each reaction MT - """ - - # Number of reactions with secondary neutrons (including elastic - # scattering) - n_reactions = self._nxs[5] + 1 - - for i, rx in enumerate(list(self.reactions.values())[:n_reactions]): - if rx.MT == 18: - for p in rx.products: - if p.emission_mode == 'prompt': - neutron = p - break - else: - neutron = rx.products[0] - - if i > 0: - # Determine locator for ith energy distribution - lnw = int(self._xss[self._jxs[10] + i - 1]) - - while lnw > 0: - # Applicability of this distribution - neutron.applicability.append(_get_tabulated_1d( - self._xss, self._jxs[11] + lnw + 2)) - - # Read energy distribution data - neutron.distribution.append(self._get_energy_distribution( - self._jxs[11], lnw, rx)) - - lnw = int(self._xss[self._jxs[11] + lnw - 1]) - else: - # No energy distribution for elastic scattering - neutron.distribution.append(UncorrelatedAngleEnergy()) - - # Check if angular distribution data exist - loc = int(self._xss[self._jxs[8] + i]) - if loc == -1: - # Angular distribution data are given as part of product - # angle-energy distribution - continue - elif loc == 0: - # No angular distribution data are given for this - # reaction, isotropic scattering is asssumed - angle_dist = None - else: - angle_dist = self._get_angle_distribution(self._jxs[9], loc) - - # Apply angular distribution to each uncorrelated angle-energy - # distribution - if angle_dist is not None: - for d in neutron.distribution: - d.angle = angle_dist - - def _read_photon_production_data(self): - """Read cross sections for each photon-production reaction""" - - n_photon_reactions = self._nxs[6] - photon_mts = np.asarray(self._xss[self._jxs[13]:self._jxs[13] + - n_photon_reactions], dtype=int) - - for i, rx in enumerate(photon_mts): - # Determine corresponding reaction - mt = photon_mts[i] // 1000 - reactions = [] - if mt not in self.reactions: - # If the photon is assigned to MT=18 but the file splits fission - # into MT=19,20,21,38, assign the photon product to each of the - # individual reactions - if mt == 18: - for mt_fiss in (19, 20, 21, 38): - if mt_fiss in self.reactions: - reactions.append(self.reactions[mt_fiss]) - if not reactions: - reactions.append(Reaction(mt, self)) - else: - reactions.append(self.reactions[mt]) - - # Create photon product and assign to reactions - photon = Product('photon') - for rx in reactions: - rx.products.append(photon) - - # ================================================================== - # Read photon yield / production cross section - - loca = int(self._xss[self._jxs[14] + i]) - idx = self._jxs[15] + loca - 1 - mftype = int(self._xss[idx]) - idx += 1 - - if mftype in (12, 16): - # Yield data taken from ENDF File 12 or 6 - mtmult = int(self._xss[idx]) - assert mtmult == mt - - # Read photon yield as function of energy - photon.yield_ = _get_tabulated_1d(self._xss, idx + 1) - - elif mftype == 13: - # Cross section data from ENDF File 13 - - # Energy grid index at which data starts - threshold_idx = int(self._xss[idx]) - 1 - - # Get photon production cross section - n_energy = int(self._xss[idx + 1]) - photon._xs = self._xss[idx + 2:idx + 2 + n_energy] - - # Determine yield based on ratio of cross sections - energy = self.energy[threshold_idx:threshold_idx + n_energy] - photon.yield_ = Tabulated1D(energy, photon._xs) - - else: - raise ValueError("MFTYPE must be 12, 13, 16. Got {0}".format( - mftype)) - - # ================================================================== - # Read photon energy distribution - - location_start = int(self._xss[self._jxs[18] + i]) - - # Read energy distribution data - distribution = self._get_energy_distribution( - self._jxs[19], location_start) - assert isinstance(distribution, UncorrelatedAngleEnergy) - - # ================================================================== - # Read photon angular distribution - loc = int(self._xss[self._jxs[16] + i]) - - if loc == 0: - # No angular distribution data are given for this reaction, - # isotropic scattering is asssumed in LAB - energy = np.array([photon.yield_.x[0], photon.yield_.x[-1]]) - mu_isotropic = Uniform(-1., 1.) - distribution.angle = AngleDistribution( - energy, [mu_isotropic, mu_isotropic]) - else: - distribution.angle = self._get_angle_distribution(self._jxs[17], loc) - - # Add to list of distributions - photon.distribution.append(distribution) - - def _read_unr(self): - """Read the unresolved resonance range probability tables if present. - """ - - # Check if URR probability tables are present - idx = self._jxs[23] - if idx == 0: - return - - N = int(self._xss[idx]) # Number of incident energies - M = int(self._xss[idx+1]) # Length of probability table - interpolation = int(self._xss[idx+2]) - inelastic_flag = int(self._xss[idx+3]) - absorption_flag = int(self._xss[idx+4]) - multiply_smooth = (int(self._xss[idx+5]) == 1) - idx += 6 - - # Get energies at which tables exist - energy = self._xss[idx : idx+N] - idx += N - - # Get probability tables - table = self._xss[idx:idx+N*6*M] - table.shape = (N, 6, M) - - # Create object - self.urr = ProbabilityTables(energy, table, interpolation, inelastic_flag, - absorption_flag, multiply_smooth) - - def export_to_hdf5(self, path, element=None, mass_number=None, metastable=0): - """Export table to an HDF5 file. - - Parameters - ---------- - path : str - Path to write HDF5 file to - element : str or None - Elemental symbol, e.g. Zr. If not specified, the atomic - number/symbol are inferred from the name of the table. - mass_number : int or None - Mass number of the nuclide. For natural elements, a value of zero - should be given. If not specified, the mass number is inferred from - the name of the table. - metastable : int - Metastable level of the nuclide. Defaults to 0. - - """ - - f = h5py.File(path, 'a') - - # If element and/or mass number haven't been specified, make an educated - # guess - zaid, xs = self.name.split('.') - if element is None: - Z = int(zaid) // 1000 - element = atomic_symbol[Z] - else: - Z = atomic_number[element] - if mass_number is None: - mass_number = int(zaid) % 1000 - - # Write basic data - if metastable > 0: - name = '{}{}_m{}.{}'.format(element, mass_number, metastable, xs) - else: - name = '{}{}.{}'.format(element, mass_number, xs) - g = f.create_group(name) - g.attrs['Z'] = Z - g.attrs['A'] = mass_number - g.attrs['metastable'] = metastable - g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio - g.attrs['temperature'] = self.temperature - g.attrs['n_reaction'] = len(self.reactions) - - # Write energy grid - g.create_dataset('energy', data=self.energy) - - # Write reaction data - for i, rx in enumerate(self.reactions.values()): - rx_group = g.create_group('reaction_{}'.format(i)) - rx.to_hdf5(rx_group) - - # Write total nu data if available - if hasattr(rx, 'derived_products') and 'total_nu' not in g: - tgroup = g.create_group('total_nu') - rx.derived_products[0].to_hdf5(tgroup) - - # Write unresolved resonance probability tables - if self.urr is not None: - urr_group = g.create_group('urr') - self.urr.to_hdf5(urr_group) - - f.close() - - @classmethod - def from_hdf5(self, group): - """Generate continuous-energy neutron interaction data from HDF5 group - - Parameters - ---------- - group : h5py.Group - HDF5 group containing interaction data - - Returns - ------- - openmc.data.ace.NeutronTable - Continuous-energy neutron interaction data - - """ - name = group.name[1:] - atomic_weight_ratio = group.attrs['atomic_weight_ratio'] - temperature = group.attrs['temperature'] - table = NeutronTable(name, atomic_weight_ratio, temperature) - - # Read energy grid - table.energy = group['energy'].value - - # Read reaction data - n_reaction = group.attrs['n_reaction'] - - # Write reaction data - for i in range(n_reaction): - rx_group = group['reaction_{}'.format(i)] - rx = Reaction.from_hdf5(rx_group, table) - table.reactions[rx.MT] = rx - - # Read total nu data if available - if 'total_nu' in rx_group: - tgroup = rx_group['total_nu'] - rx.derived_products = [Product.from_hdf5(tgroup)] - - # Read unresolved resonance probability tables - if 'urr' in group: - urr_group = group['urr'] - table.urr = ProbabilityTables.from_hdf5(urr_group) - - return table - - -class SabTable(Table): - """A SabTable object contains thermal scattering data as represented by - an S(alpha, beta) table. - - Parameters - ---------- - name : str - ZAID identifier of the table, e.g. lwtr.10t. - atomic_weight_ratio : float - Atomic mass ratio of the target nuclide. - temperature : float - Temperature of the target nuclide in eV. - - Attributes - ---------- - atomic_weight_ratio : float - Atomic mass ratio of the target nuclide. - elastic_xs : openmc.data.Tabulated1D or openmc.data.CoherentElastic - Elastic scattering cross section derived in the coherent or incoherent - approximation - inelastic_xs : openmc.data.Tabulated1D - Inelastic scattering cross section derived in the incoherent - approximation - name : str - ZAID identifier of the table, e.g. 92235.70c. - temperature : float - Temperature of the target nuclide in eV. - - """ - - def __init__(self, name, atomic_weight_ratio, temperature): - super(SabTable, self).__init__(name, atomic_weight_ratio, temperature) - self.elastic_xs = None - self.elastic_mu_out = None - - self.inelastic_xs = None - self.inelastic_e_out = None - self.inelastic_mu_out = None - self.secondary_mode = None - - def __repr__(self): - if hasattr(self, 'name'): - return "".format(self.name) - else: - return "" - - def _read_all(self): - self._read_itie() - self._read_itce() - self._read_itxe() - self._read_itca() - - def _read_itie(self): - """Read energy-dependent inelastic scattering cross sections. - """ - idx = self._jxs[1] - n_energies = int(self._xss[idx]) - energy = self._xss[idx+1 : idx+1+n_energies] - xs = self._xss[idx+1+n_energies : idx+1+2*n_energies] - self.inelastic_xs = Tabulated1D(energy, xs) - - def _read_itce(self): - """Read energy-dependent elastic scattering cross sections. - """ - # Determine if ITCE block exists - idx = self._jxs[4] - if idx == 0: - return - - # Read values - n_energies = int(self._xss[idx]) - energy = self._xss[idx+1 : idx+1+n_energies] - P = self._xss[idx+1+n_energies : idx+1+2*n_energies] - - if self._nxs[5] == 4: - self.elastic_xs = CoherentElastic(energy, P) - else: - self.elastic_xs = Tabulated1D(energy, P) - - def _read_itxe(self): - """Read coupled energy/angle distributions for inelastic scattering. - """ - # Determine number of energies and angles - NE_in = len(self.inelastic_xs) - NE_out = self._nxs[4] - - if self._nxs[7] == 0: - self.secondary_mode = 'equal' - elif self._nxs[7] == 1: - self.secondary_mode = 'skewed' - elif self._nxs[7] == 2: - self.secondary_mode = 'continuous' - - if self.secondary_mode in ('equal', 'skewed'): - NMU = self._nxs[3] - idx = self._jxs[3] - self.inelastic_e_out = self._xss[idx:idx+NE_in*NE_out*(NMU+2):NMU+2] - self.inelastic_e_out.shape = (NE_in, NE_out) - - self.inelastic_mu_out = self._xss[idx:idx+NE_in*NE_out*(NMU+2)] - self.inelastic_mu_out.shape = (NE_in, NE_out, NMU+2) - self.inelastic_mu_out = self.inelastic_mu_out[:, :, 1:] - else: - NMU = self._nxs[3] - 1 - idx = self._jxs[3] - locc = self._xss[idx:idx + NE_in].astype(int) - NE_out = self._xss[idx + NE_in:idx + 2*NE_in].astype(int) - energy_out = [] - mu_out = [] - for i in range(NE_in): - idx = locc[i] - - # Outgoing energy distribution for incoming energy i - e = self._xss[idx + 1:idx + 1 + NE_out[i]*(NMU + 3):NMU + 3] - p = self._xss[idx + 2:idx + 2 + NE_out[i]*(NMU + 3):NMU + 3] - c = self._xss[idx + 3:idx + 3 + NE_out[i]*(NMU + 3):NMU + 3] - eout_i = Tabular(e, p, 'linear-linear', ignore_negative=True) - eout_i.c = c - - # Outgoing angle distribution for each (incoming, outgoing) energy pair - mu_i = [] - for j in range(NE_out[i]): - mu = self._xss[idx + 4:idx + 4 + NMU] - p_mu = 1./NMU*np.ones(NMU) - mu_ij = Discrete(mu, p_mu) - mu_ij.c = np.cumsum(p_mu) - mu_i.append(mu_ij) - idx += 3 + NMU - - energy_out.append(eout_i) - mu_out.append(mu_i) - - # Create correlated angle-energy distribution - breakpoints = [NE_in] - interpolation = [2] - energy = self.inelastic_xs.x - self.inelastic_dist = CorrelatedAngleEnergy( - breakpoints, interpolation, energy, energy_out, mu_out) - - def _read_itca(self): - """Read angular distributions for elastic scattering. - """ - NMU = self._nxs[6] - if self._jxs[4] == 0 or NMU == -1: - return - idx = self._jxs[6] - - NE = len(self.elastic_xs) - self.elastic_mu_out = self._xss[idx:idx+NE*NMU] - self.elastic_mu_out.shape = (NE, NMU) - - def export_to_hdf5(self, path, name): - """Export table to an HDF5 file. - - Parameters - ---------- - path : str - Path to write HDF5 file to - name : str - Name of compound (used as first group in HDF5 file) - - """ - - f = h5py.File(path, 'a') - - # Write basic data - g = f.create_group('{}.{}'.format(name, self.name.split('.')[1])) - g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio - g.attrs['temperature'] = self.temperature - g.attrs['zaids'] = self.zaids - - # Write thermal elastic scattering - if self.elastic_xs is not None: - elastic_group = g.create_group('elastic') - self.elastic_xs.to_hdf5(elastic_group, 'xs') - if self.elastic_mu_out is not None: - elastic_group.create_dataset('mu_out', data=self.elastic_mu_out) - - # Write thermal inelastic scattering - if self.inelastic_xs is not None: - inelastic_group = g.create_group('inelastic') - self.inelastic_xs.to_hdf5(inelastic_group, 'xs') - inelastic_group.attrs['secondary_mode'] = np.string_(self.secondary_mode) - if self.secondary_mode in ('equal', 'skewed'): - inelastic_group.create_dataset('energy_out', data=self.inelastic_e_out) - inelastic_group.create_dataset('mu_out', data=self.inelastic_mu_out) - elif self.secondary_mode == 'continuous': - self.inelastic_dist.to_hdf5(inelastic_group) - - @classmethod - def from_hdf5(self, group): - """Generate thermal scattering data from HDF5 group - - Parameters - ---------- - group : h5py.Group - HDF5 group to read from - - Returns - ------- - openmc.data.SabTable - Neutron thermal scattering data - - """ - name = group.name[1:] - atomic_weight_ratio = group.attrs['atomic_weight_ratio'] - temperature = group.attrs['temperature'] - table = SabTable(name, atomic_weight_ratio, temperature) - table.zaids = group.attrs['zaids'] - - # Read thermal elastic scattering - if 'elastic' in group: - elastic_group = group['elastic'] - - # Cross section - elastic_xs_type = elastic_group['xs'].attrs['type'].decode() - if elastic_xs_type == 'tab1': - table.elastic_xs = Tabulated1D.from_hdf5(elastic_group['xs']) - elif elastic_xs_type == 'bragg': - table.elastic_xs = CoherentElastic.from_hdf5(elastic_group['xs']) - - # Angular distribution - if 'mu_out' in elastic_group: - table.elastic_mu_out = elastic_group['mu_out'].value - - # Read thermal inelastic scattering - if 'inelastic' in group: - inelastic_group = group['inelastic'] - table.secondary_mode = inelastic_group.attrs['secondary_mode'].decode() - table.inelastic_xs = Tabulated1D.from_hdf5(inelastic_group['xs']) - if table.secondary_mode in ('equal', 'skewed'): - table.inelastic_e_out = inelastic_group['energy_out'] - table.inelastic_mu_out = inelastic_group['mu_out'] - elif table.secondary_mode == 'continuous': - table.inelastic_dist = AngleEnergy.from_hdf5(inelastic_group) - - return table - - -class Reaction(object): - """Reaction(MT, table=None) - - A Reaction object represents a single reaction channel for a nuclide with - an associated cross section and, if present, a secondary angle and energy - distribution. These objects are stored within the ``reactions`` attribute on - subclasses of Table, e.g. NeutronTable. - - Parameters - ---------- - MT : int - The ENDF MT number for this reaction. On occasion, MCNP uses MT numbers - that don't correspond exactly to the ENDF specification. - table : openmc.data.ace.Table - The ACE table which contains this reaction. This is useful if data on - the parent nuclide is needed (for instance, the energy grid at which - cross sections are tabulated) - - Attributes - ---------- - center_of_mass : bool - Indicates whether scattering kinematics should be performed in the - center-of-mass or laboratory reference frame. - grid above the threshold value in barns. - MT : int - The ENDF MT number for this reaction. - Q_value : float - The Q-value of this reaction in MeV. - table : openmc.data.ace.Table - The ACE table which contains this reaction. - threshold : float - Threshold of the reaction in MeV - threshold_idx : int - The index on the energy grid corresponding to the threshold of this - reaction. - xs : openmc.data.Tabulated1D - Microscopic cross section for this reaction as a function of incident - energy - products : Iterable of openmc.data.Product - Reaction products - - """ - - def __init__(self, MT, table=None): - self.center_of_mass = True - self.table = table - self.MT = MT - self.Q_value = 0. - self.threshold_idx = 0 - self._xs = None - self.products = [] - - def __repr__(self): - if self.MT in reaction_name: - return "".format(self.MT, reaction_name[self.MT]) - else: - return "".format(self.MT) - - @property - def center_of_mass(self): - return self._center_of_mass - - @property - def products(self): - return self._products - - @property - def threshold(self): - return self.xs.x[0] - - @property - def xs(self): - return self._xs - - @center_of_mass.setter - def center_of_mass(self, center_of_mass): - cv.check_type('center of mass', center_of_mass, (bool, np.bool_)) - self._center_of_mass = center_of_mass - - @products.setter - def products(self, products): - cv.check_type('reaction products', products, Iterable, Product) - self._products = products - - @xs.setter - def xs(self, xs): - cv.check_type('reaction cross section', xs, Tabulated1D) - for y in xs.y: - cv.check_greater_than('reaction cross section', y, 0.0, True) - self._xs = xs - - def to_hdf5(self, group): - """Write reaction to an HDF5 group - - Parameters - ---------- - group : h5py.Group - HDF5 group to write to - - """ - - group.attrs['MT'] = self.MT - if self.MT in reaction_name: - group.attrs['label'] = np.string_(reaction_name[self.MT]) - else: - group.attrs['label'] = np.string_(self.MT) - group.attrs['Q_value'] = self.Q_value - group.attrs['threshold_idx'] = self.threshold_idx + 1 - group.attrs['center_of_mass'] = 1 if self.center_of_mass else 0 - group.attrs['n_product'] = len(self.products) - if self.xs is not None: - group.create_dataset('xs', data=self.xs.y) - for i, p in enumerate(self.products): - pgroup = group.create_group('product_{}'.format(i)) - p.to_hdf5(pgroup) - - @classmethod - def from_hdf5(cls, group, table): - """Generate reaction from an HDF5 group - - Parameters - ---------- - group : h5py.Group - HDF5 group to write to - - Returns - ------- - openmc.data.ace.Reaction - Reaction data - - """ - MT = group.attrs['MT'] - rxn = cls(MT) - rxn.table = table - rxn.Q_value = group.attrs['Q_value'] - rxn.threshold_idx = group.attrs['threshold_idx'] - 1 - rxn.center_of_mass = bool(group.attrs['center_of_mass']) - - # Read cross section - if 'xs' in group: - xs = group['xs'].value - rxn.xs = Tabulated1D(table.energy, xs) - - # Read reaction products - n_product = group.attrs['n_product'] - products = [] - for i in range(n_product): - pgroup = group['product_{}'.format(i)] - products.append(Product.from_hdf5(pgroup)) - rxn.products = products - - return rxn - - -table_types = { - "c": NeutronTable, - "t": SabTable} + return "".format(self.name) diff --git a/openmc/data/angle_distribution.py b/openmc/data/angle_distribution.py index 5f19450bc7..3f086a99cc 100644 --- a/openmc/data/angle_distribution.py +++ b/openmc/data/angle_distribution.py @@ -4,7 +4,7 @@ from numbers import Real import numpy as np import openmc.checkvalue as cv -from openmc.stats import Univariate, Tabular +from openmc.stats import Univariate, Tabular, Uniform from .container import interpolation_scheme @@ -132,3 +132,69 @@ class AngleDistribution(object): mu.append(mu_i) return cls(energy, mu) + + @classmethod + def from_ace(cls, ace, location_dist, location_start): + """Generate an angular distribution from ACE data + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + location_dist : int + Index in the XSS array corresponding to the start of a block, + e.g. JXS(9). + location_start : int + Index in the XSS array corresponding to the start of an angle + distribution array + + Returns + ------- + openmc.data.AngleDistribution + Angular distribution + + """ + # Set starting index for angle distribution + idx = location_dist + location_start - 1 + + # Number of energies at which angular distributions are tabulated + n_energies = int(ace.xss[idx]) + idx += 1 + + # Incoming energy grid + energy = ace.xss[idx:idx + n_energies] + idx += n_energies + + # Read locations for angular distributions + lc = ace.xss[idx:idx + n_energies].astype(int) + idx += n_energies + + mu = [] + for i in range(n_energies): + if lc[i] > 0: + # Equiprobable 32 bin distribution + idx = location_dist + abs(lc[i]) - 1 + cos = ace.xss[idx:idx + 33] + pdf = np.zeros(33) + pdf[:32] = 1.0/(32.0*np.diff(cos)) + cdf = np.linspace(0.0, 1.0, 33) + + mu_i = Tabular(cos, pdf, 'histogram', ignore_negative=True) + mu_i.c = cdf + elif lc[i] < 0: + # Tabular angular distribution + idx = location_dist + abs(lc[i]) - 1 + intt = int(ace.xss[idx]) + n_points = int(ace.xss[idx + 1]) + data = ace.xss[idx + 2:idx + 2 + 3*n_points] + data.shape = (3, n_points) + + mu_i = Tabular(data[0], data[1], interpolation_scheme[intt]) + mu_i.c = data[2] + else: + # Isotropic angular distribution + mu_i = Uniform(-1., 1.) + + mu.append(mu_i) + + return cls(energy, mu) diff --git a/openmc/data/angle_energy.py b/openmc/data/angle_energy.py index fc17d7bece..ff9f41a441 100644 --- a/openmc/data/angle_energy.py +++ b/openmc/data/angle_energy.py @@ -38,3 +38,73 @@ class AngleEnergy(object): return openmc.data.KalbachMann.from_hdf5(group) elif dist_type == 'nbody': return openmc.data.NBodyPhaseSpace.from_hdf5(group) + + @staticmethod + def from_ace(ace, location_dist, location_start, rx=None): + """Generate an AngleEnergy object from ACE data + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + location_dist : int + Index in the XSS array corresponding to the start of a block, + e.g. JXS(11) for the the DLW block. + location_start : int + Index in the XSS array corresponding to the start of an energy + distribution array + rx : Reaction + Reaction this energy distribution will be associated with + + Returns + ------- + distribution : openmc.data.AngleEnergy + Secondary angle-energy distribution + + """ + # Set starting index for energy distribution + idx = location_dist + location_start - 1 + + law = int(ace.xss[idx + 1]) + location_data = int(ace.xss[idx + 2]) + + # Position index for reading law data + idx = location_dist + location_data - 1 + + # Parse energy distribution data + if law == 2: + distribution = openmc.data.UncorrelatedAngleEnergy() + distribution.energy = openmc.data.DiscretePhoton.from_ace(ace, idx) + elif law in (3, 33): + distribution = openmc.data.UncorrelatedAngleEnergy() + distribution.energy = openmc.data.LevelInelastic.from_ace(ace, idx) + elif law == 4: + distribution = openmc.data.UncorrelatedAngleEnergy() + distribution.energy = openmc.data.ContinuousTabular.from_ace( + ace, idx, location_dist) + elif law == 5: + distribution = openmc.data.UncorrelatedAngleEnergy() + distribution.energy = openmc.data.GeneralEvaporation.from_ace(ace, idx) + elif law == 7: + distribution = openmc.data.UncorrelatedAngleEnergy() + distribution.energy = openmc.data.MaxwellEnergy.from_ace(ace, idx) + elif law == 9: + distribution = openmc.data.UncorrelatedAngleEnergy() + distribution.energy = openmc.data.Evaporation.from_ace(ace, idx) + elif law == 11: + distribution = openmc.data.UncorrelatedAngleEnergy() + distribution.energy = openmc.data.WattEnergy.from_ace(ace, idx) + elif law == 44: + distribution = openmc.data.KalbachMann.from_ace( + ace, idx, location_dist) + elif law == 61: + distribution = openmc.data.CorrelatedAngleEnergy.from_ace( + ace, idx, location_dist) + elif law == 66: + distribution = openmc.data.NBodyPhaseSpace.from_ace( + ace, idx, rx.q_value) + else: + raise IOError("Unsupported ACE secondary energy " + "distribution law {0}".format(law)) + + return distribution diff --git a/openmc/data/container.py b/openmc/data/container.py index 4bd293c365..b2b323ddd0 100644 --- a/openmc/data/container.py +++ b/openmc/data/container.py @@ -267,3 +267,42 @@ class Tabulated1D(object): breakpoints = dataset.attrs['breakpoints'] interpolation = dataset.attrs['interpolation'] return cls(x, y, breakpoints, interpolation) + + @classmethod + def from_ace(cls, ace, idx=0): + """Create a Tabulated1D object from an ACE table. + + Parameters + ---------- + ace : openmc.data.ace.Table + An ACE table + idx : int + Offset to read from in XSS array (default of zero) + + Returns + ------- + openmc.data.Tabulated1D + Tabulated data object + + """ + + # Get number of regions and pairs + n_regions = int(ace.xss[idx]) + n_pairs = int(ace.xss[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + breakpoints = ace.xss[idx:idx + n_regions].astype(int) + interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int) + else: + # 0 regions implies linear-linear interpolation by default + breakpoints = np.array([n_pairs]) + interpolation = np.array([2]) + + # Get (x,y) pairs + idx += 2*n_regions + 1 + x = ace.xss[idx:idx + n_pairs] + y = ace.xss[idx + n_pairs:idx + 2*n_pairs] + + return Tabulated1D(x, y, breakpoints, interpolation) diff --git a/openmc/data/correlated.py b/openmc/data/correlated.py index 58a90da9d6..f82a28b75a 100644 --- a/openmc/data/correlated.py +++ b/openmc/data/correlated.py @@ -203,8 +203,8 @@ class CorrelatedAngleEnergy(AngleEnergy): """ interp_data = group['energy'].attrs['interpolation'] - energy_breakpoints = interp_data[0,:] - energy_interpolation = interp_data[1,:] + energy_breakpoints = interp_data[0, :] + energy_interpolation = interp_data[1, :] energy = group['energy'].value offsets = group['energy_out'].attrs['offsets'] @@ -289,3 +289,116 @@ class CorrelatedAngleEnergy(AngleEnergy): return cls(energy_breakpoints, energy_interpolation, energy, energy_out, mu) + + @classmethod + def from_ace(cls, ace, idx, ldis): + """Generate correlated angle-energy distribution from ACE data + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + idx : int + Index in XSS array of the start of the energy distribution data + (LDIS + LOCC - 1) + ldis : int + Index in XSS array of the start of the energy distribution block + (e.g. JXS[11]) + + Returns + ------- + openmc.data.CorrelatedAngleEnergy + Correlated angle-energy distribution + + """ + # Read number of interpolation regions and incoming energies + n_regions = int(ace.xss[idx]) + n_energy_in = int(ace.xss[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + breakpoints = ace.xss[idx:idx + n_regions].astype(int) + interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int) + else: + breakpoints = np.array([n_energy_in]) + interpolation = np.array([2]) + + # Incoming energies at which distributions exist + idx += 2*n_regions + 1 + energy = ace.xss[idx:idx + n_energy_in] + + # Location of distributions + idx += n_energy_in + loc_dist = ace.xss[idx:idx + n_energy_in].astype(int) + + # Initialize list of distributions + energy_out = [] + mu = [] + + # Read each outgoing energy distribution + for i in range(n_energy_in): + idx = ldis + loc_dist[i] - 1 + + # intt = interpolation scheme (1=hist, 2=lin-lin) + INTTp = int(ace.xss[idx]) + intt = INTTp % 10 + n_discrete_lines = (INTTp - intt)//10 + if intt not in (1, 2): + warn("Interpolation scheme for continuous tabular distribution " + "is not histogram or linear-linear.") + intt = 2 + + # Secondary energy distribution + n_energy_out = int(ace.xss[idx + 1]) + data = ace.xss[idx + 2:idx + 2 + 4*n_energy_out] + data.shape = (4, n_energy_out) + + # Create continuous distribution + eout_continuous = Tabular(data[0][n_discrete_lines:], + data[1][n_discrete_lines:], + interpolation_scheme[intt], + ignore_negative=True) + eout_continuous.c = data[2][n_discrete_lines:] + + # If discrete lines are present, create a mixture distribution + if n_discrete_lines > 0: + eout_discrete = Discrete(data[0][:n_discrete_lines], + data[1][:n_discrete_lines]) + eout_discrete.c = data[2][:n_discrete_lines] + if n_discrete_lines == n_energy_out: + eout_i = eout_discrete + else: + p_discrete = min(sum(eout_discrete.p), 1.0) + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + else: + eout_i = eout_continuous + + energy_out.append(eout_i) + + lc = data[3].astype(int) + + # Secondary angular distributions + mu_i = [] + for j in range(n_energy_out): + if lc[j] > 0: + idx = ldis + abs(lc[j]) - 1 + + intt = int(ace.xss[idx]) + n_cosine = int(ace.xss[idx + 1]) + data = ace.xss[idx + 2:idx + 2 + 3*n_cosine] + data.shape = (3, n_cosine) + + mu_ij = Tabular(data[0], data[1], interpolation_scheme[intt]) + mu_ij.c = data[2] + else: + # Isotropic distribution + mu_ij = Uniform(-1., 1.) + + mu_i.append(mu_ij) + + # Add cosine distributions for this incoming energy to list + mu.append(mu_i) + + return cls(breakpoints, interpolation, energy, energy_out, mu) diff --git a/openmc/data/energy_distribution.py b/openmc/data/energy_distribution.py index afbc390141..09b0c6ebf7 100644 --- a/openmc/data/energy_distribution.py +++ b/openmc/data/energy_distribution.py @@ -1,6 +1,7 @@ from abc import ABCMeta, abstractmethod from collections import Iterable from numbers import Integral, Real +from warnings import warn import h5py import numpy as np @@ -200,6 +201,33 @@ class MaxwellEnergy(EnergyDistribution): u = group.attrs['u'] return cls(theta, u) + @classmethod + def from_ace(cls, ace, idx=0): + """Create a Maxwell distribution from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + An ACE table + idx : int + Offset to read from in XSS array (default of zero) + + Returns + ------- + openmc.data.MaxwellEnergy + Maxwell distribution + + """ + # Read nuclear temperature + theta = Tabulated1D.from_ace(ace, idx) + + # Restriction energy + nr = int(ace.xss[idx]) + ne = int(ace.xss[idx + 1 + 2*nr]) + u = ace.xss[idx + 2 + 2*nr + 2*ne] + + return cls(theta, u) + class Evaporation(EnergyDistribution): r"""Evaporation spectrum represented as @@ -273,13 +301,40 @@ class Evaporation(EnergyDistribution): Returns ------- openmc.data.Evaporation - Evaporation spectrum distribution + Evaporation spectrum """ theta = Tabulated1D.from_hdf5(group['theta']) u = group.attrs['u'] return cls(theta, u) + @classmethod + def from_ace(cls, ace, idx=0): + """Create an evaporation spectrum from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + An ACE table + idx : int + Offset to read from in XSS array (default of zero) + + Returns + ------- + openmc.data.Evaporation + Evaporation spectrum + + """ + # Read nuclear temperature + theta = Tabulated1D.from_ace(ace, idx) + + # Restriction energy + nr = int(ace.xss[idx]) + ne = int(ace.xss[idx + 1 + 2*nr]) + u = ace.xss[idx + 2 + 2*nr + 2*ne] + + return cls(theta, u) + class WattEnergy(EnergyDistribution): r"""Energy-dependent Watt spectrum represented as @@ -375,6 +430,45 @@ class WattEnergy(EnergyDistribution): u = group.attrs['u'] return cls(a, b, u) + @classmethod + def from_ace(cls, ace, idx): + """Create a Watt fission spectrum from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + An ACE table + idx : int + Offset to read from in XSS array (default of zero) + + Returns + ------- + openmc.data.WattEnergy + Watt fission spectrum + + """ + # Energy-dependent a parameter + a = Tabulated1D.from_ace(ace, idx) + + # Advance index + nr = int(ace.xss[idx]) + ne = int(ace.xss[idx + 1 + 2*nr]) + idx += 2 + 2*nr + 2*ne + + # Energy-dependent b parameter + b = Tabulated1D.from_ace(ace, idx) + + # Advance index + nr = int(ace.xss[idx]) + ne = int(ace.xss[idx + 1 + 2*nr]) + idx += 2 + 2*nr + 2*ne + + # Restriction energy + u = ace.xss[idx] + + return cls(a, b, u) + + class MadlandNix(EnergyDistribution): r"""Energy-dependent fission neutron spectrum (Madland and Nix) given in ENDF MF=5, LF=12 represented as @@ -574,6 +668,27 @@ class DiscretePhoton(EnergyDistribution): awr = group.attrs['atomic_weight_ratio'] return cls(primary_flag, energy, awr) + @classmethod + def from_ace(cls, ace, idx): + """Generate discrete photon energy distribution from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + An ACE table + idx : int + Offset to read from in XSS array (default of zero) + + Returns + ------- + openmc.data.DiscretePhoton + Discrete photon energy distribution + + """ + primary_flag = int(ace.xss[idx]) + energy = ace.xss[idx + 1] + return cls(primary_flag, energy, ace.atomic_weight_ratio) + class LevelInelastic(EnergyDistribution): r"""Level inelastic scattering @@ -650,6 +765,26 @@ class LevelInelastic(EnergyDistribution): mass_ratio = group.attrs['mass_ratio'] return cls(threshold, mass_ratio) + @classmethod + def from_ace(cls, ace, idx): + """Generate level inelastic distribution from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + An ACE table + idx : int + Offset to read from in XSS array (default of zero) + + Returns + ------- + openmc.data.LevelInelastic + Level inelastic scattering distribution + + """ + threshold, mass_ratio = ace.xss[idx:idx + 2] + return cls(threshold, mass_ratio) + class ContinuousTabular(EnergyDistribution): """Continuous tabular distribution @@ -802,8 +937,8 @@ class ContinuousTabular(EnergyDistribution): """ interp_data = group['energy'].attrs['interpolation'] - energy_breakpoints = interp_data[0,:] - energy_interpolation = interp_data[1,:] + energy_breakpoints = interp_data[0, :] + energy_interpolation = interp_data[1, :] energy = group['energy'].value data = group['distribution'] @@ -848,3 +983,89 @@ class ContinuousTabular(EnergyDistribution): return cls(energy_breakpoints, energy_interpolation, energy, energy_out) + + @classmethod + def from_ace(cls, ace, idx, ldis): + """Generate continuous tabular energy distribution from ACE data + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + idx : int + Index in XSS array of the start of the energy distribution data + (LDIS + LOCC - 1) + ldis : int + Index in XSS array of the start of the energy distribution block + (e.g. JXS[11]) + + Returns + ------- + openmc.data.ContinuousTabular + Continuous tabular energy distribution + + """ + # Read number of interpolation regions and incoming energies + n_regions = int(ace.xss[idx]) + n_energy_in = int(ace.xss[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + breakpoints = ace.xss[idx:idx + n_regions].astype(int) + interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int) + else: + breakpoints = np.array([n_energy_in]) + interpolation = np.array([2]) + + # Incoming energies at which distributions exist + idx += 2*n_regions + 1 + energy = ace.xss[idx:idx + n_energy_in] + + # Location of distributions + idx += n_energy_in + loc_dist = ace.xss[idx:idx + n_energy_in].astype(int) + + # Initialize variables + energy_out = [] + + # Read each outgoing energy distribution + for i in range(n_energy_in): + idx = ldis + loc_dist[i] - 1 + + # intt = interpolation scheme (1=hist, 2=lin-lin) + INTTp = int(ace.xss[idx]) + intt = INTTp % 10 + n_discrete_lines = (INTTp - intt)//10 + if intt not in (1, 2): + warn("Interpolation scheme for continuous tabular distribution " + "is not histogram or linear-linear.") + intt = 2 + + n_energy_out = int(ace.xss[idx + 1]) + data = ace.xss[idx + 2:idx + 2 + 3*n_energy_out] + data.shape = (3, n_energy_out) + + # Create continuous distribution + eout_continuous = Tabular(data[0][n_discrete_lines:], + data[1][n_discrete_lines:], + interpolation_scheme[intt]) + eout_continuous.c = data[2][n_discrete_lines:] + + # If discrete lines are present, create a mixture distribution + if n_discrete_lines > 0: + eout_discrete = Discrete(data[0][:n_discrete_lines], + data[1][:n_discrete_lines]) + eout_discrete.c = data[2][:n_discrete_lines] + if n_discrete_lines == n_energy_out: + eout_i = eout_discrete + else: + p_discrete = min(sum(eout_discrete.p), 1.0) + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + else: + eout_i = eout_continuous + + energy_out.append(eout_i) + + return cls(breakpoints, interpolation, energy, energy_out) diff --git a/openmc/data/kalbach_mann.py b/openmc/data/kalbach_mann.py index a8fc8d4c68..7899ae2a6a 100644 --- a/openmc/data/kalbach_mann.py +++ b/openmc/data/kalbach_mann.py @@ -197,8 +197,8 @@ class KalbachMann(AngleEnergy): """ interp_data = group['energy'].attrs['interpolation'] - energy_breakpoints = interp_data[0,:] - energy_interpolation = interp_data[1,:] + energy_breakpoints = interp_data[0, :] + energy_interpolation = interp_data[1, :] energy = group['energy'].value data = group['distribution'] @@ -251,3 +251,93 @@ class KalbachMann(AngleEnergy): return cls(energy_breakpoints, energy_interpolation, energy, energy_out, precompound, slope) + + @classmethod + def from_ace(cls, ace, idx, ldis): + """Generate Kalbach-Mann energy-angle distribution from ACE data + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + idx : int + Index in XSS array of the start of the energy distribution data + (LDIS + LOCC - 1) + ldis : int + Index in XSS array of the start of the energy distribution block + (e.g. JXS[11]) + + Returns + ------- + openmc.data.KalbachMann + Kalbach-Mann energy-angle distribution + + """ + # Read number of interpolation regions and incoming energies + n_regions = int(ace.xss[idx]) + n_energy_in = int(ace.xss[idx + 1 + 2*n_regions]) + + # Get interpolation information + idx += 1 + if n_regions > 0: + breakpoints = ace.xss[idx:idx + n_regions].astype(int) + interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int) + else: + breakpoints = np.array([n_energy_in]) + interpolation = np.array([2]) + + # Incoming energies at which distributions exist + idx += 2*n_regions + 1 + energy = ace.xss[idx:idx + n_energy_in] + + # Location of distributions + idx += n_energy_in + loc_dist = ace.xss[idx:idx + n_energy_in].astype(int) + + # Initialize variables + energy_out = [] + km_r = [] + km_a = [] + + # Read each outgoing energy distribution + for i in range(n_energy_in): + idx = ldis + loc_dist[i] - 1 + + # intt = interpolation scheme (1=hist, 2=lin-lin) + INTTp = int(ace.xss[idx]) + intt = INTTp % 10 + n_discrete_lines = (INTTp - intt)//10 + if intt not in (1, 2): + warn("Interpolation scheme for continuous tabular distribution " + "is not histogram or linear-linear.") + intt = 2 + + n_energy_out = int(ace.xss[idx + 1]) + data = ace.xss[idx + 2:idx + 2 + 5*n_energy_out] + data.shape = (5, n_energy_out) + + # Create continuous distribution + eout_continuous = Tabular(data[0][n_discrete_lines:], + data[1][n_discrete_lines:], + interpolation_scheme[intt]) + eout_continuous.c = data[2][n_discrete_lines:] + + # If discrete lines are present, create a mixture distribution + if n_discrete_lines > 0: + eout_discrete = Discrete(data[0][:n_discrete_lines], + data[1][:n_discrete_lines]) + eout_discrete.c = data[2][:n_discrete_lines] + if n_discrete_lines == n_energy_out: + eout_i = eout_discrete + else: + p_discrete = min(sum(eout_discrete.p), 1.0) + eout_i = Mixture([p_discrete, 1. - p_discrete], + [eout_discrete, eout_continuous]) + else: + eout_i = eout_continuous + + energy_out.append(eout_i) + km_r.append(Tabulated1D(data[0], data[3])) + km_a.append(Tabulated1D(data[0], data[4])) + + return cls(breakpoints, interpolation, energy, energy_out, km_r, km_a) diff --git a/openmc/data/library.py b/openmc/data/library.py new file mode 100644 index 0000000000..58f32609ea --- /dev/null +++ b/openmc/data/library.py @@ -0,0 +1,47 @@ +import os +import xml.etree.ElementTree as ET + +import h5py + +from openmc.clean_xml import clean_xml_indentation + +class DataLibrary(object): + def __init__(self): + self.libraries = [] + + def register_file(self, filename, filetype='neutron'): + h5file = h5py.File(filename, 'r') + + materials = [] + for name, group in h5file.items(): + materials.append(name) + + library = {'path': filename, 'type': filetype, 'materials': materials} + self.libraries.append(library) + + def export_to_xml(self, path='cross_sections.xml'): + root = ET.Element('cross_sections') + + # Determine common directory for library paths + common_dir = os.path.commonpath([lib['path'] for lib in self.libraries]) + if common_dir == '': + common_dir = '.' + + directory = os.path.relpath(common_dir, os.path.dirname(path)) + if directory != '.': + dir_element = ET.SubElement(root, "directory") + dir_element.text = directory + + for library in self.libraries: + lib_element = ET.SubElement(root, "library") + lib_element.set('materials', ' '.join(library['materials'])) + lib_element.set('path', os.path.relpath(library['path'], common_dir)) + lib_element.set('type', library['type']) + + # Clean the indentation to be user-readable + clean_xml_indentation(root) + + # Write XML file + tree = ET.ElementTree(root) + tree.write(path, xml_declaration=True, encoding='utf-8', + method='xml') diff --git a/openmc/data/nbody.py b/openmc/data/nbody.py index 4fa3d05b21..a34380dc93 100644 --- a/openmc/data/nbody.py +++ b/openmc/data/nbody.py @@ -116,3 +116,27 @@ class NBodyPhaseSpace(AngleEnergy): awr = group.attrs['atomic_weight_ratio'] q_value = group.attrs['q_value'] return cls(total_mass, n_particles, awr, q_value) + + @classmethod + def from_ace(cls, ace, idx, q_value): + """Generate N-body phase space distribution from ACE data + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + idx : int + Index in XSS array of the start of the energy distribution data + (LDIS + LOCC - 1) + q_value : float + Q-value for reaction in MeV + + Returns + ------- + openmc.data.NBodyPhaseSpace + N-body phase space distribution + + """ + n_particles = int(ace.xss[idx]) + total_mass = ace.xss[idx + 1] + return cls(total_mass, n_particles, ace.atomic_weight_ratio, q_value) diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py new file mode 100644 index 0000000000..ad5e370f1e --- /dev/null +++ b/openmc/data/neutron.py @@ -0,0 +1,405 @@ +from __future__ import division, unicode_literals +import io +import sys +from warnings import warn +from collections import OrderedDict, Iterable, Mapping +from copy import deepcopy +from numbers import Integral, Real +import sys + +import numpy as np +from numpy.polynomial import Polynomial +import h5py + +from . import atomic_number, atomic_symbol +from .ace import Table, get_table +from .container import Tabulated1D +from .energy_distribution import * +from .product import Product +from .reaction import Reaction, _get_photon_products +from .thermal import CoherentElastic +from .urr import ProbabilityTables +from openmc.stats import Tabular, Discrete, Uniform, Mixture +import openmc.checkvalue as cv + +if sys.version_info[0] >= 3: + basestring = str + + +class IncidentNeutron(object): + """Continuous-energy neutron interaction data. + + Instances of this class are not normally instantiated by the user but rather + created using the factory methods :meth:`IncidentNeutron.from_hdf5` and + :meth:`IncidentNeutron.from_ace`. + + Parameters + ---------- + name : str + Name of the table + atomic_number : int + Number of protons in the nucleus + mass_number : int + Number of nucleons in the nucleus + metastable : int + Metastable state of the nucleus. A value of zero indicates ground state. + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + temperature : float + Temperature of the target nuclide in eV. + + Attributes + ---------- + atomic_number : int + Number of protons in the nucleus + atomic_symbol : str + Atomic symbol of the nuclide, e.g., 'Zr' + atomic_weight_ratio : float + Atomic weight ratio of the target nuclide. + energy : numpy.ndarray + The energy values (MeV) at which reaction cross-sections are tabulated. + mass_number : int + Number of nucleons in the nucleus + metastable : int + Metastable state of the nucleus. A value of zero indicates ground state. + name : str + ZAID identifier of the table, e.g. 92235.70c. + reactions : collections.OrderedDict + Contains the cross sections, secondary angle and energy distributions, + and other associated data for each reaction. The keys are the MT values + and the values are Reaction objects. + summed_reactions : collections.OrderedDict + Contains summed cross sections, e.g., the total cross section. The keys + are the MT values and the values are Reaction objects. + temperature : float + Temperature of the target nuclide in eV. + urr : None or openmc.data.ProbabilityTables + Unresolved resonance region probability tables + + """ + + def __init__(self, name, atomic_number, mass_number, metastable, + atomic_weight_ratio, temperature): + self.name = name + self.atomic_number = atomic_number + self.mass_number = mass_number + self.metastable = metastable + self.atomic_weight_ratio = atomic_weight_ratio + self.temperature = temperature + + self._energy = None + self.reactions = OrderedDict() + self.summed_reactions = OrderedDict() + self.urr = None + + def __repr__(self): + return "".format(self.name) + + def __iter__(self): + return iter(self.reactions.values()) + + @property + def name(self): + return self._name + + @property + def atomic_number(self): + return self._atomic_number + + @property + def mass_number(self): + return self._mass_number + + @property + def metastable(self): + return self._metastable + + @property + def atomic_weight_ratio(self): + return self._atomic_weight_ratio + + @property + def energy(self): + return self._energy + + @property + def temperature(self): + return self._temperature + + @property + def reactions(self): + return self._reactions + + @property + def summed_reactions(self): + return self._summed_reactions + + @property + def urr(self): + return self._urr + + @name.setter + def name(self, name): + cv.check_type('name', name, basestring) + self._name = name + + @property + def atomic_symbol(self): + return atomic_symbol[self.atomic_number] + + @atomic_number.setter + def atomic_number(self, atomic_number): + cv.check_type('atomic number', atomic_number, Integral) + cv.check_greater_than('atomic number', atomic_number, 0) + self._atomic_number = atomic_number + + @mass_number.setter + def mass_number(self, mass_number): + cv.check_type('mass number', mass_number, Integral) + cv.check_greater_than('mass number', mass_number, 0, True) + self._mass_number = mass_number + + @metastable.setter + def metastable(self, metastable): + cv.check_type('metastable', metastable, Integral) + cv.check_greater_than('metastable', metastable, 0, True) + self._metastable = metastable + + @atomic_weight_ratio.setter + def atomic_weight_ratio(self, atomic_weight_ratio): + cv.check_type('atomic weight ratio', atomic_weight_ratio, Real) + cv.check_greater_than('atomic weight ratio', atomic_weight_ratio, 0.0) + self._atomic_weight_ratio = atomic_weight_ratio + + @temperature.setter + def temperature(self, temperature): + cv.check_type('temperature', temperature, Real) + cv.check_greater_than('temperature', temperature, 0.0) + self._temperature = temperature + + @energy.setter + def energy(self, energy): + cv.check_type('energy grid', energy, Iterable, Real) + self._energy = energy + + @reactions.setter + def reactions(self, reactions): + cv.check_type('reactions', reactions, Mapping) + self._reactions = reactions + + @summed_reactions.setter + def summed_reactions(self, summed_reactions): + cv.check_type('summed reactions', summed_reactions, Mapping) + self._summed_reactions = summed_reactions + + @urr.setter + def urr(self, urr): + cv.check_type('probability tables', urr, + (ProbabilityTables, type(None))) + self._urr = urr + + def export_to_hdf5(self, path, mode='a'): + """Export table to an HDF5 file. + + Parameters + ---------- + path : str + Path to write HDF5 file to + mode : {'r', r+', 'w', 'x', 'a'} + Mode that is used to open the HDF5 file. This is the second argument + to the :class:`h5py.File` constructor. + + """ + + f = h5py.File(path, mode) + + # Write basic data + g = f.create_group(self.name) + g.attrs['Z'] = self.atomic_number + g.attrs['A'] = self.mass_number + g.attrs['metastable'] = self.metastable + g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio + g.attrs['temperature'] = self.temperature + g.attrs['n_reaction'] = len(self.reactions) + + # Write energy grid + g.create_dataset('energy', data=self.energy) + + # Write reaction data + for i, rx in enumerate(self.reactions.values()): + rx_group = g.create_group('reaction_{}'.format(i)) + rx.to_hdf5(rx_group) + + # Write total nu data if available + if len(rx.derived_products) > 0 and 'total_nu' not in g: + tgroup = g.create_group('total_nu') + rx.derived_products[0].to_hdf5(tgroup) + + # Write unresolved resonance probability tables + if self.urr is not None: + urr_group = g.create_group('urr') + self.urr.to_hdf5(urr_group) + + f.close() + + @classmethod + def from_hdf5(self, group_or_filename): + """Generate continuous-energy neutron interaction data from HDF5 group + + Parameters + ---------- + group_or_filename : h5py.Group or str + HDF5 group containing interaction data. If given as a string, it is + assumed to be the filename for the HDF5 file, and the first group is + used to read from. + + Returns + ------- + openmc.data.ace.IncidentNeutron + Continuous-energy neutron interaction data + + """ + if isinstance(group_or_filename, h5py.Group): + group = group_or_filename + else: + h5file = h5py.File(group_or_filename, 'r') + group = list(h5file.values())[0] + + name = group.name[1:] + atomic_number = group.attrs['Z'] + mass_number = group.attrs['A'] + metastable = group.attrs['metastable'] + atomic_weight_ratio = group.attrs['atomic_weight_ratio'] + temperature = group.attrs['temperature'] + + data = IncidentNeutron(name, atomic_number, mass_number, metastable, + atomic_weight_ratio, temperature) + + # Read energy grid + data.energy = group['energy'].value + + # Read reaction data + n_reaction = group.attrs['n_reaction'] + + # Write reaction data + for i in range(n_reaction): + rx_group = group['reaction_{}'.format(i)] + rx = Reaction.from_hdf5(rx_group, data.energy) + data.reactions[rx.mt] = rx + + # Read total nu data if available + if 'total_nu' in rx_group: + tgroup = rx_group['total_nu'] + rx.derived_products = [Product.from_hdf5(tgroup)] + + # Read unresolved resonance probability tables + if 'urr' in group: + urr_group = group['urr'] + data.urr = ProbabilityTables.from_hdf5(urr_group) + + return data + + @classmethod + def from_ace(cls, ace_or_filename, metastable_scheme='nndc'): + """Generate incident neutron continuous-energy data from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table or str + ACE table to read from. If given as a string, it is assumed to be + the filename for the ACE file. + metastable_scheme : {'nndc', 'mcnp'} + Determine how ZAID identifiers are to be interpreted in the case of + a metastable nuclide. Because the normal ZAID (=1000*Z + A) does not + encode metastable information, different conventions are used among + different libraries. In MCNP libraries, the convention is to add 400 + for a metastable nuclide except for Am242m, for which 95242 is + metastable and 95642 (or 1095242 in newer libraries) is the ground + state. For NNDC libraries, ZAID is given as 1000*Z + A + 100*m. + + Returns + ------- + openmc.data.IncidentNeutron + Incident neutron continuous-energy data + + """ + if isinstance(ace_or_filename, Table): + ace = ace_or_filename + else: + ace = get_table(ace_or_filename) + + # If mass number hasn't been specified, make an educated guess + zaid, xs = ace.name.split('.') + zaid = int(zaid) + Z = zaid // 1000 + mass_number = zaid % 1000 + + if metastable_scheme == 'mcnp': + if zaid > 1000000: + # New SZA format + Z = Z % 1000 + if zaid == 1095242: + metastable = 0 + else: + metastable = zaid // 1000000 + else: + if zaid == 95242: + metastable = 1 + elif zaid == 95642: + metastable = 0 + else: + metastable = 1 if mass_number > 300 else 0 + elif metastable_scheme == 'nndc': + metastable = 1 if mass_number > 300 else 0 + + while mass_number > 3*Z: + mass_number -= 100 + + # Determine name for group + element = atomic_symbol[Z] + if metastable > 0: + name = '{}{}_m{}.{}'.format(element, mass_number, metastable, xs) + else: + name = '{}{}.{}'.format(element, mass_number, xs) + + data = IncidentNeutron(name, Z, mass_number, metastable, + ace.atomic_weight_ratio, ace.temperature) + + # Read energy grid + n_energy = ace.nxs[3] + energy = ace.xss[ace.jxs[1]:ace.jxs[1] + n_energy] + data.energy = energy + total_xs = ace.xss[ace.jxs[1] + n_energy:ace.jxs[1] + 2*n_energy] + absorption_xs = ace.xss[ace.jxs[1] + 2*n_energy:ace.jxs[1] + 3*n_energy] + + # Create summed reactions (total and absorption) + total = Reaction(1) + total.xs = Tabulated1D(energy, total_xs) + data.summed_reactions[1] = total + absorption = Reaction(27) + absorption.xs = Tabulated1D(energy, absorption_xs) + data.summed_reactions[27] = absorption + + # Read each reaction + n_reaction = ace.nxs[4] + 1 + for i in range(n_reaction): + rx = Reaction.from_ace(ace, i) + data.reactions[rx.mt] = rx + + # Some photon production reactions may be assigned to MTs that don't + # exist, usually MT=4. In this case, we create a new reaction and add + # them + n_photon_reactions = ace.nxs[6] + photon_mts = ace.xss[ace.jxs[13]:ace.jxs[13] + + n_photon_reactions].astype(int) + + for mt in np.unique(photon_mts // 1000): + if mt not in data.reactions: + rx = Reaction(mt) + rx.products += _get_photon_products(ace, mt) + data.summed_reactions[mt] = rx + + # Read unresolved resonance probability tables + data.urr = ProbabilityTables.from_ace(ace) + + return data diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py new file mode 100644 index 0000000000..40e0910baa --- /dev/null +++ b/openmc/data/reaction.py @@ -0,0 +1,512 @@ +from __future__ import division, unicode_literals +from collections import Iterable +from copy import deepcopy +from numbers import Real + +import numpy as np +from numpy.polynomial import Polynomial + +import openmc.checkvalue as cv +from openmc.stats import Uniform +from .angle_distribution import AngleDistribution +from .angle_energy import AngleEnergy +from .container import Tabulated1D +from .data import reaction_name +from .product import Product +from .uncorrelated import UncorrelatedAngleEnergy + + +def _get_fission_products(ace): + """Generate fission products from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + + Returns + ------- + products : list of openmc.data.Product + Prompt and delayed fission neutrons + derived_products : list of openmc.data.Product + "Total" fission neutron + + """ + # No NU block + if ace.jxs[2] == 0: + return None, None + + products = [] + derived_products = [] + + # Either prompt nu or total nu is given + if ace.xss[ace.jxs[2]] > 0: + whichnu = 'prompt' if ace.jxs[24] > 0 else 'total' + + neutron = Product('neutron') + neutron.emission_mode = whichnu + + idx = ace.jxs[2] + LNU = int(ace.xss[idx]) + if LNU == 1: + # Polynomial function form of nu + NC = int(ace.xss[idx+1]) + coefficients = ace.xss[idx+2 : idx+2+NC] + neutron.yield_ = Polynomial(coefficients) + elif LNU == 2: + # Tabular data form of nu + neutron.yield_ = Tabulated1D.from_ace(ace, idx + 1) + + products.append(neutron) + + # Both prompt nu and total nu + elif ace.xss[ace.jxs[2]] < 0: + # Read prompt neutron yield + prompt_neutron = Product('neutron') + prompt_neutron.emission_mode = 'prompt' + + idx = ace.jxs[2] + 1 + LNU = int(ace.xss[idx]) + if LNU == 1: + # Polynomial function form of nu + NC = int(ace.xss[idx+1]) + coefficients = ace.xss[idx+2 : idx+2+NC] + prompt_neutron.yield_ = Polynomial(coefficients) + elif LNU == 2: + # Tabular data form of nu + prompt_neutron.yield_ = Tabulated1D.from_ace(ace, idx + 1) + + # Read total neutron yield + total_neutron = Product('neutron') + total_neutron.emission_mode = 'total' + + idx = ace.jxs[2] + int(abs(ace.xss[ace.jxs[2]])) + 1 + LNU = int(ace.xss[idx]) + + if LNU == 1: + # Polynomial function form of nu + NC = int(ace.xss[idx+1]) + coefficients = ace.xss[idx+2 : idx+2+NC] + total_neutron.yield_ = Polynomial(coefficients) + elif LNU == 2: + # Tabular data form of nu + total_neutron.yield_ = Tabulated1D.from_ace(ace, idx + 1) + + products.append(prompt_neutron) + derived_products.append(total_neutron) + + # Check for delayed nu data + if ace.jxs[24] > 0: + yield_delayed = Tabulated1D.from_ace(ace, ace.jxs[24] + 1) + + # Delayed neutron precursor distribution + idx = ace.jxs[25] + n_group = ace.nxs[8] + total_group_probability = 0. + for i, group in enumerate(range(n_group)): + delayed_neutron = Product('neutron') + delayed_neutron.emission_mode = 'delayed' + delayed_neutron.decay_rate = ace.xss[idx] + + group_probability = Tabulated1D.from_ace(ace, idx + 1) + if np.all(group_probability.y == group_probability.y[0]): + delayed_neutron.yield_ = deepcopy(yield_delayed) + delayed_neutron.yield_.y *= group_probability.y[0] + total_group_probability += group_probability.y[0] + else: + raise NotImplementedError( + 'Delayed neutron with energy-dependent group probability') + + # Advance position + nr = int(ace.xss[idx + 1]) + ne = int(ace.xss[idx + 2 + 2*nr]) + idx += 3 + 2*nr + 2*ne + + # Energy distribution for delayed fission neutrons + location_start = int(ace.xss[ace.jxs[26] + group]) + delayed_neutron.distribution.append( + AngleEnergy.from_ace(ace, ace.jxs[27], location_start)) + + products.append(delayed_neutron) + + # Renormalize delayed neutron yields to reflect fact that in ACE + # file, the sum of the group probabilities is not exactly one + for product in products[1:]: + product.yield_.y /= total_group_probability + + return products, derived_products + + +def _get_photon_products(ace, mt): + """Generate photon products from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + mt : int + MT number for the desired reaction + + Returns + ------- + photons : list of openmc.Products + Photons produced from reaction with given MT + + """ + n_photon_reactions = ace.nxs[6] + photon_mts = ace.xss[ace.jxs[13]:ace.jxs[13] + + n_photon_reactions].astype(int) + + photons = [] + for i in range(n_photon_reactions): + # Determine corresponding reaction + neutron_mt = photon_mts[i] // 1000 + + # Restrict to photons that match the requested MT. Note that if the + # photon is assigned to MT=18 but the file splits fission into + # MT=19,20,21,38, we assign the photon product to each of the individual + # reactions + if neutron_mt == 18: + if mt not in (18, 19, 20, 21, 38): + continue + elif neutron_mt != mt: + continue + + # Create photon product and assign to reactions + photon = Product('photon') + + # ================================================================== + # Photon yield / production cross section + + loca = int(ace.xss[ace.jxs[14] + i]) + idx = ace.jxs[15] + loca - 1 + mftype = int(ace.xss[idx]) + idx += 1 + + if mftype in (12, 16): + # Yield data taken from ENDF File 12 or 6 + mtmult = int(ace.xss[idx]) + assert mtmult == neutron_mt + + # Read photon yield as function of energy + photon.yield_ = Tabulated1D.from_ace(ace, idx + 1) + + elif mftype == 13: + # Cross section data from ENDF File 13 + + # Energy grid index at which data starts + threshold_idx = int(ace.xss[idx]) - 1 + + # Get photon production cross section + n_energy = int(ace.xss[idx + 1]) + photon._xs = ace.xss[idx + 2:idx + 2 + n_energy] + + # Determine yield based on ratio of cross sections + energy = ace.xss[ace.jxs[1] + threshold_idx: + ace.jxs[1] + threshold_idx + n_energy] + photon.yield_ = Tabulated1D(energy, photon._xs) + + else: + raise ValueError("MFTYPE must be 12, 13, 16. Got {0}".format( + mftype)) + + # ================================================================== + # Photon energy distribution + + location_start = int(ace.xss[ace.jxs[18] + i]) + distribution = AngleEnergy.from_ace(ace, ace.jxs[19], location_start) + assert isinstance(distribution, UncorrelatedAngleEnergy) + + # ================================================================== + # Photon angular distribution + loc = int(ace.xss[ace.jxs[16] + i]) + + if loc == 0: + # No angular distribution data are given for this reaction, + # isotropic scattering is asssumed in LAB + energy = np.array([photon.yield_.x[0], photon.yield_.x[-1]]) + mu_isotropic = Uniform(-1., 1.) + distribution.angle = AngleDistribution( + energy, [mu_isotropic, mu_isotropic]) + else: + distribution.angle = AngleDistribution.from_ace(ace, ace.jxs[17], loc) + + # Add to list of distributions + photon.distribution.append(distribution) + photons.append(photon) + + return photons + + +class Reaction(object): + """A nuclear reaction + + A Reaction object represents a single reaction channel for a nuclide with + an associated cross section and, if present, a secondary angle and energy + distribution. + + Parameters + ---------- + mt : int + The ENDF MT number for this reaction. On occasion, MCNP uses MT numbers + that don't correspond exactly to the ENDF specification. + + Attributes + ---------- + center_of_mass : bool + Indicates whether scattering kinematics should be performed in the + center-of-mass or laboratory reference frame. + grid above the threshold value in barns. + mt : int + The ENDF MT number for this reaction. + q_value : float + The Q-value of this reaction in MeV. + table : openmc.data.ace.Table + The ACE table which contains this reaction. + threshold : float + Threshold of the reaction in MeV + threshold_idx : int + The index on the energy grid corresponding to the threshold of this + reaction. + xs : openmc.data.Tabulated1D + Microscopic cross section for this reaction as a function of incident + energy + products : Iterable of openmc.data.Product + Reaction products + derived_products : Iterable of openmc.data.Product + Derived reaction products. Used for 'total' fission neutron data when + prompt/delayed data also exists. + + """ + + def __init__(self, mt): + self.center_of_mass = True + self.mt = mt + self.q_value = 0. + self.threshold_idx = 0 + self._xs = None + self.products = [] + self.derived_products = [] + + def __repr__(self): + if self.mt in reaction_name: + return "".format(self.mt, reaction_name[self.mt]) + else: + return "".format(self.mt) + + @property + def center_of_mass(self): + return self._center_of_mass + + @property + def q_value(self): + return self._q_value + + @property + def products(self): + return self._products + + @property + def threshold(self): + return self.xs.x[0] + + @property + def xs(self): + return self._xs + + @center_of_mass.setter + def center_of_mass(self, center_of_mass): + cv.check_type('center of mass', center_of_mass, (bool, np.bool_)) + self._center_of_mass = center_of_mass + + @q_value.setter + def q_value(self, q_value): + cv.check_type('Q value', q_value, Real) + self._q_value = q_value + + @products.setter + def products(self, products): + cv.check_type('reaction products', products, Iterable, Product) + self._products = products + + @xs.setter + def xs(self, xs): + cv.check_type('reaction cross section', xs, Tabulated1D) + for y in xs.y: + cv.check_greater_than('reaction cross section', y, 0.0, True) + self._xs = xs + + def to_hdf5(self, group): + """Write reaction to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + group.attrs['mt'] = self.mt + if self.mt in reaction_name: + group.attrs['label'] = np.string_(reaction_name[self.mt]) + else: + group.attrs['label'] = np.string_(self.mt) + group.attrs['Q_value'] = self.q_value + group.attrs['threshold_idx'] = self.threshold_idx + 1 + group.attrs['center_of_mass'] = 1 if self.center_of_mass else 0 + group.attrs['n_product'] = len(self.products) + if self.xs is not None: + group.create_dataset('xs', data=self.xs.y) + for i, p in enumerate(self.products): + pgroup = group.create_group('product_{}'.format(i)) + p.to_hdf5(pgroup) + + @classmethod + def from_hdf5(cls, group, energy): + """Generate reaction from an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + energy : Iterable of float + Array of energies at which cross sections are tabulated at + + Returns + ------- + openmc.data.ace.Reaction + Reaction data + + """ + mt = group.attrs['mt'] + rx = cls(mt) + rx.q_value = group.attrs['Q_value'] + rx.threshold_idx = group.attrs['threshold_idx'] - 1 + rx.center_of_mass = bool(group.attrs['center_of_mass']) + + # Read cross section + if 'xs' in group: + xs = group['xs'].value + rx.xs = Tabulated1D(energy, xs) + + # Read reaction products + n_product = group.attrs['n_product'] + products = [] + for i in range(n_product): + pgroup = group['product_{}'.format(i)] + products.append(Product.from_hdf5(pgroup)) + rx.products = products + + return rx + + @classmethod + def from_ace(cls, ace, i_reaction): + # Get nuclide energy grid + n_grid = ace.nxs[3] + grid = ace.xss[ace.jxs[1]:ace.jxs[1] + n_grid] + + if i_reaction > 0: + mt = int(ace.xss[ace.jxs[3] + i_reaction - 1]) + rx = cls(mt) + + # Get Q-value of reaction + rx.q_value = ace.xss[ace.jxs[4] + i_reaction - 1] + + # ================================================================== + # CROSS SECTION + + # Get locator for cross-section data + loc = int(ace.xss[ace.jxs[6] + i_reaction - 1]) + + # Determine starting index on energy grid + rx.threshold_idx = int(ace.xss[ace.jxs[7] + loc - 1]) - 1 + + # Determine number of energies in reaction + n_energy = int(ace.xss[ace.jxs[7] + loc]) + energy = grid[rx.threshold_idx:rx.threshold_idx + n_energy] + + # Read reaction cross section + xs = ace.xss[ace.jxs[7] + loc + 1:ace.jxs[7] + loc + 1 + n_energy] + rx.xs = Tabulated1D(energy, xs) + + # ================================================================== + # YIELD AND ANGLE-ENERGY DISTRIBUTION + + # Determine multiplicity + ty = ace.xss[ace.jxs[5] + i_reaction - 1] + rx.center_of_mass = (ty < 0) + if i_reaction < ace.nxs[5] + 1: + if ty != 19: + if abs(ty) > 100: + # Energy-dependent neutron yield + idx = ace.jxs[11] + abs(ty) - 101 + yield_ = Tabulated1D.from_ace(ace, idx) + else: + yield_ = abs(ty) + + neutron = Product('neutron') + neutron.yield_ = yield_ + rx.products.append(neutron) + else: + assert mt in (18, 19, 20, 21, 38) + rx.products, rx.derived_products = _get_fission_products(ace) + + for p in rx.products: + if p.emission_mode in ('prompt', 'total'): + neutron = p + break + else: + raise Exception("Couldn't find prompt/total fission neutron") + + # Determine locator for ith energy distribution + lnw = int(ace.xss[ace.jxs[10] + i_reaction - 1]) + while lnw > 0: + # Applicability of this distribution + neutron.applicability.append(Tabulated1D.from_ace( + ace, ace.jxs[11] + lnw + 2)) + + # Read energy distribution data + neutron.distribution.append(AngleEnergy.from_ace( + ace, ace.jxs[11], lnw, rx)) + + lnw = int(ace.xss[ace.jxs[11] + lnw - 1]) + + else: + # Elastic scattering + mt = 2 + rx = cls(mt) + + elastic_xs = ace.xss[ace.jxs[1] + 3*n_grid:ace.jxs[1] + 4*n_grid] + rx.xs = Tabulated1D(grid, elastic_xs) + + # No energy distribution for elastic scattering + neutron = Product('neutron') + neutron.distribution.append(UncorrelatedAngleEnergy()) + rx.products.append(neutron) + + # ====================================================================== + # ANGLE DISTRIBUTION (FOR UNCORRELATED) + + if i_reaction < ace.nxs[5] + 1: + # Check if angular distribution data exist + loc = int(ace.xss[ace.jxs[8] + i_reaction]) + if loc <= 0: + # Angular distribution is either given as part of a product + # angle-energy distribution or is not given at all (in which + # case isotropic scattering is assumed) + angle_dist = None + else: + angle_dist = AngleDistribution.from_ace(ace, ace.jxs[9], loc) + + # Apply angular distribution to each uncorrelated angle-energy + # distribution + if angle_dist is not None: + for d in neutron.distribution: + d.angle = angle_dist + + # ====================================================================== + # PHOTON PRODUCTION + + rx.products += _get_photon_products(ace, mt) + + return rx diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py index 663b6472c7..63e573a010 100644 --- a/openmc/data/thermal.py +++ b/openmc/data/thermal.py @@ -1,9 +1,39 @@ from collections import Iterable +from difflib import get_close_matches from numbers import Real +from warnings import warn import numpy as np +import h5py import openmc.checkvalue as cv +from .ace import Table, get_table +from .container import Tabulated1D + + +_THERMAL_NAMES = {'al': 'c_Al27', 'al27': 'c_Al27', + 'be': 'c_Be', + 'bebeo': 'c_Be_in_BeO', 'be-o': 'c_Be_in_BeO', + 'benz': 'c_Benzine', + 'cah': 'c_Ca_in_CaH2', + 'dd2o': 'c_D_in_D2O', 'hwtr': 'c_D_in_D2O', + 'fe': 'c_Fe56', 'fe56': 'c_Fe56', + 'graph': 'c_Graphite', 'grph': 'c_Graphite', + 'hca': 'c_H_in_CaH2', + 'hch2': 'c_H_in_CH2', 'poly': 'c_H_in_CH2', + 'hh2o': 'c_H_in_H2O', 'lwtr': 'c_H_in_H2O', + 'hzrh': 'c_H_in_ZrH', 'h-zr': 'c_H_in_ZrH', + 'lch4': 'c_liquid_CH4', 'lmeth': 'c_liquid_CH4', + 'mg': 'c_Mg24', + 'obeo': 'c_O_in_BeO', 'o-be': 'c_O_in_BeO', + 'orthod': 'c_ortho_D', 'dortho': 'c_ortho_D', + 'orthoh': 'c_ortho_H', 'hortho': 'c_ortho_H', + 'ouo2': 'c_O_in_UO2', 'o2-u': 'c_O_in_UO2', + 'parad': 'c_para_D', 'dpara': 'c_para_D', + 'parah': 'c_para_H', 'hpara': 'c_para_H', + 'sch4': 'c_solid_CH4', 'smeth': 'c_solid_CH4', + 'uuo2': 'c_U_in_UO2', 'u-o2': 'c_U_in_UO2', + 'zrzrh': 'c_Zr_in_ZrH', 'zr-h': 'c_Zr_in_ZrH'} class CoherentElastic(object): @@ -87,6 +117,277 @@ class CoherentElastic(object): Coherent elastic scattering cross section """ - bragg_edges = dataset.value[0,:] - factors = dataset.value[1,:] + bragg_edges = dataset.value[0, :] + factors = dataset.value[1, :] return cls(bragg_edges, factors) + + +class ThermalScattering(object): + """A ThermalScattering object contains thermal scattering data as represented by + an S(alpha, beta) table. + + Parameters + ---------- + name : str + ZAID identifier of the table, e.g. lwtr.10t. + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + temperature : float + Temperature of the target nuclide in eV. + + Attributes + ---------- + atomic_weight_ratio : float + Atomic mass ratio of the target nuclide. + elastic_xs : openmc.data.Tabulated1D or openmc.data.CoherentElastic + Elastic scattering cross section derived in the coherent or incoherent + approximation + inelastic_xs : openmc.data.Tabulated1D + Inelastic scattering cross section derived in the incoherent + approximation + name : str + Name of the table, e.g. lwtr.20t. + temperature : float + Temperature of the target nuclide in eV. + zaids : Iterable of int + ZAID identifiers that the thermal scattering data applies to + + """ + + def __init__(self, name, atomic_weight_ratio, temperature): + self.name = name + self.atomic_weight_ratio = atomic_weight_ratio + self.temperature = temperature + self.elastic_xs = None + self.elastic_mu_out = None + self.inelastic_xs = None + self.inelastic_e_out = None + self.inelastic_mu_out = None + self.secondary_mode = None + self.zaids = [] + + def __repr__(self): + if hasattr(self, 'name'): + return "".format(self.name) + else: + return "" + + def export_to_hdf5(self, path, mode='a'): + """Export table to an HDF5 file. + + Parameters + ---------- + path : str + Path to write HDF5 file to + mode : {'r', r+', 'w', 'x', 'a'} + Mode that is used to open the HDF5 file. This is the second argument + to the :class:`h5py.File` constructor. + + """ + + f = h5py.File(path, mode) + + # Write basic data + g = f.create_group(self.name) + g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio + g.attrs['temperature'] = self.temperature + g.attrs['zaids'] = self.zaids + + # Write thermal elastic scattering + if self.elastic_xs is not None: + elastic_group = g.create_group('elastic') + self.elastic_xs.to_hdf5(elastic_group, 'xs') + if self.elastic_mu_out is not None: + elastic_group.create_dataset('mu_out', data=self.elastic_mu_out) + + # Write thermal inelastic scattering + if self.inelastic_xs is not None: + inelastic_group = g.create_group('inelastic') + self.inelastic_xs.to_hdf5(inelastic_group, 'xs') + inelastic_group.attrs['secondary_mode'] = np.string_(self.secondary_mode) + if self.secondary_mode in ('equal', 'skewed'): + inelastic_group.create_dataset('energy_out', data=self.inelastic_e_out) + inelastic_group.create_dataset('mu_out', data=self.inelastic_mu_out) + elif self.secondary_mode == 'continuous': + self.inelastic_dist.to_hdf5(inelastic_group) + + @classmethod + def from_hdf5(self, group): + """Generate thermal scattering data from HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.ThermalScattering + Neutron thermal scattering data + + """ + name = group.name[1:] + atomic_weight_ratio = group.attrs['atomic_weight_ratio'] + temperature = group.attrs['temperature'] + table = ThermalScattering(name, atomic_weight_ratio, temperature) + table.zaids = group.attrs['zaids'] + + # Read thermal elastic scattering + if 'elastic' in group: + elastic_group = group['elastic'] + + # Cross section + elastic_xs_type = elastic_group['xs'].attrs['type'].decode() + if elastic_xs_type == 'tab1': + table.elastic_xs = Tabulated1D.from_hdf5(elastic_group['xs']) + elif elastic_xs_type == 'bragg': + table.elastic_xs = CoherentElastic.from_hdf5(elastic_group['xs']) + + # Angular distribution + if 'mu_out' in elastic_group: + table.elastic_mu_out = elastic_group['mu_out'].value + + # Read thermal inelastic scattering + if 'inelastic' in group: + inelastic_group = group['inelastic'] + table.secondary_mode = inelastic_group.attrs['secondary_mode'].decode() + table.inelastic_xs = Tabulated1D.from_hdf5(inelastic_group['xs']) + if table.secondary_mode in ('equal', 'skewed'): + table.inelastic_e_out = inelastic_group['energy_out'] + table.inelastic_mu_out = inelastic_group['mu_out'] + elif table.secondary_mode == 'continuous': + table.inelastic_dist = AngleEnergy.from_hdf5(inelastic_group) + + return table + + @classmethod + def from_ace(cls, ace_or_filename, name=None): + """Generate thermal scattering data from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table or str + ACE table to read from. If given as a string, it is assumed to be + the filename for the ACE file. + name : str + GND-conforming name of the material, e.g. c_H_in_H2O. If none is + passed, the appropriate name is guessed based on the name of the ACE + table. + + Returns + ------- + openmc.data.ThermalScattering + Thermal scattering data + + """ + if isinstance(ace_or_filename, Table): + ace = ace_or_filename + else: + ace = get_table(ace_or_filename) + + # Get new name that is GND-consistent + ace_name, xs = ace.name.split('.') + if name is None: + if ace_name.lower() in _THERMAL_NAMES: + name = _THERMAL_NAMES[ace_name.lower()] + '.' + xs + else: + # Make an educated guess?? This actually works well for JEFF-3.2 + # which stupidly uses names like lw00.32t, lw01.32t, etc. for + # different temperatures + matches = get_close_matches( + ace_name.lower(), _THERMAL_NAMES.keys(), cutoff=0.5) + if len(matches) > 0: + name = _THERMAL_NAMES[matches[0]] + '.' + xs + else: + # OK, we give up. Just use the ACE name. + name = 'c_' + ace.name + warn('Thermal scattering material "{}" is not recognized. ' + 'Assigning a name of {}.'.format(ace.name, name)) + + table = cls(name, ace.atomic_weight_ratio, ace.temperature) + + # Incoherent inelastic scattering cross section + idx = ace.jxs[1] + n_energy = int(ace.xss[idx]) + energy = ace.xss[idx+1 : idx+1+n_energy] + xs = ace.xss[idx+1+n_energy : idx+1+2*n_energy] + table.inelastic_xs = Tabulated1D(energy, xs) + + if ace.nxs[7] == 0: + table.secondary_mode = 'equal' + elif ace.nxs[7] == 1: + table.secondary_mode = 'skewed' + elif ace.nxs[7] == 2: + table.secondary_mode = 'continuous' + + n_energy_out = ace.nxs[4] + if table.secondary_mode in ('equal', 'skewed'): + n_mu = ace.nxs[3] + idx = ace.jxs[3] + table.inelastic_e_out = ace.xss[idx:idx+n_energy*n_energy_out*(n_mu+2):n_mu+2] + table.inelastic_e_out.shape = (n_energy, n_energy_out) + + table.inelastic_mu_out = ace.xss[idx:idx+n_energy*n_energy_out*(n_mu+2)] + table.inelastic_mu_out.shape = (n_energy, n_energy_out, n_mu+2) + table.inelastic_mu_out = table.inelastic_mu_out[:, :, 1:] + else: + n_mu = ace.nxs[3] - 1 + idx = ace.jxs[3] + locc = ace.xss[idx:idx + n_energy].astype(int) + n_energy_out = ace.xss[idx + n_energy:idx + 2*n_energy].astype(int) + energy_out = [] + mu_out = [] + for i in range(n_energy): + idx = locc[i] + + # Outgoing energy distribution for incoming energy i + e = ace.xss[idx + 1:idx + 1 + n_energy_out[i]*(n_mu + 3):n_mu + 3] + p = ace.xss[idx + 2:idx + 2 + n_energy_out[i]*(n_mu + 3):n_mu + 3] + c = ace.xss[idx + 3:idx + 3 + n_energy_out[i]*(n_mu + 3):n_mu + 3] + eout_i = Tabular(e, p, 'linear-linear', ignore_negative=True) + eout_i.c = c + + # Outgoing angle distribution for each (incoming, outgoing) energy pair + mu_i = [] + for j in range(n_energy_out[i]): + mu = ace.xss[idx + 4:idx + 4 + n_mu] + p_mu = 1./n_mu*np.ones(n_mu) + mu_ij = Discrete(mu, p_mu) + mu_ij.c = np.cumsum(p_mu) + mu_i.append(mu_ij) + idx += 3 + n_mu + + energy_out.append(eout_i) + mu_out.append(mu_i) + + # Create correlated angle-energy distribution + breakpoints = [n_energy] + interpolation = [2] + energy = inelastic_xs.x + table.inelastic_dist = CorrelatedAngleEnergy( + breakpoints, interpolation, energy, energy_out, mu_out) + + # Incoherent/coherent elastic scattering cross section + idx = ace.jxs[4] + if idx != 0: + n_energy = int(ace.xss[idx]) + energy = ace.xss[idx+1 : idx+1+n_energy] + P = ace.xss[idx+1+n_energy : idx+1+2*n_energy] + + if ace.nxs[5] == 4: + table.elastic_xs = CoherentElastic(energy, P) + else: + table.elastic_xs = Tabulated1D(energy, P) + + # Angular distribution + n_mu = ace.nxs[6] + if n_mu != -1: + idx = ace.jxs[6] + table.elastic_mu_out = ace.xss[idx:idx + n_energy*n_mu] + table.elastic_mu_out.shape = (n_energy, n_mu) + + # Get relevant ZAIDs + pairs = np.fromiter(map(lambda p: p[0], ace.pairs), int) + table.zaids = pairs[np.nonzero(pairs)] + + return table diff --git a/openmc/data/urr.py b/openmc/data/urr.py index 308a459178..b010a6c47c 100644 --- a/openmc/data/urr.py +++ b/openmc/data/urr.py @@ -169,3 +169,42 @@ class ProbabilityTables(object): return cls(energy, table, interpolation, inelastic_flag, absorption_flag, multiply_smooth) + + @classmethod + def from_ace(cls, ace): + """Generate probability tables from an ACE table + + Parameters + ---------- + ace : openmc.data.ace.Table + ACE table to read from + + Returns + ------- + openmc.data.ProbabilityTables + Unresolved resonance region probability tables + + """ + # Check if URR probability tables are present + idx = ace.jxs[23] + if idx == 0: + return None + + N = int(ace.xss[idx]) # Number of incident energies + M = int(ace.xss[idx+1]) # Length of probability table + interpolation = int(ace.xss[idx+2]) + inelastic_flag = int(ace.xss[idx+3]) + absorption_flag = int(ace.xss[idx+4]) + multiply_smooth = (int(ace.xss[idx+5]) == 1) + idx += 6 + + # Get energies at which tables exist + energy = ace.xss[idx : idx+N] + idx += N + + # Get probability tables + table = ace.xss[idx : idx+N*6*M] + table.shape = (N, 6, M) + + return cls(energy, table, interpolation, inelastic_flag, + absorption_flag, multiply_smooth) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 9df9d150dd..179b473301 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -625,7 +625,7 @@ class Library(object): in the report. Defaults to 'all'. nuclides : {'all', 'sum'} The nuclides of the cross-sections to include in the report. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will report the cross sections for all nuclides in the spatial domain. The special string 'sum' will report the cross sections summed over all nuclides. Defaults to 'all'. @@ -758,7 +758,7 @@ class Library(object): xsdata_name : str Name to apply to the "xsdata" entry produced by this method nuclide : str - A nuclide name string (e.g., 'U-235'). Defaults to 'total' to + A nuclide name string (e.g., 'U235'). Defaults to 'total' to obtain a material-wise macroscopic cross section. xs_type: {'macro', 'micro'} Provide the macro or micro cross section in units of cm^-1 or diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 2c0cb21c60..8e6d123f72 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -120,7 +120,7 @@ class MGXS(object): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -494,7 +494,7 @@ class MGXS(object): ------- list of str A list of the string names for each nuclide in the spatial domain - (e.g., ['U-235', 'U-238', 'O-16']) + (e.g., ['U235', 'U238', 'O16']) Raises ------ @@ -522,7 +522,7 @@ class MGXS(object): Parameters ---------- nuclide : str - A nuclide name string (e.g., 'U-235') + A nuclide name string (e.g., 'U235') Returns ------- @@ -557,7 +557,7 @@ class MGXS(object): Parameters ---------- nuclides : Iterable of str or 'all' or 'sum' - A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + A list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will return the atom densities for all nuclides in the spatial domain. The special string 'sum' will return the atom density summed across all nuclides in the spatial domain. Defaults @@ -716,7 +716,7 @@ class MGXS(object): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest. Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' - A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + A list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will return the cross sections for all nuclides in the spatial domain. The special string 'sum' will return the cross section summed over all nuclides. Defaults to 'all'. @@ -954,7 +954,7 @@ class MGXS(object): ---------- nuclides : list of str A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) groups : list of int A list of energy group indices starting at 1 for the high energies (e.g., [1, 2, 3]; default is []) @@ -1111,7 +1111,7 @@ class MGXS(object): Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' The nuclides of the cross-sections to include in the report. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will report the cross sections for all nuclides in the spatial domain. The special string 'sum' will report the cross sections summed over all nuclides. Defaults to 'all'. @@ -1215,7 +1215,7 @@ class MGXS(object): Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' The nuclides of the cross-sections to include in the report. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will report the cross sections for all nuclides in the spatial domain. The special string 'sum' will report the cross sections summed over all nuclides. Defaults to 'all'. @@ -1414,7 +1414,7 @@ class MGXS(object): Energy groups of interest. Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' The nuclides of the cross-sections to include in the dataframe. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will include the cross sections for all nuclides in the spatial domain. The special string 'sum' will include the cross sections summed over all nuclides. Defaults @@ -1603,7 +1603,7 @@ class MatrixMGXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -1652,7 +1652,7 @@ class MatrixMGXS(MGXS): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest. Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' - A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + A list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will return the cross sections for all nuclides in the spatial domain. The special string 'sum' will return the cross section summed over all nuclides. Defaults to @@ -1790,7 +1790,7 @@ class MatrixMGXS(MGXS): ---------- nuclides : list of str A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) in_groups : list of int A list of incoming energy group indices starting at 1 for the high energies (e.g., [1, 2, 3]; default is []) @@ -1840,7 +1840,7 @@ class MatrixMGXS(MGXS): Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' The nuclides of the cross-sections to include in the report. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will report the cross sections for all nuclides in the spatial domain. The special string 'sum' will report the cross sections summed over all nuclides. Defaults to @@ -2024,7 +2024,7 @@ class TotalXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2142,7 +2142,7 @@ class TransportXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2272,7 +2272,7 @@ class NuTransportXS(TransportXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2393,7 +2393,7 @@ class AbsorptionXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2509,7 +2509,7 @@ class CaptureXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2631,7 +2631,7 @@ class FissionXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2742,7 +2742,7 @@ class NuFissionXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2858,7 +2858,7 @@ class KappaFissionXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -2971,7 +2971,7 @@ class ScatterXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -3086,7 +3086,7 @@ class NuScatterXS(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -3220,7 +3220,7 @@ class ScatterMatrixXS(MatrixMGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -3383,7 +3383,7 @@ class ScatterMatrixXS(MatrixMGXS): ---------- nuclides : list of str A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) in_groups : list of int A list of incoming energy group indices starting at 1 for the high energies (e.g., [1, 2, 3]; default is []) @@ -3465,7 +3465,7 @@ class ScatterMatrixXS(MatrixMGXS): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest. Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' - A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + A list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will return the cross sections for all nuclides in the spatial domain. The special string 'sum' will return the cross section summed over all nuclides. Defaults to 'all'. @@ -3612,7 +3612,7 @@ class ScatterMatrixXS(MatrixMGXS): Energy groups of interest. Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' The nuclides of the cross-sections to include in the dataframe. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will include the cross sections for all nuclides in the spatial domain. The special string 'sum' will include the cross sections summed over all nuclides. Defaults @@ -3679,7 +3679,7 @@ class ScatterMatrixXS(MatrixMGXS): Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' The nuclides of the cross-sections to include in the report. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will report the cross sections for all nuclides in the spatial domain. The special string 'sum' will report the cross sections summed over all nuclides. Defaults to 'all'. @@ -3869,7 +3869,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -3991,7 +3991,7 @@ class MultiplicityMatrixXS(MatrixMGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -4138,7 +4138,7 @@ class NuFissionMatrixXS(MatrixMGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -4253,7 +4253,7 @@ class Chi(MGXS): being tracked. This is unity if the by_nuclide attribute is False. nuclides : Iterable of str or 'sum' The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool @@ -4331,7 +4331,7 @@ class Chi(MGXS): ---------- nuclides : list of str A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) groups : list of Integral A list of energy group indices starting at 1 for the high energies (e.g., [1, 2, 3]; default is []) @@ -4442,7 +4442,7 @@ class Chi(MGXS): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest. Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' - A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + A list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will return the cross sections for all nuclides in the spatial domain. The special string 'sum' will return the cross section summed over all nuclides. Defaults to 'all'. @@ -4575,7 +4575,7 @@ class Chi(MGXS): Energy groups of interest. Defaults to 'all'. nuclides : Iterable of str or 'all' or 'sum' The nuclides of the cross-sections to include in the dataframe. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + may be a list of nuclide name strings (e.g., ['U235', 'U238']). The special string 'all' will include the cross sections for all nuclides in the spatial domain. The special string 'sum' will include the cross sections summed over all nuclides. Defaults to diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index 8a572c8748..6f8188b101 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -100,7 +100,7 @@ class XSdata(object): alias : str Separate unique identifier for the xsdata object zaid : int - 1000*(atomic number) + mass number. As an example, the zaid of U-235 + 1000*(atomic number) + mass number. As an example, the zaid of U235 would be 92235. awr : float Atomic weight ratio of an isotope. That is, the ratio of the mass diff --git a/openmc/nuclide.py b/openmc/nuclide.py index bfeff93113..14609161fe 100644 --- a/openmc/nuclide.py +++ b/openmc/nuclide.py @@ -13,18 +13,18 @@ class Nuclide(object): Parameters ---------- name : str - Name of the nuclide, e.g. U-235 + Name of the nuclide, e.g. U235 xs : str Cross section identifier, e.g. 71c Attributes ---------- name : str - Name of the nuclide, e.g. U-235 + Name of the nuclide, e.g. U235 xs : str Cross section identifier, e.g. 71c zaid : int - 1000*(atomic number) + mass number. As an example, the zaid of U-235 + 1000*(atomic number) + mass number. As an example, the zaid of U235 would be 92235. scattering : 'data' or 'iso-in-lab' or None The type of angular scattering distribution to use diff --git a/openmc/tallies.py b/openmc/tallies.py index fab88e2f73..79e7c56bcb 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -520,7 +520,7 @@ class Tally(object): Nuclide to add to the tally. The nuclide should be a Nuclide object when a user is adding nuclides to a Tally for input file generation. The nuclide is a str when a Tally is created from a StatePoint file - (e.g., 'H-1', 'U-235') unless a Summary has been linked with the + (e.g., 'H1', 'U235') unless a Summary has been linked with the StatePoint. The nuclide may be a CrossNuclide or AggregateNuclide for derived tallies created by tally arithmetic. @@ -1166,7 +1166,7 @@ class Tally(object): Parameters ---------- nuclide : str - The name of the Nuclide (e.g., 'H-1', 'U-238') + The name of the Nuclide (e.g., 'H1', 'U238') Returns ------- @@ -1342,7 +1342,7 @@ class Tally(object): ---------- nuclides : list of str A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) Returns ------- @@ -1435,7 +1435,7 @@ class Tally(object): the filter_types parameter. nuclides : list of str A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) value : str A string for the type of value to return - 'mean' (default), 'std_dev', 'rel_err', 'sum', or 'sum_sq' are accepted @@ -2887,7 +2887,7 @@ class Tally(object): correspond to the filter_types parameter. nuclides : list of str A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) Returns ------- @@ -3025,7 +3025,7 @@ class Tally(object): interest. nuclides : list of str A list of nuclide name strings to sum across - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) remove_filter : bool If a filter is being summed over, this bool indicates whether to remove that filter in the returned tally. Default is False. @@ -3173,7 +3173,7 @@ class Tally(object): interest. nuclides : list of str A list of nuclide name strings to average across - (e.g., ['U-235', 'U-238']; default is []) + (e.g., ['U235', 'U238']; default is []) remove_filter : bool If a filter is being averaged over, this bool indicates whether to remove that filter in the returned tally. Default is False. diff --git a/scripts/openmc-ace-to-hdf5 b/scripts/openmc-ace-to-hdf5 new file mode 100755 index 0000000000..743cf4a509 --- /dev/null +++ b/scripts/openmc-ace-to-hdf5 @@ -0,0 +1,139 @@ +#!/usr/bin/env python + +import argparse +import os +import xml.etree.ElementTree as ET +import warnings + +import openmc.data + +description = """ +This script can be used to create HDF5 nuclear data libraries used by +OpenMC. There are four different ways you can specify ACE libraries that are to +be converted: + +1. List each ACE library as a positional argument. This is very useful in + conjunction with the usual shell utilities (ls, find, etc.). +2. Use the --xml option to specify a pre-v0.9 cross_sections.xml file. +3. Use the --xsdir option to specify a MCNP xsdir file. +4. Use the --xsdata option to specify a Serpent xsdata file. + +The script does not use any extra information from cross_sections.xml/ xsdir/ +xsdata files to determine whether the nuclide is metastable. Instead, the +--metastable argument can be used to specify whether the ZAID naming convention +follows the NNDC data convention (1000*Z + A + 300 + 100*m), or the MCNP data +convention (essentially the same as NNDC, except that the first metastable state +of Am242 is 95242 and the ground state is 95642). + +""" + +class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, + argparse.RawDescriptionHelpFormatter): + pass + +parser = argparse.ArgumentParser( + description=description, + formatter_class=CustomFormatter +) +parser.add_argument('libraries', nargs='*', + help='ACE libraries to convert to HDF5') +parser.add_argument('-d', '--destination', default='.', + help='Directory to create new library in') +parser.add_argument('-m', '--metastable', choices=['mcnp', 'nndc'], default='nndc', + help='How to interpret ZAIDs for metastable nuclides') +parser.add_argument('--xml', help='Old-style cross_sections.xml that ' + 'lists ACE libraries') +parser.add_argument('--xsdir', help='MCNP xsdir file that lists ' + 'ACE libraries') +parser.add_argument('--xsdata', help='Serpent xsdata file that lists ' + 'ACE libraries') +args = parser.parse_args() + +if not os.path.isdir(args.destination): + os.mkdir(args.destination) + +# If the --xml argument was given, get the list of ACE libraries directory from +# elements within the specified cross_sections.xml file +ace_libraries = [] +if args.xml is not None: + tree = ET.parse(args.xml) + root = tree.getroot() + if root.find('directory') is not None: + directory = root.find('directory').text + else: + directory = os.path.dirname(args.xml) + + for ace_table in root.findall('ace_table'): + ace_libraries.append(os.path.join(directory, ace_table.attrib['path'])) + +elif args.xsdir is not None: + # Find 'directory' section + lines = open(args.xsdir, 'r').readlines() + for index, line in enumerate(lines): + if line.strip().lower() == 'directory': + break + else: + raise IOError("Could not find 'directory' section in MCNP xsdir file") + + # Create list of ACE libraries + for line in lines[index + 1:]: + words = line.split() + if len(words) < 3: + continue + + path = os.path.join(os.path.dirname(args.xsdir), words[2]) + if path not in ace_libraries: + ace_libraries.append(path) + +elif args.xsdata is not None: + with open(args.xsdata, 'r') as xsdata: + for line in xsdata: + words = line.split() + if len(words) >= 9: + path = os.path.join(os.path.dirname(args.xsdata, words[8])) + if path not in ace_libraries: + ace_libraries.append(path) + +else: + ace_libraries = args.libraries + +library = openmc.data.DataLibrary() + +for filename in ace_libraries: + # Check that ACE library exists + if not os.path.exists(filename): + warnings.warn("ACE library '{}' does not exist.".format(filename)) + continue + + lib = openmc.data.ace.Library(filename) + for table in lib.tables: + if table.name.endswith('c'): + # Continuous-energy neutron data + neutron = openmc.data.IncidentNeutron.from_ace( + table, args.metastable) + print(neutron.name) + + # Determine filename + outfile = os.path.join(args.destination, + neutron.name.replace('.', '_') + '.h5') + neutron.export_to_hdf5(outfile) + + # Register with library + library.register_file(outfile) + + elif table.name.endswith('t'): + # Thermal scattering data + thermal = openmc.data.ThermalScattering.from_ace(table) + print(thermal.name) + + # Determine filename + outfile = os.path.join(args.destination, + thermal.name.replace('.', '_') + '.h5') + thermal.export_to_hdf5(outfile) + + # Register with library + library.register_file(outfile, 'thermal') + +# Write cross_sections.xml +libpath = os.path.join(args.destination, 'cross_sections.xml') +library.export_to_xml(libpath) diff --git a/scripts/openmc-ascii-to-binary b/scripts/openmc-ascii-to-binary deleted file mode 100755 index e707e2a857..0000000000 --- a/scripts/openmc-ascii-to-binary +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env python - -from openmc.ace import ascii_to_binary -import sys - - -if __name__ == '__main__': - # Check for proper number of arguments - if len(sys.argv) < 3: - sys.exit('Usage: {0} ascii_file binary_file'.format(sys.argv[0])) - - # Convert ASCII file - ascii_to_binary(sys.argv[1], sys.argv[2]) diff --git a/scripts/openmc-update-inputs b/scripts/openmc-update-inputs index 2a8097854d..5b5bf0978f 100755 --- a/scripts/openmc-update-inputs +++ b/scripts/openmc-update-inputs @@ -22,11 +22,14 @@ optional arguments: from __future__ import print_function import argparse +from difflib import get_close_matches from itertools import chain from random import randint from shutil import move import xml.etree.ElementTree as ET +import openmc.data +from openmc.data.thermal import _THERMAL_NAMES description = "Update OpenMC's input XML files to the latest format." epilog = """\ @@ -40,6 +43,11 @@ geometry.xml: Lattices containing 'outside' attributes/tags will be replaced with lattices containing 'outer' attributes, and the appropriate cells/universes will be added. Any 'surfaces' attributes/elements on a cell will be renamed 'region'. + +materials.xml: Nuclide names will be changed from ACE aliases (e.g., Am-242m) to + HDF5/GND names (e.g., Am242_m1). Thermal scattering table names will be + changed from ACE aliases (e.g., HH2O) to HDF5/GND names (e.g., c_H_in_H2O). + """ @@ -245,6 +253,62 @@ def update_geometry(geometry_root): return was_updated +def get_thermal_name(name): + """Get proper S(a,b) table name, e.g. 'HH2O' -> 'c_H_in_H2O'""" + if name.lower() in _THERMAL_NAMES: + return _THERMAL_NAMES[name.lower()] + else: + # Make an educated guess?? This actually works well for + # JEFF-3.2 which stupidly uses names like lw00.32t, + # lw01.32t, etc. for different temperatures + matches = get_close_matches( + name.lower(), _THERMAL_NAMES.keys(), cutoff=0.5) + if len(matches) > 0: + return _THERMAL_NAMES[matches[0]] + '.' + xs + else: + # OK, we give up. Just use the ACE name. + return 'c_' + name + return name + +def update_materials(root): + """Update the given XML materials tree. Return True if changes were made.""" + was_updated = False + + for material in root.findall('material'): + for nuclide in material.findall('nuclide'): + if 'name' in nuclide.attrib: + nucname = nuclide.attrib['name'] + nucname = nucname.replace('-', '') + nucname = nucname.replace('Nat', '0') + if nucname.endswith('m'): + nucname = nucname[:-1] + '_m1' + nuclide.set('name', nucname) + was_updated = True + + elif nuclide.find('name') is not None: + name_elem = nuclide.find('name') + nucname = name_elem.text + nucname = nucname.replace('-', '') + nucname = nucname.replace('Nat', '0') + if nucname.endswith('m'): + nucname = nucname[:-1] + '_m1' + name_elem.text = nucname + was_updated = True + + for sab in material.findall('sab'): + if 'name' in sab.attrib: + sabname = sab.attrib['name'] + sab.set('name', get_thermal_name(sabname)) + was_updated = True + + elif sab.find('name') is not None: + name_elem = sab.find('name') + sabname = name_elem.text + name_elem.text = get_thermal(sabname) + was_updated = True + + return was_updated + if __name__ == '__main__': args = parse_args() @@ -256,6 +320,8 @@ if __name__ == '__main__': if root.tag == 'geometry': was_updated = update_geometry(root) + elif root.tag == 'materials': + was_updated = update_materials(root) if was_updated: # Move the original geometry file to preserve it. diff --git a/scripts/openmc-xsdata-to-xml b/scripts/openmc-xsdata-to-xml deleted file mode 100755 index 708a196f97..0000000000 --- a/scripts/openmc-xsdata-to-xml +++ /dev/null @@ -1,148 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -from xml.dom.minidom import getDOMImplementation - -types = {1: "neutron", 2: "dosimetry", 3: "thermal"} - - -class Xsdata(object): - - def __init__(self, filename): - self._table_dict = {} - self.tables = [] - - for line in open(filename, 'r'): - words = line.split() - - # If this listing is just an alias listing, only assign the alias - # attribute - name = words[1] - alias = words[0] - table = self.find_table(name) - if table: - if name not in table.alias: - table.alias.append(alias) - continue - - table = XsdataTable() - table.name = name - table.type = types[int(words[2])] - table.zaid = int(words[3]) - table.metastable = int(words[4]) - table.awr = float(words[5]) - table.temperature = 8.6173423e-11 * float(words[6]) - table.binary = int(words[7]) - table.path = words[8] - - self.tables.append(table) - self._table_dict[name] = table - - # Check for common directory - self.directory = os.path.dirname(self.tables[0].path) - for table in self.tables: - if not table.path.startswith(self.directory): - self.directory = None - break - - def to_xml(self): - # Create XML document - impl = getDOMImplementation() - doc = impl.createDocument(None, "cross_sections", None) - - # Get root element - root = doc.documentElement - - # Add a directory node - if self.directory: - directoryNode = doc.createElement("directory") - text = doc.createTextNode(self.directory) - directoryNode.appendChild(text) - root.appendChild(directoryNode) - - for table in self.tables: - table.path = os.path.basename(table.path) - - # Add a node for each table - for table in self.tables: - node = table.to_xml_node(doc) - root.appendChild(node) - - return doc - - def find_table(self, name): - if name in self._table_dict: - return self._table_dict[name] - else: - return None - - -class XsdataTable(object): - - def __init__(self): - self.alias = [] - - def to_xml_node(self, doc): - node = doc.createElement("ace_table") - node.setAttribute("name", self.name) - for attribute in ["alias", "zaid", "type", "metastable", - "awr", "temperature", "binary", "path"]: - if hasattr(self, attribute): - # Join string for alias attribute - if attribute == "alias": - if not self.alias: - continue - string = " ".join(self.alias) - else: - string = "{0}".format(getattr(self, attribute)) - - # Skip metastable and binary if 0 - if attribute == "metastable" and self.metastable == 0: - continue - if attribute == "binary" and self.binary == 0: - continue - - # Create attribute node - # nodeAttr = doc.createElement(attribute) - # text = doc.createTextNode(string) - # nodeAttr.appendChild(text) - # node.appendChild(nodeAttr) - node.setAttribute(attribute, string) - return node - - -if __name__ == '__main__': - # Read command line arguments - if len(sys.argv) < 3: - sys.exit("Usage: convert_xsdata.py xsdataFile xmlFile") - xsdataFile = sys.argv[1] - xmlFile = sys.argv[2] - - # Read xsdata and create XML document object - xsdataObject = Xsdata(xsdataFile) - doc = xsdataObject.to_xml() - - # Reduce number of lines - lines = doc.toprettyxml(indent=' ') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - lines = lines.replace('\n ', '') - - # Write document in pretty XML to specified file - f = open(xmlFile, 'w') - f.write(lines) - f.close() diff --git a/scripts/openmc-xsdir-to-xml b/scripts/openmc-xsdir-to-xml deleted file mode 100755 index 7e1606fc4c..0000000000 --- a/scripts/openmc-xsdir-to-xml +++ /dev/null @@ -1,288 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -from xml.dom.minidom import getDOMImplementation - -elements = [None, "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", - "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", - "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", - "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", - "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", - "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", - "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", - "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", - "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", - "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", - "Cn"] - - -class Xsdir(object): - - def __init__(self, filename): - self.f = open(filename, 'r') - self.filename = os.path.abspath(filename) - self.directory = os.path.dirname(filename) - self.awr = {} - self.tables = [] - - self.filetype = set() - self.recordlength = set() - self.entries = set() - - # Read first section (DATAPATH) - line = self.f.readline() - words = line.split() - if words: - if words[0].lower().startswith('datapath'): - if '=' in words[0]: - index = line.index('=') - self.datapath = line[index+1:].strip() - else: - if len(line.strip()) > 8: - self.datapath = line[8:].strip() - else: - self.f.seek(0) - - # Read second section - line = self.f.readline() - words = line.split() - assert len(words) == 3 - assert words[0].lower() == 'atomic' - assert words[1].lower() == 'weight' - assert words[2].lower() == 'ratios' - - while True: - line = self.f.readline() - words = line.split() - - # Check for end of second section - if len(words) % 2 != 0 or words[0] == 'directory': - break - - for zaid, awr in zip(words[::2], words[1::2]): - self.awr[zaid] = awr - - # Read third section - while words[0] != 'directory': - words = self.f.readline().split() - - while True: - words = self.f.readline().split() - if not words: - break - - # Handle continuation lines - while words[-1] == '+': - extraWords = self.f.readline().split() - words = words[:-1] + extraWords - assert len(words) >= 7 - - # Create XsdirTable object and add to line - table = XsdirTable(self.directory) - self.tables.append(table) - - # All tables have at least 7 attributes - table.name = words[0] - table.awr = float(words[1]) - table.filename = words[2] - table.access = words[3] - table.filetype = int(words[4]) - table.location = int(words[5]) - table.length = int(words[6]) - - self.filetype.add(table.filetype) - - if len(words) > 7: - table.recordlength = int(words[7]) - self.recordlength.add(table.recordlength) - if len(words) > 8: - table.entries = int(words[8]) - self.entries.add(table.entries) - if len(words) > 9: - table.temperature = float(words[9]) - if len(words) > 10: - table.ptable = (words[10] == 'ptable') - - if len(self.filetype) == 1: - if 1 in self.filetype: - self.filetype = 'ascii' - elif 2 in self.filetype: - self.filetype = 'binary' - else: - self.filetype = None - - if len(self.recordlength) == 1: - self.recordlength = list(self.recordlength)[0] - else: - self.recordlength = None - if len(self.entries) == 1: - self.entries = list(self.entries)[0] - else: - self.recordlength = None - - def to_xml(self): - # Create XML document - impl = getDOMImplementation() - doc = impl.createDocument(None, "cross_sections", None) - - # Get root element - root = doc.documentElement - - # Add a directory node - if self.directory: - directoryNode = doc.createElement("directory") - text = doc.createTextNode(self.directory) - directoryNode.appendChild(text) - root.appendChild(directoryNode) - - for table in self.tables: - table.path = os.path.basename(table.path) - - # Add filetype, record_length and entries nodes - if self.filetype: - node = doc.createElement("filetype") - text = doc.createTextNode(self.filetype) - node.appendChild(text) - root.appendChild(node) - if self.recordlength: - node = doc.createElement("record_length") - text = doc.createTextNode(str(self.recordlength)) - node.appendChild(text) - root.appendChild(node) - if self.entries: - node = doc.createElement("entries") - text = doc.createTextNode(str(self.entries)) - node.appendChild(text) - root.appendChild(node) - - # Add a node for each table - for table in self.tables: - if table.name[-1] in ['e', 'p', 'u', 'h', 'g', 'm', 'd']: - continue - node = table.to_xml_node(doc) - root.appendChild(node) - - return doc - - -class XsdirTable(object): - - def __init__(self, directory=None): - self.directory = None - self.name = None - self.awr = None - self.filename = None - self.access = None - self.filetype = None - self.location = None - self.length = None - self.recordlength = None - self.entries = None - self.temperature = None - self.ptable = False - - @property - def path(self): - if self.directory: - return os.path.join(self.directory, self.filename) - else: - return self.filename - - @path.setter - def path(self, value): - self.diretory = '' - self.filename = value - - @property - def metastable(self): - # Only valid for neutron cross-sections - if not self.name.endswith('c'): - return - - # Handle special case of Am-242 and Am-242m - if self.zaid == '95242': - return 1 - elif self.zaid == '95642': - return 0 - - # All other cases - A = int(self.zaid) % 1000 - if A > 300: - return 1 - else: - return 0 - - @property - def alias(self): - zaid = self.zaid - if zaid: - Z = int(zaid[:-3]) - A = zaid[-3:] - - if A == '000': - s = 'Nat' - elif zaid == '95242': - s = '242m' - elif zaid == '95642': - s = '242' - elif int(A) > 300: - s = str(int(A) - 400) + "m" - else: - s = str(int(A)) - - return "{0}-{1}.{2}".format(elements[Z], s, self.xs) - else: - return None - - @property - def zaid(self): - if self.name.endswith('c'): - return self.name[:self.name.find('.')] - else: - return 0 - - @property - def xs(self): - return self.name[self.name.find('.')+1:] - - def to_xml_node(self, doc): - node = doc.createElement("ace_table") - node.setAttribute("name", self.name) - for attribute in ["alias", "zaid", "type", "metastable", "awr", - "temperature", "path", "location"]: - if hasattr(self, attribute): - string = str(getattr(self, attribute)) - - # Skip metastable and binary if 0 - if attribute == "metastable" and self.metastable == 0: - continue - - # Skip any attribute that is none - if getattr(self, attribute) is None: - continue - - # Create attribute node - node.setAttribute(attribute, string) - - return node - - -if __name__ == '__main__': - # Read command line arguments - if len(sys.argv) < 3: - sys.exit("Usage: convert_xsdir.py xsdirFile xmlFile") - xsdirFile = sys.argv[1] - xmlFile = sys.argv[2] - - # Read xsdata and create XML document object - xsdirObject = Xsdir(xsdirFile) - doc = xsdirObject.to_xml() - - # Reduce number of lines - lines = doc.toprettyxml(indent=' ') - - # Write document in pretty XML to specified file - f = open(xmlFile, 'w') - f.write(lines) - f.close() diff --git a/src/reaction_header.F90 b/src/reaction_header.F90 index 8af75b3cf2..74198dd78b 100644 --- a/src/reaction_header.F90 +++ b/src/reaction_header.F90 @@ -38,7 +38,7 @@ contains integer(HSIZE_T) :: dims(1) call read_attribute(this % Q_value, group_id, 'Q_value') - call read_attribute(this % MT, group_id, 'MT') + call read_attribute(this % MT, group_id, 'mt') call read_attribute(this % threshold, group_id, 'threshold_idx') call read_attribute(cm, group_id, 'center_of_mass') this % scatter_in_cm = (cm == 1) diff --git a/src/relaxng/cross_sections.rnc b/src/relaxng/cross_sections.rnc index 75c0ea29c2..7fbc610a28 100644 --- a/src/relaxng/cross_sections.rnc +++ b/src/relaxng/cross_sections.rnc @@ -1,25 +1,12 @@ element cross_sections { - element ace_table { - (element name { xsd:string { maxLength = "15" } } | - attribute name { xsd:string { maxLength = "15" } }) & - (element alias { xsd:string { maxLength = "15" } } | - attribute alias { xsd:string { maxLength = "15" } })? & - (element zaid { xsd:int } | attribute zaid { xsd:int }) & - (element metastable { xsd:int } | attribute metastable { xsd:int })? & - (element awr { xsd:double } | attribute awr { xsd:double }) & - (element temperature { xsd:double } | attribute temperature { xsd:double }) & - (element path { xsd:string { maxLength = "255" } } | - attribute path { xsd:string { maxLength = "255" } }) & - (element location { xsd:int } | attribute location { xsd:int })? & - (element filetype { ( "ascii" | "binary" ) } | - attribute filetype { ( "ascii" | "binary" ) })? + element library { + (element materials { xsd:string } | + attribute materials { xsd:string }) & + (element type { xsd:string } | + attribute type { xsd:string }) & + (element path { xsd:string } | + attribute path { xsd:string }) }* & - element directory { xsd:string { maxLength = "255" } }? & - - element filetype { ( "ascii" | "binary" ) } & - - element record_length { xsd:int }? & - - element entries { xsd:int }? + element directory { xsd:string { maxLength = "255" } }? } \ No newline at end of file diff --git a/src/relaxng/cross_sections.rng b/src/relaxng/cross_sections.rng index 5e531e0132..435f7fa843 100644 --- a/src/relaxng/cross_sections.rng +++ b/src/relaxng/cross_sections.rng @@ -2,106 +2,32 @@ - + - - - 15 - + + - - - 15 - - - - - - - - 15 - - - - - 15 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - + + - - 255 - + - - 255 - + - - - - - - - - - - - - - - - ascii - binary - - - - - ascii - binary - - - - @@ -112,21 +38,5 @@ - - - ascii - binary - - - - - - - - - - - - From 436f88170dc1290a2e83ce0d47f5123629b4c292 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 13 Jul 2016 08:24:47 -0500 Subject: [PATCH 54/82] Use shared box.com link for NNDC HDF5 data in Travis runs --- .travis.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 46f5e91bf2..86a2fbb4cf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ cache: - $HOME/mpich_install - $HOME/hdf5_install - $HOME/phdf5_install + - $HOME/nndc_hdf5 before_install: # ============== Handle Python third-party packages ============== @@ -40,11 +41,12 @@ before_install: install: true before_script: + - if [[ ! -e $HOME/nndc_hdf5/cross_sections.xml ]]; then + wget https://anl.box.com/shared/static/b3373ozjaiarcndy1ikotm4yuawxomwa.xz -O - | tar -C $HOME -xvJ; + fi + - export OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml + - cd data - - git clone --branch=master git://github.com/paulromano/nndc-hdf5 - - cat nndc-hdf5/nndc_hdf5.tar.xz? | tar xJvf - - - rm -rf nndc-hdf5 - - export OPENMC_CROSS_SECTIONS=$PWD/nndc_hdf5/cross_sections.xml - git clone --branch=master git://github.com/smharper/windowed_multipole_library.git wmp_lib - tar xzvf wmp_lib/multipole_lib.tar.gz - export OPENMC_MULTIPOLE_LIBRARY=$PWD/multipole_lib From ef7eb3cc6495e170d63ba77c53c7705054daf104 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 8 Jun 2016 10:18:34 -0500 Subject: [PATCH 55/82] Add example notebook for nuclear data --- .../pythonapi/examples/nuclear-data.ipynb | 630 ++++++++++++++++++ .../pythonapi/examples/nuclear-data.rst | 13 + docs/source/pythonapi/index.rst | 1 + 3 files changed, 644 insertions(+) create mode 100644 docs/source/pythonapi/examples/nuclear-data.ipynb create mode 100644 docs/source/pythonapi/examples/nuclear-data.rst diff --git a/docs/source/pythonapi/examples/nuclear-data.ipynb b/docs/source/pythonapi/examples/nuclear-data.ipynb new file mode 100644 index 0000000000..78a71cd290 --- /dev/null +++ b/docs/source/pythonapi/examples/nuclear-data.ipynb @@ -0,0 +1,630 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook, we will go through the salient features of the `openmc.data` package in the Python API. This package enables inspection, analysis, and conversion of nuclear data from ACE files. Most importantly, the package provides a mean to generate HDF5 nuclear data libraries that are used by the transport solver." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import os\n", + "from pprint import pprint\n", + "\n", + "import h5py\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm\n", + "from matplotlib.patches import Rectangle\n", + "\n", + "import openmc.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first thing we want to do is to read an ACE file into memory and instantiate a `IncidentNeutron` object. The easiest way to do this is with the `openmc.data.IncidentNeutron.from_ace(...)` factory method." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get filename for Gd-157\n", + "filename ='/opt/data/ace/nndc/293.6K/Gd_157_293.6K.ace'\n", + "\n", + "# Load ACE table into object\n", + "gd157 = openmc.data.IncidentNeutron.from_ace(filename)\n", + "gd157" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have our ACE table, we can look at its contents. Let's start off by plotting the total cross section." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "total = gd157.summed_reactions[1]\n", + "plt.loglog(total.xs.x, total.xs.y)\n", + "plt.xlabel('Energy (MeV)')\n", + "plt.ylabel('Cross section (b)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reaction Data\n", + "\n", + "Most of the interesting data for an `IncidentNeutron` instance is contained within the `reactions` attribute, which is a dictionary mapping MT values to `Reaction` objects." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]\n" + ] + } + ], + "source": [ + "pprint(list(gd157.reactions.values())[:10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's suppose we want to look more closely at the (n,2n) reaction." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Threshold = 6.400881 MeV\n" + ] + }, + { + "data": { + "image/png": "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\n9zC0aV7vrgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n2n = gd157.reactions[16]\n", + "plt.plot(n2n.xs.x, n2n.xs.y)\n", + "plt.xlabel('Energy (MeV)')\n", + "plt.ylabel('Cross section (b)')\n", + "plt.xlim((n2n.xs.x[0], n2n.xs.x[-1]))\n", + "print('Threshold = {} MeV'.format(n2n.threshold))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get information on the energy and angle distribution of the neutrons emitted in the reaction, we need to look at the `products` attribute." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n2n.products" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "neutron = n2n.products[0]\n", + "neutron.distribution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that the neutrons emitted have a correlated angle-energy distribution. Let's look at the `energy_out` attribute to see what the outgoing energy distributions are." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dist = neutron.distribution[0]\n", + "dist.energy_out" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we see we have a tabulated outgoing energy distribution for each incoming energy. Note that the same probability distribution classes that we could use to create a source definition are also used within the `openmc.data` package. Let's plot every fifth distribution to get an idea of what they look like." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nMAzDMAyv/B9ZBCMoWOfF0wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for e_in, e_out_dist in zip(dist.energy[::5], dist.energy_out[::5]):\n", + " plt.semilogy(e_out_dist.x, e_out_dist.p, label='E={:.2f} MeV'.format(e_in))\n", + "plt.ylim(ymax=10)\n", + "plt.legend()\n", + "plt.xlabel('Outgoing energy (MeV)')\n", + "plt.ylabel('Probability/MeV')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Unresolved resonance probability tables\n", + "\n", + "We can also look at unresolved resonance probability tables which are stored in a `ProbabilityTables` object. In the following example, we'll create a plot showing what the total cross section probability tables look like as a function of incoming energy." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "cm = matplotlib.cm.Spectral_r\n", + "\n", + "# Determine size of probability tables\n", + "urr = gd157.urr\n", + "n_energy = urr.table.shape[0]\n", + "n_band = urr.table.shape[2]\n", + "\n", + "for i in range(n_energy):\n", + " # Get bounds on energy\n", + " if i > 0:\n", + " e_left = urr.energy[i] - 0.5*(urr.energy[i] - urr.energy[i-1])\n", + " else:\n", + " e_left = urr.energy[i] - 0.5*(urr.energy[i+1] - urr.energy[i])\n", + "\n", + " if i < n_energy - 1:\n", + " e_right = urr.energy[i] + 0.5*(urr.energy[i+1] - urr.energy[i])\n", + " else:\n", + " e_right = urr.energy[i] + 0.5*(urr.energy[i] - urr.energy[i-1])\n", + " \n", + " for j in range(n_band):\n", + " # Determine maximum probability for a single band\n", + " max_prob = np.diff(urr.table[i,0,:]).max()\n", + " \n", + " # Determine bottom of band\n", + " if j > 0:\n", + " xs_bottom = urr.table[i,1,j] - 0.5*(urr.table[i,1,j] - urr.table[i,1,j-1])\n", + " value = (urr.table[i,0,j] - urr.table[i,0,j-1])/max_prob\n", + " else:\n", + " xs_bottom = urr.table[i,1,j] - 0.5*(urr.table[i,1,j+1] - urr.table[i,1,j])\n", + " value = urr.table[i,0,j]/max_prob\n", + "\n", + " # Determine top of band\n", + " if j < n_band - 1:\n", + " xs_top = urr.table[i,1,j] + 0.5*(urr.table[i,1,j+1] - urr.table[i,1,j])\n", + " else:\n", + " xs_top = urr.table[i,1,j] + 0.5*(urr.table[i,1,j] - urr.table[i,1,j-1])\n", + " \n", + " # Draw rectangle with appropriate color\n", + " ax.add_patch(Rectangle((e_left, xs_bottom), e_right - e_left, xs_top - xs_bottom,\n", + " color=cm(value)))\n", + "\n", + "# Overlay total cross section\n", + "ax.plot(total.xs.x, total.xs.y, 'k')\n", + "\n", + "# Make plot pretty and labeled\n", + "ax.set_xlim(1e-6, 1e-1)\n", + "ax.set_ylim(1e-1, 1e4)\n", + "ax.set_xscale('log')\n", + "ax.set_yscale('log')\n", + "ax.set_xlabel('Energy (MeV)')\n", + "ax.set_ylabel('Cross section(b)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exporting to HDF5\n", + "\n", + "To create an HDF5 nuclear data file for a nuclide, we can use the `export_to_hdf5()` method." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "gd157.export_to_hdf5('gd157.h5', 'w')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's see what's in the HDF5 file." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['Gd157.71c']" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h5file = h5py.File('gd157.h5', 'r')\n", + "list(h5file)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While the groups containing reaction data are only labeled sequentially, we can look at the group attributes to figure out what they actually are." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reaction_0, MT=2 (n,elastic)\n", + "reaction_1, MT=16 (n,2n)\n", + "reaction_10, MT=54 (n,n4)\n", + "reaction_11, MT=55 (n,n5)\n", + "reaction_12, MT=56 (n,n6)\n", + "reaction_13, MT=57 (n,n7)\n", + "reaction_14, MT=58 (n,n8)\n", + "reaction_15, MT=59 (n,n9)\n", + "reaction_16, MT=60 (n,n10)\n" + ] + } + ], + "source": [ + "main_group = h5file['Gd157.71c']\n", + "for name, obj in list(main_group.items())[:10]:\n", + " if 'mt' in obj.attrs:\n", + " print('{}, MT={} {}'.format(name, obj.attrs['mt'],\n", + " obj.attrs['label'].decode()))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[,\n", + " ,\n", + " ]\n" + ] + } + ], + "source": [ + "n2n_group = main_group['reaction_1']\n", + "pprint(list(n2n_group.values()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So we see that the hierarchy of data within the HDF5 mirrors the hierarchy of Python objects that we manipulated before." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.00000000e+00, 3.02679600e-13, 1.29110100e-02,\n", + " 6.51111000e-02, 3.92627000e-01, 5.75226800e-01,\n", + " 6.96960000e-01, 7.39937800e-01, 9.63545000e-01,\n", + " 1.14213000e+00, 1.30802000e+00, 1.46350000e+00,\n", + " 1.55760000e+00, 1.64055000e+00, 1.68896000e+00,\n", + " 1.71140000e+00, 1.73945000e+00, 1.78207000e+00,\n", + " 1.81665000e+00, 1.84528000e+00, 1.86540900e+00,\n", + " 1.86724000e+00, 1.88155800e+00, 1.88156000e+00,\n", + " 1.88180000e+00, 1.89447000e+00, 1.86957000e+00,\n", + " 1.82120000e+00, 1.71600000e+00, 1.60054000e+00,\n", + " 1.43162000e+00, 1.28346000e+00, 1.10166000e+00,\n", + " 1.06530000e+00, 9.30730000e-01, 8.02980000e-01,\n", + " 7.77740000e-01])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n2n_group['xs'].value" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we can go the other direction, converting data from an HDF5 file into a `NeutronTable` object:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gd157_reconstructed = openmc.data.IncidentNeutron.from_hdf5(main_group)\n", + "gd157.reactions[16].xs.y - gd157_reconstructed.reactions[16].xs.y" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/source/pythonapi/examples/nuclear-data.rst b/docs/source/pythonapi/examples/nuclear-data.rst new file mode 100644 index 0000000000..aa048eeb3a --- /dev/null +++ b/docs/source/pythonapi/examples/nuclear-data.rst @@ -0,0 +1,13 @@ +.. _notebook_nuclear_data: + +============ +Nuclear Data +============ + +.. only:: html + + .. notebook:: nuclear-data.ipynb + +.. only:: latex + + IPython notebooks must be viewed in the online HTML documentation. diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index 854c2bc4c1..36f161b3c3 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -27,6 +27,7 @@ Example Jupyter Notebooks examples/mgxs-part-ii examples/mgxs-part-iii examples/mgxs-part-iv + examples/nuclear-data ------------------------------------ :mod:`openmc` -- Basic Functionality From 495556a2f5ae9a2c13372322c41bbfc4bfb048f7 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 15 Jul 2016 08:21:57 -0500 Subject: [PATCH 56/82] Cleanup openmc.data based on pylint --- openmc/data/ace.py | 65 +++++++++++++----------------- openmc/data/angle_distribution.py | 6 +-- openmc/data/angle_energy.py | 2 - openmc/data/container.py | 6 +-- openmc/data/correlated.py | 15 ++++--- openmc/data/data.py | 12 +++--- openmc/data/energy_distribution.py | 21 +++++++--- openmc/data/kalbach_mann.py | 9 +++-- openmc/data/library.py | 2 +- openmc/data/neutron.py | 22 ++++------ openmc/data/reaction.py | 6 +-- openmc/data/thermal.py | 11 +++-- openmc/data/urr.py | 6 +-- 13 files changed, 89 insertions(+), 94 deletions(-) diff --git a/openmc/data/ace.py b/openmc/data/ace.py index 2a39e208a2..1a56c165ef 100644 --- a/openmc/data/ace.py +++ b/openmc/data/ace.py @@ -20,7 +20,6 @@ import io from os import SEEK_CUR import struct import sys -from warnings import warn import numpy as np @@ -170,7 +169,7 @@ class Library(object): sb = b''.join([fh.readline() for i in range(10)]) # Try to decode it with ascii - sd = sb.decode('ascii') + sb.decode('ascii') # No exception so proceed with ASCII - reopen in non-binary fh.close() @@ -182,13 +181,13 @@ class Library(object): fh = open(filename, 'rb') self._read_binary(fh, table_names, verbose) - def _read_binary(self, fh, table_names, verbose=False, + def _read_binary(self, ace_file, table_names, verbose=False, recl_length=4096, entries=512): """Read a binary (Type 2) ACE table. Parameters ---------- - fh : file + ace_file : file Open ACE file table_names : None, str, or iterable Tables from the file to read in. If None, reads in all of the @@ -204,25 +203,25 @@ class Library(object): """ while True: - start_position = fh.tell() + start_position = ace_file.tell() # Check for end-of-file - if len(fh.read(1)) == 0: + if len(ace_file.read(1)) == 0: return - fh.seek(start_position) + ace_file.seek(start_position) # Read name, atomic mass ratio, temperature, date, comment, and # material name, atomic_weight_ratio, temperature, date, comment, mat = \ - struct.unpack(str('=10sdd10s70s10s'), fh.read(116)) + struct.unpack(str('=10sdd10s70s10s'), ace_file.read(116)) name = name.decode().strip() # Read ZAID/awr combinations - data = struct.unpack(str('=' + 16*'id'), fh.read(192)) + data = struct.unpack(str('=' + 16*'id'), ace_file.read(192)) pairs = list(zip(data[::2], data[1::2])) # Read NXS - nxs = list(struct.unpack(str('=16i'), fh.read(64))) + nxs = list(struct.unpack(str('=16i'), ace_file.read(64))) # Determine length of XSS and number of records length = nxs[0] @@ -230,20 +229,20 @@ class Library(object): # verify that we are supposed to read this table in if (table_names is not None) and (name not in table_names): - fh.seek(start_position + recl_length*(n_records + 1)) + ace_file.seek(start_position + recl_length*(n_records + 1)) continue if verbose: - temperature_in_K = round(temperature * 1e6 / 8.617342e-5) - print("Loading nuclide {0} at {1} K".format(name, temperature_in_K)) + kelvin = round(temperature * 1e6 / 8.617342e-5) + print("Loading nuclide {0} at {1} K".format(name, kelvin)) # Read JXS - jxs = list(struct.unpack(str('=32i'), fh.read(128))) + jxs = list(struct.unpack(str('=32i'), ace_file.read(128))) # Read XSS - fh.seek(start_position + recl_length) + ace_file.seek(start_position + recl_length) xss = list(struct.unpack(str('={0}d'.format(length)), - fh.read(length*8))) + ace_file.read(length*8))) # Insert zeros at beginning of NXS, JXS, and XSS arrays so that the # indexing will be the same as Fortran. This makes it easier to @@ -263,14 +262,14 @@ class Library(object): self.tables.append(table) # Advance to next record - fh.seek(start_position + recl_length*(n_records + 1)) + ace_file.seek(start_position + recl_length*(n_records + 1)) - def _read_ascii(self, fh, table_names, verbose=False): + def _read_ascii(self, ace_file, table_names, verbose=False): """Read an ASCII (Type 1) ACE table. Parameters ---------- - fh : file + ace_file : file Open ACE file table_names : None, str, or iterable Tables from the file to read in. If None, reads in all of the @@ -282,26 +281,23 @@ class Library(object): tables_seen = set() - lines = [fh.readline() for i in range(13)] + lines = [ace_file.readline() for i in range(13)] - while (0 != len(lines)) and (lines[0] != ''): + while len(lines) != 0 and lines[0] != '': # Read name of table, atomic mass ratio, and temperature. If first # line is empty, we are at end of file # check if it's a 2.0 style header if lines[0].split()[0][1] == '.': words = lines[0].split() - version = words[0] name = words[1] - if len(words) == 3: - source = words[2] words = lines[1].split() atomic_weight_ratio = float(words[0]) temperature = float(words[1]) commentlines = int(words[3]) for i in range(commentlines): lines.pop(0) - lines.append(fh.readline()) + lines.append(ace_file.readline()) else: words = lines[0].split() name = words[0] @@ -325,24 +321,21 @@ class Library(object): # verify that we are suppossed to read this table in if (table_names is not None) and (name not in table_names): - fh.seek(n_bytes, SEEK_CUR) - fh.readline() - lines = [fh.readline() for i in range(13)] + ace_file.seek(n_bytes, SEEK_CUR) + ace_file.readline() + lines = [ace_file.readline() for i in range(13)] continue # read and fix over-shoot - lines += fh.readlines(n_bytes) + lines += ace_file.readlines(n_bytes) if 12 + n_lines < len(lines): goback = sum([len(line) for line in lines[12+n_lines:]]) lines = lines[:12+n_lines] - fh.seek(-goback, SEEK_CUR) + ace_file.seek(-goback, SEEK_CUR) if verbose: - temperature_in_K = round(temperature * 1e6 / 8.617342e-5) - print("Loading nuclide {0} at {1} K".format(name, temperature_in_K)) - - # Read comment - comment = lines[1].strip() + kelvin = round(temperature * 1e6 / 8.617342e-5) + print("Loading nuclide {0} at {1} K".format(name, kelvin)) # Insert zeros at beginning of NXS, JXS, and XSS arrays so that the # indexing will be the same as Fortran. This makes it easier to @@ -358,7 +351,7 @@ class Library(object): self.tables.append(table) # Read all data blocks - lines = [fh.readline() for i in range(13)] + lines = [ace_file.readline() for i in range(13)] class Table(object): diff --git a/openmc/data/angle_distribution.py b/openmc/data/angle_distribution.py index 3f086a99cc..709be84962 100644 --- a/openmc/data/angle_distribution.py +++ b/openmc/data/angle_distribution.py @@ -5,7 +5,7 @@ import numpy as np import openmc.checkvalue as cv from openmc.stats import Univariate, Tabular, Uniform -from .container import interpolation_scheme +from .container import INTERPOLATION_SCHEME class AngleDistribution(object): @@ -125,7 +125,7 @@ class AngleDistribution(object): else: n = data.shape[1] - j - interp = interpolation_scheme[interpolation[i]] + interp = INTERPOLATION_SCHEME[interpolation[i]] mu_i = Tabular(data[0, j:j+n], data[1, j:j+n], interp) mu_i.c = data[2, j:j+n] @@ -189,7 +189,7 @@ class AngleDistribution(object): data = ace.xss[idx + 2:idx + 2 + 3*n_points] data.shape = (3, n_points) - mu_i = Tabular(data[0], data[1], interpolation_scheme[intt]) + mu_i = Tabular(data[0], data[1], INTERPOLATION_SCHEME[intt]) mu_i.c = data[2] else: # Isotropic angular distribution diff --git a/openmc/data/angle_energy.py b/openmc/data/angle_energy.py index ff9f41a441..c20c5f0ff9 100644 --- a/openmc/data/angle_energy.py +++ b/openmc/data/angle_energy.py @@ -1,7 +1,5 @@ from abc import ABCMeta, abstractmethod -import numpy as np - import openmc.data diff --git a/openmc/data/container.py b/openmc/data/container.py index b2b323ddd0..d9902794cf 100644 --- a/openmc/data/container.py +++ b/openmc/data/container.py @@ -5,7 +5,7 @@ import numpy as np import openmc.checkvalue as cv -interpolation_scheme = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', +INTERPOLATION_SCHEME = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', 4: 'log-linear', 5: 'log-log'} @@ -262,8 +262,8 @@ class Tabulated1D(object): Function read from dataset """ - x = dataset.value[0,:] - y = dataset.value[1,:] + x = dataset.value[0, :] + y = dataset.value[1, :] breakpoints = dataset.attrs['breakpoints'] interpolation = dataset.attrs['interpolation'] return cls(x, y, breakpoints, interpolation) diff --git a/openmc/data/correlated.py b/openmc/data/correlated.py index f82a28b75a..c93a0d706d 100644 --- a/openmc/data/correlated.py +++ b/openmc/data/correlated.py @@ -1,11 +1,12 @@ from collections import Iterable from numbers import Real, Integral +from warnings import warn import numpy as np import openmc.checkvalue as cv -from openmc.stats import Tabular, Univariate, Discrete, Mixture -from .container import interpolation_scheme +from openmc.stats import Tabular, Univariate, Discrete, Mixture, Uniform +from .container import INTERPOLATION_SCHEME from .angle_energy import AngleEnergy @@ -237,7 +238,7 @@ class CorrelatedAngleEnergy(AngleEnergy): # Create continuous distribution if m < n: - interp = interpolation_scheme[interpolation[i]] + interp = INTERPOLATION_SCHEME[interpolation[i]] x = dset_eout[0, offset_e+m:offset_e+n] p = dset_eout[1, offset_e+m:offset_e+n] @@ -275,7 +276,7 @@ class CorrelatedAngleEnergy(AngleEnergy): if interp_code == 0: mu_ij = Discrete(x, p) else: - mu_ij = Tabular(x, p, interpolation_scheme[interp_code], + mu_ij = Tabular(x, p, INTERPOLATION_SCHEME[interp_code], ignore_negative=True) mu_ij.c = c mu_i.append(mu_ij) @@ -285,8 +286,6 @@ class CorrelatedAngleEnergy(AngleEnergy): energy_out.append(eout_i) mu.append(mu_i) - j += n - return cls(energy_breakpoints, energy_interpolation, energy, energy_out, mu) @@ -357,7 +356,7 @@ class CorrelatedAngleEnergy(AngleEnergy): # Create continuous distribution eout_continuous = Tabular(data[0][n_discrete_lines:], data[1][n_discrete_lines:], - interpolation_scheme[intt], + INTERPOLATION_SCHEME[intt], ignore_negative=True) eout_continuous.c = data[2][n_discrete_lines:] @@ -390,7 +389,7 @@ class CorrelatedAngleEnergy(AngleEnergy): data = ace.xss[idx + 2:idx + 2 + 3*n_cosine] data.shape = (3, n_cosine) - mu_ij = Tabular(data[0], data[1], interpolation_scheme[intt]) + mu_ij = Tabular(data[0], data[1], INTERPOLATION_SCHEME[intt]) mu_ij.c = data[2] else: # Isotropic distribution diff --git a/openmc/data/data.py b/openmc/data/data.py index e5aa55285f..42c92cff98 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -150,9 +150,9 @@ reaction_name = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', 5: '(n,misc)' 198: '(n,n3p)', 199: '(n,3n2pa)', 200: '(n,5n2p)', 444: '(n,damage)', 649: '(n,pc)', 699: '(n,dc)', 749: '(n,tc)', 799: '(n,3Hec)', 849: '(n,ac)'} -reaction_name.update({i: '(n,n{})'.format(i-50) for i in range(50,91)}) -reaction_name.update({i: '(n,p{})'.format(i-600) for i in range(600,649)}) -reaction_name.update({i: '(n,d{})'.format(i-650) for i in range(650,699)}) -reaction_name.update({i: '(n,t{})'.format(i-700) for i in range(700,749)}) -reaction_name.update({i: '(n,3He{})'.format(i-750) for i in range(750,799)}) -reaction_name.update({i: '(n,a{})'.format(i-800) for i in range(800,849)}) +reaction_name.update({i: '(n,n{})'.format(i-50) for i in range(50, 91)}) +reaction_name.update({i: '(n,p{})'.format(i-600) for i in range(600, 649)}) +reaction_name.update({i: '(n,d{})'.format(i-650) for i in range(650, 699)}) +reaction_name.update({i: '(n,t{})'.format(i-700) for i in range(700, 749)}) +reaction_name.update({i: '(n,3He{})'.format(i-750) for i in range(750, 799)}) +reaction_name.update({i: '(n,a{})'.format(i-800) for i in range(800, 849)}) diff --git a/openmc/data/energy_distribution.py b/openmc/data/energy_distribution.py index 09b0c6ebf7..a82a6c64a0 100644 --- a/openmc/data/energy_distribution.py +++ b/openmc/data/energy_distribution.py @@ -3,10 +3,9 @@ from collections import Iterable from numbers import Integral, Real from warnings import warn -import h5py import numpy as np -from openmc.data.container import Tabulated1D, interpolation_scheme +from openmc.data.container import Tabulated1D, INTERPOLATION_SCHEME from openmc.stats.univariate import Univariate, Tabular, Discrete, Mixture import openmc.checkvalue as cv @@ -78,11 +77,12 @@ class ArbitraryTabulated(EnergyDistribution): """ def __init__(self, energy, pdf): + super(ArbitraryTabulated, self).__init__() self.energy = energy self.pdf = pdf def to_hdf5(self, group): - NotImplementedError + raise NotImplementedError class GeneralEvaporation(EnergyDistribution): @@ -114,6 +114,7 @@ class GeneralEvaporation(EnergyDistribution): """ def __init__(self, theta, g, u): + super(GeneralEvaporation, self).__init__() self.theta = theta self.g = g self.u = u @@ -121,6 +122,10 @@ class GeneralEvaporation(EnergyDistribution): def to_hdf5(self, group): raise NotImplementedError + @classmethod + def from_ace(cls, ace, idx=0): + raise NotImplementedError + class MaxwellEnergy(EnergyDistribution): r"""Simple Maxwellian fission spectrum represented as @@ -147,6 +152,7 @@ class MaxwellEnergy(EnergyDistribution): """ def __init__(self, theta, u): + super(MaxwellEnergy, self).__init__() self.theta = theta self.u = u @@ -254,6 +260,7 @@ class Evaporation(EnergyDistribution): """ def __init__(self, theta, u): + super(Evaporation, self).__init__() self.theta = theta self.u = u @@ -364,6 +371,7 @@ class WattEnergy(EnergyDistribution): """ def __init__(self, a, b, u): + super(WattEnergy, self).__init__() self.a = a self.b = b self.u = u @@ -504,6 +512,7 @@ class MadlandNix(EnergyDistribution): """ def __init__(self, efl, efh, tm): + super(MadlandNix, self).__init__() self.efl = efl self.efh = efh self.tm = tm @@ -966,7 +975,7 @@ class ContinuousTabular(EnergyDistribution): # Create continuous distribution if m < n: - interp = interpolation_scheme[interpolation[i]] + interp = INTERPOLATION_SCHEME[interpolation[i]] eout_continuous = Tabular(data[0, j+m:j+n], data[1, j+m:j+n], interp) eout_continuous.c = data[2, j+m:j+n] @@ -1048,8 +1057,8 @@ class ContinuousTabular(EnergyDistribution): # Create continuous distribution eout_continuous = Tabular(data[0][n_discrete_lines:], - data[1][n_discrete_lines:], - interpolation_scheme[intt]) + data[1][n_discrete_lines:], + INTERPOLATION_SCHEME[intt]) eout_continuous.c = data[2][n_discrete_lines:] # If discrete lines are present, create a mixture distribution diff --git a/openmc/data/kalbach_mann.py b/openmc/data/kalbach_mann.py index 7899ae2a6a..8799831bf0 100644 --- a/openmc/data/kalbach_mann.py +++ b/openmc/data/kalbach_mann.py @@ -1,11 +1,12 @@ from collections import Iterable from numbers import Real, Integral +from warnings import warn import numpy as np import openmc.checkvalue as cv from openmc.stats import Tabular, Univariate, Discrete, Mixture -from .container import Tabulated1D, interpolation_scheme +from .container import Tabulated1D, INTERPOLATION_SCHEME from .angle_energy import AngleEnergy @@ -228,7 +229,7 @@ class KalbachMann(AngleEnergy): # Create continuous distribution if m < n: - interp = interpolation_scheme[interpolation[i]] + interp = INTERPOLATION_SCHEME[interpolation[i]] eout_continuous = Tabular(data[0, j+m:j+n], data[1, j+m:j+n], interp) eout_continuous.c = data[2, j+m:j+n] @@ -318,8 +319,8 @@ class KalbachMann(AngleEnergy): # Create continuous distribution eout_continuous = Tabular(data[0][n_discrete_lines:], - data[1][n_discrete_lines:], - interpolation_scheme[intt]) + data[1][n_discrete_lines:], + INTERPOLATION_SCHEME[intt]) eout_continuous.c = data[2][n_discrete_lines:] # If discrete lines are present, create a mixture distribution diff --git a/openmc/data/library.py b/openmc/data/library.py index 58f32609ea..748a018891 100644 --- a/openmc/data/library.py +++ b/openmc/data/library.py @@ -13,7 +13,7 @@ class DataLibrary(object): h5file = h5py.File(filename, 'r') materials = [] - for name, group in h5file.items(): + for name in h5file: materials.append(name) library = {'path': filename, 'type': filetype, 'materials': materials} diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index ad5e370f1e..463aa26bb0 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -1,25 +1,17 @@ from __future__ import division, unicode_literals -import io import sys -from warnings import warn from collections import OrderedDict, Iterable, Mapping -from copy import deepcopy from numbers import Integral, Real -import sys import numpy as np -from numpy.polynomial import Polynomial import h5py -from . import atomic_number, atomic_symbol +from . import atomic_symbol from .ace import Table, get_table from .container import Tabulated1D -from .energy_distribution import * from .product import Product from .reaction import Reaction, _get_photon_products -from .thermal import CoherentElastic from .urr import ProbabilityTables -from openmc.stats import Tabular, Discrete, Uniform, Mixture import openmc.checkvalue as cv if sys.version_info[0] >= 3: @@ -243,7 +235,7 @@ class IncidentNeutron(object): f.close() @classmethod - def from_hdf5(self, group_or_filename): + def from_hdf5(cls, group_or_filename): """Generate continuous-energy neutron interaction data from HDF5 group Parameters @@ -255,7 +247,7 @@ class IncidentNeutron(object): Returns ------- - openmc.data.ace.IncidentNeutron + openmc.data.IncidentNeutron Continuous-energy neutron interaction data """ @@ -272,8 +264,8 @@ class IncidentNeutron(object): atomic_weight_ratio = group.attrs['atomic_weight_ratio'] temperature = group.attrs['temperature'] - data = IncidentNeutron(name, atomic_number, mass_number, metastable, - atomic_weight_ratio, temperature) + data = cls(name, atomic_number, mass_number, metastable, + atomic_weight_ratio, temperature) # Read energy grid data.energy = group['energy'].value @@ -362,8 +354,8 @@ class IncidentNeutron(object): else: name = '{}{}.{}'.format(element, mass_number, xs) - data = IncidentNeutron(name, Z, mass_number, metastable, - ace.atomic_weight_ratio, ace.temperature) + data = cls(name, Z, mass_number, metastable, + ace.atomic_weight_ratio, ace.temperature) # Read energy grid n_energy = ace.nxs[3] diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 40e0910baa..195dcc341e 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -103,7 +103,7 @@ def _get_fission_products(ace): idx = ace.jxs[25] n_group = ace.nxs[8] total_group_probability = 0. - for i, group in enumerate(range(n_group)): + for group in range(n_group): delayed_neutron = Product('neutron') delayed_neutron.emission_mode = 'delayed' delayed_neutron.decay_rate = ace.xss[idx] @@ -201,14 +201,14 @@ def _get_photon_products(ace, mt): n_energy = int(ace.xss[idx + 1]) photon._xs = ace.xss[idx + 2:idx + 2 + n_energy] - # Determine yield based on ratio of cross sections + # TODO: Determine yield based on ratio of cross sections energy = ace.xss[ace.jxs[1] + threshold_idx: ace.jxs[1] + threshold_idx + n_energy] photon.yield_ = Tabulated1D(energy, photon._xs) else: raise ValueError("MFTYPE must be 12, 13, 16. Got {0}".format( - mftype)) + mftype)) # ================================================================== # Photon energy distribution diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py index 63e573a010..71ef190ab7 100644 --- a/openmc/data/thermal.py +++ b/openmc/data/thermal.py @@ -8,7 +8,10 @@ import h5py import openmc.checkvalue as cv from .ace import Table, get_table +from .angle_energy import AngleEnergy from .container import Tabulated1D +from .correlated import CorrelatedAngleEnergy +from openmc.stats import Discrete, Tabular _THERMAL_NAMES = {'al': 'c_Al27', 'al27': 'c_Al27', @@ -37,7 +40,7 @@ _THERMAL_NAMES = {'al': 'c_Al27', 'al27': 'c_Al27', class CoherentElastic(object): - """Coherent elastic scattering data from a crystalline material + r"""Coherent elastic scattering data from a crystalline material Parameters ---------- @@ -212,7 +215,7 @@ class ThermalScattering(object): self.inelastic_dist.to_hdf5(inelastic_group) @classmethod - def from_hdf5(self, group): + def from_hdf5(cls, group): """Generate thermal scattering data from HDF5 group Parameters @@ -229,7 +232,7 @@ class ThermalScattering(object): name = group.name[1:] atomic_weight_ratio = group.attrs['atomic_weight_ratio'] temperature = group.attrs['temperature'] - table = ThermalScattering(name, atomic_weight_ratio, temperature) + table = cls(name, atomic_weight_ratio, temperature) table.zaids = group.attrs['zaids'] # Read thermal elastic scattering @@ -363,7 +366,7 @@ class ThermalScattering(object): # Create correlated angle-energy distribution breakpoints = [n_energy] interpolation = [2] - energy = inelastic_xs.x + energy = table.inelastic_xs.x table.inelastic_dist = CorrelatedAngleEnergy( breakpoints, interpolation, energy, energy_out, mu_out) diff --git a/openmc/data/urr.py b/openmc/data/urr.py index b010a6c47c..052da66126 100644 --- a/openmc/data/urr.py +++ b/openmc/data/urr.py @@ -7,7 +7,7 @@ import openmc.checkvalue as cv class ProbabilityTables(object): - """Unresolved resonance region probability tables. + r"""Unresolved resonance region probability tables. Parameters ---------- @@ -18,7 +18,7 @@ class ProbabilityTables(object): where N is the number of energies and M is the number of bands. The second dimension indicates whether the value is for the cumulative probability (0), total (1), elastic (2), fission (3), :math:`(n,\gamma)` - (4), or heating number (6). + (4), or heating number (5). interpolation : {2, 5} Interpolation scheme between tables inelastic_flag : int @@ -45,7 +45,7 @@ class ProbabilityTables(object): where N is the number of energies and M is the number of bands. The second dimension indicates whether the value is for the cumulative probability (0), total (1), elastic (2), fission (3), :math:`(n,\gamma)` - (4), or heating number (6). + (4), or heating number (5). interpolation : {2, 5} Interpolation scheme between tables inelastic_flag : int From e9acaba58ce431f249cde83419cc86b721214bd5 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 18 Jul 2016 11:00:37 -0500 Subject: [PATCH 57/82] Respond to @smharper comments on #684 --- openmc/data/library.py | 3 ++- src/angle_distribution.F90 | 13 ++++++------ src/endf_header.F90 | 39 +++++++++++++++++----------------- src/energy_distribution.F90 | 3 ++- src/hdf5_interface.F90 | 6 +++--- src/input_xml.F90 | 15 +++++-------- src/nuclide_header.F90 | 5 +++-- src/product_header.F90 | 3 ++- src/reaction_header.F90 | 1 + src/secondary_correlated.F90 | 3 ++- src/secondary_kalbach.F90 | 3 ++- src/secondary_nbody.F90 | 3 ++- src/secondary_uncorrelated.F90 | 5 +++-- 13 files changed, 54 insertions(+), 48 deletions(-) diff --git a/openmc/data/library.py b/openmc/data/library.py index 748a018891..dba5eabc16 100644 --- a/openmc/data/library.py +++ b/openmc/data/library.py @@ -23,7 +23,8 @@ class DataLibrary(object): root = ET.Element('cross_sections') # Determine common directory for library paths - common_dir = os.path.commonpath([lib['path'] for lib in self.libraries]) + common_dir = os.path.dirname(os.path.commonprefix( + [lib['path'] for lib in self.libraries])) if common_dir == '': common_dir = '.' diff --git a/src/angle_distribution.F90 b/src/angle_distribution.F90 index 830ba836ca..a4fea6ff77 100644 --- a/src/angle_distribution.F90 +++ b/src/angle_distribution.F90 @@ -1,8 +1,9 @@ module angle_distribution + use hdf5, only: HID_T, HSIZE_T + use constants, only: ZERO, ONE, HISTOGRAM, LINEAR_LINEAR use distribution_univariate, only: DistributionContainer, Tabular - use hdf5, only: HID_T, HSIZE_T use hdf5_interface, only: read_attribute, get_shape, read_dataset, & open_dataset, close_dataset use random_lcg, only: prn @@ -81,9 +82,9 @@ contains dset_id = open_dataset(group_id, 'energy') call get_shape(dset_id, dims) n_energy = int(dims(1), 4) - allocate(this%energy(n_energy)) - allocate(this%distribution(n_energy)) - call read_dataset(this%energy, dset_id) + allocate(this % energy(n_energy)) + allocate(this % distribution(n_energy)) + call read_dataset(this % energy, dset_id) call close_dataset(dset_id) ! Get outgoing energy distribution data @@ -105,8 +106,8 @@ contains end if ! Create and initialize tabular distribution - allocate(Tabular :: this%distribution(i)%obj) - select type (mudist => this%distribution(i)%obj) + allocate(Tabular :: this % distribution(i) % obj) + select type (mudist => this % distribution(i) % obj) type is (Tabular) mudist % interpolation = interp(i) allocate(mudist % x(n), mudist % p(n), mudist % c(n)) diff --git a/src/endf_header.F90 b/src/endf_header.F90 index 8b6ad63f19..c4b4ef3ad8 100644 --- a/src/endf_header.F90 +++ b/src/endf_header.F90 @@ -1,9 +1,10 @@ module endf_header + use hdf5, only: HID_T, HSIZE_T + use constants, only: ZERO, HISTOGRAM, LINEAR_LINEAR, LINEAR_LOG, & LOG_LINEAR, LOG_LOG use hdf5_interface - use hdf5, only: HID_T, HSIZE_T use search, only: binary_search implicit none @@ -157,25 +158,25 @@ contains ! Determine number of regions nr = nint(xss(idx)) - this%n_regions = nr + this % n_regions = nr ! Read interpolation region data if (nr > 0) then - allocate(this%nbt(nr)) - allocate(this%int(nr)) - this%nbt(:) = nint(xss(idx + 1 : idx + nr)) - this%int(:) = nint(xss(idx + nr + 1 : idx + 2*nr)) + allocate(this % nbt(nr)) + allocate(this % int(nr)) + this % nbt(:) = nint(xss(idx + 1 : idx + nr)) + this % int(:) = nint(xss(idx + nr + 1 : idx + 2*nr)) end if ! Determine number of pairs ne = int(XSS(idx + 2*nr + 1)) - this%n_pairs = ne + this % n_pairs = ne ! Read (x,y) pairs - allocate(this%x(ne)) - allocate(this%y(ne)) - this%x(:) = xss(idx + 2*nr + 2 : idx + 2*nr + 1 + ne) - this%y(:) = xss(idx + 2*nr + 2 + ne : idx + 2*nr + 1 + 2*ne) + allocate(this % x(ne)) + allocate(this % y(ne)) + this % x(:) = xss(idx + 2*nr + 2 : idx + 2*nr + 1 + ne) + this % y(:) = xss(idx + 2*nr + 2 + ne : idx + 2*nr + 1 + 2*ne) end subroutine tabulated1d_from_ace subroutine tabulated1d_from_hdf5(this, dset_id) @@ -185,19 +186,19 @@ contains real(8), allocatable :: xy(:,:) integer(HSIZE_T) :: dims(2) - call read_attribute(this%nbt, dset_id, 'breakpoints') - call read_attribute(this%int, dset_id, 'interpolation') - this%n_regions = size(this%nbt) + call read_attribute(this % nbt, dset_id, 'breakpoints') + call read_attribute(this % int, dset_id, 'interpolation') + this % n_regions = size(this % nbt) call get_shape(dset_id, dims) - this%n_pairs = int(dims(1), 4) - allocate(this%x(this%n_pairs)) - allocate(this%y(this%n_pairs)) + this % n_pairs = int(dims(1), 4) + allocate(this % x(this % n_pairs)) + allocate(this % y(this % n_pairs)) allocate(xy(dims(1), dims(2))) call read_dataset(xy, dset_id) - this%x(:) = xy(:,1) - this%y(:) = xy(:,2) + this % x(:) = xy(:,1) + this % y(:) = xy(:,2) end subroutine tabulated1d_from_hdf5 pure function tabulated1d_evaluate(this, x) result(y) diff --git a/src/energy_distribution.F90 b/src/energy_distribution.F90 index 54ae3f90c9..c45762bb0a 100644 --- a/src/energy_distribution.F90 +++ b/src/energy_distribution.F90 @@ -1,9 +1,10 @@ module energy_distribution + use hdf5 + use constants, only: ZERO, ONE, HALF, TWO, PI, HISTOGRAM, LINEAR_LINEAR use endf_header, only: Tabulated1D use hdf5_interface - use hdf5 use math, only: maxwell_spectrum, watt_spectrum use random_lcg, only: prn use search, only: binary_search diff --git a/src/hdf5_interface.F90 b/src/hdf5_interface.F90 index 0bfe04051f..d745f3201c 100644 --- a/src/hdf5_interface.F90 +++ b/src/hdf5_interface.F90 @@ -10,13 +10,13 @@ module hdf5_interface ! can be combined into one simply accepting an assumed-shape array. !============================================================================== - use error, only: fatal_error - use tally_header, only: TallyResult + use, intrinsic :: ISO_C_BINDING use hdf5 use h5lt - use, intrinsic :: ISO_C_BINDING + use error, only: fatal_error + use tally_header, only: TallyResult #ifdef PHDF5 use message_passing, only: MPI_COMM_WORLD, MPI_INFO_NULL #endif diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 0fc96ef4b1..3c8291e9c8 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -1,5 +1,7 @@ module input_xml + use hdf5 + use cmfd_input, only: configure_cmfd use constants use dict_header, only: DictIntInt, ElemKeyValueCI @@ -10,6 +12,7 @@ module input_xml use error, only: fatal_error, warning use geometry_header, only: Cell, Lattice, RectLattice, HexLattice use global + use hdf5_interface use list_header, only: ListChar, ListInt, ListReal use mesh_header, only: RegularMesh use multipole, only: multipole_read @@ -25,9 +28,6 @@ module input_xml use tally_initialize, only: add_tallies use xml_interface - use hdf5 - use hdf5_interface - implicit none save @@ -2087,14 +2087,14 @@ contains call read_materials_xml(libraries, library_dict) ! Read continuous-energy cross sections - if (run_CE) then + if (run_CE .and. run_mode /= MODE_PLOTTING) then call time_read_xs%start() call read_ce_cross_sections(libraries, library_dict) call time_read_xs%stop() end if ! Normalize atom/weight percents - call normalize_ao() + if (run_mode /= MODE_PLOTTING) call normalize_ao() ! Clear dictionary call library_dict % clear() @@ -3295,11 +3295,6 @@ contains ! If a specific nuclide was specified word = to_lower(sarray(j)) -!!$ ! Append default_xs specifier to nuclide if needed -!!$ if ((default_xs /= '') .and. (.not. ends_with(sarray(j), 'c'))) then -!!$ word = trim(word) // "." // trim(default_xs) -!!$ end if - ! Search through nuclides pair_list => nuclide_dict % keys() do while (associated(pair_list)) diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index be61ff8b9e..9cff8a5d58 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -2,13 +2,14 @@ module nuclide_header use, intrinsic :: ISO_FORTRAN_ENV + use hdf5, only: HID_T, HSIZE_T, SIZE_T, h5iget_name_f + use h5lt, only: h5ltpath_valid_f + use constants use dict_header, only: DictIntInt use endf, only: reaction_name, is_fission, is_disappearance use endf_header, only: Function1D, Constant1D, Polynomial, Tabulated1D use error, only: fatal_error, warning - use hdf5, only: HID_T, HSIZE_T, SIZE_T, h5iget_name_f - use h5lt, only: h5ltpath_valid_f use hdf5_interface, only: read_attribute, open_group, close_group, & open_dataset, read_dataset, close_dataset, get_shape use list_header, only: ListInt diff --git a/src/product_header.F90 b/src/product_header.F90 index fbe0ee71f0..f20adf0d40 100644 --- a/src/product_header.F90 +++ b/src/product_header.F90 @@ -1,10 +1,11 @@ module product_header + use hdf5, only: HID_T + use angleenergy_header, only: AngleEnergyContainer use constants, only: ZERO, MAX_WORD_LEN, EMISSION_PROMPT, EMISSION_DELAYED, & EMISSION_TOTAL, NEUTRON, PHOTON use endf_header, only: Tabulated1D, Function1D, Constant1D, Polynomial - use hdf5, only: HID_T use hdf5_interface, only: read_attribute, open_group, close_group, & open_dataset, close_dataset, read_dataset use random_lcg, only: prn diff --git a/src/reaction_header.F90 b/src/reaction_header.F90 index 74198dd78b..9829f6e8f6 100644 --- a/src/reaction_header.F90 +++ b/src/reaction_header.F90 @@ -1,6 +1,7 @@ module reaction_header use hdf5, only: HID_T, HSIZE_T + use hdf5_interface, only: read_attribute, open_group, close_group, & open_dataset, read_dataset, close_dataset, get_shape use product_header, only: ReactionProduct diff --git a/src/secondary_correlated.F90 b/src/secondary_correlated.F90 index 0576b28f63..e163fdcc24 100644 --- a/src/secondary_correlated.F90 +++ b/src/secondary_correlated.F90 @@ -1,9 +1,10 @@ module secondary_correlated + use hdf5, only: HID_T, HSIZE_T + use angleenergy_header, only: AngleEnergy use constants, only: ZERO, ONE, HALF, TWO, HISTOGRAM, LINEAR_LINEAR use distribution_univariate, only: DistributionContainer, Tabular - use hdf5, only: HID_T, HSIZE_T use hdf5_interface, only: get_shape, read_attribute, open_dataset, & read_dataset, close_dataset use random_lcg, only: prn diff --git a/src/secondary_kalbach.F90 b/src/secondary_kalbach.F90 index 920d17869c..4b5e690b5d 100644 --- a/src/secondary_kalbach.F90 +++ b/src/secondary_kalbach.F90 @@ -1,8 +1,9 @@ module secondary_kalbach + use hdf5, only: HID_T, HSIZE_T + use angleenergy_header, only: AngleEnergy use constants, only: ZERO, HALF, ONE, TWO, HISTOGRAM, LINEAR_LINEAR - use hdf5, only: HID_T, HSIZE_T use hdf5_interface, only: read_attribute, read_dataset, open_dataset, & close_dataset, get_shape use random_lcg, only: prn diff --git a/src/secondary_nbody.F90 b/src/secondary_nbody.F90 index d45c598793..14ae949a9e 100644 --- a/src/secondary_nbody.F90 +++ b/src/secondary_nbody.F90 @@ -1,8 +1,9 @@ module secondary_nbody + use hdf5, only: HID_T + use angleenergy_header, only: AngleEnergy use constants, only: ONE, TWO, PI - use hdf5, only: HID_T use hdf5_interface, only: read_attribute use math, only: maxwell_spectrum use random_lcg, only: prn diff --git a/src/secondary_uncorrelated.F90 b/src/secondary_uncorrelated.F90 index 3158913cc6..fc215484a9 100644 --- a/src/secondary_uncorrelated.F90 +++ b/src/secondary_uncorrelated.F90 @@ -1,13 +1,14 @@ module secondary_uncorrelated + use h5lt, only: h5ltpath_valid_f + use hdf5, only: HID_T + use angle_distribution, only: AngleDistribution use angleenergy_header, only: AngleEnergy use constants, only: ONE, TWO, MAX_WORD_LEN use energy_distribution, only: EnergyDistribution, LevelInelastic, & ContinuousTabular, MaxwellEnergy, Evaporation, WattEnergy, DiscretePhoton use error, only: warning - use h5lt, only: h5ltpath_valid_f - use hdf5, only: HID_T use hdf5_interface, only: read_attribute, open_group, close_group use random_lcg, only: prn From 202bdfab3df03508864b980c7b9885624354e625 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 18 Jul 2016 17:56:27 -0500 Subject: [PATCH 58/82] Use libver='latest' for opening HDF5 files --- openmc/data/neutron.py | 2 +- openmc/data/thermal.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 463aa26bb0..d9d8222316 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -203,7 +203,7 @@ class IncidentNeutron(object): """ - f = h5py.File(path, mode) + f = h5py.File(path, mode, libver='latest') # Write basic data g = f.create_group(self.name) diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py index 71ef190ab7..8cad814177 100644 --- a/openmc/data/thermal.py +++ b/openmc/data/thermal.py @@ -188,7 +188,7 @@ class ThermalScattering(object): """ - f = h5py.File(path, mode) + f = h5py.File(path, mode, libver='latest') # Write basic data g = f.create_group(self.name) From 65f1c4baaf62971a56d64d4ccf8d145a8819f98b Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jul 2016 08:45:28 -0500 Subject: [PATCH 59/82] When installing OpenMC locally, set PYTHONPATH to avoid error --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 73f0afccc2..dcaf30a1d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -317,6 +317,7 @@ if(PYTHONINTERP_FOUND) --root=debian/openmc --install-layout=deb WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})") else() + install(CODE "set(ENV{PYTHONPATH} \"${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages\")") install(CODE "execute_process( COMMAND ${PYTHON_EXECUTABLE} setup.py install --prefix=${CMAKE_INSTALL_PREFIX} From 5647db18b60d6d80b685835adc8585785e7e5735 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jul 2016 12:02:07 -0500 Subject: [PATCH 60/82] Some fixes for JEFF 3.2 data (most notably supporting energy-dependent delayed neutron group probabilities) --- .gitignore | 6 ++++++ openmc/data/correlated.py | 3 +++ openmc/data/kalbach_mann.py | 6 +++++- openmc/data/reaction.py | 30 +++++++++++++++++++++++++++--- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 9597171308..ca58065a22 100644 --- a/.gitignore +++ b/.gitignore @@ -60,8 +60,14 @@ src/install_manifest.txt # Nuclear data data/nndc +data/nndc_hdf5 data/wmp data/multipole_lib.tar.gz +data/ENDF-B-VII.1-*.tar.gz +data/JEFF32-ACE-*.tar.gz +data/TSLs.tar.gz +data/jeff-3.2 +data/jeff-3.2-hdf5 # Images *.ppm diff --git a/openmc/data/correlated.py b/openmc/data/correlated.py index c93a0d706d..45ad42ced7 100644 --- a/openmc/data/correlated.py +++ b/openmc/data/correlated.py @@ -359,6 +359,9 @@ class CorrelatedAngleEnergy(AngleEnergy): INTERPOLATION_SCHEME[intt], ignore_negative=True) eout_continuous.c = data[2][n_discrete_lines:] + if np.any(data[1][n_discrete_lines:] < 0.0): + warn("Correlated angle-energy distribution has negative " + "probabilities.") # If discrete lines are present, create a mixture distribution if n_discrete_lines > 0: diff --git a/openmc/data/kalbach_mann.py b/openmc/data/kalbach_mann.py index 8799831bf0..5a5dc073cc 100644 --- a/openmc/data/kalbach_mann.py +++ b/openmc/data/kalbach_mann.py @@ -320,8 +320,12 @@ class KalbachMann(AngleEnergy): # Create continuous distribution eout_continuous = Tabular(data[0][n_discrete_lines:], data[1][n_discrete_lines:], - INTERPOLATION_SCHEME[intt]) + INTERPOLATION_SCHEME[intt], + ignore_negative=True) eout_continuous.c = data[2][n_discrete_lines:] + if np.any(data[1][n_discrete_lines:] < 0.0): + warn("Kalbach-Mann energy distribution has negative " + "probabilities.") # If discrete lines are present, create a mixture distribution if n_discrete_lines > 0: diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 195dcc341e..53d399b6ee 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -2,6 +2,7 @@ from __future__ import division, unicode_literals from collections import Iterable from copy import deepcopy from numbers import Real +from warnings import warn import numpy as np from numpy.polynomial import Polynomial @@ -114,8 +115,15 @@ def _get_fission_products(ace): delayed_neutron.yield_.y *= group_probability.y[0] total_group_probability += group_probability.y[0] else: - raise NotImplementedError( - 'Delayed neutron with energy-dependent group probability') + # Get union energy grid and ensure energies are within + # interpolable range of both functions + max_energy = min(yield_delayed.x[-1], group_probability.x[-1]) + energy = np.union1d(yield_delayed.x, group_probability.x) + energy = energy[energy <= max_energy] + + # Calculate group yield + group_yield = yield_delayed(energy) * group_probability(energy) + delayed_neutron.yield_ = Tabulated1D(energy, group_yield) # Advance position nr = int(ace.xss[idx + 1]) @@ -132,7 +140,8 @@ def _get_fission_products(ace): # Renormalize delayed neutron yields to reflect fact that in ACE # file, the sum of the group probabilities is not exactly one for product in products[1:]: - product.yield_.y /= total_group_probability + if total_group_probability > 0.: + product.yield_.y /= total_group_probability return products, derived_products @@ -427,6 +436,13 @@ class Reaction(object): # Read reaction cross section xs = ace.xss[ace.jxs[7] + loc + 1:ace.jxs[7] + loc + 1 + n_energy] + + # Fix negatives -- known issue for Y89 in JEFF 3.2 + if np.any(xs < 0.0): + warn("Negative cross sections found for MT={} in {}. Setting " + "to zero.".format(rx.mt, ace.name)) + xs[xs < 0.0] = 0.0 + rx.xs = Tabulated1D(energy, xs) # ================================================================== @@ -476,7 +492,15 @@ class Reaction(object): mt = 2 rx = cls(mt) + # Get elastic cross section values elastic_xs = ace.xss[ace.jxs[1] + 3*n_grid:ace.jxs[1] + 4*n_grid] + + # Fix negatives -- known issue for Ti46,49,50 in JEFF 3.2 + if np.any(elastic_xs < 0.0): + warn("Negative elastic scattering cross section found for {}. " + "Setting to zero.".format(ace.name)) + elastic_xs[elastic_xs < 0.0] = 0.0 + rx.xs = Tabulated1D(grid, elastic_xs) # No energy distribution for elastic scattering From cf59208f349a875102d414357e5f7da4ce49b3e5 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jul 2016 21:41:41 -0500 Subject: [PATCH 61/82] Rename openmc.data.container to openmc.data.function --- openmc/data/__init__.py | 2 +- openmc/data/angle_distribution.py | 2 +- openmc/data/correlated.py | 2 +- openmc/data/energy_distribution.py | 2 +- openmc/data/{container.py => function.py} | 0 openmc/data/kalbach_mann.py | 2 +- openmc/data/neutron.py | 2 +- openmc/data/product.py | 2 +- openmc/data/reaction.py | 2 +- openmc/data/thermal.py | 2 +- 10 files changed, 9 insertions(+), 9 deletions(-) rename openmc/data/{container.py => function.py} (100%) diff --git a/openmc/data/__init__.py b/openmc/data/__init__.py index c6a1baf9df..ae8ea8191f 100644 --- a/openmc/data/__init__.py +++ b/openmc/data/__init__.py @@ -3,7 +3,7 @@ from .neutron import * from .reaction import * from .ace import * from .angle_distribution import * -from .container import * +from .function import * from .energy_distribution import * from .product import * from .angle_energy import * diff --git a/openmc/data/angle_distribution.py b/openmc/data/angle_distribution.py index 709be84962..316559c50d 100644 --- a/openmc/data/angle_distribution.py +++ b/openmc/data/angle_distribution.py @@ -5,7 +5,7 @@ import numpy as np import openmc.checkvalue as cv from openmc.stats import Univariate, Tabular, Uniform -from .container import INTERPOLATION_SCHEME +from .function import INTERPOLATION_SCHEME class AngleDistribution(object): diff --git a/openmc/data/correlated.py b/openmc/data/correlated.py index 45ad42ced7..97a96c17c1 100644 --- a/openmc/data/correlated.py +++ b/openmc/data/correlated.py @@ -6,7 +6,7 @@ import numpy as np import openmc.checkvalue as cv from openmc.stats import Tabular, Univariate, Discrete, Mixture, Uniform -from .container import INTERPOLATION_SCHEME +from .function import INTERPOLATION_SCHEME from .angle_energy import AngleEnergy diff --git a/openmc/data/energy_distribution.py b/openmc/data/energy_distribution.py index a82a6c64a0..677d31af2d 100644 --- a/openmc/data/energy_distribution.py +++ b/openmc/data/energy_distribution.py @@ -5,7 +5,7 @@ from warnings import warn import numpy as np -from openmc.data.container import Tabulated1D, INTERPOLATION_SCHEME +from .function import Tabulated1D, INTERPOLATION_SCHEME from openmc.stats.univariate import Univariate, Tabular, Discrete, Mixture import openmc.checkvalue as cv diff --git a/openmc/data/container.py b/openmc/data/function.py similarity index 100% rename from openmc/data/container.py rename to openmc/data/function.py diff --git a/openmc/data/kalbach_mann.py b/openmc/data/kalbach_mann.py index 5a5dc073cc..5aca17ba9f 100644 --- a/openmc/data/kalbach_mann.py +++ b/openmc/data/kalbach_mann.py @@ -6,7 +6,7 @@ import numpy as np import openmc.checkvalue as cv from openmc.stats import Tabular, Univariate, Discrete, Mixture -from .container import Tabulated1D, INTERPOLATION_SCHEME +from .function import Tabulated1D, INTERPOLATION_SCHEME from .angle_energy import AngleEnergy diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index d9d8222316..94e1b2aad5 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -8,7 +8,7 @@ import h5py from . import atomic_symbol from .ace import Table, get_table -from .container import Tabulated1D +from .function import Tabulated1D from .product import Product from .reaction import Reaction, _get_photon_products from .urr import ProbabilityTables diff --git a/openmc/data/product.py b/openmc/data/product.py index 6a331dc243..dd276daac3 100644 --- a/openmc/data/product.py +++ b/openmc/data/product.py @@ -6,7 +6,7 @@ import numpy as np from numpy.polynomial.polynomial import Polynomial import openmc.checkvalue as cv -from .container import Tabulated1D +from .function import Tabulated1D from .angle_energy import AngleEnergy if sys.version_info[0] >= 3: diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 53d399b6ee..0692982161 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -11,7 +11,7 @@ import openmc.checkvalue as cv from openmc.stats import Uniform from .angle_distribution import AngleDistribution from .angle_energy import AngleEnergy -from .container import Tabulated1D +from .function import Tabulated1D from .data import reaction_name from .product import Product from .uncorrelated import UncorrelatedAngleEnergy diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py index 8cad814177..158ce39853 100644 --- a/openmc/data/thermal.py +++ b/openmc/data/thermal.py @@ -9,7 +9,7 @@ import h5py import openmc.checkvalue as cv from .ace import Table, get_table from .angle_energy import AngleEnergy -from .container import Tabulated1D +from .function import Tabulated1D from .correlated import CorrelatedAngleEnergy from openmc.stats import Discrete, Tabular From 20a2499587c6f933f5add9811327ae7b88b89627 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jul 2016 21:49:05 -0500 Subject: [PATCH 62/82] Make module-level variables in openmc.data.data uppercase --- openmc/data/data.py | 20 ++++++++++---------- openmc/data/neutron.py | 4 ++-- openmc/data/reaction.py | 10 +++++----- openmc/element.py | 4 ++-- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/openmc/data/data.py b/openmc/data/data.py index 42c92cff98..52043e3923 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -1,7 +1,7 @@ # Isotopic abundances from M. Berglund and M. E. Wieser, "Isotopic compositions # of the elements 2009 (IUPAC Technical Report)", Pure. Appl. Chem. 83 (2), # pp. 397--410 (2011). -natural_abundance = { +NATURAL_ABUNDANCE = { 'H-1': 0.999885, 'H-2': 0.000115, 'He-3': 1.34e-06, 'He-4': 0.99999866, 'Li-6': 0.0759, 'Li-7': 0.9241, 'Be-9': 1.0, 'B-10': 0.199, 'B-11': 0.801, @@ -100,7 +100,7 @@ natural_abundance = { 'U-234': 5.4e-05, 'U-235': 0.007204, 'U-238': 0.992742 } -atomic_symbol = {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', +ATOMIC_SYMBOL = {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', 8: 'O', 9: 'F', 10: 'Ne', 11: 'Na', 12: 'Mg', 13: 'Al', 14: 'Si', 15: 'P', 16: 'S', 17: 'Cl', 18: 'Ar', 19: 'K', 20: 'Ca', 21: 'Sc', 22: 'Ti', 23: 'V', 24: 'Cr', 25: 'Mn', @@ -120,9 +120,9 @@ atomic_symbol = {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', 103: 'Lr', 104: 'Rf', 105: 'Db', 106: 'Sg', 107: 'Bh', 108: 'Hs', 109: 'Mt', 110: 'Ds', 111: 'Rg', 112: 'Cn', 114: 'Fl', 116: 'Lv'} -atomic_number = {value: key for key, value in atomic_symbol.items()} +ATOMIC_NUMBER = {value: key for key, value in ATOMIC_SYMBOL.items()} -reaction_name = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', 5: '(n,misc)', 11: '(n,2nd)', +REACTION_NAME = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', 5: '(n,misc)', 11: '(n,2nd)', 16: '(n,2n)', 17: '(n,3n)', 18: '(n,fission)', 19: '(n,f)', 20: '(n,nf)', 21: '(n,2nf)', 22: '(n,na)', 23: '(n,n3a)', 24: '(n,2na)', 25: '(n,3na)', 28: '(n,np)', 29: '(n,n2a)', @@ -150,9 +150,9 @@ reaction_name = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', 5: '(n,misc)' 198: '(n,n3p)', 199: '(n,3n2pa)', 200: '(n,5n2p)', 444: '(n,damage)', 649: '(n,pc)', 699: '(n,dc)', 749: '(n,tc)', 799: '(n,3Hec)', 849: '(n,ac)'} -reaction_name.update({i: '(n,n{})'.format(i-50) for i in range(50, 91)}) -reaction_name.update({i: '(n,p{})'.format(i-600) for i in range(600, 649)}) -reaction_name.update({i: '(n,d{})'.format(i-650) for i in range(650, 699)}) -reaction_name.update({i: '(n,t{})'.format(i-700) for i in range(700, 749)}) -reaction_name.update({i: '(n,3He{})'.format(i-750) for i in range(750, 799)}) -reaction_name.update({i: '(n,a{})'.format(i-800) for i in range(800, 849)}) +REACTION_NAME.update({i: '(n,n{})'.format(i-50) for i in range(50, 91)}) +REACTION_NAME.update({i: '(n,p{})'.format(i-600) for i in range(600, 649)}) +REACTION_NAME.update({i: '(n,d{})'.format(i-650) for i in range(650, 699)}) +REACTION_NAME.update({i: '(n,t{})'.format(i-700) for i in range(700, 749)}) +REACTION_NAME.update({i: '(n,3He{})'.format(i-750) for i in range(750, 799)}) +REACTION_NAME.update({i: '(n,a{})'.format(i-800) for i in range(800, 849)}) diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 94e1b2aad5..30c1dbb5b1 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -6,7 +6,7 @@ from numbers import Integral, Real import numpy as np import h5py -from . import atomic_symbol +from . import ATOMIC_SYMBOL from .ace import Table, get_table from .function import Tabulated1D from .product import Product @@ -348,7 +348,7 @@ class IncidentNeutron(object): mass_number -= 100 # Determine name for group - element = atomic_symbol[Z] + element = ATOMIC_SYMBOL[Z] if metastable > 0: name = '{}{}_m{}.{}'.format(element, mass_number, metastable, xs) else: diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 0692982161..91d18bdce3 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -12,7 +12,7 @@ from openmc.stats import Uniform from .angle_distribution import AngleDistribution from .angle_energy import AngleEnergy from .function import Tabulated1D -from .data import reaction_name +from .data import REACTION_NAME from .product import Product from .uncorrelated import UncorrelatedAngleEnergy @@ -298,8 +298,8 @@ class Reaction(object): self.derived_products = [] def __repr__(self): - if self.mt in reaction_name: - return "".format(self.mt, reaction_name[self.mt]) + if self.mt in REACTION_NAME: + return "".format(self.mt, REACTION_NAME[self.mt]) else: return "".format(self.mt) @@ -356,8 +356,8 @@ class Reaction(object): """ group.attrs['mt'] = self.mt - if self.mt in reaction_name: - group.attrs['label'] = np.string_(reaction_name[self.mt]) + if self.mt in REACTION_NAME: + group.attrs['label'] = np.string_(REACTION_NAME[self.mt]) else: group.attrs['label'] = np.string_(self.mt) group.attrs['Q_value'] = self.q_value diff --git a/openmc/element.py b/openmc/element.py index c877c27a12..f116c43ebb 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -2,7 +2,7 @@ import sys import openmc from openmc.checkvalue import check_type, check_length -from openmc.data import natural_abundance +from openmc.data import NATURAL_ABUNDANCE if sys.version_info[0] >= 3: basestring = str @@ -123,7 +123,7 @@ class Element(object): """ isotopes = [] - for isotope, abundance in sorted(natural_abundance.items()): + for isotope, abundance in sorted(NATURAL_ABUNDANCE.items()): if isotope.startswith(self.name + '-'): nuc = openmc.Nuclide(isotope, self.xs) isotopes.append((nuc, abundance)) From 976349cb516d0f950e9391bfe0f1039f30bcf9f4 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jul 2016 22:32:24 -0500 Subject: [PATCH 63/82] Calculate photon production yields properly for MF=13 data --- openmc/data/data.py | 18 ++++++++++++ openmc/data/function.py | 37 +++++++++++++++++++++++- openmc/data/neutron.py | 62 ++++++++++++++++++++++++++++++++++++++--- openmc/data/reaction.py | 39 +++++++++++++++----------- 4 files changed, 134 insertions(+), 22 deletions(-) diff --git a/openmc/data/data.py b/openmc/data/data.py index 52043e3923..5f83d31c0c 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -156,3 +156,21 @@ REACTION_NAME.update({i: '(n,d{})'.format(i-650) for i in range(650, 699)}) REACTION_NAME.update({i: '(n,t{})'.format(i-700) for i in range(700, 749)}) REACTION_NAME.update({i: '(n,3He{})'.format(i-750) for i in range(750, 799)}) REACTION_NAME.update({i: '(n,a{})'.format(i-800) for i in range(800, 849)}) + +SUM_RULES = {1: [2, 3], + 3: [4, 5, 11, 16, 17, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, + 36, 37, 41, 42, 44, 45, 152, 153, 154, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 183, 184, 185, + 186, 187, 188, 189, 190, 194, 195, 196, 198, 199, 200], + 4: list(range(50, 92)), + 16: list(range(875, 892)), + 18: [19, 20, 21, 38], + 27: [18, 101], + 101: [102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 114, + 115, 116, 117, 155, 182, 191, 192, 193, 197], + 103: list(range(600, 650)), + 104: list(range(650, 700)), + 105: list(range(700, 750)), + 106: list(range(750, 800)), + 107: list(range(800, 850))} diff --git a/openmc/data/function.py b/openmc/data/function.py index d9902794cf..e2efb4c101 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -1,4 +1,4 @@ -from collections import Iterable +from collections import Iterable, Callable from numbers import Real, Integral import numpy as np @@ -306,3 +306,38 @@ class Tabulated1D(object): y = ace.xss[idx + n_pairs:idx + 2*n_pairs] return Tabulated1D(x, y, breakpoints, interpolation) + + +class Sum(object): + """Sum of multiple functions. + + This class allows you to create a callable object which represents the sum + of other callable objects. This is used for summed reactions whereby the + cross section is defined as the sum of other cross sections. + + Parameters + ---------- + functions : Iterable of Callable + Functions which are to be added together + + Attributes + ---------- + functions : Iterable of Callable + Functions which are to be added together + + """ + + def __init__(self, functions): + self.functions = functions + + def __call__(self, x): + return sum(f(x) for f in self.functions) + + @property + def functions(self): + return self._functions + + @functions.setter + def functions(self, functions): + cv.check_type('functions', functions, Iterable, Callable) + self._functions = functions diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 30c1dbb5b1..c77ea86a1e 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -2,13 +2,14 @@ from __future__ import division, unicode_literals import sys from collections import OrderedDict, Iterable, Mapping from numbers import Integral, Real +from warnings import warn import numpy as np import h5py -from . import ATOMIC_SYMBOL +from .data import ATOMIC_SYMBOL, SUM_RULES from .ace import Table, get_table -from .function import Tabulated1D +from .function import Tabulated1D, Sum from .product import Product from .reaction import Reaction, _get_photon_products from .urr import ProbabilityTables @@ -84,6 +85,17 @@ class IncidentNeutron(object): self.summed_reactions = OrderedDict() self.urr = None + def __contains__(self, mt): + return mt in self.reactions or mt in self.summed_reactions + + def __getitem__(self, mt): + if mt in self.reactions: + return self.reactions[mt] + elif mt in self.summed_reactions: + return self.summed_reactions[mt] + else: + raise KeyError('No reaction with MT={}.'.format(mt)) + def __repr__(self): return "".format(self.name) @@ -190,6 +202,38 @@ class IncidentNeutron(object): (ProbabilityTables, type(None))) self._urr = urr + def get_reaction_components(self, mt): + """Determine what reactions make up summed reaction. + + Parameters + ---------- + mt : int + ENDF MT number of the reaction to find components of. + + Returns + ------- + mts : list of int + ENDF MT numbers of reactions that make up the summed reaction and + have cross sections provided. + + """ + if mt in self.reactions: + return [mt] + elif mt in SUM_RULES: + mts = SUM_RULES[mt] + complete = False + while not complete: + new_mts = [] + complete = True + for i, mt_i in enumerate(mts): + if mt_i in self.reactions: + new_mts.append(mt_i) + elif mt_i in SUM_RULES: + new_mts += SUM_RULES[mt_i] + complete = False + mts = new_mts + return mts + def export_to_hdf5(self, path, mode='a'): """Export table to an HDF5 file. @@ -386,9 +430,19 @@ class IncidentNeutron(object): n_photon_reactions].astype(int) for mt in np.unique(photon_mts // 1000): - if mt not in data.reactions: + if mt not in data: + if mt not in SUM_RULES: + warn('Photon production is present for MT={} but no ' + 'cross section is given.'.format(mt)) + continue + + # Create summed reaction with appropriate cross section rx = Reaction(mt) - rx.products += _get_photon_products(ace, mt) + mts = data.get_reaction_components(mt) + rx.xs = Sum([data.reactions[mt_i].xs for mt_i in mts]) + + # Determine summed cross section + rx.products += _get_photon_products(ace, rx) data.summed_reactions[mt] = rx # Read unresolved resonance probability tables diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 91d18bdce3..8fb79f109d 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -1,5 +1,5 @@ from __future__ import division, unicode_literals -from collections import Iterable +from collections import Iterable, Callable from copy import deepcopy from numbers import Real from warnings import warn @@ -146,15 +146,15 @@ def _get_fission_products(ace): return products, derived_products -def _get_photon_products(ace, mt): +def _get_photon_products(ace, rx): """Generate photon products from an ACE table Parameters ---------- ace : openmc.data.ace.Table ACE table to read from - mt : int - MT number for the desired reaction + rx : openmc.data.Reaction + Reaction that generates photons Returns ------- @@ -176,9 +176,9 @@ def _get_photon_products(ace, mt): # MT=19,20,21,38, we assign the photon product to each of the individual # reactions if neutron_mt == 18: - if mt not in (18, 19, 20, 21, 38): + if rx.mt not in (18, 19, 20, 21, 38): continue - elif neutron_mt != mt: + elif neutron_mt != rx.mt: continue # Create photon product and assign to reactions @@ -205,15 +205,19 @@ def _get_photon_products(ace, mt): # Energy grid index at which data starts threshold_idx = int(ace.xss[idx]) - 1 - - # Get photon production cross section n_energy = int(ace.xss[idx + 1]) - photon._xs = ace.xss[idx + 2:idx + 2 + n_energy] - - # TODO: Determine yield based on ratio of cross sections energy = ace.xss[ace.jxs[1] + threshold_idx: ace.jxs[1] + threshold_idx + n_energy] - photon.yield_ = Tabulated1D(energy, photon._xs) + + # Get photon production cross section + photon_prod_xs = ace.xss[idx + 2:idx + 2 + n_energy] + neutron_xs = rx.xs(energy) + idx = np.where(neutron_xs > 0.) + + # Calculate photon yield + yield_ = np.zeros_like(photon_prod_xs) + yield_[idx] = photon_prod_xs[idx] / neutron_xs[idx] + photon.yield_ = Tabulated1D(energy, yield_) else: raise ValueError("MFTYPE must be 12, 13, 16. Got {0}".format( @@ -277,7 +281,7 @@ class Reaction(object): threshold_idx : int The index on the energy grid corresponding to the threshold of this reaction. - xs : openmc.data.Tabulated1D + xs : callable Microscopic cross section for this reaction as a function of incident energy products : Iterable of openmc.data.Product @@ -340,9 +344,10 @@ class Reaction(object): @xs.setter def xs(self, xs): - cv.check_type('reaction cross section', xs, Tabulated1D) - for y in xs.y: - cv.check_greater_than('reaction cross section', y, 0.0, True) + cv.check_type('reaction cross section', xs, Callable) + if isinstance(xs, Tabulated1D): + for y in xs.y: + cv.check_greater_than('reaction cross section', y, 0.0, True) self._xs = xs def to_hdf5(self, group): @@ -531,6 +536,6 @@ class Reaction(object): # ====================================================================== # PHOTON PRODUCTION - rx.products += _get_photon_products(ace, mt) + rx.products += _get_photon_products(ace, rx) return rx From 3d68c07625e33cd64188df03ee03e9c31b3d4b74 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 20 Jul 2016 21:38:57 -0500 Subject: [PATCH 64/82] Add script to download and setup JEFF 3.2 multi-temp library --- .gitignore | 1 + data/get_jeff_data.py | 200 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+) create mode 100755 data/get_jeff_data.py diff --git a/.gitignore b/.gitignore index ca58065a22..2ca1c7d145 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,7 @@ data/wmp data/multipole_lib.tar.gz data/ENDF-B-VII.1-*.tar.gz data/JEFF32-ACE-*.tar.gz +data/JEFF32-ACE-*.zip data/TSLs.tar.gz data/jeff-3.2 data/jeff-3.2-hdf5 diff --git a/data/get_jeff_data.py b/data/get_jeff_data.py new file mode 100755 index 0000000000..59023d9a27 --- /dev/null +++ b/data/get_jeff_data.py @@ -0,0 +1,200 @@ +#!/usr/bin/env python + +from __future__ import print_function +import os +import shutil +import subprocess +import sys +import tarfile +import zipfile +import glob +import hashlib +import argparse + +import openmc.data + +try: + from urllib.request import urlopen +except ImportError: + from urllib2 import urlopen + + +thermal_suffix = {20: '01t', 100: '02t', 293: '03t', 296: '03t', 323: '04t', + 350: '05t', 373: '06t', 400: '07t', 423: '08t', 473: '09t', + 500: '10t', 523: '11t', 573: '12t', 600: '13t', 623: '14t', + 643: '15t', 647: '15t', 700: '16t', 773: '17t', 800: '18t', + 1000: '19t', 1200: '20t', 1600: '21t', 2000: '22t', + 3000: '23t'} + + + +parser = argparse.ArgumentParser() +parser.add_argument('-b', '--batch', action='store_true', + help='supresses standard in') +args = parser.parse_args() + +base_url = 'https://www.oecd-nea.org/dbforms/data/eva/evatapes/jeff_32/Processed/' +files = ['JEFF32-ACE-293K.tar.gz', + 'JEFF32-ACE-400K.tar.gz', + 'JEFF32-ACE-500K.tar.gz', + 'JEFF32-ACE-600K.tar.gz', + 'JEFF32-ACE-700K.tar.gz', + 'JEFF32-ACE-800K.zip', + 'JEFF32-ACE-900K.tar.gz', + 'JEFF32-ACE-1000K.tar.gz', + 'JEFF32-ACE-1200K.tar.gz', + 'JEFF32-ACE-1500K.tar.gz', + 'JEFF32-ACE-1800K.tar.gz', + 'TSLs.tar.gz'] + +block_size = 16384 + +# ============================================================================== +# DOWNLOAD FILES FROM OECD SITE + +files_complete = [] +for f in files: + # Establish connection to URL + url = base_url + f + req = urlopen(url) + + # Get file size from header + if sys.version_info[0] < 3: + file_size = int(req.info().getheaders('Content-Length')[0]) + else: + file_size = req.length + downloaded = 0 + + # Check if file already downloaded + if os.path.exists(f): + if os.path.getsize(f) == file_size: + print('Skipping {}, already downloaded'.format(f)) + files_complete.append(f) + continue + else: + if sys.version_info[0] < 3: + overwrite = raw_input('Overwrite {}? ([y]/n) '.format(f)) + else: + overwrite = input('Overwrite {}? ([y]/n) '.format(f)) + if overwrite.lower().startswith('n'): + continue + + # Copy file to disk + print('Downloading {}... '.format(f), end='') + with open(f, 'wb') as fh: + while True: + chunk = req.read(block_size) + if not chunk: break + fh.write(chunk) + downloaded += len(chunk) + status = '{:10} [{:3.2f}%]'.format(downloaded, downloaded * 100. / file_size) + print(status + chr(8)*len(status), end='') + print('') + files_complete.append(f) + +# ============================================================================== +# EXTRACT FILES FROM TGZ + +for f in files: + if f not in files_complete: + continue + + # Extract files + if f.endswith('.zip'): + with zipfile.ZipFile(f, 'r') as zipf: + print('Extracting {}...'.format(f)) + zipf.extractall('jeff-3.2') + + else: + suffix = 'ACEs_293K' if '293' in f else '' + with tarfile.open(f, 'r') as tgz: + print('Extracting {}...'.format(f)) + tgz.extractall(os.path.join('jeff-3.2', suffix)) + + # Remove thermal scattering tables from 293K data since they are + # redundant + if '293' in f: + for path in glob.glob(os.path.join('jeff-3.2', 'ACEs_293K', '*-293.ACE')): + os.remove(path) + +# ============================================================================== +# FIX ERRORS + +# A few nuclides at 400K has 03c instead of 04c +print('Assigning new cross section identifiers...') +wrong_nuclides = ['Mn55', 'Mo95', 'Nb93', 'Pd105', 'Pu239', 'Pu240', 'U235', + 'U238', 'Y89'] +for nuc in wrong_nuclides: + path = os.path.join('jeff-3.2', 'ACEs_400K', nuc + '.ACE') + print(' Fixing {} (03c --> 04c)...'.format(path)) + if os.path.isfile(path): + text = open(path, 'r').read() + text = text[:7] + '04c' + text[10:] + open(path, 'w').write(text) + +# ============================================================================== +# CHANGE ZAID FOR METASTABLES + +metastables = glob.glob(os.path.join('jeff-3.2', '**', '*M.ACE')) +for path in metastables: + print(' Fixing {} (ensure metastable)...'.format(path)) + text = open(path, 'r').read() + mass_first_digit = int(text[3]) + if mass_first_digit <= 2: + text = text[:3] + str(mass_first_digit + 4) + text[4:] + open(path, 'w').write(text) + +# ============================================================================== +# CHANGE IDENTIFIER FOR S(A,B) TABLES + +thermals = glob.glob(os.path.join('jeff-3.2', 'ANNEX_6_3_STLs', '**', '*.ace')) +for path in thermals: + print(' Fixing {} (unique suffix)...'.format(path)) + basename = os.path.basename(path) + temperature = int(basename.split('-')[1][:-4]) + text = open(path, 'r').read() + text = text[:7] + thermal_suffix[temperature] + text[10:] + open(path, 'w').write(text) + +# ============================================================================== +# CONVERT TO BINARY TO SAVE DISK SPACE + +# get a list of all ACE files +ace_files = (glob.glob(os.path.join('jeff-3.2', '**', '*.ACE')) + + glob.glob(os.path.join('jeff-3.2', 'ANNEX_6_3_STLs', '**', '*.ace'))) + +# Ask user to convert +if not args.batch: + if sys.version_info[0] < 3: + response = raw_input('Convert ACE files to binary? ([y]/n) ') + else: + response = input('Convert ACE files to binary? ([y]/n) ') +else: + response = 'y' + +# Convert files if requested +if not response or response.lower().startswith('y'): + for f in ace_files: + print(' Converting {}...'.format(f)) + openmc.data.ace.ascii_to_binary(f, f) + +# ============================================================================== +# PROMPT USER TO GENERATE HDF5 LIBRARY + +# Ask user to convert +if not args.batch: + if sys.version_info[0] < 3: + response = raw_input('Generate HDF5 library? ([y]/n) ') + else: + response = input('Generate HDF5 library? ([y]/n) ') +else: + response = 'y' + +# Convert files if requested +if not response or response.lower().startswith('y'): + # Ensure 'import openmc.data' works in the openmc-ace-to-xml script + env = os.environ.copy() + env['PYTHONPATH'] = os.path.join(os.getcwd(), os.pardir) + + subprocess.call(['../scripts/openmc-ace-to-hdf5', '-d', 'jeff-3.2-hdf5'] + + sorted(ace_files), env=env) From 5d4bd3079cb6fc6e68599775ff5f39adcb517e06 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 20 Jul 2016 22:20:41 -0500 Subject: [PATCH 65/82] Ensure offset argument in h5tinsert_f is integer(SIZE_T) --- src/hdf5_interface.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hdf5_interface.F90 b/src/hdf5_interface.F90 index 0bfe04051f..44541a50e1 100644 --- a/src/hdf5_interface.F90 +++ b/src/hdf5_interface.F90 @@ -2383,8 +2383,8 @@ contains ! Insert the 'r' and 'i' identifiers call h5tcreate_f(H5T_COMPOUND_F, size_double, dtype_real, hdf5_err) call h5tcreate_f(H5T_COMPOUND_F, size_double, dtype_imag, hdf5_err) - call h5tinsert_f(dtype_real, "r", 0_8, H5T_NATIVE_DOUBLE, hdf5_err) - call h5tinsert_f(dtype_imag, "i", 0_8, H5T_NATIVE_DOUBLE, hdf5_err) + call h5tinsert_f(dtype_real, "r", 0_SIZE_T, H5T_NATIVE_DOUBLE, hdf5_err) + call h5tinsert_f(dtype_imag, "i", 0_SIZE_T, H5T_NATIVE_DOUBLE, hdf5_err) ! Set up collective vs. independent I/O data_xfer_mode = H5FD_MPIO_COLLECTIVE_F From 9b1292fc1523fdc45b075a16c9f9b2d8b453157a Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 21 Jul 2016 09:52:47 -0500 Subject: [PATCH 66/82] Remove -flto flag for GCC optimize=on. Apparently causes trouble with gcc 5.4 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dcaf30a1d6..64eee2e9f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,7 +126,7 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU) list(APPEND ldflags -pg) endif() if(optimize) - list(APPEND f90flags -O3 -flto -fuse-linker-plugin) + list(APPEND f90flags -O3) list(APPEND cflags -O3) endif() if(openmp) From 8952865c099c2d710ede4033aaf174182bd6d2bf Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 22 Jul 2016 15:35:17 -0500 Subject: [PATCH 67/82] Remove n_reaction and n_product attributes in HDF5 data. Add /nuclide/reactions/ group, change reaction group names (reaction_MT). --- docs/source/io_formats/nuclear_data.rst | 9 ++++--- openmc/data/neutron.py | 26 +++++++++---------- openmc/data/reaction.py | 12 +++++---- src/multipole.F90 | 2 +- src/nuclide_header.F90 | 34 ++++++++++++++++++------- src/physics.F90 | 2 +- src/reaction_header.F90 | 22 +++++++++++++--- 7 files changed, 70 insertions(+), 37 deletions(-) diff --git a/docs/source/io_formats/nuclear_data.rst b/docs/source/io_formats/nuclear_data.rst index e7d4f2d32a..ba6a54eb1e 100644 --- a/docs/source/io_formats/nuclear_data.rst +++ b/docs/source/io_formats/nuclear_data.rst @@ -12,15 +12,16 @@ Incident Neutron Data **//** :Attributes: - **Z** (*int*) -- Atomic number - - **A** (*int*) -- Mass number - - **metastable** (*int*) -- Metastable state + - **A** (*int*) -- Mass number. For a natural element, A=0 is given. + - **metastable** (*int*) -- Metastable state (0=ground, 1=first + excited, etc.) - **atomic_weight_ratio** (*double*) -- Mass in units of neutron masses - **temperature** (*double*) -- Temperature in MeV - **n_reaction** (*int*) -- Number of reactions :Datasets: - **energy** (*double[]*) -- Energy points at which cross sections are tabulated -**//reaction_/** +**//reactions/reaction_/** :Attributes: - **mt** (*int*) -- ENDF MT reaction number - **label** (*char[]*) -- Name of the reaction @@ -33,7 +34,7 @@ Incident Neutron Data :Datasets: - **xs** (*double[]*) -- Cross section values tabulated against the nuclide energy grid -**//reaction_/product_/** +**//reactions/reaction_/product_/** Reaction product data is described in :ref:`product`. diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index c77ea86a1e..b6a4f03b5c 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -256,14 +256,14 @@ class IncidentNeutron(object): g.attrs['metastable'] = self.metastable g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio g.attrs['temperature'] = self.temperature - g.attrs['n_reaction'] = len(self.reactions) # Write energy grid g.create_dataset('energy', data=self.energy) # Write reaction data - for i, rx in enumerate(self.reactions.values()): - rx_group = g.create_group('reaction_{}'.format(i)) + rxs_group = g.create_group('reactions') + for rx in self.reactions.values(): + rx_group = rxs_group.create_group('reaction_{:03}'.format(rx.mt)) rx.to_hdf5(rx_group) # Write total nu data if available @@ -315,18 +315,16 @@ class IncidentNeutron(object): data.energy = group['energy'].value # Read reaction data - n_reaction = group.attrs['n_reaction'] + rxs_group = group['reactions'] + for name, obj in sorted(rxs_group.items()): + if name.startswith('reaction_'): + rx = Reaction.from_hdf5(obj, data.energy) + data.reactions[rx.mt] = rx - # Write reaction data - for i in range(n_reaction): - rx_group = group['reaction_{}'.format(i)] - rx = Reaction.from_hdf5(rx_group, data.energy) - data.reactions[rx.mt] = rx - - # Read total nu data if available - if 'total_nu' in rx_group: - tgroup = rx_group['total_nu'] - rx.derived_products = [Product.from_hdf5(tgroup)] + # Read total nu data if available + if rx.mt in (18, 19, 20, 21, 38) and 'total_nu' in group: + tgroup = group['total_nu'] + rx.derived_products.append(Product.from_hdf5(tgroup)) # Read unresolved resonance probability tables if 'urr' in group: diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 8fb79f109d..cadab0bf77 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -368,7 +368,6 @@ class Reaction(object): group.attrs['Q_value'] = self.q_value group.attrs['threshold_idx'] = self.threshold_idx + 1 group.attrs['center_of_mass'] = 1 if self.center_of_mass else 0 - group.attrs['n_product'] = len(self.products) if self.xs is not None: group.create_dataset('xs', data=self.xs.y) for i, p in enumerate(self.products): @@ -403,13 +402,16 @@ class Reaction(object): xs = group['xs'].value rx.xs = Tabulated1D(energy, xs) + # Determine number of products + n_product = 0 + for name in group: + if name.startswith('product_'): + n_product += 1 + # Read reaction products - n_product = group.attrs['n_product'] - products = [] for i in range(n_product): pgroup = group['product_{}'.format(i)] - products.append(Product.from_hdf5(pgroup)) - rx.products = products + rx.products.append(Product.from_hdf5(pgroup)) return rx diff --git a/src/multipole.F90 b/src/multipole.F90 index 3820025369..770121b9d5 100644 --- a/src/multipole.F90 +++ b/src/multipole.F90 @@ -133,7 +133,7 @@ contains accumulated_fission = .true. case default ! Search through all of our secondary reactions - do j = 1, nuc % n_reaction + do j = 1, size(nuc % reactions) if (nuc % reactions(j) % MT == MT(i)) then ! Match found diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 9cff8a5d58..9f55941389 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -1,8 +1,9 @@ module nuclide_header use, intrinsic :: ISO_FORTRAN_ENV + use, intrinsic :: ISO_C_BINDING - use hdf5, only: HID_T, HSIZE_T, SIZE_T, h5iget_name_f + use hdf5 use h5lt, only: h5ltpath_valid_f use constants @@ -82,7 +83,6 @@ module nuclide_header type(MultipoleArray), pointer :: multipole => null() ! Reactions - integer :: n_reaction ! # of reactions type(Reaction), allocatable :: reactions(:) type(DictIntInt) :: reaction_index ! map MT values to index in reactions ! array; used at tally-time @@ -182,15 +182,20 @@ module nuclide_header integer :: i integer :: Z integer :: A - integer :: n_reaction + integer :: storage_type + integer :: max_corder + integer :: n_links integer :: hdf5_err integer(HID_T) :: urr_group, nu_group integer(HID_T) :: energy_dset + integer(HID_T) :: rxs_group integer(HID_T) :: rx_group integer(HID_T) :: total_nu integer(SIZE_T) :: name_len, name_file_len + integer(HSIZE_T) :: j integer(HSIZE_T) :: dims(1) character(MAX_WORD_LEN) :: temp + type(VectorInt) :: MTs logical :: exists ! Get name of nuclide from group @@ -206,8 +211,6 @@ module nuclide_header this % zaid = 1000*Z + A + 400*this % metastable call read_attribute(this % awr, group_id, 'atomic_weight_ratio') call read_attribute(this % kT, group_id, 'temperature') - call read_attribute(n_reaction, group_id, 'n_reaction') - this % n_reaction = n_reaction ! Read energy grid energy_dset = open_dataset(group_id, 'energy') @@ -217,13 +220,26 @@ module nuclide_header call read_dataset(this % energy, energy_dset) call close_dataset(energy_dset) + ! Get MT values based on group names + rxs_group = open_group(group_id, 'reactions') + call h5gget_info_f(rxs_group, storage_type, n_links, max_corder, hdf5_err) + do j = 0, n_links - 1 + call h5lget_name_by_idx_f(rxs_group, ".", H5_INDEX_NAME_F, H5_ITER_INC_F, & + j, temp, hdf5_err, name_len) + if (starts_with(temp, "reaction_")) then + call MTs % push_back(int(str_to_int(temp(10:12)))) + end if + end do + ! Read reactions - allocate(this % reactions(n_reaction)) + allocate(this % reactions(MTs % size())) do i = 1, size(this % reactions) - rx_group = open_group(group_id, 'reaction_' // trim(to_str(i - 1))) + rx_group = open_group(rxs_group, 'reaction_' // trim(& + zero_padded(MTs % data(i), 3))) call this % reactions(i) % from_hdf5(rx_group) call close_group(rx_group) end do + call close_group(rxs_group) ! Read unresolved resonance probability tables if present call h5ltpath_valid_f(group_id, 'urr', .true., exists, hdf5_err) @@ -513,11 +529,11 @@ module nuclide_header write(unit_,*) ' # of grid points = ' // trim(to_str(this % n_grid)) write(unit_,*) ' Fissionable = ', this % fissionable write(unit_,*) ' # of fission reactions = ' // trim(to_str(this % n_fission)) - write(unit_,*) ' # of reactions = ' // trim(to_str(this % n_reaction)) + write(unit_,*) ' # of reactions = ' // trim(to_str(size(this % reactions))) ! Information on each reaction write(unit_,*) ' Reaction Q-value COM IE' - do i = 1, this % n_reaction + do i = 1, size(this % reactions) associate (rxn => this % reactions(i)) write(unit_,'(3X,A11,1X,F8.3,3X,L1,3X,I6)') & reaction_name(rxn % MT), rxn % Q_value, rxn % scatter_in_cm, & diff --git a/src/physics.F90 b/src/physics.F90 index 09a43aa99f..a9f2263955 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -346,7 +346,7 @@ contains i = i + 1 ! Check to make sure inelastic scattering reaction sampled - if (i > nuc % n_reaction) then + if (i > size(nuc % reactions)) then call write_particle_restart(p) call fatal_error("Did not sample any reaction for nuclide " & &// trim(nuc % name)) diff --git a/src/reaction_header.F90 b/src/reaction_header.F90 index 9829f6e8f6..185945563d 100644 --- a/src/reaction_header.F90 +++ b/src/reaction_header.F90 @@ -1,11 +1,12 @@ module reaction_header - use hdf5, only: HID_T, HSIZE_T + use hdf5 + use constants, only: MAX_WORD_LEN use hdf5_interface, only: read_attribute, open_group, close_group, & open_dataset, read_dataset, close_dataset, get_shape use product_header, only: ReactionProduct - use string, only: to_str + use string, only: to_str, starts_with implicit none @@ -34,9 +35,16 @@ contains integer :: i integer :: cm integer :: n_product + integer :: storage_type + integer :: max_corder + integer :: n_links + integer :: hdf5_err integer(HID_T) :: pgroup integer(HID_T) :: xs + integer(SIZE_T) :: name_len integer(HSIZE_T) :: dims(1) + integer(HSIZE_T) :: j + character(MAX_WORD_LEN) :: name call read_attribute(this % Q_value, group_id, 'Q_value') call read_attribute(this % MT, group_id, 'mt') @@ -51,8 +59,16 @@ contains call read_dataset(this % sigma, xs) call close_dataset(xs) + ! Determine number of products + call h5gget_info_f(group_id, storage_type, n_links, max_corder, hdf5_err) + n_product = 0 + do j = 0, n_links - 1 + call h5lget_name_by_idx_f(group_id, ".", H5_INDEX_NAME_F, H5_ITER_INC_F, & + j, name, hdf5_err, name_len) + if (starts_with(name, "product_")) n_product = n_product + 1 + end do + ! Read products - call read_attribute(n_product, group_id, 'n_product') allocate(this % products(n_product)) do i = 1, n_product pgroup = open_group(group_id, 'product_' // trim(to_str(i - 1))) From e2112b86ae1caca7cfddbc5674a6cb595ad7fba2 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 25 Jul 2016 06:33:37 -0500 Subject: [PATCH 68/82] Respond to @smharper comments on #684 --- data/get_jeff_data.py | 35 +- .../pythonapi/examples/mgxs-part-i.ipynb | 95 ++- .../pythonapi/examples/mgxs-part-ii.ipynb | 752 +++++++++--------- .../pythonapi/examples/mgxs-part-iii.ipynb | 214 ++--- .../pythonapi/examples/mgxs-part-iv.ipynb | 110 ++- .../pythonapi/examples/nuclear-data.ipynb | 144 ++-- .../examples/pandas-dataframes.ipynb | 577 +++++++------- .../pythonapi/examples/post-processing.ipynb | 78 +- .../pythonapi/examples/tally-arithmetic.ipynb | 152 ++-- openmc/data/angle_energy.py | 4 +- openmc/data/data.py | 192 ++--- openmc/data/energy_distribution.py | 3 + openmc/data/neutron.py | 2 +- openmc/data/reaction.py | 4 +- openmc/element.py | 4 +- openmc/opencg_compatible.py | 2 +- 16 files changed, 1183 insertions(+), 1185 deletions(-) diff --git a/data/get_jeff_data.py b/data/get_jeff_data.py index 59023d9a27..fa93948504 100755 --- a/data/get_jeff_data.py +++ b/data/get_jeff_data.py @@ -18,6 +18,20 @@ try: except ImportError: from urllib2 import urlopen +if sys.version_info[0] < 3: + askuser = raw_input +else: + askuser = input + + +download_warning = """ +WARNING: This script will download approximately 9 GB of data. Extracting and +processing the data may require as much as 30 GB of additional free disk +space. Note that if you don't need all 11 temperatures, you can modify the +'files' list in the script to download only the data you want. + +Are you sure you want to continue? ([y]/n) +""" thermal_suffix = {20: '01t', 100: '02t', 293: '03t', 296: '03t', 323: '04t', 350: '05t', 373: '06t', 400: '07t', 423: '08t', 473: '09t', @@ -26,13 +40,15 @@ thermal_suffix = {20: '01t', 100: '02t', 293: '03t', 296: '03t', 323: '04t', 1000: '19t', 1200: '20t', 1600: '21t', 2000: '22t', 3000: '23t'} - - parser = argparse.ArgumentParser() parser.add_argument('-b', '--batch', action='store_true', help='supresses standard in') args = parser.parse_args() +response = askuser(download_warning) if not args.batch else 'y' +if response.lower().startswith('n'): + sys.exit() + base_url = 'https://www.oecd-nea.org/dbforms/data/eva/evatapes/jeff_32/Processed/' files = ['JEFF32-ACE-293K.tar.gz', 'JEFF32-ACE-400K.tar.gz', @@ -72,10 +88,7 @@ for f in files: files_complete.append(f) continue else: - if sys.version_info[0] < 3: - overwrite = raw_input('Overwrite {}? ([y]/n) '.format(f)) - else: - overwrite = input('Overwrite {}? ([y]/n) '.format(f)) + overwrite = askuser('Overwrite {}? ([y]/n) '.format(f)) if overwrite.lower().startswith('n'): continue @@ -165,10 +178,7 @@ ace_files = (glob.glob(os.path.join('jeff-3.2', '**', '*.ACE')) + # Ask user to convert if not args.batch: - if sys.version_info[0] < 3: - response = raw_input('Convert ACE files to binary? ([y]/n) ') - else: - response = input('Convert ACE files to binary? ([y]/n) ') + response = askuser('Convert ACE files to binary? ([y]/n) ') else: response = 'y' @@ -183,10 +193,7 @@ if not response or response.lower().startswith('y'): # Ask user to convert if not args.batch: - if sys.version_info[0] < 3: - response = raw_input('Generate HDF5 library? ([y]/n) ') - else: - response = input('Generate HDF5 library? ([y]/n) ') + response = askuser('Generate HDF5 library? ([y]/n) ') else: response = 'y' diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index ea75bec722..b95bea4627 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -165,11 +165,11 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -419,24 +419,22 @@ "data": { "text/plain": [ "OrderedDict([('flux', Tally\n", - "\tID =\t10000\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t['flux']\n", - "\tEstimator =\ttracklength\n", - "), ('absorption', Tally\n", - "\tID =\t10001\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t['absorption']\n", - "\tEstimator =\ttracklength\n", - ")])" + " \tID =\t10000\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['flux']\n", + " \tEstimator =\ttracklength), ('absorption', Tally\n", + " \tID =\t10001\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['absorption']\n", + " \tEstimator =\ttracklength)])" ] }, "execution_count": 13, @@ -513,26 +511,25 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 19feb55e6d5e8350398627f39fb55ee8e2e63011\n", - " Date/Time: 2016-05-13 10:19:16\n", - " MPI Processes: 1\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-22 21:03:18\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for H1.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 1001.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -600,20 +597,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2300E-01 seconds\n", - " Reading cross sections = 9.3000E-02 seconds\n", - " Total time in simulation = 1.6549E+01 seconds\n", - " Time in transport only = 1.6535E+01 seconds\n", - " Time in inactive batches = 2.3650E+00 seconds\n", - " Time in active batches = 1.4184E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 3.2300E-01 seconds\n", + " Reading cross sections = 1.6900E-01 seconds\n", + " Total time in simulation = 1.9882E+01 seconds\n", + " Time in transport only = 1.9869E+01 seconds\n", + " Time in inactive batches = 2.6590E+00 seconds\n", + " Time in active batches = 1.7223E+01 seconds\n", + " Time synchronizing fission bank = 4.0000E-03 seconds\n", + " Sampling source sites = 4.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.6981E+01 seconds\n", - " Calculation Rate (inactive) = 10570.8 neutrons/second\n", - " Calculation Rate (active) = 7050.20 neutrons/second\n", + " Total time elapsed = 2.0217E+01 seconds\n", + " Calculation Rate (inactive) = 9402.03 neutrons/second\n", + " Calculation Rate (active) = 5806.19 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1167,21 +1164,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb index b882e949c5..cb4df0fadf 100644 --- a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb @@ -8,9 +8,9 @@ "\n", "* Creation of multi-group cross sections on a **heterogeneous geometry**\n", "* Calculation of cross sections on a **nuclide-by-nuclide basis**\n", - "* The use of **[tally precision triggers](https://mit-crpg.github.io/openmc/usersguide/input.html#trigger-element)** with multi-group cross sections\n", + "* The use of **[tally precision triggers](http://openmc.readthedocs.io/en/latest/usersguide/input.html#trigger-element)** with multi-group cross sections\n", "* Built-in features for **energy condensation** in downstream data processing\n", - "* The use of **[PyNE](http://pyne.io/) to plot** continuous-energy vs. multi-group cross sections\n", + "* The use of the **`openmc.data`** module to plot continuous-energy vs. multi-group cross sections\n", "* **Validation** of multi-group cross sections with **[OpenMOC](https://mit-crpg.github.io/OpenMOC/)**\n", "\n", "**Note:** This Notebook was created using [OpenMOC](https://mit-crpg.github.io/OpenMOC/) to verify the multi-group cross-sections generated by OpenMC. In order to run this Notebook in its entirety, you must have [OpenMOC](https://mit-crpg.github.io/OpenMOC/) installed on your system, along with OpenCG to convert the OpenMC geometries into OpenMOC geometries. In addition, this Notebook illustrates the use of [Pandas](http://pandas.pydata.org/) `DataFrames` to containerize multi-group cross section data." @@ -34,16 +34,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/matplotlib-1.5.1+1178.ga40c9ec-py2.7-linux-x86_64.egg/matplotlib/__init__.py:884: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n", - " warnings.warn(self.msg_depr % (key, alt_key))\n", - "/usr/local/lib/python2.7/dist-packages/matplotlib-1.5.1+1178.ga40c9ec-py2.7-linux-x86_64.egg/matplotlib/__init__.py:1362: UserWarning: This call to matplotlib.use() has no effect\n", + "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", "\n", - " warnings.warn(_use_error_msg)\n", - "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:9: QAWarning: pyne.rxname is not yet QA compliant.\n", - "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:9: QAWarning: pyne.ace is not yet QA compliant.\n" + " warnings.warn(_use_error_msg)\n" ] } ], @@ -52,11 +48,12 @@ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", - "import openmc\n", - "import openmc.mgxs as mgxs\n", "import openmoc\n", "from openmoc.opencg_compatible import get_openmoc_geometry\n", - "import pyne.ace\n", + "\n", + "import openmc\n", + "import openmc.mgxs as mgxs\n", + "import openmc.data\n", "\n", "%matplotlib inline" ] @@ -77,11 +74,11 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -444,26 +441,25 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 19feb55e6d5e8350398627f39fb55ee8e2e63011\n", - " Date/Time: 2016-05-13 10:13:48\n", - " MPI Processes: 1\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-22 21:32:41\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -522,7 +518,7 @@ " 48/1 1.21610 1.22612 +/- 0.00251\n", " 49/1 1.22199 1.22602 +/- 0.00245\n", " 50/1 1.20860 1.22558 +/- 0.00243\n", - " Triggers unsatisfied, max unc./thresh. is 1.25496 for flux in tally 10051\n", + " Triggers unsatisfied, max unc./thresh. is 1.25496 for flux in tally 10054\n", " The estimated number of batches is 73\n", " Creating state point statepoint.050.h5...\n", " 51/1 1.21850 1.22541 +/- 0.00237\n", @@ -548,7 +544,7 @@ " 71/1 1.19720 1.22444 +/- 0.00195\n", " 72/1 1.23770 1.22465 +/- 0.00193\n", " 73/1 1.23894 1.22488 +/- 0.00191\n", - " Triggers unsatisfied, max unc./thresh. is 1.00243 for flux in tally 10051\n", + " Triggers unsatisfied, max unc./thresh. is 1.00243 for flux in tally 10054\n", " The estimated number of batches is 74\n", " 74/1 1.22437 1.22487 +/- 0.00188\n", " Triggers satisfied for batch 74\n", @@ -561,20 +557,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.7400E-01 seconds\n", - " Reading cross sections = 1.2600E-01 seconds\n", - " Total time in simulation = 2.6256E+02 seconds\n", - " Time in transport only = 2.6250E+02 seconds\n", - " Time in inactive batches = 2.2890E+01 seconds\n", - " Time in active batches = 2.3967E+02 seconds\n", - " Time synchronizing fission bank = 3.4000E-02 seconds\n", - " Sampling source sites = 2.1000E-02 seconds\n", + " Total time for initialization = 4.3000E-01 seconds\n", + " Reading cross sections = 2.6000E-01 seconds\n", + " Total time in simulation = 3.4077E+02 seconds\n", + " Time in transport only = 3.4068E+02 seconds\n", + " Time in inactive batches = 2.3968E+01 seconds\n", + " Time in active batches = 3.1680E+02 seconds\n", + " Time synchronizing fission bank = 3.0000E-02 seconds\n", + " Sampling source sites = 1.7000E-02 seconds\n", " SEND/RECV source sites = 1.3000E-02 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 1.3000E-02 seconds\n", - " Total time elapsed = 2.6320E+02 seconds\n", - " Calculation Rate (inactive) = 4368.72 neutrons/second\n", - " Calculation Rate (active) = 1668.93 neutrons/second\n", + " Time accumulating tallies = 3.0000E-03 seconds\n", + " Total time for finalization = 1.6000E-02 seconds\n", + " Total time elapsed = 3.4129E+02 seconds\n", + " Calculation Rate (inactive) = 4172.23 neutrons/second\n", + " Calculation Rate (active) = 1262.62 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -685,7 +681,7 @@ "\tReaction Type =\tnu-fission\n", "\tDomain Type =\tcell\n", "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", + "\tNuclide =\tU235\n", "\tCross Sections [barns]:\n", " Group 1 [0.821 - 20.0 MeV]:\t3.30e+00 +/- 2.19e-01%\n", " Group 2 [0.00553 - 0.821 MeV]:\t3.96e+00 +/- 1.32e-01%\n", @@ -696,7 +692,7 @@ " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 2.97e-01%\n", " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 2.91e-01%\n", "\n", - "\tNuclide =\tU-238\n", + "\tNuclide =\tU238\n", "\tCross Sections [barns]:\n", " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 2.56e-01%\n", " Group 2 [0.00553 - 0.821 MeV]:\t1.21e-03 +/- 2.55e-01%\n", @@ -714,7 +710,7 @@ ], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", - "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" + "nufission.print_xs(xs_type='micro', nuclides=['U235', 'U238'])" ] }, { @@ -795,7 +791,7 @@ " 10002\n", " 1\n", " 1\n", - " H-1\n", + " H1\n", " 0.234115\n", " 0.003568\n", " \n", @@ -804,7 +800,7 @@ " 10002\n", " 1\n", " 1\n", - " O-16\n", + " O16\n", " 1.563707\n", " 0.005953\n", " \n", @@ -813,7 +809,7 @@ " 10002\n", " 1\n", " 2\n", - " H-1\n", + " H1\n", " 1.594129\n", " 0.002369\n", " \n", @@ -822,7 +818,7 @@ " 10002\n", " 1\n", " 2\n", - " O-16\n", + " O16\n", " 0.285761\n", " 0.001676\n", " \n", @@ -831,7 +827,7 @@ " 10002\n", " 1\n", " 3\n", - " H-1\n", + " H1\n", " 0.011089\n", " 0.000248\n", " \n", @@ -840,7 +836,7 @@ " 10002\n", " 1\n", " 3\n", - " O-16\n", + " O16\n", " 0.000000\n", " 0.000000\n", " \n", @@ -849,7 +845,7 @@ " 10002\n", " 1\n", " 4\n", - " H-1\n", + " H1\n", " 0.000000\n", " 0.000000\n", " \n", @@ -858,7 +854,7 @@ " 10002\n", " 1\n", " 4\n", - " O-16\n", + " O16\n", " 0.000000\n", " 0.000000\n", " \n", @@ -867,7 +863,7 @@ " 10002\n", " 1\n", " 5\n", - " H-1\n", + " H1\n", " 0.000000\n", " 0.000000\n", " \n", @@ -876,7 +872,7 @@ " 10002\n", " 1\n", " 5\n", - " O-16\n", + " O16\n", " 0.000000\n", " 0.000000\n", " \n", @@ -886,16 +882,16 @@ ], "text/plain": [ " cell group in group out nuclide mean std. dev.\n", - "126 10002 1 1 H-1 0.234115 0.003568\n", - "127 10002 1 1 O-16 1.563707 0.005953\n", - "124 10002 1 2 H-1 1.594129 0.002369\n", - "125 10002 1 2 O-16 0.285761 0.001676\n", - "122 10002 1 3 H-1 0.011089 0.000248\n", - "123 10002 1 3 O-16 0.000000 0.000000\n", - "120 10002 1 4 H-1 0.000000 0.000000\n", - "121 10002 1 4 O-16 0.000000 0.000000\n", - "118 10002 1 5 H-1 0.000000 0.000000\n", - "119 10002 1 5 O-16 0.000000 0.000000" + "126 10002 1 1 H1 0.234115 0.003568\n", + "127 10002 1 1 O16 1.563707 0.005953\n", + "124 10002 1 2 H1 1.594129 0.002369\n", + "125 10002 1 2 O16 0.285761 0.001676\n", + "122 10002 1 3 H1 0.011089 0.000248\n", + "123 10002 1 3 O16 0.000000 0.000000\n", + "120 10002 1 4 H1 0.000000 0.000000\n", + "121 10002 1 4 O16 0.000000 0.000000\n", + "118 10002 1 5 H1 0.000000 0.000000\n", + "119 10002 1 5 O16 0.000000 0.000000" ] }, "execution_count": 19, @@ -953,17 +949,17 @@ "\tReaction Type =\ttransport\n", "\tDomain Type =\tcell\n", "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", + "\tNuclide =\tU235\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t7.73e-03 +/- 5.06e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 2.05e-01%\n", "\n", - "\tNuclide =\tU-238\n", + "\tNuclide =\tU238\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 1.44e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 2.57e-01%\n", "\n", - "\tNuclide =\tO-16\n", + "\tNuclide =\tO16\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t1.46e-01 +/- 1.60e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 2.94e-01%\n", @@ -1004,7 +1000,7 @@ " 3\n", " 10000\n", " 1\n", - " U-235\n", + " U235\n", " 20.611692\n", " 0.104237\n", " \n", @@ -1012,7 +1008,7 @@ " 4\n", " 10000\n", " 1\n", - " U-238\n", + " U238\n", " 9.585358\n", " 0.013808\n", " \n", @@ -1020,7 +1016,7 @@ " 5\n", " 10000\n", " 1\n", - " O-16\n", + " O16\n", " 3.164190\n", " 0.005049\n", " \n", @@ -1028,7 +1024,7 @@ " 0\n", " 10000\n", " 2\n", - " U-235\n", + " U235\n", " 485.413426\n", " 0.996410\n", " \n", @@ -1036,7 +1032,7 @@ " 1\n", " 10000\n", " 2\n", - " U-238\n", + " U238\n", " 11.190386\n", " 0.028731\n", " \n", @@ -1044,7 +1040,7 @@ " 2\n", " 10000\n", " 2\n", - " O-16\n", + " O16\n", " 3.794859\n", " 0.011139\n", " \n", @@ -1054,12 +1050,12 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-235 20.611692 0.104237\n", - "4 10000 1 U-238 9.585358 0.013808\n", - "5 10000 1 O-16 3.164190 0.005049\n", - "0 10000 2 U-235 485.413426 0.996410\n", - "1 10000 2 U-238 11.190386 0.028731\n", - "2 10000 2 O-16 3.794859 0.011139" + "3 10000 1 U235 20.611692 0.104237\n", + "4 10000 1 U238 9.585358 0.013808\n", + "5 10000 1 O16 3.164190 0.005049\n", + "0 10000 2 U235 485.413426 0.996410\n", + "1 10000 2 U238 11.190386 0.028731\n", + "2 10000 2 O16 3.794859 0.011139" ] }, "execution_count": 22, @@ -1166,81 +1162,81 @@ "[ NORMAL ] Iteration 0:\tk_eff = 0.574672\tres = 0.000E+00\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.679815\tres = 4.253E-01\n", "[ NORMAL ] Iteration 2:\tk_eff = 0.660826\tres = 1.830E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.658940\tres = 2.793E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.643012\tres = 2.853E-03\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.658941\tres = 2.793E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.643012\tres = 2.852E-03\n", "[ NORMAL ] Iteration 5:\tk_eff = 0.625810\tres = 2.417E-02\n", "[ NORMAL ] Iteration 6:\tk_eff = 0.606678\tres = 2.675E-02\n", "[ NORMAL ] Iteration 7:\tk_eff = 0.587485\tres = 3.057E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.569028\tres = 3.164E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.569029\tres = 3.164E-02\n", "[ NORMAL ] Iteration 9:\tk_eff = 0.551707\tres = 3.142E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.536034\tres = 3.044E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.536035\tres = 3.044E-02\n", "[ NORMAL ] Iteration 11:\tk_eff = 0.522274\tres = 2.841E-02\n", "[ NORMAL ] Iteration 12:\tk_eff = 0.510609\tres = 2.567E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.501105\tres = 2.234E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.501106\tres = 2.234E-02\n", "[ NORMAL ] Iteration 14:\tk_eff = 0.493831\tres = 1.861E-02\n", "[ NORMAL ] Iteration 15:\tk_eff = 0.488780\tres = 1.452E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.485922\tres = 1.023E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.485209\tres = 5.846E-03\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.485923\tres = 1.023E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.485210\tres = 5.846E-03\n", "[ NORMAL ] Iteration 18:\tk_eff = 0.486569\tres = 1.467E-03\n", "[ NORMAL ] Iteration 19:\tk_eff = 0.489903\tres = 2.801E-03\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.495102\tres = 6.853E-03\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.495103\tres = 6.852E-03\n", "[ NORMAL ] Iteration 21:\tk_eff = 0.502053\tres = 1.061E-02\n", "[ NORMAL ] Iteration 22:\tk_eff = 0.510627\tres = 1.404E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.520692\tres = 1.708E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.532116\tres = 1.971E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.544763\tres = 2.194E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.558500\tres = 2.377E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.520693\tres = 1.708E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.532117\tres = 1.971E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.544764\tres = 2.194E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.558501\tres = 2.377E-02\n", "[ NORMAL ] Iteration 27:\tk_eff = 0.573195\tres = 2.522E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.588717\tres = 2.631E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.604945\tres = 2.708E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.588718\tres = 2.631E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.604946\tres = 2.708E-02\n", "[ NORMAL ] Iteration 30:\tk_eff = 0.621759\tres = 2.756E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.639046\tres = 2.779E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.656701\tres = 2.780E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.639047\tres = 2.779E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.656702\tres = 2.780E-02\n", "[ NORMAL ] Iteration 33:\tk_eff = 0.674624\tres = 2.763E-02\n", "[ NORMAL ] Iteration 34:\tk_eff = 0.692722\tres = 2.729E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.710909\tres = 2.683E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.729109\tres = 2.626E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.710910\tres = 2.683E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.729109\tres = 2.625E-02\n", "[ NORMAL ] Iteration 37:\tk_eff = 0.747248\tres = 2.560E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.765262\tres = 2.488E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.783093\tres = 2.411E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.800689\tres = 2.330E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.818004\tres = 2.247E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.765263\tres = 2.488E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.783094\tres = 2.411E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.800690\tres = 2.330E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.818005\tres = 2.247E-02\n", "[ NORMAL ] Iteration 42:\tk_eff = 0.834999\tres = 2.163E-02\n", "[ NORMAL ] Iteration 43:\tk_eff = 0.851638\tres = 2.078E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.867891\tres = 1.993E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.883735\tres = 1.909E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.899148\tres = 1.826E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.914114\tres = 1.744E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.928621\tres = 1.664E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.867892\tres = 1.993E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.883736\tres = 1.909E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.899149\tres = 1.826E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.914115\tres = 1.744E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.928622\tres = 1.664E-02\n", "[ NORMAL ] Iteration 49:\tk_eff = 0.942659\tres = 1.587E-02\n", "[ NORMAL ] Iteration 50:\tk_eff = 0.956221\tres = 1.512E-02\n", "[ NORMAL ] Iteration 51:\tk_eff = 0.969305\tres = 1.439E-02\n", "[ NORMAL ] Iteration 52:\tk_eff = 0.981909\tres = 1.368E-02\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.994034\tres = 1.300E-02\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.994035\tres = 1.300E-02\n", "[ NORMAL ] Iteration 54:\tk_eff = 1.005685\tres = 1.235E-02\n", "[ NORMAL ] Iteration 55:\tk_eff = 1.016866\tres = 1.172E-02\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.027583\tres = 1.112E-02\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.037845\tres = 1.054E-02\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.027584\tres = 1.112E-02\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.037846\tres = 1.054E-02\n", "[ NORMAL ] Iteration 58:\tk_eff = 1.047661\tres = 9.986E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.057040\tres = 9.458E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.065993\tres = 8.952E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.057040\tres = 9.457E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.065994\tres = 8.953E-03\n", "[ NORMAL ] Iteration 61:\tk_eff = 1.074533\tres = 8.470E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.082670\tres = 8.011E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.082671\tres = 8.011E-03\n", "[ NORMAL ] Iteration 63:\tk_eff = 1.090418\tres = 7.573E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.097789\tres = 7.156E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.104796\tres = 6.760E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.111452\tres = 6.383E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.097790\tres = 7.156E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.104797\tres = 6.760E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.111453\tres = 6.383E-03\n", "[ NORMAL ] Iteration 67:\tk_eff = 1.117770\tres = 6.025E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.123764\tres = 5.685E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.129445\tres = 5.362E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.123764\tres = 5.684E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.129446\tres = 5.362E-03\n", "[ NORMAL ] Iteration 70:\tk_eff = 1.134828\tres = 5.056E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.139924\tres = 4.766E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.139924\tres = 4.765E-03\n", "[ NORMAL ] Iteration 72:\tk_eff = 1.144746\tres = 4.491E-03\n", "[ NORMAL ] Iteration 73:\tk_eff = 1.149306\tres = 4.230E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.153617\tres = 3.984E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.157689\tres = 3.750E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.153617\tres = 3.983E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.157688\tres = 3.751E-03\n", "[ NORMAL ] Iteration 76:\tk_eff = 1.161534\tres = 3.530E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.165163\tres = 3.321E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.165163\tres = 3.322E-03\n", "[ NORMAL ] Iteration 78:\tk_eff = 1.168586\tres = 3.124E-03\n", "[ NORMAL ] Iteration 79:\tk_eff = 1.171813\tres = 2.938E-03\n", "[ NORMAL ] Iteration 80:\tk_eff = 1.174855\tres = 2.762E-03\n", @@ -1248,84 +1244,84 @@ "[ NORMAL ] Iteration 82:\tk_eff = 1.180419\tres = 2.439E-03\n", "[ NORMAL ] Iteration 83:\tk_eff = 1.182960\tres = 2.291E-03\n", "[ NORMAL ] Iteration 84:\tk_eff = 1.185350\tres = 2.152E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.187598\tres = 2.021E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.189712\tres = 1.897E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.191699\tres = 1.780E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.187599\tres = 2.021E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.189713\tres = 1.897E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.191700\tres = 1.780E-03\n", "[ NORMAL ] Iteration 88:\tk_eff = 1.193567\tres = 1.670E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.195320\tres = 1.567E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.195321\tres = 1.567E-03\n", "[ NORMAL ] Iteration 90:\tk_eff = 1.196967\tres = 1.469E-03\n", "[ NORMAL ] Iteration 91:\tk_eff = 1.198513\tres = 1.378E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.199964\tres = 1.292E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.199964\tres = 1.291E-03\n", "[ NORMAL ] Iteration 93:\tk_eff = 1.201326\tres = 1.211E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.202602\tres = 1.134E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.203800\tres = 1.063E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.204922\tres = 9.955E-04\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.205974\tres = 9.323E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.206959\tres = 8.730E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.207883\tres = 8.173E-04\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.208747\tres = 7.649E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.209557\tres = 7.159E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.210315\tres = 6.698E-04\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.211024\tres = 6.266E-04\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.211688\tres = 5.861E-04\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.212309\tres = 5.481E-04\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.212890\tres = 5.125E-04\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.213433\tres = 4.791E-04\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.213941\tres = 4.479E-04\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.214416\tres = 4.186E-04\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.214860\tres = 3.912E-04\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.215275\tres = 3.655E-04\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.215662\tres = 3.414E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.216024\tres = 3.189E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.216362\tres = 2.979E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.216678\tres = 2.781E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.216973\tres = 2.597E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.217249\tres = 2.425E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.217506\tres = 2.263E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.217746\tres = 2.112E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.217970\tres = 1.971E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.218179\tres = 1.840E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.218374\tres = 1.716E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.218556\tres = 1.601E-04\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.218726\tres = 1.494E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.218884\tres = 1.393E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.219032\tres = 1.299E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.219170\tres = 1.212E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.219298\tres = 1.130E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.219418\tres = 1.053E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.219529\tres = 9.821E-05\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.219633\tres = 9.155E-05\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.219730\tres = 8.534E-05\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.219821\tres = 7.954E-05\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.219905\tres = 7.412E-05\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.219984\tres = 6.907E-05\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.220057\tres = 6.436E-05\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.220125\tres = 5.997E-05\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.220188\tres = 5.587E-05\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.220248\tres = 5.205E-05\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.220303\tres = 4.848E-05\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.220354\tres = 4.516E-05\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.220402\tres = 4.206E-05\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.220446\tres = 3.917E-05\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.220488\tres = 3.648E-05\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.220526\tres = 3.397E-05\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.220562\tres = 3.163E-05\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.220596\tres = 2.945E-05\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.220627\tres = 2.742E-05\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.220656\tres = 2.552E-05\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.220683\tres = 2.376E-05\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.220708\tres = 2.212E-05\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.220732\tres = 2.059E-05\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.220753\tres = 1.916E-05\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.220774\tres = 1.783E-05\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.220792\tres = 1.660E-05\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.220810\tres = 1.545E-05\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.220826\tres = 1.437E-05\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.220841\tres = 1.337E-05\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.220856\tres = 1.244E-05\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.220869\tres = 1.158E-05\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.220881\tres = 1.077E-05\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.220892\tres = 1.002E-05\n" + "[ NORMAL ] Iteration 94:\tk_eff = 1.202602\tres = 1.135E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.203800\tres = 1.062E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.204922\tres = 9.959E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.205974\tres = 9.321E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.206961\tres = 8.732E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.207884\tres = 8.175E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.208748\tres = 7.646E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.209558\tres = 7.159E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.210316\tres = 6.699E-04\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.211025\tres = 6.262E-04\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.211689\tres = 5.864E-04\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.212310\tres = 5.481E-04\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.212891\tres = 5.124E-04\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.213434\tres = 4.792E-04\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.213942\tres = 4.477E-04\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.214416\tres = 4.189E-04\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.214861\tres = 3.907E-04\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.215275\tres = 3.660E-04\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.215663\tres = 3.414E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.216025\tres = 3.188E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.216363\tres = 2.981E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.216679\tres = 2.776E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.216974\tres = 2.599E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.217250\tres = 2.427E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.217507\tres = 2.263E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.217747\tres = 2.115E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.217970\tres = 1.970E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.218180\tres = 1.834E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.218375\tres = 1.718E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.218557\tres = 1.602E-04\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.218726\tres = 1.496E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.218885\tres = 1.387E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.219032\tres = 1.301E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.219169\tres = 1.211E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.219298\tres = 1.127E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.219418\tres = 1.058E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.219529\tres = 9.828E-05\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.219633\tres = 9.100E-05\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.219730\tres = 8.530E-05\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.219820\tres = 7.940E-05\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.219904\tres = 7.409E-05\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.219983\tres = 6.876E-05\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.220056\tres = 6.455E-05\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.220124\tres = 5.969E-05\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.220187\tres = 5.603E-05\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.220246\tres = 5.166E-05\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.220301\tres = 4.829E-05\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.220352\tres = 4.510E-05\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.220400\tres = 4.199E-05\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.220445\tres = 3.939E-05\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.220486\tres = 3.630E-05\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.220525\tres = 3.362E-05\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.220561\tres = 3.181E-05\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.220594\tres = 2.977E-05\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.220626\tres = 2.745E-05\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.220655\tres = 2.569E-05\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.220682\tres = 2.376E-05\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.220707\tres = 2.201E-05\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.220730\tres = 2.071E-05\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.220752\tres = 1.925E-05\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.220772\tres = 1.793E-05\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.220791\tres = 1.669E-05\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.220809\tres = 1.554E-05\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.220826\tres = 1.457E-05\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.220841\tres = 1.372E-05\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.220855\tres = 1.249E-05\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.220868\tres = 1.138E-05\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.220881\tres = 1.104E-05\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.220892\tres = 1.028E-05\n" ] } ], @@ -1436,22 +1432,22 @@ "[ NORMAL ] Computing the eigenvalue...\n", "[ NORMAL ] Iteration 0:\tk_eff = 0.495816\tres = 0.000E+00\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.557477\tres = 5.042E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.518300\tres = 1.244E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.509211\tres = 7.027E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.496489\tres = 1.754E-02\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.518301\tres = 1.244E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.509212\tres = 7.027E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.496490\tres = 1.754E-02\n", "[ NORMAL ] Iteration 5:\tk_eff = 0.488581\tres = 2.498E-02\n", "[ NORMAL ] Iteration 6:\tk_eff = 0.482897\tres = 1.593E-02\n", "[ NORMAL ] Iteration 7:\tk_eff = 0.479775\tres = 1.163E-02\n", "[ NORMAL ] Iteration 8:\tk_eff = 0.478834\tres = 6.465E-03\n", "[ NORMAL ] Iteration 9:\tk_eff = 0.479871\tres = 1.960E-03\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.482684\tres = 2.166E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.487084\tres = 5.861E-03\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.482684\tres = 2.165E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.487084\tres = 5.860E-03\n", "[ NORMAL ] Iteration 12:\tk_eff = 0.492900\tres = 9.116E-03\n", "[ NORMAL ] Iteration 13:\tk_eff = 0.499971\tres = 1.194E-02\n", "[ NORMAL ] Iteration 14:\tk_eff = 0.508153\tres = 1.435E-02\n", "[ NORMAL ] Iteration 15:\tk_eff = 0.517312\tres = 1.637E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.527324\tres = 1.802E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.538079\tres = 1.935E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.527325\tres = 1.802E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.538079\tres = 1.936E-02\n", "[ NORMAL ] Iteration 18:\tk_eff = 0.549472\tres = 2.039E-02\n", "[ NORMAL ] Iteration 19:\tk_eff = 0.561410\tres = 2.117E-02\n", "[ NORMAL ] Iteration 20:\tk_eff = 0.573807\tres = 2.173E-02\n", @@ -1471,200 +1467,200 @@ "[ NORMAL ] Iteration 34:\tk_eff = 0.762510\tres = 1.812E-02\n", "[ NORMAL ] Iteration 35:\tk_eff = 0.775514\tres = 1.759E-02\n", "[ NORMAL ] Iteration 36:\tk_eff = 0.788326\tres = 1.705E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.800934\tres = 1.652E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.800935\tres = 1.652E-02\n", "[ NORMAL ] Iteration 38:\tk_eff = 0.813328\tres = 1.599E-02\n", "[ NORMAL ] Iteration 39:\tk_eff = 0.825497\tres = 1.547E-02\n", "[ NORMAL ] Iteration 40:\tk_eff = 0.837433\tres = 1.496E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.849131\tres = 1.446E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.860584\tres = 1.397E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.871789\tres = 1.349E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.849130\tres = 1.446E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.860583\tres = 1.397E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.871788\tres = 1.349E-02\n", "[ NORMAL ] Iteration 44:\tk_eff = 0.882742\tres = 1.302E-02\n", "[ NORMAL ] Iteration 45:\tk_eff = 0.893442\tres = 1.256E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.903888\tres = 1.212E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.914078\tres = 1.169E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.924013\tres = 1.127E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.933694\tres = 1.087E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.903887\tres = 1.212E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.914077\tres = 1.169E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.924012\tres = 1.127E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.933693\tres = 1.087E-02\n", "[ NORMAL ] Iteration 50:\tk_eff = 0.943122\tres = 1.048E-02\n", "[ NORMAL ] Iteration 51:\tk_eff = 0.952299\tres = 1.010E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.961228\tres = 9.731E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.969911\tres = 9.376E-03\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.961228\tres = 9.730E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.969911\tres = 9.377E-03\n", "[ NORMAL ] Iteration 54:\tk_eff = 0.978351\tres = 9.033E-03\n", "[ NORMAL ] Iteration 55:\tk_eff = 0.986552\tres = 8.702E-03\n", "[ NORMAL ] Iteration 56:\tk_eff = 0.994517\tres = 8.382E-03\n", "[ NORMAL ] Iteration 57:\tk_eff = 1.002250\tres = 8.074E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.009756\tres = 7.776E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.009755\tres = 7.776E-03\n", "[ NORMAL ] Iteration 59:\tk_eff = 1.017037\tres = 7.488E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.024100\tres = 7.211E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.030948\tres = 6.944E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.037585\tres = 6.687E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.044017\tres = 6.438E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.050248\tres = 6.199E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.056282\tres = 5.968E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.024099\tres = 7.211E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.030947\tres = 6.944E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.037584\tres = 6.687E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.044016\tres = 6.438E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.050247\tres = 6.199E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.056282\tres = 5.969E-03\n", "[ NORMAL ] Iteration 66:\tk_eff = 1.062125\tres = 5.746E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.067782\tres = 5.532E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.073256\tres = 5.325E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.078553\tres = 5.127E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.083677\tres = 4.935E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.088633\tres = 4.751E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.067781\tres = 5.531E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.073255\tres = 5.326E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.078552\tres = 5.126E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.083676\tres = 4.936E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.088632\tres = 4.751E-03\n", "[ NORMAL ] Iteration 72:\tk_eff = 1.093425\tres = 4.573E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.098059\tres = 4.402E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.102538\tres = 4.238E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.106867\tres = 4.079E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.111050\tres = 3.926E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.115091\tres = 3.779E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.118996\tres = 3.638E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.122767\tres = 3.501E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.098058\tres = 4.403E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.102537\tres = 4.237E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.106866\tres = 4.079E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.111049\tres = 3.926E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.115090\tres = 3.779E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.118995\tres = 3.638E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.122766\tres = 3.501E-03\n", "[ NORMAL ] Iteration 80:\tk_eff = 1.126408\tres = 3.370E-03\n", "[ NORMAL ] Iteration 81:\tk_eff = 1.129925\tres = 3.244E-03\n", "[ NORMAL ] Iteration 82:\tk_eff = 1.133320\tres = 3.122E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.136598\tres = 3.005E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.139762\tres = 2.892E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.142815\tres = 2.784E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.145762\tres = 2.679E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.148605\tres = 2.578E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.136597\tres = 3.005E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.139761\tres = 2.892E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.142815\tres = 2.783E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.145761\tres = 2.679E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.148605\tres = 2.579E-03\n", "[ NORMAL ] Iteration 88:\tk_eff = 1.151348\tres = 2.482E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.153995\tres = 2.388E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.156548\tres = 2.299E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.159010\tres = 2.212E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.153994\tres = 2.388E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.156547\tres = 2.299E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.159009\tres = 2.212E-03\n", "[ NORMAL ] Iteration 92:\tk_eff = 1.161384\tres = 2.129E-03\n", "[ NORMAL ] Iteration 93:\tk_eff = 1.163674\tres = 2.049E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.165883\tres = 1.972E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.165882\tres = 1.972E-03\n", "[ NORMAL ] Iteration 95:\tk_eff = 1.168012\tres = 1.898E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.170064\tres = 1.826E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.170064\tres = 1.827E-03\n", "[ NORMAL ] Iteration 97:\tk_eff = 1.172043\tres = 1.757E-03\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.173951\tres = 1.691E-03\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.173951\tres = 1.692E-03\n", "[ NORMAL ] Iteration 99:\tk_eff = 1.175790\tres = 1.628E-03\n", "[ NORMAL ] Iteration 100:\tk_eff = 1.177562\tres = 1.566E-03\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.179270\tres = 1.507E-03\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.179269\tres = 1.507E-03\n", "[ NORMAL ] Iteration 102:\tk_eff = 1.180916\tres = 1.450E-03\n", "[ NORMAL ] Iteration 103:\tk_eff = 1.182502\tres = 1.396E-03\n", "[ NORMAL ] Iteration 104:\tk_eff = 1.184030\tres = 1.343E-03\n", "[ NORMAL ] Iteration 105:\tk_eff = 1.185503\tres = 1.292E-03\n", "[ NORMAL ] Iteration 106:\tk_eff = 1.186922\tres = 1.244E-03\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.188289\tres = 1.197E-03\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.189605\tres = 1.152E-03\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.188288\tres = 1.197E-03\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.189606\tres = 1.151E-03\n", "[ NORMAL ] Iteration 109:\tk_eff = 1.190874\tres = 1.108E-03\n", "[ NORMAL ] Iteration 110:\tk_eff = 1.192096\tres = 1.066E-03\n", "[ NORMAL ] Iteration 111:\tk_eff = 1.193273\tres = 1.026E-03\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.194407\tres = 9.873E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.195498\tres = 9.500E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.196550\tres = 9.141E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.197563\tres = 8.796E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.198538\tres = 8.464E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.199477\tres = 8.144E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.200381\tres = 7.836E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.201252\tres = 7.539E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.202091\tres = 7.254E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.202898\tres = 6.980E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.203675\tres = 6.715E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.204423\tres = 6.461E-04\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.194407\tres = 9.870E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.195499\tres = 9.504E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.196550\tres = 9.140E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.197563\tres = 8.792E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.198538\tres = 8.468E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.199477\tres = 8.140E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.200382\tres = 7.837E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.201253\tres = 7.539E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.202091\tres = 7.257E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.202898\tres = 6.979E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.203676\tres = 6.716E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.204424\tres = 6.465E-04\n", "[ NORMAL ] Iteration 124:\tk_eff = 1.205144\tres = 6.217E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.205837\tres = 5.981E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.206505\tres = 5.755E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.207148\tres = 5.537E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.207766\tres = 5.327E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.208362\tres = 5.125E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.208935\tres = 4.931E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.205838\tres = 5.979E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.206505\tres = 5.760E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.207148\tres = 5.532E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.207767\tres = 5.325E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.208363\tres = 5.125E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.208936\tres = 4.935E-04\n", "[ NORMAL ] Iteration 131:\tk_eff = 1.209487\tres = 4.744E-04\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.210018\tres = 4.564E-04\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.210529\tres = 4.391E-04\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.211021\tres = 4.225E-04\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.211495\tres = 4.064E-04\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.211950\tres = 3.910E-04\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.212389\tres = 3.762E-04\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.212811\tres = 3.619E-04\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.213217\tres = 3.482E-04\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.213608\tres = 3.349E-04\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.213984\tres = 3.222E-04\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.214346\tres = 3.100E-04\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.214695\tres = 2.982E-04\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.215030\tres = 2.869E-04\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.215353\tres = 2.760E-04\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.215663\tres = 2.655E-04\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.215962\tres = 2.554E-04\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.216249\tres = 2.457E-04\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.216526\tres = 2.364E-04\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.216792\tres = 2.274E-04\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.217048\tres = 2.187E-04\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.217294\tres = 2.104E-04\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.210018\tres = 4.559E-04\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.210529\tres = 4.392E-04\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.211021\tres = 4.223E-04\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.211495\tres = 4.060E-04\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.211951\tres = 3.914E-04\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.212390\tres = 3.763E-04\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.212812\tres = 3.623E-04\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.213217\tres = 3.480E-04\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.213608\tres = 3.344E-04\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.213984\tres = 3.223E-04\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.214347\tres = 3.097E-04\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.214695\tres = 2.985E-04\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.215031\tres = 2.869E-04\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.215352\tres = 2.763E-04\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.215663\tres = 2.648E-04\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.215962\tres = 2.552E-04\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.216249\tres = 2.460E-04\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.216526\tres = 2.362E-04\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.216792\tres = 2.279E-04\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.217048\tres = 2.188E-04\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.217294\tres = 2.100E-04\n", "[ NORMAL ] Iteration 153:\tk_eff = 1.217531\tres = 2.024E-04\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.217759\tres = 1.947E-04\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.217979\tres = 1.873E-04\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.218190\tres = 1.802E-04\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.217759\tres = 1.948E-04\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.217978\tres = 1.872E-04\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.218189\tres = 1.799E-04\n", "[ NORMAL ] Iteration 157:\tk_eff = 1.218393\tres = 1.733E-04\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.218588\tres = 1.667E-04\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.218776\tres = 1.604E-04\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.218957\tres = 1.543E-04\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.219131\tres = 1.484E-04\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.219298\tres = 1.427E-04\n", - "[ NORMAL ] Iteration 163:\tk_eff = 1.219459\tres = 1.373E-04\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.218588\tres = 1.668E-04\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.218776\tres = 1.600E-04\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.218957\tres = 1.544E-04\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.219131\tres = 1.485E-04\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.219298\tres = 1.428E-04\n", + "[ NORMAL ] Iteration 163:\tk_eff = 1.219459\tres = 1.374E-04\n", "[ NORMAL ] Iteration 164:\tk_eff = 1.219614\tres = 1.321E-04\n", "[ NORMAL ] Iteration 165:\tk_eff = 1.219763\tres = 1.270E-04\n", - "[ NORMAL ] Iteration 166:\tk_eff = 1.219907\tres = 1.222E-04\n", - "[ NORMAL ] Iteration 167:\tk_eff = 1.220045\tres = 1.176E-04\n", - "[ NORMAL ] Iteration 168:\tk_eff = 1.220177\tres = 1.131E-04\n", - "[ NORMAL ] Iteration 169:\tk_eff = 1.220305\tres = 1.088E-04\n", - "[ NORMAL ] Iteration 170:\tk_eff = 1.220428\tres = 1.046E-04\n", - "[ NORMAL ] Iteration 171:\tk_eff = 1.220546\tres = 1.006E-04\n", - "[ NORMAL ] Iteration 172:\tk_eff = 1.220660\tres = 9.680E-05\n", - "[ NORMAL ] Iteration 173:\tk_eff = 1.220769\tres = 9.311E-05\n", - "[ NORMAL ] Iteration 174:\tk_eff = 1.220874\tres = 8.956E-05\n", - "[ NORMAL ] Iteration 175:\tk_eff = 1.220975\tres = 8.614E-05\n", - "[ NORMAL ] Iteration 176:\tk_eff = 1.221073\tres = 8.286E-05\n", - "[ NORMAL ] Iteration 177:\tk_eff = 1.221166\tres = 7.970E-05\n", - "[ NORMAL ] Iteration 178:\tk_eff = 1.221256\tres = 7.666E-05\n", - "[ NORMAL ] Iteration 179:\tk_eff = 1.221343\tres = 7.373E-05\n", - "[ NORMAL ] Iteration 180:\tk_eff = 1.221426\tres = 7.092E-05\n", - "[ NORMAL ] Iteration 181:\tk_eff = 1.221506\tres = 6.822E-05\n", - "[ NORMAL ] Iteration 182:\tk_eff = 1.221583\tres = 6.562E-05\n", - "[ NORMAL ] Iteration 183:\tk_eff = 1.221658\tres = 6.311E-05\n", - "[ NORMAL ] Iteration 184:\tk_eff = 1.221729\tres = 6.070E-05\n", - "[ NORMAL ] Iteration 185:\tk_eff = 1.221797\tres = 5.839E-05\n", - "[ NORMAL ] Iteration 186:\tk_eff = 1.221863\tres = 5.616E-05\n", - "[ NORMAL ] Iteration 187:\tk_eff = 1.221927\tres = 5.402E-05\n", - "[ NORMAL ] Iteration 188:\tk_eff = 1.221988\tres = 5.196E-05\n", - "[ NORMAL ] Iteration 189:\tk_eff = 1.222047\tres = 4.997E-05\n", - "[ NORMAL ] Iteration 190:\tk_eff = 1.222103\tres = 4.807E-05\n", - "[ NORMAL ] Iteration 191:\tk_eff = 1.222158\tres = 4.623E-05\n", - "[ NORMAL ] Iteration 192:\tk_eff = 1.222210\tres = 4.447E-05\n", - "[ NORMAL ] Iteration 193:\tk_eff = 1.222260\tres = 4.277E-05\n", - "[ NORMAL ] Iteration 194:\tk_eff = 1.222308\tres = 4.114E-05\n", - "[ NORMAL ] Iteration 195:\tk_eff = 1.222355\tres = 3.957E-05\n", - "[ NORMAL ] Iteration 196:\tk_eff = 1.222400\tres = 3.805E-05\n", - "[ NORMAL ] Iteration 197:\tk_eff = 1.222443\tres = 3.660E-05\n", - "[ NORMAL ] Iteration 198:\tk_eff = 1.222484\tres = 3.520E-05\n", - "[ NORMAL ] Iteration 199:\tk_eff = 1.222524\tres = 3.386E-05\n", - "[ NORMAL ] Iteration 200:\tk_eff = 1.222562\tres = 3.257E-05\n", - "[ NORMAL ] Iteration 201:\tk_eff = 1.222599\tres = 3.132E-05\n", - "[ NORMAL ] Iteration 202:\tk_eff = 1.222635\tres = 3.013E-05\n", - "[ NORMAL ] Iteration 203:\tk_eff = 1.222669\tres = 2.898E-05\n", - "[ NORMAL ] Iteration 204:\tk_eff = 1.222701\tres = 2.787E-05\n", - "[ NORMAL ] Iteration 205:\tk_eff = 1.222733\tres = 2.680E-05\n", - "[ NORMAL ] Iteration 206:\tk_eff = 1.222763\tres = 2.578E-05\n", - "[ NORMAL ] Iteration 207:\tk_eff = 1.222792\tres = 2.480E-05\n", - "[ NORMAL ] Iteration 208:\tk_eff = 1.222820\tres = 2.385E-05\n", - "[ NORMAL ] Iteration 209:\tk_eff = 1.222847\tres = 2.294E-05\n", - "[ NORMAL ] Iteration 210:\tk_eff = 1.222873\tres = 2.206E-05\n", - "[ NORMAL ] Iteration 211:\tk_eff = 1.222898\tres = 2.122E-05\n", - "[ NORMAL ] Iteration 212:\tk_eff = 1.222922\tres = 2.041E-05\n", - "[ NORMAL ] Iteration 213:\tk_eff = 1.222945\tres = 1.963E-05\n", - "[ NORMAL ] Iteration 214:\tk_eff = 1.222968\tres = 1.888E-05\n", - "[ NORMAL ] Iteration 215:\tk_eff = 1.222989\tres = 1.816E-05\n", - "[ NORMAL ] Iteration 216:\tk_eff = 1.223009\tres = 1.746E-05\n", - "[ NORMAL ] Iteration 217:\tk_eff = 1.223029\tres = 1.680E-05\n", - "[ NORMAL ] Iteration 218:\tk_eff = 1.223048\tres = 1.615E-05\n", - "[ NORMAL ] Iteration 219:\tk_eff = 1.223067\tres = 1.554E-05\n", - "[ NORMAL ] Iteration 220:\tk_eff = 1.223084\tres = 1.494E-05\n", - "[ NORMAL ] Iteration 221:\tk_eff = 1.223101\tres = 1.437E-05\n", - "[ NORMAL ] Iteration 222:\tk_eff = 1.223117\tres = 1.382E-05\n", - "[ NORMAL ] Iteration 223:\tk_eff = 1.223133\tres = 1.329E-05\n", - "[ NORMAL ] Iteration 224:\tk_eff = 1.223148\tres = 1.279E-05\n", - "[ NORMAL ] Iteration 225:\tk_eff = 1.223162\tres = 1.230E-05\n", - "[ NORMAL ] Iteration 226:\tk_eff = 1.223176\tres = 1.183E-05\n", - "[ NORMAL ] Iteration 227:\tk_eff = 1.223190\tres = 1.137E-05\n", - "[ NORMAL ] Iteration 228:\tk_eff = 1.223203\tres = 1.094E-05\n", - "[ NORMAL ] Iteration 229:\tk_eff = 1.223215\tres = 1.052E-05\n", - "[ NORMAL ] Iteration 230:\tk_eff = 1.223227\tres = 1.012E-05\n" + "[ NORMAL ] Iteration 166:\tk_eff = 1.219906\tres = 1.221E-04\n", + "[ NORMAL ] Iteration 167:\tk_eff = 1.220044\tres = 1.175E-04\n", + "[ NORMAL ] Iteration 168:\tk_eff = 1.220177\tres = 1.130E-04\n", + "[ NORMAL ] Iteration 169:\tk_eff = 1.220304\tres = 1.084E-04\n", + "[ NORMAL ] Iteration 170:\tk_eff = 1.220427\tres = 1.045E-04\n", + "[ NORMAL ] Iteration 171:\tk_eff = 1.220545\tres = 1.007E-04\n", + "[ NORMAL ] Iteration 172:\tk_eff = 1.220659\tres = 9.678E-05\n", + "[ NORMAL ] Iteration 173:\tk_eff = 1.220768\tres = 9.304E-05\n", + "[ NORMAL ] Iteration 174:\tk_eff = 1.220874\tres = 8.984E-05\n", + "[ NORMAL ] Iteration 175:\tk_eff = 1.220975\tres = 8.640E-05\n", + "[ NORMAL ] Iteration 176:\tk_eff = 1.221073\tres = 8.326E-05\n", + "[ NORMAL ] Iteration 177:\tk_eff = 1.221166\tres = 7.985E-05\n", + "[ NORMAL ] Iteration 178:\tk_eff = 1.221256\tres = 7.662E-05\n", + "[ NORMAL ] Iteration 179:\tk_eff = 1.221343\tres = 7.371E-05\n", + "[ NORMAL ] Iteration 180:\tk_eff = 1.221426\tres = 7.091E-05\n", + "[ NORMAL ] Iteration 181:\tk_eff = 1.221506\tres = 6.827E-05\n", + "[ NORMAL ] Iteration 182:\tk_eff = 1.221583\tres = 6.560E-05\n", + "[ NORMAL ] Iteration 183:\tk_eff = 1.221657\tres = 6.320E-05\n", + "[ NORMAL ] Iteration 184:\tk_eff = 1.221729\tres = 6.067E-05\n", + "[ NORMAL ] Iteration 185:\tk_eff = 1.221797\tres = 5.829E-05\n", + "[ NORMAL ] Iteration 186:\tk_eff = 1.221863\tres = 5.641E-05\n", + "[ NORMAL ] Iteration 187:\tk_eff = 1.221927\tres = 5.382E-05\n", + "[ NORMAL ] Iteration 188:\tk_eff = 1.221987\tres = 5.196E-05\n", + "[ NORMAL ] Iteration 189:\tk_eff = 1.222046\tres = 4.968E-05\n", + "[ NORMAL ] Iteration 190:\tk_eff = 1.222102\tres = 4.810E-05\n", + "[ NORMAL ] Iteration 191:\tk_eff = 1.222157\tres = 4.617E-05\n", + "[ NORMAL ] Iteration 192:\tk_eff = 1.222209\tres = 4.456E-05\n", + "[ NORMAL ] Iteration 193:\tk_eff = 1.222260\tres = 4.287E-05\n", + "[ NORMAL ] Iteration 194:\tk_eff = 1.222308\tres = 4.122E-05\n", + "[ NORMAL ] Iteration 195:\tk_eff = 1.222355\tres = 3.971E-05\n", + "[ NORMAL ] Iteration 196:\tk_eff = 1.222399\tres = 3.805E-05\n", + "[ NORMAL ] Iteration 197:\tk_eff = 1.222442\tres = 3.657E-05\n", + "[ NORMAL ] Iteration 198:\tk_eff = 1.222484\tres = 3.521E-05\n", + "[ NORMAL ] Iteration 199:\tk_eff = 1.222523\tres = 3.381E-05\n", + "[ NORMAL ] Iteration 200:\tk_eff = 1.222561\tres = 3.262E-05\n", + "[ NORMAL ] Iteration 201:\tk_eff = 1.222598\tres = 3.107E-05\n", + "[ NORMAL ] Iteration 202:\tk_eff = 1.222634\tres = 2.985E-05\n", + "[ NORMAL ] Iteration 203:\tk_eff = 1.222668\tres = 2.902E-05\n", + "[ NORMAL ] Iteration 204:\tk_eff = 1.222700\tres = 2.804E-05\n", + "[ NORMAL ] Iteration 205:\tk_eff = 1.222732\tres = 2.639E-05\n", + "[ NORMAL ] Iteration 206:\tk_eff = 1.222762\tres = 2.577E-05\n", + "[ NORMAL ] Iteration 207:\tk_eff = 1.222792\tres = 2.487E-05\n", + "[ NORMAL ] Iteration 208:\tk_eff = 1.222820\tres = 2.400E-05\n", + "[ NORMAL ] Iteration 209:\tk_eff = 1.222847\tres = 2.291E-05\n", + "[ NORMAL ] Iteration 210:\tk_eff = 1.222872\tres = 2.200E-05\n", + "[ NORMAL ] Iteration 211:\tk_eff = 1.222897\tres = 2.121E-05\n", + "[ NORMAL ] Iteration 212:\tk_eff = 1.222921\tres = 2.040E-05\n", + "[ NORMAL ] Iteration 213:\tk_eff = 1.222944\tres = 1.964E-05\n", + "[ NORMAL ] Iteration 214:\tk_eff = 1.222967\tres = 1.882E-05\n", + "[ NORMAL ] Iteration 215:\tk_eff = 1.222988\tres = 1.821E-05\n", + "[ NORMAL ] Iteration 216:\tk_eff = 1.223009\tres = 1.763E-05\n", + "[ NORMAL ] Iteration 217:\tk_eff = 1.223029\tres = 1.690E-05\n", + "[ NORMAL ] Iteration 218:\tk_eff = 1.223048\tres = 1.630E-05\n", + "[ NORMAL ] Iteration 219:\tk_eff = 1.223067\tres = 1.572E-05\n", + "[ NORMAL ] Iteration 220:\tk_eff = 1.223084\tres = 1.507E-05\n", + "[ NORMAL ] Iteration 221:\tk_eff = 1.223101\tres = 1.427E-05\n", + "[ NORMAL ] Iteration 222:\tk_eff = 1.223117\tres = 1.394E-05\n", + "[ NORMAL ] Iteration 223:\tk_eff = 1.223133\tres = 1.330E-05\n", + "[ NORMAL ] Iteration 224:\tk_eff = 1.223148\tres = 1.298E-05\n", + "[ NORMAL ] Iteration 225:\tk_eff = 1.223163\tres = 1.241E-05\n", + "[ NORMAL ] Iteration 226:\tk_eff = 1.223177\tres = 1.167E-05\n", + "[ NORMAL ] Iteration 227:\tk_eff = 1.223190\tres = 1.151E-05\n", + "[ NORMAL ] Iteration 228:\tk_eff = 1.223203\tres = 1.073E-05\n", + "[ NORMAL ] Iteration 229:\tk_eff = 1.223215\tres = 1.050E-05\n", + "[ NORMAL ] Iteration 230:\tk_eff = 1.223227\tres = 1.000E-05\n" ] } ], @@ -1732,7 +1728,7 @@ "source": [ "It is often insightful to generate visual depictions of multi-group cross sections. There are many different types of plots which may be useful for multi-group cross section visualization, only a few of which will be shown here for enrichment and inspiration.\n", "\n", - "One particularly useful visualization is a comparison of the continuous-energy and multi-group cross sections for a particular nuclide and reaction type. We illustrate one option for generating such plots with the use of the open source [PyNE](http://pyne.io/) library to parse continuous-energy cross sections from the cross section data library provided with OpenMC. First, we instantiate a `pyne.ace.Library` object for U-235 as follows." + "One particularly useful visualization is a comparison of the continuous-energy and multi-group cross sections for a particular nuclide and reaction type. We illustrate one option for generating such plots with the use of the `openmc.data` module to parse continuous-energy cross sections from an openly available ACE cross section library distributed by NNDC. First, we instantiate a `openmc.data.IncidentNeutron` object for U-235 as follows." ] }, { @@ -1743,15 +1739,11 @@ }, "outputs": [], "source": [ - "# Instantiate a PyNE ACE continuous-energy cross sections library\n", - "pyne_lib = pyne.ace.Library('../../../../data/nndc/293.6K/U_235_293.6K.ace')\n", - "pyne_lib.read('92235.71c')\n", - "\n", - "# Extract the U-235 data from the library\n", - "u235 = pyne_lib.tables['92235.71c']\n", + "# Parse ACE data into memory\n", + "u235 = openmc.data.IncidentNeutron.from_ace('../../../../data/nndc/293.6K/U_235_293.6K.ace')\n", "\n", "# Extract the continuous-energy U-235 fission cross section data\n", - "fission = u235.reactions[18]" + "fission = u235[18]" ] }, { @@ -1780,9 +1772,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEeCAYAAABlggnIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4VGX2wPHvTCYdgoKA4oqC5dgRRcG6oGJbO2IvWFER\nsaFi713URcW6KrrqioqKDUGxLKJrQ7H8jiLqqsgCigTSp/z+uHcmk2QmmQmZmvN5njzJ3LlzzzuT\n5J77lvu+nlAohDHGGAPgzXQBjDHGZA9LCsYYYyIsKRhjjImwpGCMMSbCkoIxxpgISwrGGGMifJku\ngMktIhIE1lLVP6K2jQDOUtVhMfb3ADcD+wEB4DtgtKr+LiJbA/cC5UAQuFRVX3dfdztwGPC7eyhV\n1aPilGe++/qwj1T1NBH5FBiqqpVJvscDgD1U9ZxkXtfGMU8ARgMlQBHwb+AiVV3RUTESLMco4Cyg\nAOf/fy5wQbKfUdTx9gMGq+qVqfjcTPpZUjDJindjS7ztJwEDgW1U1S8iNwO3A6OAx4HLVHW6iGwB\nzBWR7qrqB3YEjlDVDxIoz1BVXd78CVXdtu2305KqTgemt+e1sYjIJcDewIGqukxECoC7gJeAv3ZU\nnATKMQi4HNhWVVe4Cfte9+vYdh52e2BN6PjPzWSGJQWTLE+S+38JjHdP9AAfA2e6Pw9U1fAV/kbA\nciAgIkU4ieQCEdkIWACcq6o/xylPzDKFazVAITAF6OE+9aqqXiEivZttf8W94j0BOExVDxCRdYHJ\nwAbuPlNU9TYRWR94E3gVGIxzYrxUVac2K0MZMAEYoKrLAFQ1ICIXAIeISCFwCU4SXAf4HCeR3gHs\nDviBD933XyUiZ+DUOOqAWpxa1//F297sI1nH/ay6ACtUNSQilwNbRJX3EuBQnKblH4EzVXWx+1nd\nB2yKU+O73y3X6YBXRFbg/J465HMzmWN9CialVPVDVZ0HICJrAlcAz7jPBd3tC4BngZtVNQT0wTlx\nXKyq2wAfAC+2Ema2iHwqIp+539dyt4drL6cC36vqIGA3YCMR6Rpj+8bu9ujX/hN4U1W3BnYBjhWR\nw93n+gOvqepg4GLg1hhl2xSoUtWFzT6XWlV9SlUb3E19cWpTxwOXAWsDW6nqAJymnltFxIuTLPZ2\nYz4A7BJve4yyvAa8D/woIp+IyCRgB1V9B0BEjgO2crdt6+7/sPvayU6xdTNgJ/ezW4aTKP6lqpd3\n8OdmMsSSgklWrGYiL87VY1wisiHwDvCuqk6Ofk5VN8KpKUwQkaGq+qOq7q+qC9znbwM2dK8yYxmq\nqtuq6kD3+zJ3e7gG8TowQkRewbmavlhVV7ayPVzmMmBnnOYV3Hb3R4F93V3qVfU19+dPcZtRmgmS\n2P/ZB25CxD3+fVG1qEnAvu7jZ3Ca2SYBlcDD8bY3D6CqflU9FlgPuA2nBvWoiDzl7rI/ztX7JyLy\nGU7fw8buc3vgJBtUtVJVt26e6MI66HMzGWJJwSRrKY3NLWG9cTuEReSVqCv2/d1tw3CuUB9R1THu\ntkIROSJ8AFX9CZgFDBSRrUSkeRu3B2ggtlabtFT1Y6AfTpPH+sBHIjIk3vaol8b6//DinEwB6qO2\nh+KU42ugUET6R28UkWL3s1rb3bSqlbgF4ZhuTWJ/nA77i4BprW1vFvNEETlAVRe7tZTTge2AkSLS\n3Y1zs5tcBwKDaKxxNBB1QSAi/aJqVc11xOdmMsSSgknWa8DZbidluEnoBJw2YlT1b1FX7C+LyE7A\n88BxqnpH+CBus8l1InKke5w+wFCc2kQQuCtcMxCRM4HPVXVRewosIjcCV6jqS+7ImK+ATeJtjyrj\nKpymq3Ai6wYcD7zh7tL8ZNbi5Kaq9Tijr/4hIr3c4xQDdwKlqro4RpFnAKeLiM9tGjoTeENEeojI\nf4HfVfXvOM1MW8fbHuO4QeAmt70/8vHg9B0sd+OeEnWyvw5nMAA4CfvEqM/hTZzanZ/Gk334Pa/2\n52YyxzqaTbLOwRk99KWINOD8Qz+mqlPi7H+V+/0md+QRwEJVHQEcDNwrIhfhND9doKqfAojIWOBl\n96T4C9BiOKqrtWl+w8/dCTwmIl/gdMR+DjwFdI/aXg/Mc7cfHXWMY4F7ROQknJPfE6o6xU1YzWPH\nLIuq3iQiVcAMEQnhDEt9233/sVyH084+D+fq/T/AWFWtFJFrgbdEpAbn6v1kd3hvi+0xyvGYiJQC\nr7qd+SHgW2Aft9P5IZz+nA/cTvr/4owSAxgLTBaRz3F+59er6mdugntOROpxmoI67HMzmeHJtqmz\nxRm7PglYCDwa7gQzxhiTetnYfDQY+A2nWvpVhstijDGdSlqbj0RkMHCTqg6LunFmAM646lPc0Qz/\nBp7G6bwcj9NpZowxJg3SVlMQkfHAg0Cxu+lgoFhVd8K5uWeiu30bnHbUP93vxhhj0iSdzUcLgEOi\nHu+CM04cVf0QZ2gcOCMhJuGM2JiUxvIZY0ynl7bmI1Wd1uzmowogejKwgIh4VXUuziRdCfH7A6FA\nID2d5T6fF78/2PaOFitr4lms3ItnsdITq7jYF3MocCaHpFYC0Te/eKPu4ExYIBCisrKm40rVioqK\nUouVY/EsVu7Fs1jpidWzZ+x7DzM5+mgOznTKuHeRzs9gWYwxxpDZmsI0YLiIzHEfn5jBshhjjCHN\nScGd32Yn9+cQcEY64xtjjGldNt68ZowxJkMsKRhjjImwpGCMMSbCkoIxxpgImzrbGNPpLVz4Pffd\nN4m6ujqqq6sZMmQnTj55dFLHePfdt9liiy3xeDw8+uhDnHdebk7bZjUFY0yntmrVKq6++lLGjbuA\nu+6azAMPPMoPP3zPiy8+n9Rxpk59iqqqKrp375GzCQGspmCM6eTee+9ttttue9Zd9y8AeDweLrvs\nGnw+H3fffSdffDEPj8fD8OF7c9hhR3LDDVdTWFjIb7/9xh9//M6ll17JsmVL+e67b7nuuiu5/PJr\nuO66K7n//kc44YSjGDhwWxYs+I7CQh/XX38rqv/HCy88x9VX3wDAQQftzYsvzmDx4t+48cZrCAQC\neDwezjlnPBtuuFHkeYArr7yEQw45jB491uKGG67G5/MRCoW48srr6NmzV4d8HlZTMMZ0asuWLaNP\nn3WbbCspKeE///mAxYsX8cADj3LPPQ8yc+YMFi5cAMDaa/dh4sRJjBhxOC++OI0dd9yFjTfehMsv\nv4bCwkI8HmdaoerqKoYP35e7736AXr16MXfu+wCR5x3Oz3fffSeHH340d9/9AGeffT433nhNk+ej\nffTRh2y++Zbceee9nHTSaaxatarFPu1lNQVjTFbZdtsCvv469rw87bHppgHefbc67vNrr702336r\nTbb99tsiVL9h660HAuDz+dh88y354YcfANhkEwGgV6/ezJ//eeR1sVay3HjjTSJx6uvrYpTAec1P\nP/3AgAEDI69ZuvR/TZ6P/nn//Q/in/98jPPOG0vXrl047bQxcd9fsqymYIzJKp9+GmDJkpUd9tVa\nQgDYeedd+c9/5vLrr78A4Pf7mTTpDioqKvjii3mRbV9++Tl9+/YFml/pO7xeb8yk0HzfoqJili1b\nCsDixb9RWVkJwAYb9GfePGeZ6+++U7p37wFAIBCgtraWhoYGfvhhIQDvvfcOAwYM5K677mXo0D34\n5z8fS+zDTYDVFIwxnVpZWTmXXnoVt9xyPaFQiOrqanbZZTdGjDiCxYsXc/rpJ+H3+9l99+FsvLHE\nPc6WW27Nddddwfjxl0RtbdlMtOmmm9G1a1dGjz6R9dffINJ0NWbMOG6++TqefvoJAgE/EyZcAcDI\nkUcxevQo+vRZl7XX7hM5xvXXX0VhYSHBYJCzzz6vwz4PT6zMlkvq6vyhbJqO1mJlVzyLlXvxLFZ6\nYvXs2TXmegrWfGSMMSYi55PCQw95yPHKjjHGZI2cTwr/+IeXo48uZfHimDUhY4wxScj5pPDOOwG2\n3TbA7ruXMW2a9ZsbY8zqyPmkUFgI48fX8+STNdx+exGnnlrCH39kulTGGJObcj4phG2zTZCZM6tZ\ne+0QQ4eWM2tWQaaLZIwxOSdvkgJAaSlce20dkyfXcvHFJZx/fjEdePe3MSZPffbZJ+y66/a8+ebM\nJttPOMGZ6yiW1157mfvvvweAl16aRiAQ4LvvvuXRRx+Kuf8HH8xl3LgzGTPmVMaOHc0NN1xNVVX2\nnaDyKimE7bxzgNmzqwgEYOjQcj74wGoNxpjWrb/+Brz55huRxwsXLqC2tjah1z7++CMEg0E23ngT\nRo06pcXzCxZ8x5133sEVV1zDPfc8yKRJ97PRRpvw5JOPd1j5O0re9sx27Qp33lnHjBl+Tj21hBEj\n/Fx8cR0lJZkumTEmG2244cb8/PN/qa6uoqysnBkzXmOvvfblf/9bHHOm0rCXX36R33//nSuvvISR\nI49sMgNq2AsvPMdpp42mR4+1ItsOP/yoyM/HH38E663Xl8LCIi64YALXXHM51dVVBAIBTj31DLbd\ndhAjRx7Ik08+R2FhIffddzfrr78Ba6+9DlOm/AOPx8vy5b9zwAGHcOihI1frc8jbpBC2994BBg2q\n5sILi9lrrzLuvruWrbcOZrpYxpgYSu+dRNFtN9KzA9t9g+VdqB4/gZozx7a579Chu/POO7PZd9/9\n+eabrzj22FH873+LiTVTadj++x/EY4/9g2uuuZH58z+POS/Sb78tYr31+kZ+vuGGqwmFQoRCIe65\n50Fqamo48cTT2GijjbnnnrvYYYfBHHbYkSxbtpQzzzyFZ555MW78ZcuW8sgjTxIIBDjhhCPZfffh\nVFSUtv3BxJGXzUfN9egR4qGHahk3rp4jjyzl9tuL8PszXSpjTHOlkyfh6eCOQG/VKkonT2pzP2fN\nhH2YOXMG8+Z9GpmxtKVYd8uGmkyG98UX8xg7djRnn306c+fOoXfv3vzyy88ArLNOHyZNup+JE+9m\nyZIlkdeEk4YzW+q2AKy1Vk/Ky8tZvrzpkMroWFtuOQCfz0dxcTH9+m0YmdivvTpFUgDweGDECD+z\nZlXzwQcF7L9/GQsW2A1vxmSTmjPGEurSpUOPGSzvQs0ZbdcSwDlh19bW8Oyz/2LvvfeLnHwDAX+L\nmUqjeb1egsFA5PHWW2/DpEn38/e/38eOO+7MQQeN4MEHH+D335dF9vnkk4+IrlR4vc7peIMN+vH5\n585sqUuXLmHlypV067YGxcXF/P77MkKhEN99923kdd99p4RCIWpra/nxx4Wst956iX84MeR981Fz\nffqEeOaZGh59tJADDijjvPPqOfnkBrydJj0ak71qzhxL4cUXpnWyv+b22GM4M2a8xl/+sl7kqnvk\nyKM47bQTWHfdv0RmKo229dbbMH78OZx44qkxjymyKeeddwHXX38VgUCA6upqevXqxfXX3+Lu0Zgd\njj32RG688Rrefvst6urquOiiS/F6vRx11HFccMHZrLNOHyoqKiL7+/1+zj//bCorVzBq1ClUVHRb\nrfffqWdJXbjQw1lnlVJSEuLvf6/lL39p/bPItlkOczFWuuNZrNyLZ7ES99lnn/Dii89z1VXXJx3L\nZkmNoX//ENOnVzN0aIC99irj6ad9NrmeMaZTy8qkICK9ReSjdMQqKICzz65n6tQa7ruviBNOKGHp\nUutrMMZkv4EDt2tRS1hdWZkUgPHAj+kMuMUWQWbMqEYkyLBhZbz8cqfrbjHGmPR2NIvIYOAmVR0m\nIh7gXmAAUAucoqoLReR04Ang/HSWDaC4GC69tJ7hw/2MHVvKa6/5uOGGWrqtXr+NMcbkjLTVFERk\nPPAgUOxuOhgoVtWdgAnARHf7cGA0sIOIjEhX+aLtsEOQt96qoksXZ3K9d96xaTKMMZ1DOpuPFgCH\nRD3eBXgdQFU/BAa5P49Q1TOAD1X1uTSWr4nycrj55jomTqxl3LgSJkwopro6U6Uxxpj0SOuQVBFZ\nH3hKVXcSkQeBZ1V1hvvcj0B/VU1qDopAIBjy+1M7bcXy5XDeeV4+/tjDQw8FGDw4peEA8Pm8pPp9\nZSJWuuNZrNyLZ7HSE6u42BdzRE0me1Mrga5Rj73JJgQAvz+Y8nHGBQVw113w5ptlHHaYl2OOaeCC\nC+opKkpdzFwfP50t8SxW7sWzWOmJ1bNn15jbMzn6aA6wH4CIDAHmZ7AsCTnkkBBvvVXNN98UsPfe\nZXz9dbYO3jLGmPbJ5FltGlAnInOA24FzM1iWhPXuHWLKlBpOO62eESNKmTSpiECg7dcZY0wuSGvz\nkar+BOzk/hwCzkhn/I7i8cBRR/nZeecA48aVMGNGKZMm1dKvn90ObYzJbdb+sRr69g3x3HM1HHCA\nn/32K+PRRwttmgxjTE6zpLCavF4YPbqBF1+s4cknCznqqFJ++82myTDG5CZLCh1kk02CvPJKNdtt\nF2CPPcp4/nmbXM8Yk3ssKXSgwkIYP76ep56qYeLEIk47rYQ//mj7dcYYky0sKaTAgAFBZs6sZp11\nnGkyZs60aTKMMbnBkkKKlJbCNdfUcd99tUyYUMJ55xXTwUvPGmNMh7OkkGI77RTg7berABg6tJz3\n37dagzEme1lSSIMuXWDixDpuuKGW008v4YoriqmtzXSpjDGmJUsKabTXXgFmz67m1189DB9exuef\n28dvjMkudlZKsx49Qjz0UC3nnFPPUUeVctttRTQ0ZLpUxhjjsKSQAR4PjBjh5803q/noowL+9rcy\nvvvOfhXGmMyzM1EGrbNOiKefruHooxs44IBS7r+/kGD6psg3xpgWLClkmMcDo0Y18Oqr1bz0UiEj\nRpTy8882TYYxJjMsKWSJ/v1DvPRSNbvvHmCvvcp47DGPTZNhjEk7SwpZpKAAxo6t57nnarjnHi/H\nH1/KkiVWazDGpI8lhSy0+eZB/v3vAJttFmDYsDKmT8/kqqnGmM7EkkKWKiqCSy6p59FHa7j++mLO\nPLOEFSsyXSpjTL6zpJDltt8+yJtvVlFREeKvfy3n7bdtmgxjTOpYUsgB5eVw00113HlnLeeeW8JF\nFxVTVZXpUhlj8pElhRwydKgzud7KlR722KOczz6zX58xpmPZWSXHdOsG995by4QJdRxzTCkTJxbh\n92e6VMaYfGFJIUcddJAzTcb77xdw4IFl/PCDDV01xqw+Swo5bJ11QjzzTA0HHdTAfvuV8dRTti60\nMWb1WFLIcV4vjB7dwHPP1XDffUWcdJKtC22MaT9LCnli882DzJhRTd++IYYNK2f2bBu6aoxJniWF\nPFJSAldfXcfdd9dy3nklXHppMTU1mS6VMSaXWFLIQ7vuGmD27CqWLPGw115lzJ9vv2ZjTGKyblId\nEdkWGOs+vFBVl2ayPLlqjTXggQdqefZZH4cfXsqYMfWccUYDBdaqZIxpRTZeQhYD44BXgR0zXJac\n5vHAyJF+3nijmpkzfYwYUcovv9jQVWNMfGlNCiIyWERmuz97RGSyiLwvIm+JSH8AVZ0LbA6cD8xL\nZ/ny1XrrhXj++ZrIWg3PPZd1FURjTJaImxRExCsiZ4nIlu7js0VkvohMEZGKZAOJyHjgQZyaAMDB\nQLGq7gRMACa6+w0CPgH2w0kMpgMUFMDZZ9fz9NM1TJxYxOmnl1BZmelSGWOyTWs1hRuB4cAqEdkZ\nuBY4F+eE/fd2xFoAHBL1eBfgdQBV/RDYzt1eAfwDuAX4ZzvimFZsvXWQmTOr6do1xO67l/Pxx9nY\ngmiMyZTW2hH2Awaqql9EzgGeVdVZwCwR+SbZQKo6TUTWj9pUAUSvEBAQEa+qvgW8lehxfT4vFRWl\nyRanXfIlVkUF3H8/vPhiiFGjyjjrrBDnn1+atk7ofPkcO0usdMezWJmN1VpSCKhqeKq1oTg1h7CO\nuLysBLpGH1NVg8kexO8PUlmZnsH4FRWleRVr2DB44w0PY8eWM2MG3HNPLX36pH6ejHz7HPM9Vrrj\nWaz0xOrZs2vM7a2d3KtFpK+IbAFsBswEEJGtcU7oq2sOTm0EERkCzO+AY5ok9ekT4vXXA+y2W4A9\n9yzj1VetE9qYzqy1M8AlwFycZp6rVPUPETkDuBIY1QGxpwHDRWSO+/jEDjimaYeCAjj33Hp22cXP\nGWeUMnt2AVdfXUdZWaZLZoxJt7hJQVXfFpF+QJmq/ulu/hTYVVW/a08wVf0J2Mn9OQSc0Z7jmNTY\nfvsgb71VxYUXlrD33mXcf38tm2+edIueMSaHtTYkdYyq1kclhPAooSUi8lRaSmfSrqICJk+u5ayz\n6hkxopSHHy606biN6URa61PYS0SeF5E1whtEZChO2/+qVBfMZI7HA0cc4eeVV6r5178KOf74Un7/\n3e6EjqdXr65tfj6XX17MtGnWX2OyX9ykoKoHAe8DH4nIUBG5BXgaOFtVT01XAU3m9O8f4uWXq9l4\n4wC7717GnDk2cVI8y5e3/vz99xdx331F6SmMMauh1UsXVb1NRBbh3DewGNhOVX9NS8kSVLTWmvRc\nlb6KS8+0RcqeWJPcrya3HrYhWN6F6vETqDlzbNs754Fg0GpSJj+0er+BiJwL3IHTIfw2ME1ENkpD\nuRLmSWNCMInzVq2i7NYb294xTwQT6I+3vhmTC1rraH4TOAzYUVXvV9WjgcnAv0Xk5HQVsC2hLl0y\nXQQTh7eq8yTsQKDtfSwpmFzQWvPR28D10XcZq+ojIvI+8BTwcIrLlpD6Zcuz6i7BzhLr5Zd9XHhh\nMeefX89JJzXgiWo96dkr6fkSc14iNYV4li714PVCjx6WNUzmtdbRfG2saSdUVYEhKS2VyXr77+/n\n5ZereeKJQs4+u4Ta2kyXKHf99a9l7Lmn3SloskO75jBS1fqOLojJPeHRSdXVcMghZfzvf523szWR\npqF4+yxb5u3Un53JLjZvslkt5eXw4IO17LGHn332KePzzzvnn1R089HSpXaCN7mrc/4Hmw7l9cIF\nF9Rz7bV1HHlk+qZzzgbhq//opLDFFl2YO7flPR2t1SasE9pkizZvsRSRUcBtwJruJg8QUlW7k8k0\nsf/+fjbYIAi7Z7ok6RMeddR89NHy5VZbMLkpkfvurwCGquqXqS6MyX1bbtl0bILfD748nt0hXEMI\nBDwxtxuTaxJpPvrVEoJpr1GjSqmqynQpUid88m+eBKw5yOSqRK7hPhGRZ4E3gMjAQ1WdkrJSmbzR\no0eIQw8t44knaujZM//OlOFk4Pe3vh9YojC5IZGk0A1YCewYtS0EWFIwbXryKXcSuC2abo+eaymX\n50lqbD5qur0jEsDPP3tYbz3LJCa92mw+UtUTgdOA24G7gFNV9aRUF8zkrmB5clOP5PI8SfGaj2JJ\ndvTRdtt14YcfrMPapFebSUFEtgO+Ax4DHgH+KyKDU10wk7uqx09oV2LIRfFqCh2lrs6SgkmvRDqa\n/w4coarbqepA4FDcmZSNiaXmzLH8/sMili6pbPE14/VV9FknyO231bB0SWWmi7raGvsU2j55L1ni\noTLOWw4GPcycaaO8TeYlkhS6uMtwAqCqHwAlqSuSyWfbbhtk1qwAd99dxE035f6iM+F1FBKpKSxd\n6uWYY5re3DdrVmMiOOYYm//IZF4iSeEPETko/EBEDgZ+T12RTL7bcEN45ZVqZs/O/RsY4vUpeOJU\nHP73v6b/ckcf3TIRrFzpLPEJNmLJpF8i/5WjgcdF5B84dzMvAI5LaalM3uvZM8Tzz1dDv/j7/P67\nh8mTC+nePcTppzfgzcJJWVIx+qiysjGjxEsuxqRKm0lBVb8FBotIOeBV1ZWpL5bpDMrLmz5uvg5D\nT5zhblXeLrzz7mVs//SZaStbolLd0ZyNidDkt7hJQUQeUNXTRGQ2zn0J4e0AqGonmuHGpEqwvEub\nI4/Kg6vY9a3r+PX3MVm3EE28pNBRV/hWUzDp1lpN4X73+1VpKIfppKrHT6Ds1hvbTAxdWcWTTxYy\ndmx2LeURb+6jeFZn3QVj0qG1ldc+cX+cCyxX1XeAdYH9gW/TUDbTCbQ2fLX5kNXHHivMuonmkm0+\nSvaE7/FYhjDplUiL5RPAYSKyA3A1UIlzI5sxadWtW4h33sn8WP5QqOU6CqnsUwgGoa4uNcc3prlE\nkkI/Vb0COAx4SFWvpXFtBWPS5thjG3jiicJMF4Pevbvy0ENOOZKZ5gJgxQoPTz2V3FDce+8tZL31\nuia07/TpPi65pLjJNls/2yQjkaTgE5G1gIOBV0RkbSBld9mIyO4i8oCIPC4iW6Uqjsk9I0Y08O67\nvqxY7nL+fKfGEr55LZFZUsFJCuPGJbc63YIF8f9Nr766mGXLGj+PBx4o5KGHmt4U2LdvV954I/M1\nLJMbEkkKtwIfAq+46yq8C1yTwjKVqmp4Ar69UhjH5JgNN6rgzxVeNt+iKz17VTT56tGvD6X3pm/2\nleY1hCVLUpOo2hp9dM89Rbz9duMJP16fxa+/2thWk5hEZkl9UlU3VNVzRaQCOERV/9WeYCIy2B3i\nioh4RGSyiLwvIm+JSH833isiUgaMxfouOr1EJ9ZrbabVP//syBI5mieFSZOK4+/cQb7/PvM1JJP/\nEpkl9WQR+YeI9AS+Bp4VkeuSDSQi44EHgfB/z8FAsaruBEwAJrr7rYUz4d4Vqros2TgmvyQz42qs\nYa0ffgibbNK1w4d5hm8qa28Hc2UlfPZZ7H+/+qhRtzNnNvY/7LVXOdtsU95i/0WLvKxY4fwcCjmJ\nY/LkwpR1fpv8lkid8kzgAuAo4EVgK2CfdsRaABwS9XgX4HUAd8K97dzttwNrAzeKyKHtiGPySKwh\nq9ddW8NhI+pjDlttbv585yQZ3e7eEcJJob3J5sYbi9l775Yn+IULPQwZ0pgEb721sQaycqWHRYta\n/sted10xJ51U2qQ8V15Z0uHv2XQOCQ2DUNU/RGQ/4O+q6heR5HrKnGNME5H1ozZVACuiHgdExKuq\nJyRzXJ/PS0VF0sVpF4uVHfFOPhm23LKA5ctLWX/9ps81P+5XXzkn0draEiqazqLRqlmzPPz8M5x4\nYuyz/gsv+Bg0qIwdd2x8Pvp9lZYWUVHhjFBqaGj5eo8n9r9efX3LCYgLC5vuW1FR2uIzrKwsiGwP\n69Kl8T0BezfgAAAgAElEQVRfdFEJ48a1fwLCfP17tFgxXpvAPl+JyMtAf2CWiDwDfNyuaE1VAtHj\n7LyqmvStSX5/kMrKmg4oTtsqKkotVhbE8/nguOOKuO46D7ffXtdkac/mx503z7nq/vXXetZbL/H2\nlHPPLeO77woYMSLWVF9dqa31cMEFBbz+ehXhf6PGv8WuzJ3rJxgMsNdeAcaMaXmir6/3Ay2nDq+q\nqiP63zIUAr+/6b6VlTVRn6HzLxQIOLH9/jLA6XhetaqWyspQZJ/V+czz9e+xM8fq2TP2MOdEmo9O\nAm4BhqhqPfC4u211zQH2AxCRIcD8Djim6STOOKOel18uZOHC+E0kwSB8+SVsv30g6c7mggRHcMa7\nP2HSpGKOPbaMe+8tZOrUlvdWTJkSey2JG25o2mEdPWNqIqKbsw44oIxFi6wJySQnblIQkdPcHy8B\nhgJnicgVwEDg0g6IPQ2oE5E5OP0I53bAMU0n0b07jBlTz2WXxV/v6b//9VBRARtsEOTPP5M7OSba\nSdt8zqPmd1xfdVVy61G9917blfepU1vu8+WXBUyf3nT7jz96OeOMpvHPPLOEOXPsngUTX2t/gZ5m\n31ebqv4E7OT+HALO6Khjm87n9NPreeaZ+PdRzp9fwIABIbp1C7FiRXJ/xuGb0trSvKN55MjUr542\nZkwpY8bA7NlNr+k++aTlyX7u3Kb/4s8+W0hJSYidd7ahSSa21pLCpwCqenWaymJMUoqK4Lbb6uDA\n2M9/8kkBO+wQYsWKEKtWJZsUEt9v440D/PFH+ptpvvyyaVK4997cX97UZF5rfQrhqbMRkdvTUBZj\nkjZkSPwr3g8+KGDwYOjaNcTKlalLCkVF0NCQ/qQwdmz6RoyZzqO1pBD9Vz4s1QUxpiOET+Y//ujh\nxx897LJLiK5dnXWPk5Ho/QfhpJDo3EfZ6I47iqiqynQpTLZIdEIUG8JgcsJxx5XywQcFXHRRCaNG\nNVBYmNqaQiAAxcWhlCaFjrob+/nnndbi8HxKgQAcf3wJN95YHLM/wnROrSWFUJyfjclagwYFuOyy\nYvr1C3L++c58EckkhZoa6NWra8JJIRQKNx+1t8Tp88ADTfscqqrg9dczPxW5yS6tdTRvIyLhBltP\n9M9ASFXt0sJknXPPrefcc5su2ZlM81F4lFKiaxD4/U5SgNQttBOez2j1j9P0cXhqDIDx40v44Qcv\nS5Yk2c5m8k7cpKCqNteuyQtduiReUwjfLBbvprHmzUSBgAefL0RhYepqCx3VfBR9nI8+8vLuu43/\n/j/80Pjvruqle/cQPXtaA0FnZCd+k/e6dk18SGqlO7+e3x97/+Y1CL/fmRzP58v+pDBvnlO5f/zx\nIv72t5aT8YXtums5p52W3E13Jn9YUjB5r6Ii8ZpCdXXr+9XWNn0+GHQSQnW1hx13TE2LakdP+52I\nOXN8rGo5E7npBCwpmLzXpYvTp5DIybW6uvXn6+qaPvb7G+dJWrAgvwbp/fijnR46ozYnWhERD3A6\nsIe7/2xgUntmNDUm1Xr2ajk/dh/AD9C77dcf536FBft1oXr8BGrOHAu0bD4KBBKfPK+90llT6NWr\ncebMyZOLOOecerp1C9Grl48lS9JXDpM5iVwK3ALsDUwBHsG5kc3ucDZZI9GV2dqj+TKfNTVNawPp\nSAqZMnVqIQ89VBjpZzGdQyJJYS/gUFV9SVVfBA6jfSuvGZMSySzZ2R7Ry3w2bz4Kjz5KpUz0KZjO\nK5FFdnzuV33UY5ti0WSNmjPHRpp3mgsvNjJ8eBm33FLLwIGtt3pOmlTEtdc6axqEYtzI37yjOTz6\nKJWyJSl8/72HDTfMksKYlEnkz/mfwNsiMlZExgJvAU+mtljGdKxE72quaWNhrFh9Cj6fcy9Eqjz3\nXObuOn722cLItBg77pi62pjJHokkhZuBa4G+wAbA9ap6QyoLZUxHi5UUFi/2cP75TVc6a+t+huY1\nhXCfQnl5fl5Br1zpoaoqv0ZVmdYl0nz0kapuC7yW6sIYkyqxprp4++0CHn+8iNtvb+woWLrUw5pr\nhli+PPaJsGWfgpMUSvL4Xq+5cxt70hct8tCnT4hp03xsskmQLbawQYj5JpGk8D8R2RX4j6rWtbm3\nMVmoW7dQi4VwPDHO+0uWeOjbN8jy5bGHFLW8T8FDQQEUFuZnTQHg8ssbM94BB5SxzTYBpk8vZNdd\n/Tz3XHoWojfpk0hSGAS8AyAiIWxCPJODttoqwFtv+YDGuShiJYWlSz307dvyBB++/+Fs9yvi2g4t\nZvb72f0CeA/o1b7DBMub3v9hskebfQqq2lNVve4EeT73Z0sIJqfssEOADz8saDKSJzw9dvTspkuX\neqiocHZahXWspkrz+z9M9mgzKYjIUBGZ4z7cREQWishOKS6XMR2qX78QDQ3wyy+N1YNwB2p4aouG\nBmfq7LIyJyncVHJlSu9/6Oyi7/8w2SOR5qOJwPEAqqoish/wOLB9KgtmTEfyeJzawn/+U8B66znz\nXzcmBQ9duzp9DmuuGWKLLYL07h3kzlXnM+6H0YAz/cP776/i2WcLmTSpKLIm87nn1lFcDDNn+jr1\n6mXz5q2iT5/E+lViTUViskciQ1JLVPXL8ANV/T/AlmsyOSecFMLCNYTw+sQrVzqjlEaNauD996ta\nrL723/96eeaZQrp1azz5hSfEa6ujeZddcngRZ9OpJJIU/k9EbhaRLd2v64BvU10wYzrarrsGeOMN\nX2QEUbimEP6+apWHLl1CeDxQWNhyJbWXX/bxyy9eevRoTACBgIeCghC+Nurcu+2W35MA/PSTzaia\nLxL5TZ4MdAGewpkUrwtwaioLZUwqbLVVkC23DHLTTc4Na+H1AponBXCu/sNJIdw5HR6ttO660UnB\n2bd379ZrCtGT5l11VYJrfeaQgw4qy5rpOMzqabNPQVWXA2PSUBZjUu6uu2r429/K8flC/PKLc00U\nbkZatcpZewHCScHJAuHk8McfHs49t46KipA7vLVxmovbb69l9mxfi3shwqInzeuSp33XdXX5fRNf\nZxG3piAin7rfgyISiPoKikh+14VN3ureHaZPr+ajjwp4770CBg/2x6wphCe5CwYbk8Ly5c5w1eim\novCEeGVlNEkI337b9Pbp6JpCvk61PX16IuNWTLaL+1t0p7bAvT8h7URkGHC0qlpTlelQa60VYtq0\nGurr4YYbivn+e+dPfNUqT5M5jAoKQgQCTZNCt25NJ8UL1xSi3XlnDWus0XRb06SQn+0s48aVMHKk\nDTPNdXGTgogc39oLVXVKxxcnEntDYCBQ3Na+xrSHxwPFxTBkSIB77inknHOaNh9BY79CeBTS7787\nNYX6+sYaQfQiO19/7WfzzX0cfnjLkUapnl47G/j9NnFePmitvvcosASYhbOWQvRvPITT6Zw0ERkM\n3KSqw9ylPu8FBgC1wCmqulBVvwcmikjKEo8xAMOH+7nssmI+/tjbpPkIGpOC3z3HL1/u3M8QPVle\nfb2HoiLnNf37w6JFK2OORIqeUiPW9BrGZIvWrl+2xVl+c1OcJPAUcLKqnqiqJ7UnmIiMBx6ksQZw\nMFCsqjsBE3BulItm/z4mpXw+GDOmnjvuKKaqyjnphxUUhPsUnD/DhgYP3bo17VOor4eioqbHi8Xj\ngdtuc9qdOkOtweSuuH+eqjpPVSeo6iBgMjAc+I+I3CciQ9sZbwFwSNTjXYDX3Xgf4ky+Fy0/G19N\nVjn66AbmzfMyf763RfOR39/0foWKilCTPoHmSSEer5fInEoVFSHWWsumnDbZKaHhAqr6MfCxO4X2\nTcCxkPxsYao6TUTWj9pUAayIeuwXEa+qBt39W+3XAPD5vFRUlCZblHaxWLkXL5FYFRWw774wZYqP\nM8/0UFHhc18LZWWl1Nc37tunTwnl5Y0V2FCogDXW8FJRUdhqrNLSQsrKnJ/XWKOYX34JUlKSf1WG\nZH+vsfbPtr+Pzhar1aTgtvnvBowE9gXmAZOA6e2K1lIl0DXqcSQhJMrvD1JZmZ453cPr/Vqs3ImX\naKzBg31MmVKKz1dHZaVTNfB4yvnzz1oaGiB8DeT11lBf7wOcf7jq6iANDfVUVgZixGr8066ra6C2\nNgSUUlsbjhH9p58fEvmse7axfzb+feRjrJ49Y//9tTb6aDKwD/AZ8AxwkapWtb+YMc0B9geeFZEh\nwPwOPr4xCdluOycRxO5TaNyvpKRpv0FDQ/zmI2dIqyfyc7iD2TqaTTZrrf46GufyaCBwIzDfnTZ7\noYgs7KD404A6d2ru24FzO+i4xiSlX78QO+7oZ6ONGiuq4dFHzedAiu4obmjwxJ0Mb968xmuoQMAT\nSQbJdDSPHNnQ9k7GdKDWmo/6pSKgqv4E7OT+HALOSEUcY5Lh8cCLLzatbjcmBU+L7WF1dfFrCuGh\nquB0SLeVFCZNqmHsWKdZ6v77a6irc+ZlmjrVJiU26dPaHc0/pbMgxmQbrzd2TSF69FFDgzOjaizR\nzUQNDbTafLRkiTMtxuef1/PQQ0Uccohzc8TDD1tCMOmVf8MfjOkg4T6F6NFH4e1h9fUeiotjNx9F\n1wiiawqt9Sk0f85mHjXpZknBmDjCHcWtJYVEawp+vwevNzzZXuJn+lxLCuEZZ03usqRgTBw+n3Pz\nWniuo803d9qRopNAbW38PoXopHDggQ2Rx4nc7JarBg0qd4fwmlxlScGYOLxep/morg7+8pcgU6Y4\nHdHhYaseT4i6uvijjxoX5QnSv3/jkNR4NYt88eGHjVWpUAgWL7YxuLnEkoIxcYRHH9XUeNhyywB9\n+zon/379ggwe7MfnS6ymEL6vIZGawlZbNe3VzrV7Gk47rYFLLinmmWd87LlnGY8+WsjWW3fh1Vcb\nl0E12c2SgjFxhJPCH3946N69sTZQUQHTp9dQWBi+TyH268NTbj//vNPQ3lhTiN9RcOSR/shIpOjX\n5IoxY+q59NI6Lr+8hAULvFx0kbMU26hRpcyYYYvw5AJLCsbEER6S+uuvHnr1anki79HD2Rbvyr+s\nDM47r4711gs3N9Hq/vmgsBD23jvA449Xc889TdeiXrYsxzJcJ2VJwZg4CgpCBIMe5s4tYPDglivQ\nhmc9jXc17/XCxRc3Dl0KT4hXUpL4kKJcqymE7bBDkL/9zc/LLzfe1X3nnUUt7vkw2ceSgjFxFBTA\nypUwb17spBCr9tCacBLp1i3x1+RqUgjbYYcg8+atYsMNg/ToEWLcuJJMF8m0wZKCMXH4fPDvf/sY\nMCDQZJ2F6OeT0bOnkxSi73PoDPr0CTF3bhUjRzbwzDNNO2B++inHs14esqRgTBzFxfD22wXstFPs\nNo9kr+J79gw16URORK7XFKKdcUYDP/3U9P1vv30XFi3KozeZBywpGBNHWVmIb74pYNCgzDWE51NS\n8HigNMa6L5dfXsyqVXDTTUX88kseveEcZWPEjIkjfALr3z/2uk/BNKyomU9JIZ7p0wv5/nsvX39d\nwKxZPt58M0RlpfP519dDeXmmS9i5WE3BmDhKS50+gN69Y3copyMpNHfjjbVt75RDFixYyaGHNvD1\n105HyxdfFNCzp4+NNurKhRcWM3Bg0qv+mtVkScGYOMIT4YWHkjaXiZrCySfn18RCFRVw/PGN72n9\n9YORCQP/+c8i/vzTQ+/elhjSyZKCMXGsWNF6200magr5aMCAAIce2sA771Tx0UdVVFcH2G03Zz0J\nkQChkIc//gBVL08+6WPpUg+ff26nrlSxPgVj4qiszHxS6NUr/zNPeTncd1/TZrHbb6/l8suLmTKl\nlg026MKmm3alsDBEQ4OHI45oYPFiD1Ontr4wvWkfS7fGxHHggX6OOCJ+c82VV9Zx993tPzFFL9cZ\nz157JTfy6cMPV7W3OFll/fVDTJniJIrp06sZObKBbbZxEuS//lXIO+/4uO++PJ9uNkOspmBMHCec\n0MAJJ8RPCgMGBBkwoP1X8v36BVEt4IUX4q9M09boo9Gj6/n5Zw+vvlroHjPHVuVJwFZbBbn77lqq\nquD99ws49link+eKK0r49Vcve+7pZ/vtA3H7fjq7UAimTvUxdWoha64Z4rzz6tl00/h/t1ZTMCZD\nws1P3bq1/0S+zjrBpO+szkUeD3TpAnvuGWDatGo23jjACSfUU14e4pZbitliiy6MHl3C7NkFNr9S\nMy+84OPOO4s47rgGttwyyIgRpey2W/wMaknBmAwJN4ckei/Clls2nu2+/dYf+bmtJTufeKKxJnLr\nrW0PaT3ppPo298kUrxd23jnAnDnV3HprHRdfXM8rr1Tz6aer2GGHANdfX8ygQeXcdFMRn37qpTa/\nRvAmrboarr++mNtuq+PAA/2cfXY9X3xRxb/+Fb/Z05KCMRkyaZJzxkokKZx0Uj1vvdW+BZCT7ZfY\nZZfcu9Rec01nuO6sWdU88UQNVVUezj+/BJEu7LlnGeefX8ysWQV5O2Ksvh4uuaSYrbYq5+CDSznr\nLC/PPuvj6quLGTgw0GSqloICWGed+FcSnaDiaUx28rqXZIkkhb59m57N2qodjB5dz5AhAU48seW8\nEttsE2DevPiz8nXvHuKpp6o56qjUN9L37FURe/tqHHOo+xXxhfv1eJwyrEasRATLu1A9fgJcfGHK\nYlxzTTHff+/lhReq+fVXLz/9VMzzzxfy22+eVmsFsVhSMCbD2koKd9xRy777xu/wjpUgRo5sYMMN\nY18WDx7cMikUFIQIBJyCDBkS4O23UzeVa7C8C96q/BgllQhv1SrKbr2RhhQlhV9/9TB1aiH//ncV\nPXuG2HDDABUVIY47rn0j46z5yJgMayspHHNMA927N9225pqNr22r1pBMrET3WR3V4ycQLO9cdymn\nMglOnVrIwQc3RKZmX11WUzAmw5I9CS9ZspKKihjTjbbT8cfXs9ZaISZOLG6zPJttFuCbb1avFlFz\n5lhqzhwb9/mKilIqK9NzY1pFRSkrVtTw9ddeZs8uYPZsH598UsCAAQF23jnAvvv62XzzYLvXwIjX\nPNaRXn7Zx9VX13XY8bIuKYjIjsBoIASMU9XKDBfJmJTyeFbvCu/yy+uorPTw3nuN/87xag+xTvi3\n3eacUMJJId5+ANtuG6Cy0sOvv+ZPI4PHA1tsEWSLLYKcdVYD1dUwZ04B777r49RTS6mshOHDAxxz\nTD3bbx/s0JpUZSV89VUB33zjZdEiD717h1h33RAbbBBk002DkX6neH780cOiRR6GDOm4wQFZlxSA\n09yvHYAjgQcyWxxjUmt17zPo3z/EI4/U8MorrR+oW7cQf/2rn2+/LWp3LI8HNt882CIpbLZZgAMP\n9Md5VW4pK3OSwPDhAa69to7PPvMya5aPs88upaoK1lwzhNfrfA5bbRVgyJAAAwe2PaypuKSwRad2\nT2BD4MB2lrUnsBRgndjPtSrOlUNak4KIDAZuUtVhIuIB7gUGALXAKaq6EPCqar2ILAZ2T2f5jEm3\nN9+sYoMNVr8tuKICjjqq9ZPyAw/U0LdviDXWaDtea1fDXbs6rx82zM+ff3r47LMCZs+ubvOqNlcN\nHBhk4MB6Lrignv/+10N1tYf6evjqKy/z5xfw8MNFrLNOkN12C7DBBkHWXjtEeXmI+noP+5R0obA2\ntzrV05YURGQ8cBwQ/oQOBopVdSc3WUx0t1WLSBFO7lucrvIZkwlbbbV6A+djnYjXWivIX/7S8sQf\nPtHvt5+fm28upqwsRHV17LN/a0nh1ltref75QtZYIxSZSTZfE0I0j8eZk8lp2cad4sTPtdfW8dpr\nPr780svMmT6WLHESR1FRiB97X8Epv1xDaSB3EkM6awoLgENoHC28C/A6gKp+KCLbudsfBO53yzY6\njeUzJqc8+2x1zKVCv/66CnDuZo2ltRN+QYFzwisujr9P166w/fYB9t7bzwMPtL8pKl/4fHDAAX4O\nOCDWs6ezitNZRcd1oC9Z4mHSpCKee87HuHH1jB7dcrhyIrHiNS+lLSmo6jQRWT9qUwWwIupxQES8\nqvopcGKix/X5vB06EsNi5Ve8fI61//6tn5DDfRXhMpWXF1NREaJLs9Gg0WUOhZzHw4fDBx/4GTLE\nOcjee4eYMcNDYaGPigov770XAgp5+GFvi2Osrnz+nXVErIoKuOsuuOuuIM4pvOVpfHViZbKjuRLo\nGvXYq6pJ16X9/mBah69ZrNyK15ljOTWFru5+XamurqOyMsCqVV6i//Ubj9O1yeP+/Ru3vfhigFdf\ndWbXrKxsbJrq37+ETz7xdej7zrbPMV9j9ezZNeb2TLYEzgH2AxCRIcD8DJbFmLy31lrOyTzecNWZ\nM6t4442mbU7h5iRw5kQKHyNs4sRavv8+d9rLTdsyWVOYBgwXkTnu44SbjIwxyfn555Wt9hMAMdeG\nWLRoFb17x76iBCgsdL5M/khrUlDVn4Cd3J9DwBnpjG9MZxLdoRwrISQ65cXChSuB9PU5mczKxpvX\njDFpcNddtXFHKEVr3jFt8pslBWPyVEkJTJkS/6yfL3cgm47VCW45MaZz8nhgn31yb8Eck1mWFIzp\nZJKZatt0PpYUjDHGRFhSMMYYE2FJwZhOpk+fIGutlacr2JvVZknBmE5mjTUaJ80zpjlLCsYYYyIs\nKRhjjImwpGCMMSbCkoIxxpgISwrGGGMiLCkYY4yJsKRgjDEmwpKCMcaYCEsKxhhjIiwpGGOMibCk\nYIwxJsKSgjHGmAhLCsYYYyIsKRhjjImwpGCMMSbCkoIxxpgISwrGGGMiLCkYY4yJsKRgjDEmIiuT\ngogME5EHM10OY4zpbLIuKYjIhsBAoDjTZTHGmM7Gl44gIjIYuElVh4mIB7gXGADUAqeo6sLwvqr6\nPTBRRKako2zGGGMapbymICLjgQdpvPI/GChW1Z2ACcBEd79rRORJEVnD3c+T6rIZY4xpKh01hQXA\nIcDj7uNdgNcBVPVDERnk/nxFs9eF0lA2Y4wxUTyhUOrPvSKyPvCUqu7kdiA/q6oz3Od+BPqrajDl\nBTHGGNOqTHQ0VwJdo8tgCcEYY7JDJpLCHGA/ABEZAszPQBmMMcbEkJbRR81MA4aLyBz38YkZKIMx\nxpgY0tKnYIwxJjdk3c1rxhhjMseSgjHGmAhLCsYYYyIsKRhjjInIxOijlBKRYcDRqnpqrMepiCMi\nOwKjce7CHqeqlR0ZKyrmEcBeOPd6XKaqVamI48YahDMyrAK4TVU/T2GsccA2wMbAE6p6XwpjbQaM\nw5l25VZV/TqFsbYGJgELgUdV9Z1UxYqK2Rt4WVW3T3GcbYGx7sMLVXVpCmPtDhwJlAK3qGrKh7Gn\n6rzRLEZazhtR8RJ6T3lVU2g+w2qqZlyNcdzT3K+Hcf54U+UA4FScKUNOSGEcgO2AzYB1gZ9TGUhV\n78L5/L5MZUJwnQL8gjMZ448pjjUY+A3wA1+lOFbYeFL/vsD52x8HvArsmOJYpap6GnA7zkVRSqVx\npuZ0nTeSek9ZX1NYnRlWk5lxdTVnci1Q1XoRWQzsnqr3B9wNPAT8BCR9F3iSsT7F+WPdHdgfSGrW\n2iRjARwFPJ/se2pHrI1wEup27vfJKYz1HvA00BvnZH1RKt+biJwOPAGcn2ycZGOp6lz35tPzgcNT\nHOsVESnDqZkk/Rm2I95qz9ScYDxve88bycZK5j1ldU2hA2dYbXXG1dWIE1YlIkXAOsDiVL0/YG2c\nK91/k+TVe5KxngKuxanWLgO6pzDWkyKyJrCbqr6RTJx2vq+lQDXwB0nOxNuO39c2QAHwp/s91e/t\nMJzmiB1EZEQq35uIbA98gjM7QVJJqB2xeuI0w12hqsuSidXOeKs1U3Oi8YDq9pw32hkrrM33lNVJ\ngcYZVsOazLAKRGZYVdWjVfVPd7/md+S1dYdee+OEPQjcj1MVfCKB99WuuMAK4FFgFPBMEnGSjXUU\nztXG4zhXZ8m8p2RjHa2qy3Hai9sj2fc1Gef3dS7wVApjHY1To5sE3Ox+T1ZS701V91TVM4APVfW5\nFMY6Gmf+sn8AtwD/THGs23AuiG4UkUOTjJV0vFbOIx0Vbzt3e3vPG8nEGtRs/zbfU1Y3H6nqNHeG\n1bAKnBNjmF9EWkyop6rHt/a4o+Oo6qe0Y7qOZOOq6mxgdrJx2hnrJeCldMRyX3NMOmKp6ie0sz+m\nHbHmAnPbE6s98aJe1+rfe0fEUtW3gLeSjdPOWKvVf5bOzzHBeAE3XrvOG0nGav5Ztvmesr2m0Fy6\nZljN1Eyu6YxrsXIrVrrj5WusfI+32rFyLSmka4bVTM3kms64Fiu3YqU7Xr7Gyvd4qx0rq5uPYkjX\nDKuZmsk1nXEtVm7FSne8fI2V7/FWO5bNkmqMMSYi15qPjDHGpJAlBWOMMRGWFIwxxkRYUjDGGBNh\nScEYY0yEJQVjjDERlhSMMcZE5NrNa8YkxJ0P5lucdQzCM0OGgAdVNanpsju4XCfgzFw5HbgS+AG4\n353ILrzPNjhTl49S1ZhTHYvIScDhqrpPs+3/AObh3LS0ObCxqv43Fe/F5CdLCiaf/aqq22a6EDG8\nqKonuYnrd2AfEfGoavhO0iOAJW0c4xngdhFZKzydtIiU4qx9cZ6q/l1Emq9ZYUybLCmYTklEFgHP\n4kw13IBz1f2TOMuQ3oEzlfcyYLS7fTbOGgyb45y0NwWuBqqAz3D+lx4HrlXVnd0YxwODVXVMK0VZ\n5b5+NyC8XOdwYFZUWfdxY/lwahanqupyEZnmluUed9eDgTejpn5u13oApnOzPgWTz9YVkU/dr8/c\n71u4z60NzHRrEu8BZ4lIIc7Kdkep6iCcZp6Hoo73uapuBizCSRzD3P26AyF3OuneItLP3f8EnPUv\n2vIMMBIia2N/DtS7j9cCbgT2UtXtgDdw1jDAPXb0lOPH46xxYEy7WU3B5LPWmo9CwAz35y+BXYFN\ngA2Bl9xlDQG6RL3mQ/f7rsD7qhpeLesxnKt0cJYtPVZEHgV6qepHbZQxhNO/cL37+AjgXzjLk4Kz\nzokqVCIAAAGwSURBVHNfYLZbJi9OkxOq+q6I9HCboWpx+g9mthHPmFZZUjCdlqrWuz+GcJpaCoDv\nw4nEPQn3jnpJjfs9QPzlNR/FWfmqjgTXtVbVKhGZJyK7AsNw1iEOJ4UC4D1VPdgtUxHOQiphj+HU\nFmpo/+pdxkRY85HJZ621qcd67v+A7iKyi/v4FODJGPu9DwwSkd5u4jgSd5lDd6TPL8DpOH0MiZoK\n3AR83GxRlA+BHUVkY/fxlTQ2H4GTeA7FWZ/5kSTiGROT1RRMPltHRD5ttu1dVT2HGGvVqmq9iBwO\n3CUixTirWIWXLwxF7bdMRMbhdAbXAD/SWIsAp/nnkKjmpURMx+m/uDQ6nqr+zx1++oyIeHESzrFR\nZflFRJYCHlX9KYl4xsRk6ykYkyQR6Q6crapXuY/vAr5V1XtExIdz9f6Mqr4Q47UnAENVNeULN4nI\nD8Bf7T4FkwxrPjImSar6B7CGiHwlIp/jrIn7oPv0r4A/VkKIcoDbEZ0SIlIiIp/hjLAyJilWUzDG\nGBNhNQVjjDERlhSMMcZEWFIwxhgTYUnBGGNMhCUFY4wxEZYUjDHGRPw/PCiTIUUUagEAAAAASUVO\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1791,16 +1783,16 @@ ], "source": [ "# Create a loglog plot of the U-235 continuous-energy fission cross section \n", - "plt.loglog(u235.energy, fission.sigma, color='b', linewidth=1)\n", + "plt.loglog(fission.xs.x, fission.xs.y, color='b', linewidth=1)\n", "\n", "# Extract energy group bounds and MGXS values to plot\n", "nufission = xs_library[fuel_cell.id]['fission']\n", "energy_groups = nufission.energy_groups\n", "x = energy_groups.group_edges\n", - "y = nufission.get_xs(nuclides=['U-235'], order_groups='decreasing', xs_type='micro')\n", + "y = nufission.get_xs(nuclides=['U235'], order_groups='decreasing', xs_type='micro')\n", "\n", "# Fix low energy bound to the value defined by the ACE library\n", - "x[0] = u235.energy[0]\n", + "x[0] = fission.xs.x[0]\n", "\n", "# Extend the mgxs values array for matplotlib's step plot\n", "y = np.insert(y, 0, y[0])\n", @@ -1835,8 +1827,8 @@ "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", "\n", "# Slice DataFrame in two for each nuclide's mean values\n", - "h1 = df[df['nuclide'] == 'H-1']['mean']\n", - "o16 = df[df['nuclide'] == 'O-16']['mean']\n", + "h1 = df[df['nuclide'] == 'H1']['mean']\n", + "o16 = df[df['nuclide'] == 'O16']['mean']\n", "\n", "# Cast DataFrames as NumPy arrays\n", "h1 = h1.as_matrix()\n", @@ -1863,9 +1855,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nfn35+EIOpHUAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1905,21 +1897,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index 5f0acde3f1..789366d3aa 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -32,7 +32,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -75,12 +75,12 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "b10 = openmc.Nuclide('B-10')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "b10 = openmc.Nuclide('B10')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -458,7 +458,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -725,27 +725,26 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 47ef320ad517612376e181ec6a6bc42ca0db98ce\n", - " Date/Time: 2016-05-14 12:29:07\n", - " MPI Processes: 1\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-23 16:42:32\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 5010.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -813,20 +812,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.7700E-01 seconds\n", - " Reading cross sections = 1.3400E-01 seconds\n", - " Total time in simulation = 8.0461E+01 seconds\n", - " Time in transport only = 8.0422E+01 seconds\n", - " Time in inactive batches = 6.4060E+00 seconds\n", - " Time in active batches = 7.4055E+01 seconds\n", - " Time synchronizing fission bank = 6.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", - " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 4.3400E-01 seconds\n", + " Reading cross sections = 2.7900E-01 seconds\n", + " Total time in simulation = 6.1121E+01 seconds\n", + " Time in transport only = 6.1101E+01 seconds\n", + " Time in inactive batches = 5.0660E+00 seconds\n", + " Time in active batches = 5.6055E+01 seconds\n", + " Time synchronizing fission bank = 5.0000E-03 seconds\n", + " Sampling source sites = 3.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 8.1067E+01 seconds\n", - " Calculation Rate (inactive) = 3902.59 neutrons/second\n", - " Calculation Rate (active) = 1350.35 neutrons/second\n", + " Total time elapsed = 6.1576E+01 seconds\n", + " Calculation Rate (inactive) = 4934.86 neutrons/second\n", + " Calculation Rate (active) = 1783.96 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -953,7 +952,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/Documents/NSE-CRPG-Codes/openmc/openmc/tallies.py:1988: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/romano/openmc/openmc/tallies.py:1941: RuntimeWarning: invalid value encountered in true_divide\n", " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n" ] }, @@ -977,7 +976,7 @@ " 3\n", " 10000\n", " 1\n", - " U-235\n", + " U235\n", " 8.055246e-03\n", " 2.857567e-05\n", " \n", @@ -985,7 +984,7 @@ " 4\n", " 10000\n", " 1\n", - " U-238\n", + " U238\n", " 7.339215e-03\n", " 4.349466e-05\n", " \n", @@ -993,7 +992,7 @@ " 5\n", " 10000\n", " 1\n", - " O-16\n", + " O16\n", " 0.000000e+00\n", " 0.000000e+00\n", " \n", @@ -1001,7 +1000,7 @@ " 0\n", " 10000\n", " 2\n", - " U-235\n", + " U235\n", " 3.615565e-01\n", " 2.050486e-03\n", " \n", @@ -1009,7 +1008,7 @@ " 1\n", " 10000\n", " 2\n", - " U-238\n", + " U238\n", " 6.742638e-07\n", " 3.795256e-09\n", " \n", @@ -1017,7 +1016,7 @@ " 2\n", " 10000\n", " 2\n", - " O-16\n", + " O16\n", " 0.000000e+00\n", " 0.000000e+00\n", " \n", @@ -1027,12 +1026,12 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-235 8.055246e-03 2.857567e-05\n", - "4 10000 1 U-238 7.339215e-03 4.349466e-05\n", - "5 10000 1 O-16 0.000000e+00 0.000000e+00\n", - "0 10000 2 U-235 3.615565e-01 2.050486e-03\n", - "1 10000 2 U-238 6.742638e-07 3.795256e-09\n", - "2 10000 2 O-16 0.000000e+00 0.000000e+00" + "3 10000 1 U235 8.055246e-03 2.857567e-05\n", + "4 10000 1 U238 7.339215e-03 4.349466e-05\n", + "5 10000 1 O16 0.000000e+00 0.000000e+00\n", + "0 10000 2 U235 3.615565e-01 2.050486e-03\n", + "1 10000 2 U238 6.742638e-07 3.795256e-09\n", + "2 10000 2 O16 0.000000e+00 0.000000e+00" ] }, "execution_count": 30, @@ -1067,17 +1066,17 @@ "\tReaction Type =\tnu-fission\n", "\tDomain Type =\tcell\n", "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", + "\tNuclide =\tU235\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t8.06e-03 +/- 3.55e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t3.62e-01 +/- 5.67e-01%\n", "\n", - "\tNuclide =\tU-238\n", + "\tNuclide =\tU238\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t7.34e-03 +/- 5.93e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.63e-01%\n", "\n", - "\tNuclide =\tO-16\n", + "\tNuclide =\tO16\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t0.00e+00 +/- nan%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t0.00e+00 +/- nan%\n", @@ -1190,7 +1189,7 @@ " 0\n", " 10000\n", " 1\n", - " U-235\n", + " U235\n", " 0.074860\n", " 0.000303\n", " \n", @@ -1198,7 +1197,7 @@ " 1\n", " 10000\n", " 1\n", - " U-238\n", + " U238\n", " 0.005952\n", " 0.000035\n", " \n", @@ -1206,7 +1205,7 @@ " 2\n", " 10000\n", " 1\n", - " O-16\n", + " O16\n", " 0.000000\n", " 0.000000\n", " \n", @@ -1216,9 +1215,9 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "0 10000 1 U-235 0.074860 0.000303\n", - "1 10000 1 U-238 0.005952 0.000035\n", - "2 10000 1 O-16 0.000000 0.000000" + "0 10000 1 U235 0.074860 0.000303\n", + "1 10000 1 U238 0.005952 0.000035\n", + "2 10000 1 O16 0.000000 0.000000" ] }, "execution_count": 36, @@ -1298,7 +1297,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ NORMAL ] Importing ray tracing data from file...\n", + "[ NORMAL ] Ray tracing for track segmentation...\n", + "[ NORMAL ] Dumping tracks to file...\n", "[ NORMAL ] Computing the eigenvalue...\n", "[ NORMAL ] Iteration 0:\tk_eff = 0.854370\tres = 0.000E+00\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.801922\tres = 1.521E-01\n", @@ -1311,42 +1311,42 @@ "[ NORMAL ] Iteration 8:\tk_eff = 0.683124\tres = 6.142E-03\n", "[ NORMAL ] Iteration 9:\tk_eff = 0.685943\tres = 7.897E-04\n", "[ NORMAL ] Iteration 10:\tk_eff = 0.691322\tres = 4.180E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.698747\tres = 7.873E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.698746\tres = 7.873E-03\n", "[ NORMAL ] Iteration 12:\tk_eff = 0.707777\tres = 1.076E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.718040\tres = 1.295E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.718039\tres = 1.295E-02\n", "[ NORMAL ] Iteration 14:\tk_eff = 0.729218\tres = 1.452E-02\n", "[ NORMAL ] Iteration 15:\tk_eff = 0.741045\tres = 1.559E-02\n", "[ NORMAL ] Iteration 16:\tk_eff = 0.753296\tres = 1.624E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.765785\tres = 1.655E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.765784\tres = 1.655E-02\n", "[ NORMAL ] Iteration 18:\tk_eff = 0.778355\tres = 1.659E-02\n", "[ NORMAL ] Iteration 19:\tk_eff = 0.790879\tres = 1.643E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.803254\tres = 1.610E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.803253\tres = 1.610E-02\n", "[ NORMAL ] Iteration 21:\tk_eff = 0.815394\tres = 1.566E-02\n", "[ NORMAL ] Iteration 22:\tk_eff = 0.827235\tres = 1.513E-02\n", "[ NORMAL ] Iteration 23:\tk_eff = 0.838724\tres = 1.453E-02\n", "[ NORMAL ] Iteration 24:\tk_eff = 0.849823\tres = 1.390E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.860503\tres = 1.324E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.860502\tres = 1.324E-02\n", "[ NORMAL ] Iteration 26:\tk_eff = 0.870744\tres = 1.258E-02\n", "[ NORMAL ] Iteration 27:\tk_eff = 0.880535\tres = 1.191E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.889870\tres = 1.125E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.898748\tres = 1.061E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.889869\tres = 1.125E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.898747\tres = 1.061E-02\n", "[ NORMAL ] Iteration 30:\tk_eff = 0.907172\tres = 9.985E-03\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.915151\tres = 9.382E-03\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.922693\tres = 8.802E-03\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.929811\tres = 8.248E-03\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.915150\tres = 9.382E-03\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.922692\tres = 8.802E-03\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.929810\tres = 8.248E-03\n", "[ NORMAL ] Iteration 34:\tk_eff = 0.936517\tres = 7.720E-03\n", "[ NORMAL ] Iteration 35:\tk_eff = 0.942827\tres = 7.219E-03\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.948757\tres = 6.744E-03\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.954322\tres = 6.295E-03\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.948756\tres = 6.744E-03\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.954321\tres = 6.295E-03\n", "[ NORMAL ] Iteration 38:\tk_eff = 0.959539\tres = 5.871E-03\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.964425\tres = 5.472E-03\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.968996\tres = 5.096E-03\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.964424\tres = 5.472E-03\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.968995\tres = 5.096E-03\n", "[ NORMAL ] Iteration 41:\tk_eff = 0.973268\tres = 4.744E-03\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.977259\tres = 4.413E-03\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.980982\tres = 4.104E-03\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.984454\tres = 3.814E-03\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.977258\tres = 4.413E-03\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.980981\tres = 4.104E-03\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.984453\tres = 3.814E-03\n", "[ NORMAL ] Iteration 45:\tk_eff = 0.987689\tres = 3.543E-03\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.990702\tres = 3.289E-03\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.990701\tres = 3.289E-03\n", "[ NORMAL ] Iteration 47:\tk_eff = 0.993505\tres = 3.053E-03\n", "[ NORMAL ] Iteration 48:\tk_eff = 0.996112\tres = 2.832E-03\n", "[ NORMAL ] Iteration 49:\tk_eff = 0.998536\tres = 2.627E-03\n", @@ -1366,12 +1366,12 @@ "[ NORMAL ] Iteration 63:\tk_eff = 1.018721\tres = 8.864E-04\n", "[ NORMAL ] Iteration 64:\tk_eff = 1.019490\tres = 8.187E-04\n", "[ NORMAL ] Iteration 65:\tk_eff = 1.020201\tres = 7.560E-04\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.020858\tres = 6.980E-04\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.021464\tres = 6.444E-04\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.020857\tres = 6.980E-04\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.021464\tres = 6.443E-04\n", "[ NORMAL ] Iteration 68:\tk_eff = 1.022024\tres = 5.947E-04\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.022541\tres = 5.488E-04\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.022540\tres = 5.488E-04\n", "[ NORMAL ] Iteration 70:\tk_eff = 1.023017\tres = 5.063E-04\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.023458\tres = 4.670E-04\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.023457\tres = 4.670E-04\n", "[ NORMAL ] Iteration 72:\tk_eff = 1.023863\tres = 4.308E-04\n", "[ NORMAL ] Iteration 73:\tk_eff = 1.024238\tres = 3.972E-04\n", "[ NORMAL ] Iteration 74:\tk_eff = 1.024583\tres = 3.663E-04\n", @@ -1386,38 +1386,38 @@ "[ NORMAL ] Iteration 83:\tk_eff = 1.026697\tres = 1.753E-04\n", "[ NORMAL ] Iteration 84:\tk_eff = 1.026849\tres = 1.614E-04\n", "[ NORMAL ] Iteration 85:\tk_eff = 1.026989\tres = 1.487E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.027118\tres = 1.369E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.027118\tres = 1.368E-04\n", "[ NORMAL ] Iteration 87:\tk_eff = 1.027237\tres = 1.260E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.027347\tres = 1.160E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.027346\tres = 1.159E-04\n", "[ NORMAL ] Iteration 89:\tk_eff = 1.027447\tres = 1.067E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.027540\tres = 9.823E-05\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.027625\tres = 9.039E-05\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.027704\tres = 8.317E-05\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.027776\tres = 7.652E-05\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.027843\tres = 7.040E-05\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.027904\tres = 6.476E-05\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.027960\tres = 5.957E-05\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.028012\tres = 5.479E-05\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.028059\tres = 5.039E-05\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.028103\tres = 4.635E-05\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.028143\tres = 4.262E-05\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.028180\tres = 3.919E-05\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.028214\tres = 3.603E-05\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.028245\tres = 3.313E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.028274\tres = 3.046E-05\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.027540\tres = 9.821E-05\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.027625\tres = 9.040E-05\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.027703\tres = 8.316E-05\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.027775\tres = 7.652E-05\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.027842\tres = 7.039E-05\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.027903\tres = 6.480E-05\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.027959\tres = 5.959E-05\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.028011\tres = 5.479E-05\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.028058\tres = 5.043E-05\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.028102\tres = 4.633E-05\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.028142\tres = 4.265E-05\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.028180\tres = 3.921E-05\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.028214\tres = 3.605E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.028245\tres = 3.315E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.028273\tres = 3.047E-05\n", "[ NORMAL ] Iteration 105:\tk_eff = 1.028300\tres = 2.800E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.028324\tres = 2.574E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.028347\tres = 2.366E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.028367\tres = 2.175E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.028386\tres = 1.999E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.028324\tres = 2.575E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.028346\tres = 2.368E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.028367\tres = 2.176E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.028386\tres = 2.003E-05\n", "[ NORMAL ] Iteration 110:\tk_eff = 1.028403\tres = 1.837E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.028419\tres = 1.688E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.028434\tres = 1.551E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.028419\tres = 1.690E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.028434\tres = 1.553E-05\n", "[ NORMAL ] Iteration 113:\tk_eff = 1.028447\tres = 1.426E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.028460\tres = 1.310E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.028471\tres = 1.204E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.028481\tres = 1.106E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.028491\tres = 1.016E-05\n" + "[ NORMAL ] Iteration 114:\tk_eff = 1.028459\tres = 1.309E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.028471\tres = 1.202E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.028481\tres = 1.107E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.028491\tres = 1.015E-05\n" ] } ], @@ -1559,7 +1559,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 43, @@ -1568,9 +1568,9 @@ }, { "data": { - "image/png": "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\n2ajR7Q6wgAAAAABJRU5ErkJggg==\n", + "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1610,7 +1610,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb index e5c80c1926..ae015b0a64 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb @@ -59,12 +59,12 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "b10 = openmc.Nuclide('B-10')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "b10 = openmc.Nuclide('B10')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -432,7 +432,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -578,8 +578,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/nelsonag/git/openmc/openmc/mgxs/library.py:320: RuntimeWarning: The P0 correction will be ignored since the scattering order 0 is greater than zero\n", - " warnings.warn(msg, RuntimeWarning)\n" + "/home/romano/openmc/openmc/mgxs/library.py:312: RuntimeWarning: The P0 correction will be ignored since the scattering order 0 is greater than zero\n", + " warn(msg, RuntimeWarning)\n" ] } ], @@ -722,27 +722,26 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 826d5a43d85eaec1b6c7b4ce22e1a8f5e9336a4f\n", - " Date/Time: 2016-06-08 19:33:38\n", - " OpenMP Threads: 4\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-23 16:50:57\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 5010.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -810,20 +809,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.4220E+00 seconds\n", - " Reading cross sections = 1.1320E+00 seconds\n", - " Total time in simulation = 1.6571E+01 seconds\n", - " Time in transport only = 1.6501E+01 seconds\n", - " Time in inactive batches = 2.1010E+00 seconds\n", - " Time in active batches = 1.4470E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 4.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 3.6600E-01 seconds\n", + " Reading cross sections = 2.1400E-01 seconds\n", + " Total time in simulation = 7.0360E+01 seconds\n", + " Time in transport only = 7.0341E+01 seconds\n", + " Time in inactive batches = 9.6400E+00 seconds\n", + " Time in active batches = 6.0720E+01 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 5.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.8002E+01 seconds\n", - " Calculation Rate (inactive) = 23798.2 neutrons/second\n", - " Calculation Rate (active) = 13821.7 neutrons/second\n", + " Total time elapsed = 7.0764E+01 seconds\n", + " Calculation Rate (inactive) = 5186.72 neutrons/second\n", + " Calculation Rate (active) = 3293.81 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -966,11 +965,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/nelsonag/git/openmc/openmc/tallies.py:1990: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/romano/openmc/openmc/tallies.py:1941: RuntimeWarning: invalid value encountered in true_divide\n", " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n", - "/home/nelsonag/git/openmc/openmc/tallies.py:1991: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/romano/openmc/openmc/tallies.py:1942: RuntimeWarning: invalid value encountered in true_divide\n", " other_rel_err = data['other']['std. dev.'] / data['other']['mean']\n", - "/home/nelsonag/git/openmc/openmc/tallies.py:1992: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/romano/openmc/openmc/tallies.py:1943: RuntimeWarning: invalid value encountered in true_divide\n", " new_tally._mean = data['self']['mean'] / data['other']['mean']\n" ] } @@ -1098,17 +1097,16 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 826d5a43d85eaec1b6c7b4ce22e1a8f5e9336a4f\n", - " Date/Time: 2016-06-08 19:33:56\n", - " OpenMP Threads: 4\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-23 16:52:09\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", @@ -1183,20 +1181,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.1000E-02 seconds\n", - " Reading cross sections = 5.0000E-03 seconds\n", - " Total time in simulation = 1.1867E+01 seconds\n", - " Time in transport only = 1.1830E+01 seconds\n", - " Time in inactive batches = 1.2670E+00 seconds\n", - " Time in active batches = 1.0600E+01 seconds\n", - " Time synchronizing fission bank = 7.0000E-03 seconds\n", - " Sampling source sites = 7.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for initialization = 4.6000E-02 seconds\n", + " Reading cross sections = 8.0000E-03 seconds\n", + " Total time in simulation = 5.5889E+01 seconds\n", + " Time in transport only = 5.5863E+01 seconds\n", + " Time in inactive batches = 7.1040E+00 seconds\n", + " Time in active batches = 4.8785E+01 seconds\n", + " Time synchronizing fission bank = 1.6000E-02 seconds\n", + " Sampling source sites = 1.0000E-02 seconds\n", + " SEND/RECV source sites = 6.0000E-03 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.1907E+01 seconds\n", - " Calculation Rate (inactive) = 39463.3 neutrons/second\n", - " Calculation Rate (active) = 18867.9 neutrons/second\n", + " Total time elapsed = 5.5976E+01 seconds\n", + " Calculation Rate (inactive) = 7038.29 neutrons/second\n", + " Calculation Rate (active) = 4099.62 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1383,7 +1381,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 40, @@ -1392,9 +1390,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1453,7 +1451,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/nuclear-data.ipynb b/docs/source/pythonapi/examples/nuclear-data.ipynb index 78a71cd290..0c24079cf9 100644 --- a/docs/source/pythonapi/examples/nuclear-data.ipynb +++ b/docs/source/pythonapi/examples/nuclear-data.ipynb @@ -66,7 +66,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that we have our ACE table, we can look at its contents. Let's start off by plotting the total cross section." + "Now that we have our ACE table, we can look at its contents. Let's start off by plotting the total cross section. Reactions are indexed using their \"MT\" number -- a unique identifier for each reaction defined by the ENDF-6 format. The MT number for the total cross section is 1." ] }, { @@ -79,7 +79,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -90,7 +90,7 @@ "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -98,7 +98,7 @@ } ], "source": [ - "total = gd157.summed_reactions[1]\n", + "total = gd157[1]\n", "plt.loglog(total.xs.x, total.xs.y)\n", "plt.xlabel('Energy (MeV)')\n", "plt.ylabel('Cross section (b)')" @@ -124,16 +124,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]\n" + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]\n" ] } ], @@ -166,7 +166,7 @@ "data": { "image/png": "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\n9zC0aV7vrgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -174,7 +174,7 @@ } ], "source": [ - "n2n = gd157.reactions[16]\n", + "n2n = gd157[16]\n", "plt.plot(n2n.xs.x, n2n.xs.y)\n", "plt.xlabel('Energy (MeV)')\n", "plt.ylabel('Cross section (b)')\n", @@ -222,7 +222,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 7, @@ -252,36 +252,36 @@ { "data": { "text/plain": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" ] }, "execution_count": 8, @@ -312,7 +312,7 @@ "data": { "image/png": "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\nMAzDMAyv/B9ZBCMoWOfF0wAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -348,7 +348,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -359,7 +359,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -476,7 +476,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "While the groups containing reaction data are only labeled sequentially, we can look at the group attributes to figure out what they actually are." + "All reaction data is contained in the `reactions` group under a nuclide. While the group for each reaction is only labeled by its MT value, we can look at the group attributes to get a label for the reaction." ] }, { @@ -490,24 +490,24 @@ "name": "stdout", "output_type": "stream", "text": [ - "reaction_0, MT=2 (n,elastic)\n", - "reaction_1, MT=16 (n,2n)\n", - "reaction_10, MT=54 (n,n4)\n", - "reaction_11, MT=55 (n,n5)\n", - "reaction_12, MT=56 (n,n6)\n", - "reaction_13, MT=57 (n,n7)\n", - "reaction_14, MT=58 (n,n8)\n", - "reaction_15, MT=59 (n,n9)\n", - "reaction_16, MT=60 (n,n10)\n" + "reaction_002, (n,elastic)\n", + "reaction_016, (n,2n)\n", + "reaction_017, (n,3n)\n", + "reaction_022, (n,na)\n", + "reaction_024, (n,2na)\n", + "reaction_028, (n,np)\n", + "reaction_041, (n,2np)\n", + "reaction_051, (n,n1)\n", + "reaction_052, (n,n2)\n", + "reaction_053, (n,n3)\n" ] } ], "source": [ - "main_group = h5file['Gd157.71c']\n", - "for name, obj in list(main_group.items())[:10]:\n", - " if 'mt' in obj.attrs:\n", - " print('{}, MT={} {}'.format(name, obj.attrs['mt'],\n", - " obj.attrs['label'].decode()))" + "main_group = h5file['Gd157.71c/reactions']\n", + "for name, obj in sorted(list(main_group.items()))[:10]:\n", + " if 'reaction_' in name:\n", + " print('{}, {}'.format(name, obj.attrs['label'].decode()))" ] }, { @@ -521,14 +521,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "[,\n", - " ,\n", - " ]\n" + "[,\n", + " ,\n", + " ]\n" ] } ], "source": [ - "n2n_group = main_group['reaction_1']\n", + "n2n_group = main_group['reaction_016']\n", "pprint(list(n2n_group.values()))" ] }, @@ -601,8 +601,8 @@ } ], "source": [ - "gd157_reconstructed = openmc.data.IncidentNeutron.from_hdf5(main_group)\n", - "gd157.reactions[16].xs.y - gd157_reconstructed.reactions[16].xs.y" + "gd157_reconstructed = openmc.data.IncidentNeutron.from_hdf5('gd157.h5')\n", + "gd157[16].xs.y - gd157_reconstructed[16].xs.y" ] } ], @@ -622,7 +622,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index 2c222ad6e0..412013f2f4 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -23,6 +23,7 @@ "import matplotlib.pyplot as plt\n", "import scipy.stats\n", "import numpy as np\n", + "import pandas as pd\n", "\n", "import openmc" ] @@ -50,12 +51,12 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "b10 = openmc.Nuclide('B-10')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "b10 = openmc.Nuclide('B10')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -369,7 +370,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAPZSURB\nVGje7Zs7buMwEIZ9iey50gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwg\nwIcgg8Cc4fCTSK5W4OeFkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7\nE08mlia+rn7VcKXP8sRszFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WB\nzfiz20hXORmP9fi/bM9EeUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4\nlXju8K3DKv9NThOZ3q2KmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3Oaf\nPX40NGgST2r+uvQkXXp6cKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcub\nlfKGt6apotG/NVx3SInWtLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJb\nf8qlPynYmpKCh7OB1fzNalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utr\nJTy8/06TXh0r/5JOa2JmYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU\n4YuBTPa/8P67l/6r44ds+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m\n/65n+S8p/itN15v0UkW3/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB\n6R3Cqn55U4rv4kfH3zaSgQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6\nbjT6rym9I/v/03/b+LHS4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv\n6h9B/Bfxr9j1Hz2eN/hO8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wX\nfP8Mvf9G37/D/ovuP8SeP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7\n+O+E8zdP/8XOf8Hnz9Dzb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589j\nz5/Y8ej9h4D+W7qQmf57efqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m\n4fwXuH+M3n+OO3++AX9clR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA1LTA5VDIzOjAx\nOjE4LTA0OjAw/mF/xQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNS0wOVQyMzowMToxOC0wNDow\nMI88x3kAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AHFxUkA9dy05MAAAPZSURBVGje7Zs7buMwEIZ9iey5\n0gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwgwIcgg8Cc4fCTSK5W4OeF\nkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7E08mlia+rn7VcKXP8sRs\nzFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WBzfiz20hXORmP9fi/bM9E\neUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4lXju8K3DKv9NThOZ3q2K\nmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3OafPX40NGgST2r+uvQkXXp6\ncKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcublfKGt6apotG/NVx3SInW\ntLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJbf8qlPynYmpKCh7OB1fzN\nalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utrJTy8/06TXh0r/5JOa2Jm\nYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU4YuBTPa/8P67l/6r44ds\n+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m/65n+S8p/itN15v0UkW3\n/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB6R3Cqn55U4rv4kfH3zaS\ngQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6bjT6rym9I/v/03/b+LHS\n4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv6h9B/Bfxr9j1Hz2eN/hO\n8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wXfP8Mvf9G37/D/ovuP8Se\nP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7+O+E8zdP/8XOf8Hnz9Dz\nb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589jz5/Y8ej9h4D+W7qQmf57\nefqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m4fwXuH+M3n+OO3++AX9c\nlR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTIzVDE2OjM2OjAzLTA1OjAwxjuLbgAA\nACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0yM1QxNjozNjowMy0wNTowMLdmM9IAAAAASUVORK5C\nYII=\n", "text/plain": [ "" ] @@ -553,27 +554,26 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: ae588276014a905ecc6e0967bf08288ecec5b550\n", - " Date/Time: 2016-05-09 23:01:18\n", - " MPI Processes: 1\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-23 16:36:04\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 5010.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -618,20 +618,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9000E-01 seconds\n", - " Reading cross sections = 8.6000E-02 seconds\n", - " Total time in simulation = 1.0830E+01 seconds\n", - " Time in transport only = 1.0818E+01 seconds\n", - " Time in inactive batches = 1.3590E+00 seconds\n", - " Time in active batches = 9.4710E+00 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", + " Total time for initialization = 4.2600E-01 seconds\n", + " Reading cross sections = 2.9500E-01 seconds\n", + " Total time in simulation = 1.1986E+01 seconds\n", + " Time in transport only = 1.1977E+01 seconds\n", + " Time in inactive batches = 1.8370E+00 seconds\n", + " Time in active batches = 1.0149E+01 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", " SEND/RECV source sites = 1.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.1234E+01 seconds\n", - " Calculation Rate (inactive) = 9197.94 neutrons/second\n", - " Calculation Rate (active) = 3959.46 neutrons/second\n", + " Total time elapsed = 1.2431E+01 seconds\n", + " Calculation Rate (inactive) = 6804.57 neutrons/second\n", + " Calculation Rate (active) = 3694.95 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -710,7 +710,7 @@ " \t\tmesh\t[1]\n", " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", "\tNuclides =\ttotal \n", - "\tScores =\t[u'fission', u'nu-fission']\n", + "\tScores =\t['fission', 'nu-fission']\n", "\tEstimator =\ttracklength\n", "\n" ] @@ -742,13 +742,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.1508711 ]]\n", + "[[[ 0.1501735 ]]\n", "\n", - " [[ 0.05389822]]\n", + " [[ 0.05936257]]\n", "\n", - " [[ 0.19633 ]]\n", + " [[ 0.21402727]]\n", "\n", - " [[ 0.12963172]]]\n" + " [[ 0.13436703]]]\n" ] } ], @@ -804,8 +804,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 2.34e-04\n", - " 3.54e-05\n", + " 2.20e-04\n", + " 3.31e-05\n", " \n", " \n", " 1\n", @@ -815,8 +815,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 5.71e-04\n", - " 8.62e-05\n", + " 5.37e-04\n", + " 8.06e-05\n", " \n", " \n", " 2\n", @@ -826,8 +826,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 7.03e-05\n", - " 7.05e-06\n", + " 7.43e-05\n", + " 7.91e-06\n", " \n", " \n", " 3\n", @@ -837,8 +837,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 1.87e-04\n", - " 1.76e-05\n", + " 1.97e-04\n", + " 1.96e-05\n", " \n", " \n", " 4\n", @@ -848,8 +848,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 3.67e-04\n", - " 3.61e-05\n", + " 3.52e-04\n", + " 3.39e-05\n", " \n", " \n", " 5\n", @@ -859,8 +859,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 8.94e-04\n", - " 8.80e-05\n", + " 8.57e-04\n", + " 8.26e-05\n", " \n", " \n", " 6\n", @@ -870,8 +870,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.04e-04\n", - " 5.36e-06\n", + " 1.02e-04\n", + " 6.16e-06\n", " \n", " \n", " 7\n", @@ -881,8 +881,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 2.76e-04\n", - " 1.40e-05\n", + " 2.70e-04\n", + " 1.61e-05\n", " \n", " \n", " 8\n", @@ -892,8 +892,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 6.04e-04\n", - " 5.57e-05\n", + " 6.09e-04\n", + " 6.55e-05\n", " \n", " \n", " 9\n", @@ -903,8 +903,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.47e-03\n", - " 1.36e-04\n", + " 1.48e-03\n", + " 1.60e-04\n", " \n", " \n", " 10\n", @@ -914,8 +914,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.41e-04\n", - " 6.69e-06\n", + " 1.38e-04\n", + " 6.74e-06\n", " \n", " \n", " 11\n", @@ -925,8 +925,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 3.72e-04\n", - " 1.82e-05\n", + " 3.65e-04\n", + " 1.88e-05\n", " \n", " \n", " 12\n", @@ -936,8 +936,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 6.45e-04\n", - " 4.59e-05\n", + " 6.23e-04\n", + " 5.16e-05\n", " \n", " \n", " 13\n", @@ -947,8 +947,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.57e-03\n", - " 1.12e-04\n", + " 1.52e-03\n", + " 1.26e-04\n", " \n", " \n", " 14\n", @@ -958,8 +958,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.82e-04\n", - " 9.37e-06\n", + " 1.74e-04\n", + " 9.99e-06\n", " \n", " \n", " 15\n", @@ -969,8 +969,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 4.76e-04\n", - " 2.47e-05\n", + " 4.58e-04\n", + " 2.68e-05\n", " \n", " \n", " 16\n", @@ -980,8 +980,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 7.28e-04\n", - " 7.49e-05\n", + " 6.94e-04\n", + " 8.68e-05\n", " \n", " \n", " 17\n", @@ -991,8 +991,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.77e-03\n", - " 1.83e-04\n", + " 1.69e-03\n", + " 2.12e-04\n", " \n", " \n", " 18\n", @@ -1002,8 +1002,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.81e-04\n", - " 1.04e-05\n", + " 1.75e-04\n", + " 1.10e-05\n", " \n", " \n", " 19\n", @@ -1013,8 +1013,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 4.72e-04\n", - " 2.67e-05\n", + " 4.55e-04\n", + " 2.80e-05\n", " \n", " \n", "\n", @@ -1023,49 +1023,49 @@ "text/plain": [ " mesh 1 energy low [MeV] energy high [MeV] score mean \\\n", " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 fission 2.34e-04 \n", - "1 1 1 1 0.00e+00 6.25e-07 nu-fission 5.71e-04 \n", - "2 1 1 1 6.25e-07 2.00e+01 fission 7.03e-05 \n", - "3 1 1 1 6.25e-07 2.00e+01 nu-fission 1.87e-04 \n", - "4 1 2 1 0.00e+00 6.25e-07 fission 3.67e-04 \n", - "5 1 2 1 0.00e+00 6.25e-07 nu-fission 8.94e-04 \n", - "6 1 2 1 6.25e-07 2.00e+01 fission 1.04e-04 \n", - "7 1 2 1 6.25e-07 2.00e+01 nu-fission 2.76e-04 \n", - "8 1 3 1 0.00e+00 6.25e-07 fission 6.04e-04 \n", - "9 1 3 1 0.00e+00 6.25e-07 nu-fission 1.47e-03 \n", - "10 1 3 1 6.25e-07 2.00e+01 fission 1.41e-04 \n", - "11 1 3 1 6.25e-07 2.00e+01 nu-fission 3.72e-04 \n", - "12 1 4 1 0.00e+00 6.25e-07 fission 6.45e-04 \n", - "13 1 4 1 0.00e+00 6.25e-07 nu-fission 1.57e-03 \n", - "14 1 4 1 6.25e-07 2.00e+01 fission 1.82e-04 \n", - "15 1 4 1 6.25e-07 2.00e+01 nu-fission 4.76e-04 \n", - "16 1 5 1 0.00e+00 6.25e-07 fission 7.28e-04 \n", - "17 1 5 1 0.00e+00 6.25e-07 nu-fission 1.77e-03 \n", - "18 1 5 1 6.25e-07 2.00e+01 fission 1.81e-04 \n", - "19 1 5 1 6.25e-07 2.00e+01 nu-fission 4.72e-04 \n", + "0 1 1 1 0.00e+00 6.25e-07 fission 2.20e-04 \n", + "1 1 1 1 0.00e+00 6.25e-07 nu-fission 5.37e-04 \n", + "2 1 1 1 6.25e-07 2.00e+01 fission 7.43e-05 \n", + "3 1 1 1 6.25e-07 2.00e+01 nu-fission 1.97e-04 \n", + "4 1 2 1 0.00e+00 6.25e-07 fission 3.52e-04 \n", + "5 1 2 1 0.00e+00 6.25e-07 nu-fission 8.57e-04 \n", + "6 1 2 1 6.25e-07 2.00e+01 fission 1.02e-04 \n", + "7 1 2 1 6.25e-07 2.00e+01 nu-fission 2.70e-04 \n", + "8 1 3 1 0.00e+00 6.25e-07 fission 6.09e-04 \n", + "9 1 3 1 0.00e+00 6.25e-07 nu-fission 1.48e-03 \n", + "10 1 3 1 6.25e-07 2.00e+01 fission 1.38e-04 \n", + "11 1 3 1 6.25e-07 2.00e+01 nu-fission 3.65e-04 \n", + "12 1 4 1 0.00e+00 6.25e-07 fission 6.23e-04 \n", + "13 1 4 1 0.00e+00 6.25e-07 nu-fission 1.52e-03 \n", + "14 1 4 1 6.25e-07 2.00e+01 fission 1.74e-04 \n", + "15 1 4 1 6.25e-07 2.00e+01 nu-fission 4.58e-04 \n", + "16 1 5 1 0.00e+00 6.25e-07 fission 6.94e-04 \n", + "17 1 5 1 0.00e+00 6.25e-07 nu-fission 1.69e-03 \n", + "18 1 5 1 6.25e-07 2.00e+01 fission 1.75e-04 \n", + "19 1 5 1 6.25e-07 2.00e+01 nu-fission 4.55e-04 \n", "\n", " std. dev. \n", " \n", - "0 3.54e-05 \n", - "1 8.62e-05 \n", - "2 7.05e-06 \n", - "3 1.76e-05 \n", - "4 3.61e-05 \n", - "5 8.80e-05 \n", - "6 5.36e-06 \n", - "7 1.40e-05 \n", - "8 5.57e-05 \n", - "9 1.36e-04 \n", - "10 6.69e-06 \n", - "11 1.82e-05 \n", - "12 4.59e-05 \n", - "13 1.12e-04 \n", - "14 9.37e-06 \n", - "15 2.47e-05 \n", - "16 7.49e-05 \n", - "17 1.83e-04 \n", - "18 1.04e-05 \n", - "19 2.67e-05 " + "0 3.31e-05 \n", + "1 8.06e-05 \n", + "2 7.91e-06 \n", + "3 1.96e-05 \n", + "4 3.39e-05 \n", + "5 8.26e-05 \n", + "6 6.16e-06 \n", + "7 1.61e-05 \n", + "8 6.55e-05 \n", + "9 1.60e-04 \n", + "10 6.74e-06 \n", + "11 1.88e-05 \n", + "12 5.16e-05 \n", + "13 1.26e-04 \n", + "14 9.99e-06 \n", + "15 2.68e-05 \n", + "16 8.68e-05 \n", + "17 2.12e-04 \n", + "18 1.10e-05 \n", + "19 2.80e-05 " ] }, "execution_count": 24, @@ -1078,8 +1078,7 @@ "df = tally.get_pandas_dataframe(nuclides=False)\n", "\n", "# Set the Pandas float display settings\n", - "import pandas as pd\n", - "pd.set_option('display.float_format', '{:.2e}'.format)\n", + "pd.options.display.float_format = '{:.2e}'.format\n", "\n", "# Print the first twenty rows in the dataframe\n", "df.head(20)" @@ -1094,9 +1093,9 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEeCAYAAACkBUNkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGKtJREFUeJzt3Xm0ZWV95vHvYxURHCJRFAkQUYMDipASQdupDKgMdl8T\ntKvBCZIljQs0sZ1wWHJLTYcsskKLIpWljYDaGm2Va0vZQKuIrVZAkTEMViMRUFBxJJBI4a//2PvG\nk8ute895uXN9P2udVfu8wz7vPmvXfc6799n7pKqQJGlU91vsAUiSlicDRJLUxACRJDUxQCRJTQwQ\nSVITA0SS1MQA0YJIck+Sy5JcnuTSJP9uHl7jjlnq90hy5Fy/7nxLclSS909TPp7kjYsxJgkMEC2c\nu6pq36raB3gr8JeLMIY9gPsUIElWzc1QVpYkqxd7DFp4BogWw28DPwVI5+QkVyW5Msm6vvyPknyx\nr98lyfVJHtl/Gp9IcmGS7yQ5cerKt7ZO4CTg2f1M6PVT+twvyQeSXJvkgiQbk7ykr7sxyV8luRR4\naZJ9k2xKckWSzyb5nb7dhUn265d3SnJjv7zVMSd5eZKL+zH97WRAJTm63+aLgWfO8F7uk+Qb/Xpf\n3fc9O8mLB17jY0nGpmzvLkku6l/3qiTP7ssP7meIlyf5Yl/20CTn9Nu7KclT+vLxJB9J8jXgI0lW\n9e/7JX3b/zzDuLUSVJUPH/P+AO4BLgOuBX4OPLUvPxy4AFgF7Ax8D9ilr/socDzweeCIvuwo4AfA\nw4AdgKuA/fq6O2ZaJ7AW+PxWxvcSYCPdh6pH0gXcS/q6G4E3D7S9Anhuv/wu4L/1yxcOjGUn4MaZ\nxgw8EfhfwHZ9uw8Ar+zH+j3g4cBvAV8D3j/NmMeBy/t17gTcBPwu8FzgnL7NQ4DvAqun9H0D8PZ+\neRXw4P71bgIe3Zc/tP/3fcCJ/fIfApcNvP63gB3658cA7+iX7w98c3JdPlbmw2mnFspdVbUvQJJn\nAGcneTLwLODjVXUPcFuSrwBPAz4HvJbuj+2mqvr4wLouqKrb+3V9pl/HNwfqt7bOX8wwvmcBn6qq\nXwO3JvnylPq/61/vIcCOVfWVvvws4FNDbP90Y94CPBW4JAl0QfBD4ADgwqr6Ud/+74DHbWW9E1V1\nF3BXP+b9q+qcfjb1cLow/XRVbZnS7xLgjCTb0YXNZUnWAhdV1XcBquonA+/N4X3Zl5I8LMlv93Wf\n618f4AXAUyZnbnThtSddgGkFMkC04KrqG0l2ovvEO5PdgF8DOye5X//HHWDqDdwW4oZu/zREmy38\n5rDw9lPqphtzgLOq6q2DFYOHn4awtffibODlwH8Cjr5Xp6qLkjwHOAw4M8nf0B9WHNHg+xLgtVV1\nXsN6tAx5DkQLLskT6A6b3A58FVjXHz9/OPAc4OL+pOwZwBHANcB/GVjF8/vj8jsAL6Y7xDNo2nUC\nv6Q7VDOdrwGH9+dCdqY73HUvVfVz4KeT5wyAVwCTs5Eb6WYU0B0SGzTdmL8IvCTJI/r35aFJHgX8\nPfDc/pP+dsBLtzJmgLEk2yd5WD/mS/ryM4E/78f8D1M79a9zW1V9EPgQsAbYBDwnyaMnx9M3/yrw\nsr5sLfDjqppuNnce8Jp+zCR5XJIHzjB2LXPOQLRQdkhyWb8c4FVVdU+SzwLPoDuWX3TnGm5N8k7g\nq1X1f5NcTneY59y+/8XAp+lmKB+tqm/+25dia+u8HbinX9+ZVXXKQJ9PAwcC/0B3HuBSunM103kV\nsCHJA4Ab+M0n/L8GPpnkGODcKX2mHXOSdwDnJ7kfcDdwXFVtSjIOfAP4Gd25o625Avgy3TmQd1fV\n9wGq6rYk1wDnbKXfWuBNSe4G7gBeWVU/6sf+mX48PwSeT3eu44wkVwB39ts/nQ/RfdPt0nTH5H5E\nF5ZaoVLl7dy1fCQ5iu5E9fHzsO4HVdUd/af5i4FnVtWtc7Deo5inMc/wmg8ArgTW9LMmac45A5F+\n4/NJdqT75tO75yI8FkOSg4D/DpxieGg+OQORJDXxJLo0i3QXEr4p3UWJdyQ5I8nOSb6Q5BdJ/k9+\nczHh05N8PcnP+ovx1g6s5+gk1yT5ZZIbBi+0S7I2yc1J3pDkh0l+kORe356SlhIDRBrO4cBBwOOB\nFwH/G3gb8Ai6/0evS7Ir3cnz9wAPBd4IfLr/Jhh0J6VfRHcl/tHAKUnWDLzGI+mundgV+FPgtMlg\nkpYiA0Qazvuq6raquoXua62bqurbVfXPdN/6+gO66y42VtXGqvp1VV1Ad4HjoQBVdW5V/b/qfAU4\nH3j2wGvcDbyrqu6uqo103456/MJtojQaA0Qazm0Dy3dN8/xBwKPo7pX1s8kH3VXcuwAkOaS/l9RP\n+rpD6b5+O+n2KVeM39mvV1qS/BaWNHduAj5SVa+eWpHk/nTXgbyS7vYjdyc5h+6aGGlZcgYizZ2P\nAv8+yQv7q+C370+O70b31eD7011ctyXJIXT3jpKWLQNEmiNVdRMwRndy/Ud0M5I3Aferql8CrwM+\nSXfPqSPpbhgpLVteByJJauIMRED340CLPQZpFO6zi88ZiABIUlXlCV0tG+6zi88ZiCSpiQEiSWqy\n7K4DSeIxt3mwbt0631stK+6z82uYw4PL7hxIf9xzsYex4kxMTDA2NrbYw5CG5j47f5IMFSAewpIk\nNTFAJElNDBBJUhMDRJLUxACRJDUxQCRJTQwQSVITA0SS1MQAkbRsjI+Pk4Sku8Ztcnl8fHxxB7aN\nMkAkLRvj4+NUFZN3o5hcNkAWhwEiSWpigEiSmhggkqQmBogkqYkBIklqYoBIkpoYIJKkJgaIJKmJ\nASJJamKASJKaGCCSpCYGiCSpiQEiadnwbrxLiwEiadnwbrxLy1ABkuTgJNcl2ZzkhGnqk+TUvv6K\nJGtG6PuGJJVkp/u2KZJWOmcgS8usAZJkFXAacAiwF3BEkr2mNDsE2LN/HAOcPkzfJLsDLwC+d5+3\nRJK0oIaZgewPbK6qG6rqV8AngLEpbcaAs6uzCdgxyS5D9D0FeDNQ93VDJK18HsJaWoYJkF2Bmwae\n39yXDdNmq32TjAG3VNXlI45ZkrQErF6MF03yAOBtdIevJEnL0DABcguw+8Dz3fqyYdpst5XyxwKP\nBi7vT4btBlyaZP+qunVwxUnGgRMnn69bt46JiYkhhq1R+b5quXGfnT9JBk8trK+q8Xu1mTyWOMNK\nVgPXAwfS/fG/BDiyqq4eaHMYcDxwKHAAcGpV7T9M377/jcB+VfXjYTZqtjFrdBMTE4yNTT21JS1d\n7rPzJwlVldnazToDqaotSY4HzgNWAWdU1dVJju3rNwAb6cJjM3AncPRMfRu3SZK0hAx1DqSqNtKF\nxGDZhoHlAo4btu80bfYYZhySpKXDK9ElLWmTFwtOfcxUN1mv+WWASFrSJq/1mPqYqc7zpAvDAJEk\nNTFAJElNDBBJUhMDRJLUxACRJDUxQCRJTQwQSVITA0SS1MQAkSQ1MUAkSU0MEElSEwNEktTEAJEk\nNTFAJElNDBBJUhMDRJLUxACRJDUxQCRJTQwQSVITA0SS1MQAkSQ1MUAkSU0MEElSEwNEktTEAJEk\nNTFAJElNDBBJUhMDRJLUxACRJDUxQCRJTQwQSVITA0SS1MQAkSQ1GSpAkhyc5Lokm5OcME19kpza\n11+RZM1sfZO8u297eZIvJfm9udkkSdJCmDVAkqwCTgMOAfYCjkiy15RmhwB79o9jgNOH6HtyVT2l\nqvYBzgFOvO+bI0laKMPMQPYHNlfVDVX1K+ATwNiUNmPA2dXZBOyYZJeZ+lbVLwb6PxC4/T5uiyRp\nAa0eos2uwE0Dz28GDhiiza6z9U3yF8ArgbumWackaQlb1JPoVfX2qtod+DBwymKORZI0mmFmILcA\nuw88360vG6bNdkP0BfgY8IXpXjzJOAPnR9atW8fExMQQw9aofF+13LjPzp8kNfB0fVWN36tNVU0t\nm7qS1cD1wIF0f/wvAY6sqqsH2hwGHA8cSnco6tSq2n+mvkn2rKrv9P1fCzy9ql42zEbNNmaNbmJi\ngrGxqae2pKXLfXb+JKGqMlu7WWcgVbUlyfHAecAq4Iw+AI7t6zcAG+nCYzNwJ3D0TH37VZ+U5PHA\nPcANwGtG3EZJ0iIa5hAWVbWRLiQGyzYMLBdw3LB9+/LDRxqpJGlJ8Up0SVITA0SS1MQAkSQ1MUAk\nSU0MEElSEwNEktTEAJEkNTFAJElNDBBJUhMDRJLUxACRJDUxQCRJTQwQSVITA0SS1MQAkSQ1MUAk\nSU0MEElSEwNEktTEAJEkNTFAJElNDBBJUhMDRJLUxACRJDUxQCRJTQwQSVITA0SS1MQAkSQ1MUAk\nSU0MEElSEwNEktTEAJEkNTFAJElNDBBJUhMDRJLUxACRJDUZKkCSHJzkuiSbk5wwTX2SnNrXX5Fk\nzWx9k5yc5Nq+/WeT7Dg3myRJWgizBkiSVcBpwCHAXsARSfaa0uwQYM/+cQxw+hB9LwCeXFVPAa4H\n3nqft0aStGCGmYHsD2yuqhuq6lfAJ4CxKW3GgLOrswnYMckuM/WtqvOrakvffxOw2xxsjyRpgQwT\nILsCNw08v7kvG6bNMH0B/gT4whBjkSQtEYt+Ej3J24EtwMcWeyySpOGtHqLNLcDuA89368uGabPd\nTH2THAW8CDiwqmq6F08yDpw4+XzdunVMTEwMMWyNyvdVy4377PxJMvg3eX1Vjd+rzVb+bg+uZDXd\nSe4D6f74XwIcWVVXD7Q5DDgeOBQ4ADi1qvafqW+Sg4G/AZ5bVT8aZaNmG7NGNzExwdjY1FNb0tLl\nPjt/klBVma3drDOQqtqS5HjgPGAVcEYfAMf29RuAjXThsRm4Ezh6pr79qt8P3B+4IAnApqo6drTN\nlCQtlmEOYVFVG+lCYrBsw8ByAccN27cv//2RRipJWlIW/SS6JGl5MkAkSU0MEElSEwNkGzY+Pk4S\n+i8x/Ovy+Pj44g5M0rIw69d4lxq/xjs//EqkFtM+68/n53fdPVKf9z5jC3/2jaG+B/SvHrLDdlx+\n4gtG6rMtmrOv8UrSfPv5XXdz40mHjdRnYmJi5D57nHDuSO01Mw9hSZKaGCCSpCYGiCSpiQGyDVu7\ndu2038Jau3bt4g5M0rJggGzDthYUBoikYRgg27Dx8XGqismvRU8uex2IpGEYINswLySUdF94Hcg2\nZjIsZrJ+/XrWr1//b8q8eFPSVM5AtjGTh6mmPmaqMzwkTccAkSQ1MUAkSU0MEElSEwNEktTEAJEk\nNTFAJElNDBBJUhMDRJLUxACRJDUxQCRJTQwQSVITA0SS1MQAkSQ1MUAkSU0MEElSEwNEktTEAJEk\nNTFAJElNDBBJUhMDRJLUZKgASXJwkuuSbE5ywjT1SXJqX39FkjWz9U3y0iRXJ/l1kv3mZnMkSQtl\n1gBJsgo4DTgE2As4IsleU5odAuzZP44BTh+i71XAHwMX3ffNkCQttGFmIPsDm6vqhqr6FfAJYGxK\nmzHg7OpsAnZMsstMfavqmqq6bs62RJK0oIYJkF2Bmwae39yXDdNmmL6SpGXIk+iSpCarh2hzC7D7\nwPPd+rJh2mw3RN8ZJRkHTpx8vm7dOiYmJkZZhYbk+6rF8t5ntO1/o/ZpfZ1tUZIaeLq+qsbv1aiq\nZnzQhcwNwKOB3wIuB540pc1hwBeAAE8HLh6h74XAfrONY6B9ae6dc845iz0EbcMe9ZbPj9ynZZ9t\neZ1tUf93dta/x7POQKpqS5LjgfOAVcAZVXV1kmP7+g3ARuBQYDNwJ3D0TH37dPsj4H3Aw4Fzk1xW\nVS+cbTySpKVhmENYVNVGupAYLNswsFzAccP27cs/C3x2lMFKkpYOT6JLkpoYIJKkJgaIJKmJASJJ\namKASJKaGCCSpCYGiCSpyVDXgWh52Wf9+fz8rrtH6vPeZ8AeJ5w7Up+H7LAdl5/4gpH6SFo5DJAV\n6Od33c2NJx02Up+JiYmR+4waONLWPPiJJ7D3Wff6rboZvWfH97D3WXuP+DrQ3XlJc8EAkbTofnnN\nSU0feq581ZUj9fFDz9zyHIgkqYkBIklqYoBIkpoYIJKkJgaIJKmJASJJamKASJKaGCCSpCYGiCSp\niQEiSWpigEiSmhggkqQm3kxR0pIw6o0OW3+CQHPHAJG06Ea9Ey+0/QSB5paHsCRJTQwQSVITA0SS\n1MRzICuQPw8qaSEYICuQPw8qaSF4CEuS1MQAkSQ1MUAkSU0MEElSE0+ir1DeFkLSfDNAViBvCyFp\nIQx1CCvJwUmuS7I5yb0uMEjn1L7+iiRrZuub5KFJLkjynf7f35mbTZIkLYRZAyTJKuA04BBgL+CI\nJHtNaXYIsGf/OAY4fYi+JwBfrKo9gS/2zyVJy8QwM5D9gc1VdUNV/Qr4BDA2pc0YcHZ1NgE7Jtll\nlr5jwFn98lnAi+/jtkiSFtAwAbIrcNPA85v7smHazNR356r6Qb98K7DzkGOWtA1JMu1jprrJes2v\nJfE13qoqoBZ7HNsC/zNquamqaR8z1U3Wa34N8y2sW4DdB57v1pcN02a7GfrelmSXqvpBf7jrh9O9\neJJx4MTJ5+vWrWNiYmKIYWs655xzTlOd77mWIvfL+ZNkMIXXV9X4vdrMltRJVgPXAwfS/fG/BDiy\nqq4eaHMYcDxwKHAAcGpV7T9T3yQnA7dX1Un9t7MeWlVvHmaj/HQx9yYmJhgbm3pqS1q63GfnTxKq\natZDD7POQKpqS5LjgfOAVcAZfQAc29dvADbShcdm4E7g6Jn69qs+Cfhkkj8F/hH4jyNuoyRpEQ11\nIWFVbaQLicGyDQPLBRw3bN++/Ha6mYkkaRlaEifRJUnLjwEiSWpigEiSmhggkqQmBogkqcmyvJ27\nV0ZL0uKb9UJCbRv6CzRNZi0b7rOLz0NYkqQmBogkqYkBoknrF3sA0ojcZxeZ50AkSU2cgUiSmhgg\nkqQmBsgKkuR1Sa5J8tP+N1ZG7f/1+RiX1CrJE5JcluTbSR7bso8meVeSg+ZjfNs6z4GsIEmuBQ6q\nqpsXeyzSXOg/CK2uqvcs9lh0b85AVogkG4DHAF9I8vok7+/LX5rkqiSXJ7moL3tSkov7T3ZXJNmz\nL7+j/zdJTu77XZlkXV++NsmFSf5nkmuTfCzeFkAzSLJHPyv+YJKrk5yfZId+P9qvb7NTkhun6Xso\n8OfAa5J8uS+b3Ed3SXJRvw9fleTZSVYlOXNgv3193/bMJC/plw/sZzNXJjkjyf378huTrE9yaV/3\nhAV5g5Y5A2SFqKpjge8DzwN+OlD1TuCFVbUP8B/6smOB91bVvsB+wNQZyx8D+wL7AAcBJ/e/Ww/w\nB3T/qfeiC6xnzv3WaIXZEzitqp4E/Aw4fJhO/Y/RbQBOqarnTak+Ejiv34f3AS6j22d3raonV9Xe\nwIcHOyTZHjgTWNfXrwZeM9Dkx1W1BjgdeONom7htMkBWvq8BZyZ5Nd3PCgN8A3hbkrcAj6qqu6b0\neRbw8aq6p6puA74CPK2vu7iqbq6qX9P9p91j3rdAy913q+qyfvlbzM0+cwlwdJJxYO+q+iVwA/CY\nJO9LcjDwiyl9Ht+P5fr++VnAcwbqPzPHY1zxDJAVrp+ZvAPYHfhWkodV1f+gm43cBWxM8ocjrPJf\nBpbvYZnekFMLarp9Zgu/+fuz/WRlkg/3h6Xu9TPYg6rqIro//rfQfUB6ZVX9lG42ciHdLPtDjeN0\nvx6SAbLCJXlsVf19Vb0T+BGwe5LHADdU1anABPCUKd2+Cqzrjyk/nO4/6sULOnCtdDcCT+2XXzJZ\nWFVHV9W+VXXoTJ2TPAq4rao+SBcUa5LsBNyvqj5N96FpzZRu1wF7JPn9/vkr6GbXamTKrnwn9yfJ\nA3wRuBx4C/CKJHcDtwL/dUqfzwLP6NsW8OaqutUTi5pDfw18MskxwLkN/dcCb+r34TuAVwK7Ah9O\nMvnB+K2DHarqn5McDXwqyWq6w2AbGscv/BqvJKmRh7AkSU0MEElSEwNEktTEAJEkNTFAJElNDBBJ\nUhMDRJLUxACRFkl/MZu0bBkg0giSPDDJuf3t8a9Ksi7J05J8vS+7OMmDk2zf39fpyv724c/r+x+V\n5HNJvkR3ZwCSvCnJJf2t9dcv6gZKI/ATkDSag4HvV9VhAEkeAnyb7hbhlyT5bbqbVP4ZUFW1d38L\nmPOTPK5fxxrgKVX1kyQvoLvd+f50t5v5XJLn9DcLlJY0ZyDSaK4Enp/kr5I8G/g94AdVdQlAVf2i\nqrbQ3RL/o33ZtcA/ApMBckFV/aRffkH/+DZwKfAEukCRljxnINIIqur6JGuAQ4H3AF9qWM0/DSwH\n+Muq+tu5GJ+0kJyBSCNI8rvAnVX1UeBk4ABglyRP6+sf3J8c/yrwsr7scXQzleumWeV5wJ8keVDf\ndtckj5j/LZHuO2cg0mj2prtF/q+Bu+l+EjXA+5LsQHf+4yDgA8DpSa6k+/Gko6rqX6b+hHxVnZ/k\nicA3+ro7gJcDP1yg7ZGaeTt3SVITD2FJkpoYIJKkJgaIJKmJASJJamKASJKaGCCSpCYGiCSpiQEi\nSWry/wHxFqsYpaO7aQAAAABJRU5ErkJggg==\n", + "image/png": "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\n/wf1F+RhutXrZwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1119,7 +1118,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 26, @@ -1128,9 +1127,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nJ/KLgSwAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1175,8 +1174,8 @@ "\tName =\tcell tally\n", "\tFilters =\t\n", " \t\tcell\t[10000]\n", - "\tNuclides =\tU-235 U-238 \n", - "\tScores =\t[u'scatter-Y0,0', u'scatter-Y1,-1', u'scatter-Y1,0', u'scatter-Y1,1', u'scatter-Y2,-2', u'scatter-Y2,-1', u'scatter-Y2,0', u'scatter-Y2,1', u'scatter-Y2,2']\n", + "\tNuclides =\tU235 U238 \n", + "\tScores =\t['scatter-Y0,0', 'scatter-Y1,-1', 'scatter-Y1,0', 'scatter-Y1,1', 'scatter-Y2,-2', 'scatter-Y2,-1', 'scatter-Y2,0', 'scatter-Y2,1', 'scatter-Y2,2']\n", "\tEstimator =\tanalog\n", "\n" ] @@ -1216,146 +1215,146 @@ " \n", " 0\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y0,0\n", - " 3.86e-02\n", - " 1.11e-03\n", + " 3.84e-02\n", + " 1.32e-03\n", " \n", " \n", " 1\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y1,-1\n", - " 2.75e-04\n", - " 2.96e-04\n", + " 3.61e-04\n", + " 3.13e-04\n", " \n", " \n", " 2\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y1,0\n", - " -5.55e-05\n", - " 4.33e-04\n", + " -2.38e-04\n", + " 4.69e-04\n", " \n", " \n", " 3\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y1,1\n", - " -4.22e-04\n", - " 3.51e-04\n", + " -5.08e-04\n", + " 3.83e-04\n", " \n", " \n", " 4\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y2,-2\n", - " 5.88e-05\n", - " 2.04e-04\n", + " 6.68e-05\n", + " 2.46e-04\n", " \n", " \n", " 5\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y2,-1\n", - " 1.00e-04\n", - " 2.49e-04\n", + " 6.47e-06\n", + " 2.84e-04\n", " \n", " \n", " 6\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y2,0\n", - " -8.09e-05\n", - " 1.59e-04\n", + " -1.41e-04\n", + " 1.75e-04\n", " \n", " \n", " 7\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y2,1\n", - " 1.93e-04\n", - " 2.14e-04\n", + " 1.61e-04\n", + " 2.33e-04\n", " \n", " \n", " 8\n", " 10000\n", - " U-235\n", + " U235\n", " scatter-Y2,2\n", - " 1.12e-04\n", - " 1.86e-04\n", + " -1.80e-05\n", + " 1.97e-04\n", " \n", " \n", " 9\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y0,0\n", - " 2.34e+00\n", - " 1.34e-02\n", + " 2.33e+00\n", + " 1.35e-02\n", " \n", " \n", " 10\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y1,-1\n", - " 2.32e-02\n", - " 2.97e-03\n", + " 2.53e-02\n", + " 3.23e-03\n", " \n", " \n", " 11\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y1,0\n", - " 7.50e-04\n", - " 2.55e-03\n", + " 7.10e-04\n", + " 2.92e-03\n", " \n", " \n", " 12\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y1,1\n", - " -2.73e-02\n", - " 3.28e-03\n", + " -2.49e-02\n", + " 3.52e-03\n", " \n", " \n", " 13\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y2,-2\n", - " -2.36e-03\n", - " 1.21e-03\n", + " -1.43e-03\n", + " 1.17e-03\n", " \n", " \n", " 14\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y2,-1\n", - " -1.80e-04\n", - " 1.49e-03\n", + " 6.84e-04\n", + " 1.63e-03\n", " \n", " \n", " 15\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y2,0\n", - " 3.23e-03\n", - " 2.25e-03\n", + " 2.85e-03\n", + " 2.63e-03\n", " \n", " \n", " 16\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y2,1\n", - " 3.75e-03\n", - " 1.97e-03\n", + " 3.97e-03\n", + " 2.24e-03\n", " \n", " \n", " 17\n", " 10000\n", - " U-238\n", + " U238\n", " scatter-Y2,2\n", - " 2.07e-03\n", - " 1.60e-03\n", + " 2.26e-03\n", + " 1.85e-03\n", " \n", " \n", "\n", @@ -1363,24 +1362,24 @@ ], "text/plain": [ " cell nuclide score mean std. dev.\n", - "0 10000 U-235 scatter-Y0,0 3.86e-02 1.11e-03\n", - "1 10000 U-235 scatter-Y1,-1 2.75e-04 2.96e-04\n", - "2 10000 U-235 scatter-Y1,0 -5.55e-05 4.33e-04\n", - "3 10000 U-235 scatter-Y1,1 -4.22e-04 3.51e-04\n", - "4 10000 U-235 scatter-Y2,-2 5.88e-05 2.04e-04\n", - "5 10000 U-235 scatter-Y2,-1 1.00e-04 2.49e-04\n", - "6 10000 U-235 scatter-Y2,0 -8.09e-05 1.59e-04\n", - "7 10000 U-235 scatter-Y2,1 1.93e-04 2.14e-04\n", - "8 10000 U-235 scatter-Y2,2 1.12e-04 1.86e-04\n", - "9 10000 U-238 scatter-Y0,0 2.34e+00 1.34e-02\n", - "10 10000 U-238 scatter-Y1,-1 2.32e-02 2.97e-03\n", - "11 10000 U-238 scatter-Y1,0 7.50e-04 2.55e-03\n", - "12 10000 U-238 scatter-Y1,1 -2.73e-02 3.28e-03\n", - "13 10000 U-238 scatter-Y2,-2 -2.36e-03 1.21e-03\n", - "14 10000 U-238 scatter-Y2,-1 -1.80e-04 1.49e-03\n", - "15 10000 U-238 scatter-Y2,0 3.23e-03 2.25e-03\n", - "16 10000 U-238 scatter-Y2,1 3.75e-03 1.97e-03\n", - "17 10000 U-238 scatter-Y2,2 2.07e-03 1.60e-03" + "0 10000 U235 scatter-Y0,0 3.84e-02 1.32e-03\n", + "1 10000 U235 scatter-Y1,-1 3.61e-04 3.13e-04\n", + "2 10000 U235 scatter-Y1,0 -2.38e-04 4.69e-04\n", + "3 10000 U235 scatter-Y1,1 -5.08e-04 3.83e-04\n", + "4 10000 U235 scatter-Y2,-2 6.68e-05 2.46e-04\n", + "5 10000 U235 scatter-Y2,-1 6.47e-06 2.84e-04\n", + "6 10000 U235 scatter-Y2,0 -1.41e-04 1.75e-04\n", + "7 10000 U235 scatter-Y2,1 1.61e-04 2.33e-04\n", + "8 10000 U235 scatter-Y2,2 -1.80e-05 1.97e-04\n", + "9 10000 U238 scatter-Y0,0 2.33e+00 1.35e-02\n", + "10 10000 U238 scatter-Y1,-1 2.53e-02 3.23e-03\n", + "11 10000 U238 scatter-Y1,0 7.10e-04 2.92e-03\n", + "12 10000 U238 scatter-Y1,1 -2.49e-02 3.52e-03\n", + "13 10000 U238 scatter-Y2,-2 -1.43e-03 1.17e-03\n", + "14 10000 U238 scatter-Y2,-1 6.84e-04 1.63e-03\n", + "15 10000 U238 scatter-Y2,0 2.85e-03 2.63e-03\n", + "16 10000 U238 scatter-Y2,1 3.97e-03 2.24e-03\n", + "17 10000 U238 scatter-Y2,2 2.26e-03 1.85e-03" ] }, "execution_count": 28, @@ -1414,8 +1413,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.00159927 0.01341406]\n", - " [ 0.00018637 0.00111048]]]\n" + "[[[ 0.00185463 0.01350521]\n", + " [ 0.00019723 0.00131654]]]\n" ] } ], @@ -1423,7 +1422,7 @@ "# Get the standard deviations for two of the spherical harmonic\n", "# scattering reaction rates \n", "data = tally.get_values(scores=['scatter-Y2,2', 'scatter-Y0,0'], \n", - " nuclides=['U-238', 'U-235'], value='std_dev')\n", + " nuclides=['U238', 'U235'], value='std_dev')\n", "print(data)" ] }, @@ -1451,7 +1450,7 @@ "\tFilters =\t\n", " \t\tdistribcell\t[10002]\n", "\tNuclides =\ttotal \n", - "\tScores =\t[u'absorption', u'scatter']\n", + "\tScores =\t['absorption', 'scatter']\n", "\tEstimator =\ttracklength\n", "\n" ] @@ -1483,7 +1482,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.05767856]]]\n" + "[[[ 0.05468423]]]\n" ] } ], @@ -1566,8 +1565,8 @@ " 10002\n", " 279\n", " absorption\n", - " 8.19e-05\n", - " 7.82e-06\n", + " 8.72e-05\n", + " 8.13e-06\n", " \n", " \n", " 559\n", @@ -1581,8 +1580,8 @@ " 10002\n", " 279\n", " scatter\n", - " 1.33e-02\n", - " 6.19e-04\n", + " 1.37e-02\n", + " 6.98e-04\n", " \n", " \n", " 560\n", @@ -1596,8 +1595,8 @@ " 10002\n", " 280\n", " absorption\n", - " 1.00e-04\n", - " 7.93e-06\n", + " 1.03e-04\n", + " 9.17e-06\n", " \n", " \n", " 561\n", @@ -1611,8 +1610,8 @@ " 10002\n", " 280\n", " scatter\n", - " 1.40e-02\n", - " 5.61e-04\n", + " 1.41e-02\n", + " 6.26e-04\n", " \n", " \n", " 562\n", @@ -1626,8 +1625,8 @@ " 10002\n", " 281\n", " absorption\n", - " 9.52e-05\n", - " 7.08e-06\n", + " 9.41e-05\n", + " 8.40e-06\n", " \n", " \n", " 563\n", @@ -1641,8 +1640,8 @@ " 10002\n", " 281\n", " scatter\n", - " 1.51e-02\n", - " 6.50e-04\n", + " 1.50e-02\n", + " 6.92e-04\n", " \n", " \n", " 564\n", @@ -1656,8 +1655,8 @@ " 10002\n", " 282\n", " absorption\n", - " 9.85e-05\n", - " 9.47e-06\n", + " 9.56e-05\n", + " 1.03e-05\n", " \n", " \n", " 565\n", @@ -1671,8 +1670,8 @@ " 10002\n", " 282\n", " scatter\n", - " 1.53e-02\n", - " 4.63e-04\n", + " 1.52e-02\n", + " 5.37e-04\n", " \n", " \n", " 566\n", @@ -1686,8 +1685,8 @@ " 10002\n", " 283\n", " absorption\n", - " 1.08e-04\n", - " 1.34e-05\n", + " 1.06e-04\n", + " 1.49e-05\n", " \n", " \n", " 567\n", @@ -1701,8 +1700,8 @@ " 10002\n", " 283\n", " scatter\n", - " 1.65e-02\n", - " 7.04e-04\n", + " 1.64e-02\n", + " 8.14e-04\n", " \n", " \n", " 568\n", @@ -1716,8 +1715,8 @@ " 10002\n", " 284\n", " absorption\n", - " 1.13e-04\n", - " 7.91e-06\n", + " 1.16e-04\n", + " 9.02e-06\n", " \n", " \n", " 569\n", @@ -1731,8 +1730,8 @@ " 10002\n", " 284\n", " scatter\n", - " 1.67e-02\n", - " 5.51e-04\n", + " 1.64e-02\n", + " 6.00e-04\n", " \n", " \n", " 570\n", @@ -1746,8 +1745,8 @@ " 10002\n", " 285\n", " absorption\n", - " 1.23e-04\n", - " 9.53e-06\n", + " 1.25e-04\n", + " 1.12e-05\n", " \n", " \n", " 571\n", @@ -1761,8 +1760,8 @@ " 10002\n", " 285\n", " scatter\n", - " 1.88e-02\n", - " 7.25e-04\n", + " 1.87e-02\n", + " 8.26e-04\n", " \n", " \n", " 572\n", @@ -1776,8 +1775,8 @@ " 10002\n", " 286\n", " absorption\n", - " 1.44e-04\n", - " 1.34e-05\n", + " 1.47e-04\n", + " 1.49e-05\n", " \n", " \n", " 573\n", @@ -1791,8 +1790,8 @@ " 10002\n", " 286\n", " scatter\n", - " 1.90e-02\n", - " 7.07e-04\n", + " 1.94e-02\n", + " 7.71e-04\n", " \n", " \n", " 574\n", @@ -1806,8 +1805,8 @@ " 10002\n", " 287\n", " absorption\n", - " 1.26e-04\n", - " 8.66e-06\n", + " 1.31e-04\n", + " 9.84e-06\n", " \n", " \n", " 575\n", @@ -1822,7 +1821,7 @@ " 287\n", " scatter\n", " 1.97e-02\n", - " 7.23e-04\n", + " 7.93e-04\n", " \n", " \n", " 576\n", @@ -1836,8 +1835,8 @@ " 10002\n", " 288\n", " absorption\n", - " 1.25e-04\n", - " 9.59e-06\n", + " 1.23e-04\n", + " 1.07e-05\n", " \n", " \n", " 577\n", @@ -1851,8 +1850,8 @@ " 10002\n", " 288\n", " scatter\n", - " 2.01e-02\n", - " 6.75e-04\n", + " 1.97e-02\n", + " 7.34e-04\n", " \n", " \n", "\n", @@ -1886,26 +1885,26 @@ " mean std. dev. \n", " \n", " \n", - "558 8.19e-05 7.82e-06 \n", - "559 1.33e-02 6.19e-04 \n", - "560 1.00e-04 7.93e-06 \n", - "561 1.40e-02 5.61e-04 \n", - "562 9.52e-05 7.08e-06 \n", - "563 1.51e-02 6.50e-04 \n", - "564 9.85e-05 9.47e-06 \n", - "565 1.53e-02 4.63e-04 \n", - "566 1.08e-04 1.34e-05 \n", - "567 1.65e-02 7.04e-04 \n", - "568 1.13e-04 7.91e-06 \n", - "569 1.67e-02 5.51e-04 \n", - "570 1.23e-04 9.53e-06 \n", - "571 1.88e-02 7.25e-04 \n", - "572 1.44e-04 1.34e-05 \n", - "573 1.90e-02 7.07e-04 \n", - "574 1.26e-04 8.66e-06 \n", - "575 1.97e-02 7.23e-04 \n", - "576 1.25e-04 9.59e-06 \n", - "577 2.01e-02 6.75e-04 " + "558 8.72e-05 8.13e-06 \n", + "559 1.37e-02 6.98e-04 \n", + "560 1.03e-04 9.17e-06 \n", + "561 1.41e-02 6.26e-04 \n", + "562 9.41e-05 8.40e-06 \n", + "563 1.50e-02 6.92e-04 \n", + "564 9.56e-05 1.03e-05 \n", + "565 1.52e-02 5.37e-04 \n", + "566 1.06e-04 1.49e-05 \n", + "567 1.64e-02 8.14e-04 \n", + "568 1.16e-04 9.02e-06 \n", + "569 1.64e-02 6.00e-04 \n", + "570 1.25e-04 1.12e-05 \n", + "571 1.87e-02 8.26e-04 \n", + "572 1.47e-04 1.49e-05 \n", + "573 1.94e-02 7.71e-04 \n", + "574 1.31e-04 9.84e-06 \n", + "575 1.97e-02 7.93e-04 \n", + "576 1.23e-04 1.07e-05 \n", + "577 1.97e-02 7.34e-04 " ] }, "execution_count": 32, @@ -1958,38 +1957,38 @@ " \n", " \n", " mean\n", - " 4.19e-04\n", - " 2.24e-05\n", + " 4.16e-04\n", + " 2.42e-05\n", " \n", " \n", " std\n", - " 2.42e-04\n", - " 9.14e-06\n", + " 2.39e-04\n", + " 1.03e-05\n", " \n", " \n", " min\n", " 1.90e-05\n", - " 3.44e-06\n", + " 3.80e-06\n", " \n", " \n", " 25%\n", - " 2.02e-04\n", - " 1.56e-05\n", + " 1.99e-04\n", + " 1.61e-05\n", " \n", " \n", " 50%\n", - " 4.05e-04\n", - " 2.20e-05\n", + " 4.09e-04\n", + " 2.37e-05\n", " \n", " \n", " 75%\n", - " 6.07e-04\n", - " 2.89e-05\n", + " 6.00e-04\n", + " 3.08e-05\n", " \n", " \n", " max\n", - " 9.19e-04\n", - " 4.95e-05\n", + " 9.07e-04\n", + " 5.38e-05\n", " \n", " \n", "\n", @@ -2000,13 +1999,13 @@ " \n", " \n", "count 2.89e+02 2.89e+02\n", - "mean 4.19e-04 2.24e-05\n", - "std 2.42e-04 9.14e-06\n", - "min 1.90e-05 3.44e-06\n", - "25% 2.02e-04 1.56e-05\n", - "50% 4.05e-04 2.20e-05\n", - "75% 6.07e-04 2.89e-05\n", - "max 9.19e-04 4.95e-05" + "mean 4.16e-04 2.42e-05\n", + "std 2.39e-04 1.03e-05\n", + "min 1.90e-05 3.80e-06\n", + "25% 1.99e-04 1.61e-05\n", + "50% 4.09e-04 2.37e-05\n", + "75% 6.00e-04 3.08e-05\n", + "max 9.07e-04 5.38e-05" ] }, "execution_count": 33, @@ -2041,7 +2040,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 0.303583331507\n" + "Mann-Whitney Test p-value: 0.7234916721800682\n" ] } ], @@ -2079,7 +2078,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 6.038663783e-42\n" + "Mann-Whitney Test p-value: 3.5054120724573393e-41\n" ] } ], @@ -2115,7 +2114,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:4: SettingWithCopyWarning: \n", + "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/ipykernel/__main__.py:4: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -2125,7 +2124,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 36, @@ -2134,9 +2133,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2163,7 +2162,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 37, @@ -2172,9 +2171,9 @@ }, { "data": { - "image/png": "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\n9OnTh2bNmtGmTRsuu+wyioqKSt/PzLjvvvvYdddd2W677fjDH/7A3Llz6dOnD02bNmXo0KEbrZ8J\nSggi0mBcccUVXHHFFaxatYq5c+dy8sknA/Dmm28CsGLFClavXk2fPn0YOXIkI0eO5LXXXuOrr75i\n9erVXHbZZQB89tlnXHLJJTz++OMsXryYlStXlna8s97YsWMZMmQIK1as4LTTTiMej3PXXXexfPly\npkyZwqRJk7jvvvs22ubll1/mo48+4t133+WOO+7gvPPO4/HHH+ebb75hxowZjBo1KqPlo4QgIvXe\n4MGDadasWelwySWXlLteTk4Oc+bMYfny5eTn57P//vtv8T0ff/xxrr76ajp37kx+fj5/+ctfGD16\nNCUlJTz11FMce+yx9OvXj9zcXG6++ebNemnr06cPgwcPJhaL0bhxY/bee2/2339/EokEHTt25MIL\nL+SNN97YaJvrrruOJk2a0K1bN7p3786RRx5J586dadq0KYMGDWLatGnVL6wKKCGISL337LPPsmLF\nitJh01/e640YMYJZs2bRpUsX9tlnH55//vktvueiRYvo0KFD6XSHDh0oKSlhyZIlLFq0iPbt25cu\n22abbWjRosVG25ddDjBr1iyOOeYYWrduTZMmTbjxxhtZvnz5Ruu0atWqdLxx48abTa9evbqCUqg+\nJQQRaTB22203Ro0axdKlS7n++usZMmQIa9asKbcP5rZt2zJ//vzS6W+++YZEIkGrVq1o06YNCxYs\nKF22bt06vv/++4223/Q9L774Yrp06cLs2bNZtWoVf/7zn+tcHxNKCCLSYDz22GMsW7aMWCxGs2bN\nAIjFYuy4447EYjG++uqr0nVPPfVU7rrrLr7++mtWr17NjTfeyNChQ0kkEgwZMoRx48YxefJkioqK\nKCgoqPTL/aeffqJJkybk5+fzxRdfVNjvc1Qa7g23IlIt9fG5kPHjx3P11Vezdu1aOnTowOjRo2nc\nuDEAw4YNo2/fvhQXFzN+/HjOPfdcFi1aRP/+/fn555854ogjuOeee4DgYbd77rmHU045hTVr1nDl\nlVfSsmVL8vLytrjvO++8kwsuuIA77riDnj17MnToUF599dVaOe50qQtNybiqPmimB9PqHnWhWbHV\nq1fTrFkzZs+eTadOnSKLQ11oiohEYNy4caxdu5Y1a9ZwzTXX0KNHDzp27Bh1WNWiKiOpEZluxkCk\n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\nSUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2207,7 +2206,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index de92c2bcbf..19182aa7aa 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -46,12 +46,12 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "b10 = openmc.Nuclide('B-10')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "b10 = openmc.Nuclide('B10')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -339,7 +339,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AFBRQpN8J6/ygAAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDUtMDVUMTQ6NDE6\nNTUtMDY6MDCnHFu9AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA1LTA1VDE0OjQxOjU1LTA2OjAw\n1kHjAQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AHFwIoGZ/M0BAAAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMjJUMjE6NDA6\nMjUtMDU6MDBskW7/AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTIyVDIxOjQwOjI1LTA1OjAw\nHczWQwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -446,28 +446,28 @@ " 888\n", "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.org/en/latest/license.html\n", + " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: df280b60eb1c6d7b7f842e05ede734a4883a0fc8\n", - " Date/Time: 2016-05-05 14:41:55\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-22 21:40:25\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 5010.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -585,20 +585,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.4900E-01 seconds\n", - " Reading cross sections = 1.2100E-01 seconds\n", - " Total time in simulation = 3.4132E+02 seconds\n", - " Time in transport only = 3.4128E+02 seconds\n", - " Time in inactive batches = 1.0748E+01 seconds\n", - " Time in active batches = 3.3057E+02 seconds\n", - " Time synchronizing fission bank = 1.1000E-02 seconds\n", - " Sampling source sites = 1.1000E-02 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 1.9000E-02 seconds\n", - " Total time for finalization = 1.5600E-01 seconds\n", - " Total time elapsed = 3.4196E+02 seconds\n", - " Calculation Rate (inactive) = 4652.03 neutrons/second\n", - " Calculation Rate (active) = 1361.27 neutrons/second\n", + " Total time for initialization = 3.5100E-01 seconds\n", + " Reading cross sections = 1.8600E-01 seconds\n", + " Total time in simulation = 3.1672E+02 seconds\n", + " Time in transport only = 3.1667E+02 seconds\n", + " Time in inactive batches = 1.0782E+01 seconds\n", + " Time in active batches = 3.0594E+02 seconds\n", + " Time synchronizing fission bank = 2.1000E-02 seconds\n", + " Sampling source sites = 1.2000E-02 seconds\n", + " SEND/RECV source sites = 9.0000E-03 seconds\n", + " Time accumulating tallies = 1.7000E-02 seconds\n", + " Total time for finalization = 1.8100E-01 seconds\n", + " Total time elapsed = 3.1729E+02 seconds\n", + " Calculation Rate (inactive) = 4637.36 neutrons/second\n", + " Calculation Rate (active) = 1470.89 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -855,7 +855,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -866,7 +866,7 @@ "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -898,7 +898,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1012,7 +1012,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1023,7 +1023,7 @@ "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1074,7 +1074,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1107,7 +1107,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 56b3cb45c1..dfd493f168 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -45,12 +45,12 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "b10 = openmc.Nuclide('B-10')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "b10 = openmc.Nuclide('B10')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -339,7 +339,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AFBRQzLY81/IkAAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDUtMDVUMTQ6NTE6\nNDUtMDY6MDCqOITjAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA1LTA1VDE0OjUxOjQ1LTA2OjAw\n22U8XwAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AHFwInLqDpadAAAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMjJUMjE6Mzk6\nNDYtMDU6MDBOOEOsAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTIyVDIxOjM5OjQ2LTA1OjAw\nP2X7EAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -540,28 +540,28 @@ " 888\n", "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.org/en/latest/license.html\n", + " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: df280b60eb1c6d7b7f842e05ede734a4883a0fc8\n", - " Date/Time: 2016-05-05 14:51:45\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-22 21:39:46\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 5010.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -599,20 +599,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 7.2500E-01 seconds\n", - " Reading cross sections = 4.4400E-01 seconds\n", - " Total time in simulation = 1.5547E+01 seconds\n", - " Time in transport only = 1.5527E+01 seconds\n", - " Time in inactive batches = 2.2880E+00 seconds\n", - " Time in active batches = 1.3259E+01 seconds\n", + " Total time for initialization = 3.5600E-01 seconds\n", + " Reading cross sections = 2.3400E-01 seconds\n", + " Total time in simulation = 1.8333E+01 seconds\n", + " Time in transport only = 1.8325E+01 seconds\n", + " Time in inactive batches = 2.6950E+00 seconds\n", + " Time in active batches = 1.5638E+01 seconds\n", " Time synchronizing fission bank = 1.0000E-03 seconds\n", " Sampling source sites = 0.0000E+00 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 2.0000E-03 seconds\n", - " Total time elapsed = 1.6291E+01 seconds\n", - " Calculation Rate (inactive) = 5463.29 neutrons/second\n", - " Calculation Rate (active) = 2828.27 neutrons/second\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 1.8711E+01 seconds\n", + " Calculation Rate (inactive) = 4638.22 neutrons/second\n", + " Calculation Rate (active) = 2398.00 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1107,7 +1107,7 @@ " 10000\n", " 0.000000e+00\n", " 6.250000e-07\n", - " (U-238 / total)\n", + " (U238 / total)\n", " (nu-fission / flux)\n", " 6.636968e-07\n", " 4.132875e-09\n", @@ -1117,7 +1117,7 @@ " 10000\n", " 0.000000e+00\n", " 6.250000e-07\n", - " (U-238 / total)\n", + " (U238 / total)\n", " (scatter / flux)\n", " 2.099856e-01\n", " 1.232455e-03\n", @@ -1127,7 +1127,7 @@ " 10000\n", " 0.000000e+00\n", " 6.250000e-07\n", - " (U-235 / total)\n", + " (U235 / total)\n", " (nu-fission / flux)\n", " 3.552458e-01\n", " 2.252681e-03\n", @@ -1137,7 +1137,7 @@ " 10000\n", " 0.000000e+00\n", " 6.250000e-07\n", - " (U-235 / total)\n", + " (U235 / total)\n", " (scatter / flux)\n", " 5.554345e-03\n", " 3.265385e-05\n", @@ -1147,7 +1147,7 @@ " 10000\n", " 6.250000e-07\n", " 2.000000e+01\n", - " (U-238 / total)\n", + " (U238 / total)\n", " (nu-fission / flux)\n", " 7.126668e-03\n", " 5.296883e-05\n", @@ -1157,7 +1157,7 @@ " 10000\n", " 6.250000e-07\n", " 2.000000e+01\n", - " (U-238 / total)\n", + " (U238 / total)\n", " (scatter / flux)\n", " 2.277460e-01\n", " 1.003558e-03\n", @@ -1167,7 +1167,7 @@ " 10000\n", " 6.250000e-07\n", " 2.000000e+01\n", - " (U-235 / total)\n", + " (U235 / total)\n", " (nu-fission / flux)\n", " 8.010911e-03\n", " 6.802256e-05\n", @@ -1177,7 +1177,7 @@ " 10000\n", " 6.250000e-07\n", " 2.000000e+01\n", - " (U-235 / total)\n", + " (U235 / total)\n", " (scatter / flux)\n", " 3.367794e-03\n", " 1.443644e-05\n", @@ -1187,15 +1187,15 @@ "" ], "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 10000 0.00e+00 6.25e-07 (U-238 / total) \n", - "1 10000 0.00e+00 6.25e-07 (U-238 / total) \n", - "2 10000 0.00e+00 6.25e-07 (U-235 / total) \n", - "3 10000 0.00e+00 6.25e-07 (U-235 / total) \n", - "4 10000 6.25e-07 2.00e+01 (U-238 / total) \n", - "5 10000 6.25e-07 2.00e+01 (U-238 / total) \n", - "6 10000 6.25e-07 2.00e+01 (U-235 / total) \n", - "7 10000 6.25e-07 2.00e+01 (U-235 / total) \n", + " cell energy low [MeV] energy high [MeV] nuclide \\\n", + "0 10000 0.00e+00 6.25e-07 (U238 / total) \n", + "1 10000 0.00e+00 6.25e-07 (U238 / total) \n", + "2 10000 0.00e+00 6.25e-07 (U235 / total) \n", + "3 10000 0.00e+00 6.25e-07 (U235 / total) \n", + "4 10000 6.25e-07 2.00e+01 (U238 / total) \n", + "5 10000 6.25e-07 2.00e+01 (U238 / total) \n", + "6 10000 6.25e-07 2.00e+01 (U235 / total) \n", + "7 10000 6.25e-07 2.00e+01 (U235 / total) \n", "\n", " score mean std. dev. \n", "0 (nu-fission / flux) 6.64e-07 4.13e-09 \n", @@ -1276,7 +1276,7 @@ ], "source": [ "# Show how to use Tally.get_values(...) with a CrossScore and CrossNuclide\n", - "u235_scatter_xs = fuel_xs.get_values(nuclides=['(U-235 / total)'], \n", + "u235_scatter_xs = fuel_xs.get_values(nuclides=['(U235 / total)'], \n", " scores=['(scatter / flux)'])\n", "print(u235_scatter_xs)" ] @@ -1342,7 +1342,7 @@ " 10000\n", " 0.000000e+00\n", " 6.250000e-07\n", - " U-238\n", + " U238\n", " nu-fission\n", " 0.000002\n", " 7.473789e-09\n", @@ -1352,7 +1352,7 @@ " 10000\n", " 0.000000e+00\n", " 6.250000e-07\n", - " U-235\n", + " U235\n", " nu-fission\n", " 0.861547\n", " 4.131310e-03\n", @@ -1362,7 +1362,7 @@ " 10000\n", " 6.250000e-07\n", " 2.000000e+01\n", - " U-238\n", + " U238\n", " nu-fission\n", " 0.082356\n", " 5.560461e-04\n", @@ -1372,7 +1372,7 @@ " 10000\n", " 6.250000e-07\n", " 2.000000e+01\n", - " U-235\n", + " U235\n", " nu-fission\n", " 0.092574\n", " 7.315442e-04\n", @@ -1383,10 +1383,10 @@ ], "text/plain": [ " cell energy low [MeV] energy high [MeV] nuclide score mean \\\n", - "0 10000 0.00e+00 6.25e-07 U-238 nu-fission 1.61e-06 \n", - "1 10000 0.00e+00 6.25e-07 U-235 nu-fission 8.62e-01 \n", - "2 10000 6.25e-07 2.00e+01 U-238 nu-fission 8.24e-02 \n", - "3 10000 6.25e-07 2.00e+01 U-235 nu-fission 9.26e-02 \n", + "0 10000 0.00e+00 6.25e-07 U238 nu-fission 1.61e-06 \n", + "1 10000 0.00e+00 6.25e-07 U235 nu-fission 8.62e-01 \n", + "2 10000 6.25e-07 2.00e+01 U238 nu-fission 8.24e-02 \n", + "3 10000 6.25e-07 2.00e+01 U235 nu-fission 9.26e-02 \n", "\n", " std. dev. \n", "0 7.47e-09 \n", @@ -1436,7 +1436,7 @@ " 10002\n", " 1.000000e-08\n", " 1.080060e-07\n", - " H-1\n", + " H1\n", " scatter\n", " 4.599225\n", " 0.015973\n", @@ -1446,7 +1446,7 @@ " 10002\n", " 1.080060e-07\n", " 1.166529e-06\n", - " H-1\n", + " H1\n", " scatter\n", " 2.037260\n", " 0.011236\n", @@ -1456,7 +1456,7 @@ " 10002\n", " 1.166529e-06\n", " 1.259921e-05\n", - " H-1\n", + " H1\n", " scatter\n", " 1.662552\n", " 0.010280\n", @@ -1466,7 +1466,7 @@ " 10002\n", " 1.259921e-05\n", " 1.360790e-04\n", - " H-1\n", + " H1\n", " scatter\n", " 1.872201\n", " 0.012136\n", @@ -1476,7 +1476,7 @@ " 10002\n", " 1.360790e-04\n", " 1.469734e-03\n", - " H-1\n", + " H1\n", " scatter\n", " 2.080459\n", " 0.013155\n", @@ -1486,7 +1486,7 @@ " 10002\n", " 1.469734e-03\n", " 1.587401e-02\n", - " H-1\n", + " H1\n", " scatter\n", " 2.154996\n", " 0.011975\n", @@ -1496,7 +1496,7 @@ " 10002\n", " 1.587401e-02\n", " 1.714488e-01\n", - " H-1\n", + " H1\n", " scatter\n", " 2.218740\n", " 0.008528\n", @@ -1506,7 +1506,7 @@ " 10002\n", " 1.714488e-01\n", " 1.851749e+00\n", - " H-1\n", + " H1\n", " scatter\n", " 2.010517\n", " 0.009187\n", @@ -1516,7 +1516,7 @@ " 10002\n", " 1.851749e+00\n", " 2.000000e+01\n", - " H-1\n", + " H1\n", " scatter\n", " 0.372022\n", " 0.003196\n", @@ -1527,15 +1527,15 @@ ], "text/plain": [ " cell energy low [MeV] energy high [MeV] nuclide score mean \\\n", - "0 10002 1.00e-08 1.08e-07 H-1 scatter 4.60e+00 \n", - "1 10002 1.08e-07 1.17e-06 H-1 scatter 2.04e+00 \n", - "2 10002 1.17e-06 1.26e-05 H-1 scatter 1.66e+00 \n", - "3 10002 1.26e-05 1.36e-04 H-1 scatter 1.87e+00 \n", - "4 10002 1.36e-04 1.47e-03 H-1 scatter 2.08e+00 \n", - "5 10002 1.47e-03 1.59e-02 H-1 scatter 2.15e+00 \n", - "6 10002 1.59e-02 1.71e-01 H-1 scatter 2.22e+00 \n", - "7 10002 1.71e-01 1.85e+00 H-1 scatter 2.01e+00 \n", - "8 10002 1.85e+00 2.00e+01 H-1 scatter 3.72e-01 \n", + "0 10002 1.00e-08 1.08e-07 H1 scatter 4.60e+00 \n", + "1 10002 1.08e-07 1.17e-06 H1 scatter 2.04e+00 \n", + "2 10002 1.17e-06 1.26e-05 H1 scatter 1.66e+00 \n", + "3 10002 1.26e-05 1.36e-04 H1 scatter 1.87e+00 \n", + "4 10002 1.36e-04 1.47e-03 H1 scatter 2.08e+00 \n", + "5 10002 1.47e-03 1.59e-02 H1 scatter 2.15e+00 \n", + "6 10002 1.59e-02 1.71e-01 H1 scatter 2.22e+00 \n", + "7 10002 1.71e-01 1.85e+00 H1 scatter 2.01e+00 \n", + "8 10002 1.85e+00 2.00e+01 H1 scatter 3.72e-01 \n", "\n", " std. dev. \n", "0 1.60e-02 \n", @@ -1557,7 +1557,7 @@ "source": [ "# \"Slice\" the H-1 scatter data in the moderator Cell into a new derived Tally\n", "need_to_slice = sp.get_tally(name='need-to-slice')\n", - "slice_test = need_to_slice.get_slice(scores=['scatter'], nuclides=['H-1'],\n", + "slice_test = need_to_slice.get_slice(scores=['scatter'], nuclides=['H1'],\n", " filters=['cell'], filter_bins=[(moderator_cell.id,)])\n", "slice_test.get_pandas_dataframe()" ] @@ -1579,7 +1579,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/openmc/data/angle_energy.py b/openmc/data/angle_energy.py index c20c5f0ff9..00e049ebcd 100644 --- a/openmc/data/angle_energy.py +++ b/openmc/data/angle_energy.py @@ -102,7 +102,7 @@ class AngleEnergy(object): distribution = openmc.data.NBodyPhaseSpace.from_ace( ace, idx, rx.q_value) else: - raise IOError("Unsupported ACE secondary energy " - "distribution law {0}".format(law)) + raise ValueError("Unsupported ACE secondary energy " + "distribution law {}".format(law)) return distribution diff --git a/openmc/data/data.py b/openmc/data/data.py index 5f83d31c0c..21fffc8cba 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -2,102 +2,102 @@ # of the elements 2009 (IUPAC Technical Report)", Pure. Appl. Chem. 83 (2), # pp. 397--410 (2011). NATURAL_ABUNDANCE = { - 'H-1': 0.999885, 'H-2': 0.000115, 'He-3': 1.34e-06, - 'He-4': 0.99999866, 'Li-6': 0.0759, 'Li-7': 0.9241, - 'Be-9': 1.0, 'B-10': 0.199, 'B-11': 0.801, - 'C-12': 0.9893, 'C-13': 0.0107, 'N-14': 0.99636, - 'N-15': 0.00364, 'O-16': 0.99757, 'O-17': 0.00038, - 'O-18': 0.00205, 'F-19': 1.0, 'Ne-20': 0.9048, - 'Ne-21': 0.0027, 'Ne-22': 0.0925, 'Na-23': 1.0, - 'Mg-24': 0.7899, 'Mg-25': 0.1, 'Mg-26': 0.1101, - 'Al-27': 1.0, 'Si-28': 0.92223, 'Si-29': 0.04685, - 'Si-30': 0.03092, 'P-31': 1.0, 'S-32': 0.9499, - 'S-33': 0.0075, 'S-34': 0.0425, 'S-36': 0.0001, - 'Cl-35': 0.7576, 'Cl-37': 0.2424, 'Ar-36': 0.003336, - 'Ar-38': 0.000629, 'Ar-40': 0.996035, 'K-39': 0.932581, - 'K-40': 0.000117, 'K-41': 0.067302, 'Ca-40': 0.96941, - 'Ca-42': 0.00647, 'Ca-43': 0.00135, 'Ca-44': 0.02086, - 'Ca-46': 4e-05, 'Ca-48': 0.00187, 'Sc-45': 1.0, - 'Ti-46': 0.0825, 'Ti-47': 0.0744, 'Ti-48': 0.7372, - 'Ti-49': 0.0541, 'Ti-50': 0.0518, 'V-50': 0.0025, - 'V-51': 0.9975, 'Cr-50': 0.04345, 'Cr-52': 0.83789, - 'Cr-53': 0.09501, 'Cr-54': 0.02365, 'Mn-55': 1.0, - 'Fe-54': 0.05845, 'Fe-56': 0.91754, 'Fe-57': 0.02119, - 'Fe-58': 0.00282, 'Co-59': 1.0, 'Ni-58': 0.68077, - 'Ni-60': 0.26223, 'Ni-61': 0.011399, 'Ni-62': 0.036346, - 'Ni-64': 0.009255, 'Cu-63': 0.6915, 'Cu-65': 0.3085, - 'Zn-64': 0.4917, 'Zn-66': 0.2773, 'Zn-67': 0.0404, - 'Zn-68': 0.1845, 'Zn-70': 0.0061, 'Ga-69': 0.60108, - 'Ga-71': 0.39892, 'Ge-70': 0.2057, 'Ge-72': 0.2745, - 'Ge-73': 0.0775, 'Ge-74': 0.365, 'Ge-76': 0.0773, - 'As-75': 1.0, 'Se-74': 0.0089, 'Se-76': 0.0937, - 'Se-77': 0.0763, 'Se-78': 0.2377, 'Se-80': 0.4961, - 'Se-82': 0.0873, 'Br-79': 0.5069, 'Br-81': 0.4931, - 'Kr-78': 0.00355, 'Kr-80': 0.02286, 'Kr-82': 0.11593, - 'Kr-83': 0.115, 'Kr-84': 0.56987, 'Kr-86': 0.17279, - 'Rb-85': 0.7217, 'Rb-87': 0.2783, 'Sr-84': 0.0056, - 'Sr-86': 0.0986, 'Sr-87': 0.07, 'Sr-88': 0.8258, - 'Y-89': 1.0, 'Zr-90': 0.5145, 'Zr-91': 0.1122, - 'Zr-92': 0.1715, 'Zr-94': 0.1738, 'Zr-96': 0.028, - 'Nb-93': 1.0, 'Mo-92': 0.1453, 'Mo-94': 0.0915, - 'Mo-95': 0.1584, 'Mo-96': 0.1667, 'Mo-97': 0.096, - 'Mo-98': 0.2439, 'Mo-100': 0.0982, 'Ru-96': 0.0554, - 'Ru-98': 0.0187, 'Ru-99': 0.1276, 'Ru-100': 0.126, - 'Ru-101': 0.1706, 'Ru-102': 0.3155, 'Ru-104': 0.1862, - 'Rh-103': 1.0, 'Pd-102': 0.0102, 'Pd-104': 0.1114, - 'Pd-105': 0.2233, 'Pd-106': 0.2733, 'Pd-108': 0.2646, - 'Pd-110': 0.1172, 'Ag-107': 0.51839, 'Ag-109': 0.48161, - 'Cd-106': 0.0125, 'Cd-108': 0.0089, 'Cd-110': 0.1249, - 'Cd-111': 0.128, 'Cd-112': 0.2413, 'Cd-113': 0.1222, - 'Cd-114': 0.2873, 'Cd-116': 0.0749, 'In-113': 0.0429, - 'In-115': 0.9571, 'Sn-112': 0.0097, 'Sn-114': 0.0066, - 'Sn-115': 0.0034, 'Sn-116': 0.1454, 'Sn-117': 0.0768, - 'Sn-118': 0.2422, 'Sn-119': 0.0859, 'Sn-120': 0.3258, - 'Sn-122': 0.0463, 'Sn-124': 0.0579, 'Sb-121': 0.5721, - 'Sb-123': 0.4279, 'Te-120': 0.0009, 'Te-122': 0.0255, - 'Te-123': 0.0089, 'Te-124': 0.0474, 'Te-125': 0.0707, - 'Te-126': 0.1884, 'Te-128': 0.3174, 'Te-130': 0.3408, - 'I-127': 1.0, 'Xe-124': 0.000952, 'Xe-126': 0.00089, - 'Xe-128': 0.019102, 'Xe-129': 0.264006, 'Xe-130': 0.04071, - 'Xe-131': 0.212324, 'Xe-132': 0.269086, 'Xe-134': 0.104357, - 'Xe-136': 0.088573, 'Cs-133': 1.0, 'Ba-130': 0.00106, - 'Ba-132': 0.00101, 'Ba-134': 0.02417, 'Ba-135': 0.06592, - 'Ba-136': 0.07854, 'Ba-137': 0.11232, 'Ba-138': 0.71698, - 'La-138': 0.0008881, 'La-139': 0.9991119, 'Ce-136': 0.00185, - 'Ce-138': 0.00251, 'Ce-140': 0.8845, 'Ce-142': 0.11114, - 'Pr-141': 1.0, 'Nd-142': 0.27152, 'Nd-143': 0.12174, - 'Nd-144': 0.23798, 'Nd-145': 0.08293, 'Nd-146': 0.17189, - 'Nd-148': 0.05756, 'Nd-150': 0.05638, 'Sm-144': 0.0307, - 'Sm-147': 0.1499, 'Sm-148': 0.1124, 'Sm-149': 0.1382, - 'Sm-150': 0.0738, 'Sm-152': 0.2675, 'Sm-154': 0.2275, - 'Eu-151': 0.4781, 'Eu-153': 0.5219, 'Gd-152': 0.002, - 'Gd-154': 0.0218, 'Gd-155': 0.148, 'Gd-156': 0.2047, - 'Gd-157': 0.1565, 'Gd-158': 0.2484, 'Gd-160': 0.2186, - 'Tb-159': 1.0, 'Dy-156': 0.00056, 'Dy-158': 0.00095, - 'Dy-160': 0.02329, 'Dy-161': 0.18889, 'Dy-162': 0.25475, - 'Dy-163': 0.24896, 'Dy-164': 0.2826, 'Ho-165': 1.0, - 'Er-162': 0.00139, 'Er-164': 0.01601, 'Er-166': 0.33503, - 'Er-167': 0.22869, 'Er-168': 0.26978, 'Er-170': 0.1491, - 'Tm-169': 1.0, 'Yb-168': 0.00123, 'Yb-170': 0.02982, - 'Yb-171': 0.1409, 'Yb-172': 0.2168, 'Yb-173': 0.16103, - 'Yb-174': 0.32026, 'Yb-176': 0.12996, 'Lu-175': 0.97401, - 'Lu-176': 0.02599, 'Hf-174': 0.0016, 'Hf-176': 0.0526, - 'Hf-177': 0.186, 'Hf-178': 0.2728, 'Hf-179': 0.1362, - 'Hf-180': 0.3508, 'Ta-180': 0.0001201, 'Ta-181': 0.9998799, - 'W-180': 0.0012, 'W-182': 0.265, 'W-183': 0.1431, - 'W-184': 0.3064, 'W-186': 0.2843, 'Re-185': 0.374, - 'Re-187': 0.626, 'Os-184': 0.0002, 'Os-186': 0.0159, - 'Os-187': 0.0196, 'Os-188': 0.1324, 'Os-189': 0.1615, - 'Os-190': 0.2626, 'Os-192': 0.4078, 'Ir-191': 0.373, - 'Ir-193': 0.627, 'Pt-190': 0.00012, 'Pt-192': 0.00782, - 'Pt-194': 0.3286, 'Pt-195': 0.3378, 'Pt-196': 0.2521, - 'Pt-198': 0.07356, 'Au-197': 1.0, 'Hg-196': 0.0015, - 'Hg-198': 0.0997, 'Hg-199': 0.1687, 'Hg-200': 0.231, - 'Hg-201': 0.1318, 'Hg-202': 0.2986, 'Hg-204': 0.0687, - 'Tl-203': 0.2952, 'Tl-205': 0.7048, 'Pb-204': 0.014, - 'Pb-206': 0.241, 'Pb-207': 0.221, 'Pb-208': 0.524, - 'Bi-209': 1.0, 'Th-232': 1.0, 'Pa-231': 1.0, - 'U-234': 5.4e-05, 'U-235': 0.007204, 'U-238': 0.992742 + 'H1': 0.999885, 'H2': 0.000115, 'He3': 1.34e-06, + 'He4': 0.99999866, 'Li6': 0.0759, 'Li7': 0.9241, + 'Be9': 1.0, 'B10': 0.199, 'B11': 0.801, + 'C12': 0.9893, 'C13': 0.0107, 'N14': 0.99636, + 'N15': 0.00364, 'O16': 0.99757, 'O17': 0.00038, + 'O18': 0.00205, 'F19': 1.0, 'Ne20': 0.9048, + 'Ne21': 0.0027, 'Ne22': 0.0925, 'Na23': 1.0, + 'Mg24': 0.7899, 'Mg25': 0.1, 'Mg26': 0.1101, + 'Al27': 1.0, 'Si28': 0.92223, 'Si29': 0.04685, + 'Si30': 0.03092, 'P31': 1.0, 'S32': 0.9499, + 'S33': 0.0075, 'S34': 0.0425, 'S36': 0.0001, + 'Cl35': 0.7576, 'Cl37': 0.2424, 'Ar36': 0.003336, + 'Ar38': 0.000629, 'Ar40': 0.996035, 'K39': 0.932581, + 'K40': 0.000117, 'K41': 0.067302, 'Ca40': 0.96941, + 'Ca42': 0.00647, 'Ca43': 0.00135, 'Ca44': 0.02086, + 'Ca46': 4e-05, 'Ca48': 0.00187, 'Sc45': 1.0, + 'Ti46': 0.0825, 'Ti47': 0.0744, 'Ti48': 0.7372, + 'Ti49': 0.0541, 'Ti50': 0.0518, 'V50': 0.0025, + 'V51': 0.9975, 'Cr50': 0.04345, 'Cr52': 0.83789, + 'Cr53': 0.09501, 'Cr54': 0.02365, 'Mn55': 1.0, + 'Fe54': 0.05845, 'Fe56': 0.91754, 'Fe57': 0.02119, + 'Fe58': 0.00282, 'Co59': 1.0, 'Ni58': 0.68077, + 'Ni60': 0.26223, 'Ni61': 0.011399, 'Ni62': 0.036346, + 'Ni64': 0.009255, 'Cu63': 0.6915, 'Cu65': 0.3085, + 'Zn64': 0.4917, 'Zn66': 0.2773, 'Zn67': 0.0404, + 'Zn68': 0.1845, 'Zn70': 0.0061, 'Ga69': 0.60108, + 'Ga71': 0.39892, 'Ge70': 0.2057, 'Ge72': 0.2745, + 'Ge73': 0.0775, 'Ge74': 0.365, 'Ge76': 0.0773, + 'As75': 1.0, 'Se74': 0.0089, 'Se76': 0.0937, + 'Se77': 0.0763, 'Se78': 0.2377, 'Se80': 0.4961, + 'Se82': 0.0873, 'Br79': 0.5069, 'Br81': 0.4931, + 'Kr78': 0.00355, 'Kr80': 0.02286, 'Kr82': 0.11593, + 'Kr83': 0.115, 'Kr84': 0.56987, 'Kr86': 0.17279, + 'Rb85': 0.7217, 'Rb87': 0.2783, 'Sr84': 0.0056, + 'Sr86': 0.0986, 'Sr87': 0.07, 'Sr88': 0.8258, + 'Y89': 1.0, 'Zr90': 0.5145, 'Zr91': 0.1122, + 'Zr92': 0.1715, 'Zr94': 0.1738, 'Zr96': 0.028, + 'Nb93': 1.0, 'Mo92': 0.1453, 'Mo94': 0.0915, + 'Mo95': 0.1584, 'Mo96': 0.1667, 'Mo97': 0.096, + 'Mo98': 0.2439, 'Mo100': 0.0982, 'Ru96': 0.0554, + 'Ru98': 0.0187, 'Ru99': 0.1276, 'Ru100': 0.126, + 'Ru101': 0.1706, 'Ru102': 0.3155, 'Ru104': 0.1862, + 'Rh103': 1.0, 'Pd102': 0.0102, 'Pd104': 0.1114, + 'Pd105': 0.2233, 'Pd106': 0.2733, 'Pd108': 0.2646, + 'Pd110': 0.1172, 'Ag107': 0.51839, 'Ag109': 0.48161, + 'Cd106': 0.0125, 'Cd108': 0.0089, 'Cd110': 0.1249, + 'Cd111': 0.128, 'Cd112': 0.2413, 'Cd113': 0.1222, + 'Cd114': 0.2873, 'Cd116': 0.0749, 'In113': 0.0429, + 'In115': 0.9571, 'Sn112': 0.0097, 'Sn114': 0.0066, + 'Sn115': 0.0034, 'Sn116': 0.1454, 'Sn117': 0.0768, + 'Sn118': 0.2422, 'Sn119': 0.0859, 'Sn120': 0.3258, + 'Sn122': 0.0463, 'Sn124': 0.0579, 'Sb121': 0.5721, + 'Sb123': 0.4279, 'Te120': 0.0009, 'Te122': 0.0255, + 'Te123': 0.0089, 'Te124': 0.0474, 'Te125': 0.0707, + 'Te126': 0.1884, 'Te128': 0.3174, 'Te130': 0.3408, + 'I127': 1.0, 'Xe124': 0.000952, 'Xe126': 0.00089, + 'Xe128': 0.019102, 'Xe129': 0.264006, 'Xe130': 0.04071, + 'Xe131': 0.212324, 'Xe132': 0.269086, 'Xe134': 0.104357, + 'Xe136': 0.088573, 'Cs133': 1.0, 'Ba130': 0.00106, + 'Ba132': 0.00101, 'Ba134': 0.02417, 'Ba135': 0.06592, + 'Ba136': 0.07854, 'Ba137': 0.11232, 'Ba138': 0.71698, + 'La138': 0.0008881, 'La139': 0.9991119, 'Ce136': 0.00185, + 'Ce138': 0.00251, 'Ce140': 0.8845, 'Ce142': 0.11114, + 'Pr141': 1.0, 'Nd142': 0.27152, 'Nd143': 0.12174, + 'Nd144': 0.23798, 'Nd145': 0.08293, 'Nd146': 0.17189, + 'Nd148': 0.05756, 'Nd150': 0.05638, 'Sm144': 0.0307, + 'Sm147': 0.1499, 'Sm148': 0.1124, 'Sm149': 0.1382, + 'Sm150': 0.0738, 'Sm152': 0.2675, 'Sm154': 0.2275, + 'Eu151': 0.4781, 'Eu153': 0.5219, 'Gd152': 0.002, + 'Gd154': 0.0218, 'Gd155': 0.148, 'Gd156': 0.2047, + 'Gd157': 0.1565, 'Gd158': 0.2484, 'Gd160': 0.2186, + 'Tb159': 1.0, 'Dy156': 0.00056, 'Dy158': 0.00095, + 'Dy160': 0.02329, 'Dy161': 0.18889, 'Dy162': 0.25475, + 'Dy163': 0.24896, 'Dy164': 0.2826, 'Ho165': 1.0, + 'Er162': 0.00139, 'Er164': 0.01601, 'Er166': 0.33503, + 'Er167': 0.22869, 'Er168': 0.26978, 'Er170': 0.1491, + 'Tm169': 1.0, 'Yb168': 0.00123, 'Yb170': 0.02982, + 'Yb171': 0.1409, 'Yb172': 0.2168, 'Yb173': 0.16103, + 'Yb174': 0.32026, 'Yb176': 0.12996, 'Lu175': 0.97401, + 'Lu176': 0.02599, 'Hf174': 0.0016, 'Hf176': 0.0526, + 'Hf177': 0.186, 'Hf178': 0.2728, 'Hf179': 0.1362, + 'Hf180': 0.3508, 'Ta180': 0.0001201, 'Ta181': 0.9998799, + 'W180': 0.0012, 'W182': 0.265, 'W183': 0.1431, + 'W184': 0.3064, 'W186': 0.2843, 'Re185': 0.374, + 'Re187': 0.626, 'Os184': 0.0002, 'Os186': 0.0159, + 'Os187': 0.0196, 'Os188': 0.1324, 'Os189': 0.1615, + 'Os190': 0.2626, 'Os192': 0.4078, 'Ir191': 0.373, + 'Ir193': 0.627, 'Pt190': 0.00012, 'Pt192': 0.00782, + 'Pt194': 0.3286, 'Pt195': 0.3378, 'Pt196': 0.2521, + 'Pt198': 0.07356, 'Au197': 1.0, 'Hg196': 0.0015, + 'Hg198': 0.0997, 'Hg199': 0.1687, 'Hg200': 0.231, + 'Hg201': 0.1318, 'Hg202': 0.2986, 'Hg204': 0.0687, + 'Tl203': 0.2952, 'Tl205': 0.7048, 'Pb204': 0.014, + 'Pb206': 0.241, 'Pb207': 0.221, 'Pb208': 0.524, + 'Bi209': 1.0, 'Th232': 1.0, 'Pa231': 1.0, + 'U234': 5.4e-05, 'U235': 0.007204, 'U238': 0.992742 } ATOMIC_SYMBOL = {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', diff --git a/openmc/data/energy_distribution.py b/openmc/data/energy_distribution.py index 677d31af2d..2300081c13 100644 --- a/openmc/data/energy_distribution.py +++ b/openmc/data/energy_distribution.py @@ -52,6 +52,9 @@ class EnergyDistribution(object): return LevelInelastic.from_hdf5(group) elif energy_type == 'continuous': return ContinuousTabular.from_hdf5(group) + else: + raise ValueError("Unknown energy distribution type: {}" + .format(energy_type)) class ArbitraryTabulated(EnergyDistribution): diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index b6a4f03b5c..5b587745d6 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -39,7 +39,7 @@ class IncidentNeutron(object): atomic_weight_ratio : float Atomic mass ratio of the target nuclide. temperature : float - Temperature of the target nuclide in eV. + Temperature of the target nuclide in MeV. Attributes ---------- diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index cadab0bf77..c2e1b24109 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -303,9 +303,9 @@ class Reaction(object): def __repr__(self): if self.mt in REACTION_NAME: - return "".format(self.mt, REACTION_NAME[self.mt]) + return "".format(self.mt, REACTION_NAME[self.mt]) else: - return "".format(self.mt) + return "".format(self.mt) @property def center_of_mass(self): diff --git a/openmc/element.py b/openmc/element.py index f116c43ebb..ada5726b44 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -1,3 +1,4 @@ +import re import sys import openmc @@ -8,6 +9,7 @@ if sys.version_info[0] >= 3: basestring = str + class Element(object): """A natural element used in a material via . Internally, OpenMC will expand the natural element into isotopes based on the known natural @@ -124,7 +126,7 @@ class Element(object): isotopes = [] for isotope, abundance in sorted(NATURAL_ABUNDANCE.items()): - if isotope.startswith(self.name + '-'): + if re.match(r'{}\d+'.format(self.name), isotope): nuc = openmc.Nuclide(isotope, self.xs) isotopes.append((nuc, abundance)) return isotopes diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 967e11f48c..93a257f465 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -820,7 +820,7 @@ def get_opencg_lattice(openmc_lattice): # Create an OpenCG Lattice to represent this OpenMC Lattice name = openmc_lattice.name - dimension = openmc_lattice.dimension + dimension = openmc_lattice.shape pitch = openmc_lattice.pitch lower_left = openmc_lattice.lower_left universes = openmc_lattice.universes From b1fa2c176f98df9b4909496efeab59817a663642 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 25 Jul 2016 09:10:14 -0500 Subject: [PATCH 69/82] Fix bug in OpenCG compatibility module --- LICENSE | 2 +- openmc/opencg_compatible.py | 2 +- readme.rst | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/LICENSE b/LICENSE index f009376324..fe18b53f9f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011-2015 Massachusetts Institute of Technology +Copyright (c) 2011-2016 Massachusetts Institute of Technology Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 967e11f48c..93a257f465 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -820,7 +820,7 @@ def get_opencg_lattice(openmc_lattice): # Create an OpenCG Lattice to represent this OpenMC Lattice name = openmc_lattice.name - dimension = openmc_lattice.dimension + dimension = openmc_lattice.shape pitch = openmc_lattice.pitch lower_left = openmc_lattice.lower_left universes = openmc_lattice.universes diff --git a/readme.rst b/readme.rst index ab13e36f5c..03964d9436 100644 --- a/readme.rst +++ b/readme.rst @@ -10,9 +10,9 @@ transport code based on modern methods. It is a constructive solid geometry, continuous-energy transport code that uses ACE format cross sections. The project started under the Computational Reactor Physics Group at MIT. -Complete documentation on the usage of OpenMC is hosted on GitHub at -http://mit-crpg.github.io/openmc/. If you are interested in the project or would -like to help and contribute, please send a message to the OpenMC User's Group +Complete documentation on the usage of OpenMC is hosted on Read the Docs at +http://openmc.readthedocs.io. If you are interested in the project or would like +to help and contribute, please send a message to the OpenMC User's Group `mailing list`_. ------------ @@ -49,7 +49,7 @@ License OpenMC is distributed under the MIT/X license_. .. _mailing list: https://groups.google.com/forum/?fromgroups=#!forum/openmc-users -.. _installation instructions: http://mit-crpg.github.io/openmc/usersguide/install.html -.. _Troubleshooting section: http://mit-crpg.github.io/openmc/usersguide/troubleshoot.html +.. _installation instructions: http://openmc.readthedocs.io/en/latest/usersguide/install.html +.. _Troubleshooting section: http://openmc.readthedocs.io/en/latest/usersguide/troubleshoot.html .. _Issues: https://github.com/mit-crpg/openmc/issues -.. _license: http://mit-crpg.github.io/openmc/license.html +.. _license: http://openmc.readthedocs.io/en/latest/license.html From 8a4d1fba4f20d5b4b651dc3177b13e0a0fd285b9 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 25 Jul 2016 10:41:58 -0500 Subject: [PATCH 70/82] Update URL for HDF5 data --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 86a2fbb4cf..30708de36a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,7 +42,7 @@ install: true before_script: - if [[ ! -e $HOME/nndc_hdf5/cross_sections.xml ]]; then - wget https://anl.box.com/shared/static/b3373ozjaiarcndy1ikotm4yuawxomwa.xz -O - | tar -C $HOME -xvJ; + wget https://anl.box.com/shared/static/6pwyfjnufam0sb96kqwwrve6vdn8m7u4.xz -O - | tar -C $HOME -xvJ; fi - export OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml From 462926ad44aad9de653155db6e82b460aafef555 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 25 Jul 2016 20:39:33 -0500 Subject: [PATCH 71/82] Address two @smharper comments in PyAPI. Restore ONLY option on 'use hdf5' --- openmc/data/ace.py | 13 ++++++------- openmc/data/reaction.py | 2 +- src/nuclide_header.F90 | 5 +++-- src/reaction_header.F90 | 3 ++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/openmc/data/ace.py b/openmc/data/ace.py index 1a56c165ef..03052bcabc 100644 --- a/openmc/data/ace.py +++ b/openmc/data/ace.py @@ -16,7 +16,6 @@ generates ACE-format cross sections. """ from __future__ import division, unicode_literals -import io from os import SEEK_CUR import struct import sys @@ -164,7 +163,7 @@ class Library(object): # Determine whether file is ASCII or binary try: - fh = io.open(filename, 'rb') + fh = open(filename, 'rb') # Grab 10 lines of the library sb = b''.join([fh.readline() for i in range(10)]) @@ -173,13 +172,13 @@ class Library(object): # No exception so proceed with ASCII - reopen in non-binary fh.close() - fh = io.open(filename, 'r') - fh.seek(0) - self._read_ascii(fh, table_names, verbose) + with open(filename, 'r') as fh: + fh.seek(0) + self._read_ascii(fh, table_names, verbose) except UnicodeDecodeError: fh.close() - fh = open(filename, 'rb') - self._read_binary(fh, table_names, verbose) + with open(filename, 'rb') as fh: + self._read_binary(fh, table_names, verbose) def _read_binary(self, ace_file, table_names, verbose=False, recl_length=4096, entries=512): diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index c2e1b24109..62b02048be 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -456,7 +456,7 @@ class Reaction(object): # YIELD AND ANGLE-ENERGY DISTRIBUTION # Determine multiplicity - ty = ace.xss[ace.jxs[5] + i_reaction - 1] + ty = int(ace.xss[ace.jxs[5] + i_reaction - 1]) rx.center_of_mass = (ty < 0) if i_reaction < ace.nxs[5] + 1: if ty != 19: diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 9f55941389..8ff83482e5 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -3,8 +3,9 @@ module nuclide_header use, intrinsic :: ISO_FORTRAN_ENV use, intrinsic :: ISO_C_BINDING - use hdf5 - use h5lt, only: h5ltpath_valid_f + use hdf5, only: HID_T, HSIZE_T, SIZE_T, h5iget_name_f, h5gget_info_f, & + h5lget_name_by_idx_f, H5_INDEX_NAME_F, H5_ITER_INC_F + use h5lt, only: h5ltpath_valid_f use constants use dict_header, only: DictIntInt diff --git a/src/reaction_header.F90 b/src/reaction_header.F90 index 185945563d..055dcb3923 100644 --- a/src/reaction_header.F90 +++ b/src/reaction_header.F90 @@ -1,6 +1,7 @@ module reaction_header - use hdf5 + use hdf5, only: HID_T, HSIZE_T, SIZE_T, h5gget_info_f, h5lget_name_by_idx_f, & + H5_INDEX_NAME_F, H5_ITER_INC_F use constants, only: MAX_WORD_LEN use hdf5_interface, only: read_attribute, open_group, close_group, & From b8681600638f8d1181edd9f0e2d06cb2a1f1ccc9 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 26 Jul 2016 22:35:28 -0500 Subject: [PATCH 72/82] Pesky little eV -> MeV --- openmc/data/neutron.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 5b587745d6..63b2bab01b 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -65,7 +65,7 @@ class IncidentNeutron(object): Contains summed cross sections, e.g., the total cross section. The keys are the MT values and the values are Reaction objects. temperature : float - Temperature of the target nuclide in eV. + Temperature of the target nuclide in MeV. urr : None or openmc.data.ProbabilityTables Unresolved resonance region probability tables From be7ca28dee279031d4be1bc33ada563f95733209 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Wed, 27 Jul 2016 18:02:38 -0500 Subject: [PATCH 73/82] Improve loading of cross sections from hdf5 Fix bug where reaction thresholds were not used. Automatically build summed reactions. Allow Tab1 evaluations of un-ordered datasets. --- openmc/data/function.py | 48 +++++++++++++++++++---------------------- openmc/data/neutron.py | 11 ++++++++++ openmc/data/reaction.py | 2 +- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/openmc/data/function.py b/openmc/data/function.py index e2efb4c101..bea6f5e9a6 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -80,50 +80,46 @@ class Tabulated1D(object): # Get indices for interpolation idx = np.searchsorted(self.x, x, side='right') - 1 - # Find lowest valid index - i_low = np.searchsorted(idx, 0) - + # Loop over interpolation regions for k in range(len(self.breakpoints)): - # Determine which x values are within this interpolation range - i_high = np.searchsorted(idx, self.breakpoints[k] - 1) + # Get indices for the begining and ending of this region + i_begin = self.breakpoints[k-1] - 1 if k > 0 else 0 + i_end = self.breakpoints[k] - 1 - # Get x values and bounding (x,y) pairs - xk = x[i_low:i_high] - xi = self.x[idx[i_low:i_high]] - xi1 = self.x[idx[i_low:i_high] + 1] - yi = self.y[idx[i_low:i_high]] - yi1 = self.y[idx[i_low:i_high] + 1] + # Figure out which idx values lie within this region + contained = (idx >= i_begin) & (idx < i_end) + + xk = x[contained] # x values in this region + xi = self.x[idx[contained]] # low edge of corresponding bins + xi1 = self.x[idx[contained] + 1] # high edge of corresponding bins + yi = self.y[idx[contained]] + yi1 = self.y[idx[contained] + 1] if self.interpolation[k] == 1: # Histogram - y[i_low:i_high] = yi + y[contined] = yi elif self.interpolation[k] == 2: # Linear-linear - y[i_low:i_high] = yi + (xk - xi)/(xi1 - xi)*(yi1 - yi) + y[contained] = yi + (xk - xi)/(xi1 - xi)*(yi1 - yi) elif self.interpolation[k] == 3: # Linear-log - y[i_low:i_high] = yi + np.log(xk/xi)/np.log(xi1/xi)*(yi1 - yi) + y[contained] = yi + np.log(xk/xi)/np.log(xi1/xi)*(yi1 - yi) elif self.interpolation[k] == 4: # Log-linear - y[i_low:i_high] = yi*np.exp((xk - xi)/(xi1 - xi)*np.log(yi1/yi)) + y[contained] = yi*np.exp((xk - xi)/(xi1 - xi)*np.log(yi1/yi)) elif self.interpolation[k] == 5: # Log-log - y[i_low:i_high] = yi*np.exp(np.log(xk/xi)/np.log(xi1/xi)*np.log(yi1/yi)) + y[contained] = (yi*np.exp(np.log(xk/xi)/np.log(xi1/xi) + *np.log(yi1/yi))) - i_low = i_high - - # In some cases, the first/last point of x may be less than the first - # value of self.x due only to precision, so we check if they're close - # and set them equal if so. Otherwise, the interpolated value might be - # out of range (and thus zero) - if np.isclose(x[0], self.x[0], 1e-8): - y[0] = self.y[0] - if np.isclose(x[-1], self.x[-1], 1e-8): - y[-1] = self.y[-1] + # In some cases, x values might be outside the tabulated region due only + # to precision, so we check if they're close and set them equal if so. + y[np.isclose(x, self.x[0], atol=1e-14)] = self.y[0] + y[np.isclose(x, self.x[-1], atol=1e-14)] = self.y[-1] return y if iterable else y[0] diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 63b2bab01b..7cbcca8c71 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -326,6 +326,17 @@ class IncidentNeutron(object): tgroup = group['total_nu'] rx.derived_products.append(Product.from_hdf5(tgroup)) + # Build summed reactions. Start from the highest MT number because high + # MTs never depend on lower MTs. + for mt_sum in sorted(SUM_RULES.keys())[::-1]: + if mt_sum not in data: + xs_components = [data[mt].xs for mt in SUM_RULES[mt_sum] + if mt in data] + if len(xs_components) > 0: + rxn = Reaction(mt_sum) + rxn.xs = Sum(xs_components) + data.summed_reactions[mt_sum] = rxn + # Read unresolved resonance probability tables if 'urr' in group: urr_group = group['urr'] diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 62b02048be..ad707d276e 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -400,7 +400,7 @@ class Reaction(object): # Read cross section if 'xs' in group: xs = group['xs'].value - rx.xs = Tabulated1D(energy, xs) + rx.xs = Tabulated1D(energy[rx.threshold_idx:], xs) # Determine number of products n_product = 0 From 3e2e4743d80b2715c9001f0f97b2e3277a84ec03 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Thu, 28 Jul 2016 09:06:38 -0500 Subject: [PATCH 74/82] Address #686 comments --- openmc/data/neutron.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 7cbcca8c71..75c38e823f 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -328,7 +328,7 @@ class IncidentNeutron(object): # Build summed reactions. Start from the highest MT number because high # MTs never depend on lower MTs. - for mt_sum in sorted(SUM_RULES.keys())[::-1]: + for mt_sum in sorted(SUM_RULES, reverse=True): if mt_sum not in data: xs_components = [data[mt].xs for mt in SUM_RULES[mt_sum] if mt in data] From bce4132bc84b0351c7fe629eb8b51e6dedc6afbb Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 28 Jul 2016 16:47:19 -0400 Subject: [PATCH 75/82] removed line to capitalize columns when exporting xs data --- openmc/mgxs/mgxs.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 2deeac797e..6c78e200da 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1399,10 +1399,6 @@ class MGXS(object): # Get a Pandas DataFrame for the data df = self.get_pandas_dataframe(groups=groups, xs_type=xs_type) - # Capitalize column label strings - #df.columns = df.columns.astype(str) - #df.columns = map(str.title, df.columns) - # Export the data using Pandas IO API if format == 'csv': df.to_csv(filename + '.csv', index=False) From 31771d8e2e6a88222355880623664d93639e5197 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Thu, 28 Jul 2016 16:27:11 -0500 Subject: [PATCH 76/82] Expand on IncidentNeutron.from_hdf5 in notebook --- .../pythonapi/examples/nuclear-data.ipynb | 506 +++++++++++++----- openmc/data/data.py | 9 +- 2 files changed, 376 insertions(+), 139 deletions(-) diff --git a/docs/source/pythonapi/examples/nuclear-data.ipynb b/docs/source/pythonapi/examples/nuclear-data.ipynb index 0c24079cf9..82be4a113f 100644 --- a/docs/source/pythonapi/examples/nuclear-data.ipynb +++ b/docs/source/pythonapi/examples/nuclear-data.ipynb @@ -32,7 +32,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The first thing we want to do is to read an ACE file into memory and instantiate a `IncidentNeutron` object. The easiest way to do this is with the `openmc.data.IncidentNeutron.from_ace(...)` factory method." + "## Importing from HDF5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `openmc.data` module can read OpenMC's HDF5-formatted data into Python objects. The easiest way to do this is with the `openmc.data.IncidentNeutron.from_hdf5(...)` factory method. Replace the `filename` variable below with a valid path to an HDF5 data file on your computer." ] }, { @@ -55,10 +62,10 @@ ], "source": [ "# Get filename for Gd-157\n", - "filename ='/opt/data/ace/nndc/293.6K/Gd_157_293.6K.ace'\n", + "filename ='/home/smharper/nuclear-data/nndc-hdf5/Gd157_71c.h5'\n", "\n", - "# Load ACE table into object\n", - "gd157 = openmc.data.IncidentNeutron.from_ace(filename)\n", + "# Load HDF5 data into object\n", + "gd157 = openmc.data.IncidentNeutron.from_hdf5(filename)\n", "gd157" ] }, @@ -66,7 +73,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that we have our ACE table, we can look at its contents. Let's start off by plotting the total cross section. Reactions are indexed using their \"MT\" number -- a unique identifier for each reaction defined by the ENDF-6 format. The MT number for the total cross section is 1." + "## Cross sections" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From Python, it's easy to explore (and modify) the nuclear data. Let's start off by reading the total cross section. Reactions are indexed using their \"MT\" number -- a unique identifier for each reaction defined by the ENDF-6 format. The MT number for the total cross section is 1." ] }, { @@ -79,18 +93,129 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" + } + ], + "source": [ + "total = gd157[1]\n", + "total" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To find the cross section at a particular energy, 1 eV for example, simply call the reaction's `xs` attribute at that energy. Note that our nuclear data uses MeV as the unit of energy." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "142.6474702147809" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total.xs(1e-6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `xs` attribute can also be called on an array of energies." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 142.64747021, 38.65417611, 175.40019668])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total.xs([1e-6, 2e-6, 3e-6])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A quick way to plot cross sections is to use the `energy` attribute of `IncidentNeutron`. This gives an array of all the energy values used in cross section interpolation." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1.00000000e-11, 1.03250000e-11, 1.06500000e-11, ...,\n", + " 1.95000000e+01, 1.99000000e+01, 2.00000000e+01])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gd157.energy" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" }, { "data": { - "image/png": "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\nAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAETCAYAAAAlCTHcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm8nOP9//HX50Qk4ltSFNltkVhiF0JwiDRiSxElijZK\nay3tD9E25QRt0X5R+9poEbHFLopy+AaNtU1ltWRHaktEEknE5/fHNdMzmZzlnpn7nu28n4/HPM7M\nNfd9X9edczKfuXZzd0RERFpSU+oCiIhIZVDAEBGRSBQwREQkEgUMERGJRAFDREQiUcAQEZFIFDBE\nRCSSxAOGmd1uZgvMbFJW+kFmNs3MZpjZiIz0/mZ2o5ndamYTki6fiIhEY0lP3DOz/sCXwF/dfYdU\nWg0wAxgAfAC8Bhzr7tMyzhsCbOzutyZaQBERiSTxGoa7TwA+z0ruC7zj7rPdfSUwFhiSdcxxwJik\nyyciItGUqg+jCzA34/W8VBoAZtYNWOjuS4pdMBERaVy5dnr/GBhd6kKIiEiDtUqU73yge8brrqk0\nANy9rrmTzUwrJoqI5MHdLd9zi1XDsNQj7TVgKzPrYWZrA8cCj+ZywY02cn71K2fJEsc9mcd+++2X\n2LWrNZ9qupdqy6ea7qXa8inWvRSqGMNqxwAvA1ub2RwzG+7uq4CzgKeBycBYd5+ay3X/9S947z3Y\nfnt48sn4yw2w2WabJXPhKs6nmu6l2vKppnuptnyKdS+FSrxJyt2PayJ9PDA+3+vecksdp55ay/Dh\ntZxxBoweDVdfDV26tHxuVNX0B1msfKrpXqotn2q6l2rLJ+k86uvrqa+vL/g65drp3aK6ujpqa2sZ\nNAj+/W/YZhvYcccQNL7+Op48amtr47lQK8qnmu6l2vKppnuptnySzqO2tpa6urqCr5P4xL0kmJk3\nVu7p0+H00+Gzz+Cmm2CPPUpQOBGRMmVmeAV0ehdFr17w7LNw7rlwxBFw2mnwefaUQRERyUvFBoy6\nurpG2+TM4Ac/gMmTw/Ntt4W774YKrEiJiMSivr5eTVJRTJwIp54KG2wAN9wQaiEiIq2RmqRasMce\n8NprcPjhsPfecOGFsGxZqUslIlJ5qj5gAKy1Fpx9dpi7MXUq9OkDf/tbqUslIlJZqr5JqjHjx8MZ\nZ8Duu8NVV0HnzjEWTkSkTKlJKg+DB8Pbb0PPnmHuxrXXwqpVpS6ViEh5q9iA0dQoqag6dIBLL4UX\nX4Rx40Jfx+uvx1c+EZFyoVFSMZbbHe66C847D4YOhd/+FtZfP7bLi4iUBTVJxcAMTjgBpkyBlSvD\n3I177tHcDRGRTKphNOKVV8LcjY03DnM3evZMLCsRkaJRDSMB/frBG2+EzvF+/WDUKPjqq1KXSkSk\ntBQwmrDWWvCLX8Bbb8GkSWHuxjPPlLpUIiKloyapiB5/HM46K9Q4rrwSNt20qNmLiBRMTVJFcuih\nYUHDHj1CbeP66zV3Q0RaF9Uw8jB5clg6fdkyuPlm2GWXkhVFRCQy1TBKYLvt4IUXwvIiBx8c1qn6\n4otSl0pEJFkVGzAKneldKDP40Y9CbWPp0rBF7H33ae6GiJQfzfQus3K/9FKYu9GlS+jf2HLLUpdI\nRGR1apIqE3vvDW++CQMGhHWpLrkEli8vdalEROKjgBGjtm3DelRvvhkm/u24Izz3XKlLJSISj8QD\nhpndbmYLzGxSVvpBZjbNzGaY2YiMdDOzS83sGjM7IenyJaF7d3j4YbjiCjjppLBO1YIFpS6ViEhh\nilHDGA0MykwwsxrgulT6dsAwM+udensI0BVYAcwrQvkSc/jhoVO8c+cwd+OmmzR3Q0QqV+IBw90n\nAJ9nJfcF3nH32e6+EhhLCBQAvYCX3P1c4PSky5e0ddeFyy+Hv/8d7r4b9twTJk4sdalERHJXqj6M\nLsDcjNfzUmnp5+kA83UxC5WkPn3CZk0/+xkccQScfDJ8/HGpSyUiEl05dnqPAw4ysz8BL5a6MHFK\n77sxdSqst16YAKglRkSkUqxVonznA90zXndNpeHuy4CTW7pA5iSU2tpaamtrYy1gktZfPyxgeNJJ\ncOaZcNttcN11YWiuiEhc6uvrY53gXJSJe2a2GfCYu/dJvW4DTAcGAB8CrwLD3H1qxOuV3cS9fLnD\nvffCueeGORyXX66VcEUkGWU/cc/MxgAvA1ub2RwzG+7uq4CzgKeBycDYqMGi2pjBscfCtGkhUPTp\nA1dfDV9XTe+NiFSLil0a5KKLLqq4pqgopk0L+2589FFoptpvv1KXSEQqXbppatSoUQXVMCo2YFRi\nuaNyh3Hjwo5/e+0Vmqm6d2/5PBGR5pR9k5TkzgyOOgqmTIFevWDnneHXv4bFi0tdMhFpzRQwyti6\n60JdHfzrXzB3bgget9+uYbgiUhoVGzBKvR9GMXXtCn/9KzzyCIweDbvtBs8/X+pSiUil0H4YFVju\nOLjDAw/A+efDDjvAH/4AW29d6lKJSCVQH0YrYwZHHx1mi++1V3j85Ccwr6KXaRSRSqCAUaHat4cR\nI2DGDNhgg1Db+H//T+tTiUhyFDAq3AYbwGWXhWXUv/oKeveGiy6CL74odclEpNooYFSJTp3CQoav\nvQazZoU9xUeNgs8+K3XJRKRaVGzAaE2jpHKxxRbwl7/AhAkwezb07Bk6yD/6qNQlE5FS0SipCix3\nKcyZA3/8I9x1V1iz6txzQ1ARkdZHo6SkWd27wzXXhFFV668PffvCsGHw5pulLpmIVBoFjFZik03g\n97+H998PE/8OPxwGDoRnnglzO0REWqImqVZqxQoYMwauuCIM0T3/fBg6FNYq1ZZaIpK4QpukFDBa\nuW++gSeeCIFj/vwwl2P4cOjQodQlE5G4qQ9DClJTA4cdBv/3f6Fj/JlnYLPNwpBczeUQkUwKGPJf\ne+0FDz8ML74I774bZo8/+2ypSyUi5UJNUtKk8ePDOlXDh4dl1mv09UKkorXaJilN3Eve4MHw+uuh\nmerEE7UPh0il0sS9Cix3pVq2LAzD7dIl7MdheX8/EZFSarU1DCmeddYJmzdNmRL23xCR1kk1DIls\n7lzYYw+4+27Yf/9Sl0ZEcqUahhRNt25hT/GTToIvvyx1aUSk2BIPGGZ2u5ktMLNJWekHmdk0M5th\nZiMy0vczsxfN7EYz2zfp8kluBg+GffaBkSNLXRIRKbZi1DBGA4MyE8ysBrgulb4dMMzMeqfedmAx\n0A7QxqNl6MorwyS/GTNKXRIRKabEA4a7TwA+z0ruC7zj7rPdfSUwFhiSOv5Fdz8EuAC4OOnySe42\n2igsk/7LX5a6JCJSTKXqw+gCzM14PS+VlmkhsHbRSiQ5OftsmDgR3nij1CURkWIpu05vMzvCzG4C\n/kJotpIytM468ItfwOWXl7okIlIspVrMej7QPeN111Qa7v4Q8FBLF8ictVhbW0ttbW2sBZSWnXJK\n2GPj3Xdhq61KXRoRyVZfXx/rihhFmYdhZpsBj7l7n9TrNsB0YADwIfAqMMzdp0a8nuZhlInf/AY+\n/hhuuqnUJRGRlpT9fhhmNgaoBTYEFgAXuftoMxsMXE1oFrvd3S/L4ZoKGGXio49gm21g9mxYb71S\nl0ZEmlNowEi8Scrdj2sifTwwPt/r1tXVqSmqDGy6KQwYEGZ/n3ZaqUsjIo2Jq2lKS4NIwZ59Ngyz\nfestLUwoUs60NIiU3AEHhKVCJk4sdUlEJEkKGFKwmhr48Y/hjjtKXRIRSVLFBgxtoFRejjsO7r8f\nli8vdUlEJFvRNlAys37A8cA+QCdgGfA28ARwl7svKrgUOVIfRnmqrYVzzoHvfa/UJRGRxiTah2Fm\n44GTgb8BBxECxrbASKA98IiZHZ5v5lJdjj8+LEooItWp2RqGmW3k7p80e4EIx8RNNYzytHAh9OgR\n5mR07Fjq0ohItkRrGJmBwMw2NbPDzewwM9u0sWOkdevYEQYOhAceKHVJRCQJkTq9zexkwvIdRwJD\ngX+Y2UlJFkwq0zHHhM5vEak+UWd6nwfs7O6fApjZhsDLwJ+TKlhLNNO7PA0eHIbYfvopbLhhqUsj\nIlDkmd5m9jJQ6+4rUq/XBurdfa+CS5AH9WGUt6OOgkMPheHDS10SEcmU6FpSZvaL1NN3gYlm9ghh\nC9UhwKQmT5RWbejQMFpKAUOkurQ0Suqi5k5291GxlygC1TDK2xdfQNeuMGeORkuJlJOyX948CQoY\n5W/IkFDTOOGEUpdERNKSnrh3q5lt38R765rZSWb2g3wzl+o1dKiG14pUm5aapHYCfgX0ISwH8jFh\nhndPYD3CKKmb3L2oKwiphlH+Fi2Cbt1g3jxtrCRSLorSJGVm/wPsRsNaUlPdfXq+mRZKAaMyHHww\n/OhH8P3vl7okIgLqw5AydvPN8MILMGZMqUsiItCKN1DS8ubl77DDYPx4WLGi1CURad2Ktrx5OVIN\no3LsuSdccklYY0pESqvV1jCkMgwZAo88UupSiEgconZ6b01YT6oHGbPD3f2A5IrWbHlUw6gQU6bA\noEFhEp/l/b1GROKQ6NIgGe4HbgJuBVblm5m0PttsA+usA2++CbvuWurSiEghojZJfe3uN7r7q+7+\nRvoR5UQzu93MFpjZpKz0g8xsmpnNMLMRWe91MLPXzOzgiOWTMmWmZimRahE1YDxmZqebWScz2yD9\niHjuaGBQZoKZ1QDXpdK3A4aZWe+MQ0YA90a8vpQ5BQyR6hC1SeqHqZ/nZaQ5sEVLJ7r7BDPrkZXc\nF3jH3WcDmNlYwgq408zsQGAKYUa5Wr2rQL9+8OGHMHMmbL55qUsjIvmKFDDcPe7/5l2AuRmv5xGC\nCEAt0IFQ81gKPBFz3lJkbdqEORmPPALnnFPq0ohIvqJu0drWzH5mZg+kHmeaWdskCuTuI939F8Dd\nhE52qQJqlhKpfFGbpG4E2gI3pF6fkEo7Oc985wPdM153TaX9l7v/tbkLZM5a1Fat5W/gwLDUubZu\nFSmeuLZmTYs6D+Nf7r5jS2nNnL8Z8Ji790m9bgNMBwYAHwKvAsPcfWrE62keRgU64ojwOPHEUpdE\npHUq1kzvVWa2ZUamWxBxPoaZjQFeBrY2szlmNtzdVwFnAU8Dk4GxUYOFVK4hQ+Dhh0tdChHJV9Qa\nxgDC8Nj3CSOXegDD3f35ZIvXZHn8oosuUlNUhfnkE9hyS/joozCZT0SKI900NWrUqOIsb25m7YBe\nqZfTi71pUlZZ1CRVofbbD847Dw49tNQlyd+rr0Lfvi0fJ1Jukt6i9YDUzyOBQ4CtUo9DUmkiOamG\n0VJ77AFz57Z8nEi1aWmU1H7Ac8BhjbznwLjYSyRVbcgQuOIK+OYbqKngtZK//rrUJRApvmYDhrtf\nlHp6sbvPzHzPzEo6Z7eurk59GBVoyy1ho41g4sQwA7xSffNNqUsgEl1cw2ujdnq/6e67ZKW94e4l\nWX9UfRiV7de/Dt/QL7+81CXJjxnMmAE9e5a6JCK5SXR589SCgNsB62f1WaxHWOtJJGff+16YxFep\nAQNA31ekNWqpFbkXcCjQkdCPkX7sApySbNGkWu26KyxeDNOnl7okhamrg5deKnUpRIonapNUP3d/\npQjliURNUpXvtNPCyrXnn1/qkuTOLAS7Xr3CzPVxGvohFaJYM71PNbOOGZl+28z+nG+mIpU+vDb9\nfSXO7y1z5qipS8pb1ICxg7svTL9w98+BnZMpUjR1dXWxLqolxbX//jB5MixYUOqSFCbOD/gePeD5\nkqydINWuvr5+tQVb8xU1YNSY2bfTL1K77UVd6TYR6WG1UpnatYNBg+Cxx0pdkvwkUcOA0LcjErfa\n2tqiBoz/BV4xs0vM7BLCYoJXFJy7tGqV3iwFakKS1iVSwEjtTXEksCD1ONLd70yyYFL9Dj4YXngB\nliwpdUmiy6dm8YT2jJQqkcviDBsAS9z9OuDjUs/0lsrXsWNYxO/pp0tdkuiyA0aUwHHooVpKRKpD\n1C1aLwJGAL9MJbUF7kqqUNJ6VFqzVDpApJcGiVrTMINddtGSIlLZotYwjgAOB5YAuPsHwLeSKpS0\nHkOGhCabSvkGnv7AzzVguMNbb8GqSNuOiZSnqAFjRWqmnAOY2brJFUlak+7doVu3ypkxnV3DiHq8\nOselGkQNGPeZ2c1ARzM7BXgWuDW5YklrUknNUrnWMBQopJpEHSX1R+AB4EHC+lIXuvu1SRasJZq4\nVz3SAaMSPlzzrTFUwr1J9Ypr4l7UtaTWBb5y91Vm1osQNMa7+8qCS5AHrSVVXdzDulKPPw7bb1/q\n0jRv6VJYd92GbVoHD4Ynn2z6+FWrYK214KuvoH17WL4c1l678WPN4OGHQwAVSUKx1pJ6EWhnZl2A\np4ATgDvyzVQkkxkcfnhyzVKXXw5ffBHPtfJtkmrp+McfL7xsIkmLGjDM3ZcSJu/d6O5HE/bJEInF\n974Xvl0n4YIL4O9/j+dauXZ6p7V0/GEZmyC3bw8LFza8njgRpk2DU7ShgJRY5IBhZv2AHwDpeatt\nkimStEb77APvvw/z5ydz/biGs+Y6DyPKRL9ZsxqeL14cmq0yF2Xcc08YMABuuy2vIovEJmrAOJsw\nae8hd59sZlsAkdbVNLPbzWyBmU3KSj/IzKaZ2QwzG5GR3tvMbjSz+8zs1Kg3IpWtbdvQH/Doo8lc\nP66Akc/8i8Z+ZjrmmIbnJ5zQ+HVWlqS3UGR1UUdJvejuh7v75anX77v7zyLmMRoYlJlgZjXAdan0\n7YBhqe1gcfdp7n4acAywV8Q8pAokObw2romBudQw5s0Lq/K2dNycOfGUTSRpuawllRd3nwB8npXc\nF3jH3WenRlqNBf47NsTMDgMeB5oZfyLV5qCD4OWX4+ugTkIund4ff7zmeY0d/9FH8ZRNJGmJB4wm\ndAHmZryel0oDwN0fc/dDgOOLXTApnW99C/r3h6eeKnVJmpZvp3eh8zYs74GQIvEpVcBokpntZ2Z/\nMrObaOhgl1ZiyJB4R0ul+y7iapLKrmE0J/NDXkuESDWItGuemV0BXAosI8zD2AH4ubvnu2LtfKB7\nxuuuqTTc/QXghZYukDlrsba2VrvvVYnDDoNf/jJ08rZtW/j1VqxY/Wehcu30zve87BqFAo3ko76+\nPtYVMaJus/pddz/fzI4AZhHmY7xI9CXOLfVIew3Yysx6AB8CxwLDIl4LIJZp7lJ+OneGnj3DxkoH\nHlj49eIOGOkaS64BoNAmLDVJST6yv0yPGjWqoOtFbZJKB5ZDgPvdfVHUDMxsDGFL163NbI6ZDXf3\nVcBZwNPAZGCsu0/NodxSxeKcxJcOFMuXx3O9YjdJzZ3b8jEixRK1hvG4mU0jNEmdZmbfAb6KcqK7\nH9dE+nhgfMT811BXV6emqCp15JFwwAFwzTVQU2AvW7nVMH71q7DT4CWXRDuve/eWjxFpSVxNU1Hn\nYVxAmBOxW2oY7BIyhsGWQjpgSPXp1St8qE6cWPi1yiVgpI+77jr43e/g2WdD05tIMdTW1sbSjB91\ni9ajgZWp1WpHEvouOhecu0gTjjoKHnyw8OukZ0jH3SSVb6d32vPPw7vvRj9fnd5SDqJW+H/j7ovN\nrD9wIHA7cGNyxZLWLh0wCv2gTLqGAbBoEbz+evPnFXof6vSWchA1YKRX4jkEuMXdnwCaWNW/OLSB\nUnXbYQdo0ybsg12IYnR6jxwJu+8e7by0dAB47rmmzznjjNzLJ9KYuDZQihow5qe2aD0GeNLM2uVw\nbiLUh1HdzEItY9y4wq5TjD6MphYGzKwVZAeMdI1jwICm87rhhvzKKJKtqH0YwPeBvwGD3H0hsAFw\nXsG5izTjyCML78dIauJe3PthZNtmm9Vfq0lKykHUUVJLgfeAQWZ2JrCxuz+daMmk1dt9d/jyS5gy\nJf9rxN0kla5hZM6riPJhnhkw1IEtlSrqKKmzgbuBjVOPu8zsrCQLJlJTU3gtI+kaRnMf/o1N3GtJ\nU/t9i5SDqE1SPwb2cPcL3f1CYE9AG0ZK4godXpvuX0hylFSuNQyAV19t/LiWrnXTTdCtW8v5iSQh\n8hatNIyUIvW8pK2qGiXVOuy9d9gv4r338jt/xQpYd934m6QK7cP4z38aP66lgPG734WNmeK6H2kd\nij1KajQw0czqzKwO+AdhLkbJaJRU69CmTVhbKt/RUsuXw//8T7Kd3k19yDc3Sipf6aat99+P53rS\nOhR1lJS7XwkMBz5LPYa7+9UF5y4SQSH9GCtWhI2Z4m6SynUxwabmYWSLOhpq4cJox4nEqcXFB82s\nDTDZ3XsDbyZfJJHV7b8/vPNOaIrp2jW3c5cvh/XWS3biXpQP/7iXK//JT+Df/y7sGiK5arGGkVqK\nfLqZad1MKYm2bcPGSvk0Sy1fnkwNI9flzQutYaTT04FnyZKW8xeJW9Q+jG8Dk83s72b2aPqRZMFE\nMuU76zsdMJKqYZjlN0oq3xqGtnqVUoq6H8ZvEi2FSAsGDoQTT4QFC2CTTaKfl26SKkUNI1PU4zWj\nW8pZszUMM9vKzPZ29xcyH4RhtfOKU0QRaN8eDjkEHnggt/PibpLKnrDXXA2juSapQjeGEimFlv5s\nrwa+aCR9Ueo9kaI59lgYOza3c+JuksqlhpHZbBS1SSrXDZlEiqmlgLGJu68xFiOVtlkiJYpIE/da\nn+9+N6wrNS+Hum3Snd5R+zDiGiUV13wOaV2KNXGvYzPvrVNw7gXQxL3WZ+21wyS+++6Lfk5STVJJ\n1TCaor4NKUSxJu69bmZrrBllZicDbxScu0iOcm2WSk/cW748nmac7Il7zz8P11zT+LFxNkml0z/6\nKFo5RZLQ0iipc4CHzOwHNASI3Qi77R2RZMFEGrP//jBrVlgaY4stWj5++XLo0CF0Mq9aBWtFHRfY\nhKT3w2gqYGQHGPVhSCk0W8Nw9wXuvhcwCpiVeoxy937uru86UnRrrQVDh8K990Y7fvlyaNcuNGfF\n0fEdV6e3ljGXShR1Lann3f3a1KOZXYgbZ2a3m9kCM5uUlX6QmU0zsxlmNiIjfYiZ3WJm95jZwFzz\nk+p27LHRA8aSJWG12rXXjqcfI2oNY9UqeP31Nc9LO/74xs9rqUlKpJSKNRp8NDAoM8HMaoDrUunb\nAcPMrDeAuz/i7j8BTiNsDyvyX/37w8cfw9SpLR+7ZElYrbZdu3gCRtQaxmOPwUknNbzO/sAvtIah\nACKlUJSA4e4TgM+zkvsC77j7bHdfCYwFhmQdMxK4vghFlApSUwPf/360WsaXX4aAEVeTVJSd9mDN\nvLK3aNWoJ6lEpZxv2gWYm/F6XioNADO7DHjS3f9Z7IJJ+TvuOLjrrpY/uDMDRjFrGNmizvRu6n40\nOkrKQVkuUJDaL3wAMNTMflLq8kj52W23EARefrn54778MvRhxNUkFdcoKdUwpBIVOMiwIPOBzCXT\nu6bScPdrgWubOzlzEkptba0m8bUyZvDDH8Jf/hK2cW1K3E1ScdUwCg0Y6sOQKOrr62NdEaOYAcNY\nfR/w14CtzKwH8CFwLDAs6sXimLUole3446FPH/jTn2CdRtYd+OYbWLo0zMModZNU3BsoiUSR/WV6\n1KhRBV2vKE1SZjYGeBnY2szmmNnw1MZMZwFPA5OBse4eYdyLSNClC+y+OzzySOPvL14cmqPatIm/\nSSrXb/hxLz4oUgpFqWG4+3FNpI8HxudzzfRaUmqKat3SzVLHHrvme598At/5Tnged5NU+mdU6sOQ\nUoqraaosO72j0OKDAmExwn/8Az74YM33PvkENtooPI+7hpHrtaI2SWl5c0lCsRYfFClrHTrAMcfA\nbbet+V5mwIizhpHPtXKtkYiUIwUMqXhnnAG33AIrV66enhkw2reHZcsKz+ubb0IH+1df5X5enObP\nh0WL4r2mSEsqNmBoAyVJ69MnrFyb3fk9fz506hSed+wICxcWnteqVaFWs2QJtG0b/bzsJqQ41oza\nemu48srcg5e0PsXaQKlsqQ9DMp15Jlx33eppM2fC5puH59/+NnyevThNHtL7a3z5ZfMBI7uPotDl\nzRvz3HPwwgvQsyfcdFN8m0RJ9VEfhkiGI44I+2RkzvxOImCsXBkmArYUMLJlB4w4Oq232y7Uqh58\nEB5+ONQ4br99zaY5kbgoYEhVaNsWfv1rSH+Jcoe33grNVRB/DWPJkuY3Y8q3hpHPcNu+feGpp8La\nWnffDdtsA3feqY52iZ8ChlSNH/0o1DIefhimTAkf7J07h/fiDBhRahjZH/zZH95Rd9bLRf/+oZnq\n1lvh5pth++3Dir5xd7hL61WxAUOd3pKtbVv485/hpz8NI6eOy5guGmeTVJQ+jGxffx3tuDgm9O2/\nP/zf/8HVV8P//i/stFPYB101jtZLnd7q9JZG9O8PY8bAvvvCyJEN6RtuCJ9+Wvj18+30jlrDiIsZ\nDBoEEyfCZZeFAQG9e4faRxzzUaSyqNNbpAkDBsDFF4fhr2mdOsGHHxZ+7ahNUtmifruPu8PaDA4+\nGCZMCLWvceNgyy3hqqtCP4xILhQwpFX4znfCRLdCv12nm6SWL2++0zt7g6TsJqlSLO2xzz4wfjw8\n+ii88koYQXbxxfDZZ8Uvi1QmBQxpFWpqYNNNC69lpJukILcmqXKaI7HLLnDffaGfY9asUOM4/XSY\nNq3UJZNyp4AhrUbnzo0vUpiLFSsaVsBt1y76edmzscth8cBevUIz1ZQpYQmV/faDgw4KtRCNrJLG\nKGBIq9G1K8yd2/JxzVm5smF9qsw+kmzZNYxy7mju1Ck0Tc2eHZaJ/+UvYdtt4YYbQl+NSJoChrQa\nW28NM2YUdo2vvgqd3i3JDhjlWMPI1r59mMvy1lthHsezz0KPHnD22WqukkABQ1qN3r1haoF7Oi5Z\nEnbxg+hzK6C8axjZzELz1LhxIXh861tQWxuGKo8erVpHa6aAIa1G796Ff1OOGjAqsYbRmO7d4dJL\nYc4c+PnP4aGHoFs3OOmk0GleKfch8ajYgKGZ3pKrbbYJTVKFzHXIDBgbbhg6jhtTSX0YUay9dljg\n8dFHQy1t223h1FNDM9+llxbe1CfJimumt3kFfkUwM6/Eckvp7bBD2J2vb9/8zt9gA3jnnTBaar31\nwmii9daGYHfpAAAP4ElEQVQL72X+ST7xBBx6aMProUPhgQcaXt9xR+gvKESp/wu4w2uvhYUOH3ww\nBNChQ8Nj2221b3k5MjPcPe/fTMXWMETy0b9/mPWcr6VLQw2jU6fwMz0nA1b/AK+2GkZjzELgvfZa\nmDcv7MmxaBEMHhwCxsiR8M9/lj6wSXwUMKRV2WcfeP75/M5dtSr0WzQ1/yJzcl619GFEVVMDe+8d\ndgCcPRv+8pfw73HUUWGDpxEjwl4luQwUkPKjgCGtyuDB8OKL8MUXuZ/75Zdh7kVTTS2ZazNlB4Ts\nGka1BYxM6ZrHFVfAu+/C/feHZVROPx023jg0Wd16a+hIl8qSeMAws9vNbIGZTcpKP8jMppnZDDMb\nkZG+uZndZmb3JV02aX06dgzDQx99NPdzP/ss9GE0ZenShufZASF7KGprmUltBjvvDL/9bWiemjwZ\nDj8c6utht93CQIRzzoHHHw/NWVLeilHDGA0MykwwsxrgulT6dsAwM+sN4O4z3f3kIpRLWqkTT4Rb\nbsn9vE8+CR272V54ISw70lwNY+HC1V8XujfFz39e2Pml0qlT+Pe/+2746KOwS+DGG8Of/hRm4u+2\nG5x7rgJIuUo8YLj7BCB765q+wDvuPtvdVwJjgSFJl0UEwvDQ2bPDXhG5+PTTxgPGvvuGD73mlgvP\n3ouj0BpGNfQF1NTArrvCr34FzzwTAvLVV4da4NVXhwDyxz+WupSSqVR9GF2AzFV95qXSMmlQniRi\nrbXgN78J32Rz6UtoKmBAGC2V2S+Sfd1Fi8JchrRCA8YPf1jY+eWoXbswim3kyLAsye9/DzNnlrpU\nkqnsOr3NbAMzuxHYKbNvQyROw4eHfoW77op+zscfN6xUmy17YcPGAtHGGzc8z26Syt5b44knmi/L\nrrs2/3410DyO8tPMFjCJmg90z3jdNZWGu38GnNbSBTJnLdbW1mq7VslJmzZhXaSBA6FfP9hqq5bP\nmTkTNtus8fe6dw/NXGmNBYxu3cJ8BVizhrHnnnDPPeEYCLvkzZgRZlK3Vm3awJNPwplnwo47wvbb\nh3+Ppmp5sqb6+vpYV8QoVsAwVm9ieg3Yysx6AB8CxwLDcrlgHNPcpXXbaaewrPdhh4Whtk3VHtJm\nzgyL8DVmxx3h3nsbXqeXH+nZM7TDDxkSnr/ySkjPDhhffx1qKZl69ox8K1XpxBPDarnTp4fJlrfe\nGp63bRuWZOnTJ2wGtfPOYQZ/LvuTtBbZX6ZHjRpV0PUSDxhmNgaoBTY0sznARe4+2szOAp4mNIvd\n7u4FriMqkrvTToP582HQoLBx0CabNH3s9OlN10T22y98E16xIvRVpDulDzigYYmQmho47jgYM2bN\nJqnM9a2uumrN67/6aqi1fPBB81vDVpMOHcK8mcGDG9LcYcGCsIjkpEkhAF9/fViuZdttQy1k883D\nY4stws9OndbcMlfyk/ifnrsf10T6eGB8vtetq6tTU5TE4pJLwrfWPfYIS3rvssuax3z2Wdjeddtt\nG79G587hm+4DD4SgkA4AHTo0fFgtXhzef+qpMKQ0U+aop8WLG55PmBCaq9q0yf/+qolZ2Gp3001X\nr+0tXRqWYp82LdQEn3oq/Jw5Mww46N49BI4OHdZ8tG0b/n3btAm/q/Tz9GPddUP/03e+E37Pm29e\neUE7rqapCrvtBmqSkriYwUUXhWAweDCcckoY6pm5o96jj4YPqOY+uEeMCCu4HnlkQwBIN5OMHNmw\n4GHPnmFb1G22adifI70CLsDnGYPQ99674NtrFTp0CP9Wjf17LVkS9i5fsACWLQvBJfOxcmWo8X3z\nTfi5cmVYyiWdtnhxGPDw8cehD+rDD8M+6P36hb+J2lrokj3Gs8ykv1yXfZOUSKU4+ugwrPOcc8IH\nwumnh1nJZmEJ7+uvb/78gQPDxLMRIxpqIummp0suaThuzz3hxhvhpz8NAeOkk+B3v2t4vxoXKiyl\nddeF7bYLjzgsWxZ+by+9FGqkZ58dVgCorQ1Nm4ccEnYvrEZa3lykEZMmhWXQ//a30C9x9tkhkLRk\n4cIQNNq1C8NsJ01ac2TVww+HyYMXXwwXXhgW7EvP3H7jjRCsOnaM/ZYkId98A2+/HRa1fPTR8Ds/\n8cTw95Ie9VYuCl3evGJrGOrDkCTtsANcc03u53XsGHal69s37BPR2DDcgQPDz7Ztw8/MZUNaw/yK\nalNTE/5edtghfLF47z244YYwcu7oo0ONc4stSlvGuPowVMMQKYF77w3t7d26wQUXhFnNUl0++SSs\nkXXjjeGLwL77NgwD3nDD0HH+1VfhuAULQgf9++83dNbPnx+O69YNhg0LTV2FKrSGoYAhUkLjxoXa\nSPYcDKkey5aFmfuvvgpvvhlW7V20KPRvtW0LG20URmFlDwfu0iWMzps9O/x9HHhg4WVRwBARqUBf\nfx1G3RVzCZRW24chIlLJKm0uB5Th4oNR1dXVxbpGiohItaqvr49l7pqapEREWolCm6QqtoYhIiLF\npYAhIiKRKGCIiEgkChgiIhKJAoaIiESigCEiIpEoYIiISCQKGCIiEknFBgzN9BYRiUYzvSuw3CIi\npaSZ3iIiUhQKGCIiEokChoiIRJJ4wDCz281sgZlNyko/yMymmdkMMxuRkd7BzO4ws5vN7Likyyci\nItEUo4YxGhiUmWBmNcB1qfTtgGFm1jv19pHA/e7+U+DwIpSvScUahVVN+VTTvVRbPtV0L9WWT6WM\n+Ew8YLj7BODzrOS+wDvuPtvdVwJjgSGp97oCc1PPVyVdvuZU0x9ksfKppnuptnyq6V6qLR8FjOZ1\noSEoAMxLpaWfd009L+Jut2uaNWuW8inDPJRP+eahfMo3jziU466y44DrzOwQ4LFSFqSa/iCLlU81\n3Uu15VNN91Jt+ShgNG8+0D3jdddUGu6+FDippQuYFafyoXzKMw/lU755KJ/yzaNQxQoYxurNS68B\nW5lZD+BD4FhgWNSLFTJTUURE8lOMYbVjgJeBrc1sjpkNd/dVwFnA08BkYKy7T026LCIikr+KXEtK\nRESKTzO9RUQkkrIJGLnOCM94f3Mzu83M7msuLaF8WpyVXkB+25jZvWZ2vZkd1di1Y8qnm5k9lLq3\nNd6PMZ/+Znajmd1qZhMSysPM7FIzu8bMTkjwXvYzsxdT97NvUvmkjulgZq+Z2cEJ3k/v1L3cZ2an\nJpTHEDO7xczuMbOBCd5Lk//348oryv/7mPLJ+V7yzCf678bdy+IB9Ad2AiZlpNUA7wI9gLbAP4He\nTZx/X8S02PIBjgcOST0fG+d9Ab8A9k49fySpfz/gYOC41PN7ivB7GgKcktC9fA+4A/gjsH+C/2b7\nAk8Afwa2SPLfDBgFnAscXITfjQF/TTiPjsCtRbiXNf7vx5UXEf7fx/z3FvleCsynxd9N2dQwPPcZ\n4eWQT4uz0gvI707gWDO7AtigpYIUkM8/gJPN7FngqQTzSTsOGJNQHr2Al9z9XOD0pO7F3V9090OA\nC4CLk8rHzA4EpgAfE2ESayG/GzM7DHgceDKpPFJGAtcneS+5yiOvvFajqIDPuBZ/N2UTMJrQ5Ixw\nMzvBzK40s06p9xr7DxV1+G2++cwlv1npLeYHrOXuZxE+lD7J4dq55HMVcAZwobsfCByaUD5Xmlkn\nM+sGLHT3JUnkAXxAw3+Ur/PII1I+GX8LC4G1E8rnKsJQ8z0IQfbkhPK50sw6uftjqSB4fEJ5dDaz\ny4An3f2fed1J4Z8HseRFvKtRNJdPWhzTCJrNJ+rvphxnekfi7ncCd5rZBmZ2I7CTmY1w98vNbAPg\nt5lpSeQDPETMs9Iz8uthZjcDHYA/xHHtJvLZDqgzsx8AM5PKB8DM6giLUSaSh5mtA1xrZvsALyaY\nzxFmNghYn7CIZiL5pF+b2Ynk/6WhxXws9MlcALQjNLUlkcdZwABgPTPbyt1vSSifxv6fxq0oq1HE\n+TnWQj6RfzflHjCanBGe5u6fAae1lJZQPpFmpeeZ32zgp3lcO9d8JgNHJ51PKq+6JPNw92Xk/008\nl3weInxZSDSfjPz+mmQ+7v4C8ELCeVwLXFtAHlHzyfX/fs55FfD/Ptd84rqXlvKJ/LsptyapJmeE\nm9nahBnhj1ZQPsXOr5ryqaZ7qbZ8quleip1XZeeTS+97kg9CR+gHwHJgDjA8lT4YmA68A1xQKflU\n630VI59qupdqy6ea7qVa7ynJfDTTW0REIim3JikRESlTChgiIhKJAoaIiESigCEiIpEoYIiISCQK\nGCIiEokChoiIRKKAIVXFzFaZ2Ztm9lbq5/mlLlOamd1vZpulns8ysxey3v9n9h4GjVzjPTPrmZV2\nlZmdZ2bbm1nsa3WJpJX7WlIiuVri7rvEeUEza+NhH/pCrrEtUOPus1JJDnzLzLq4+3wz651Ka8k9\nhGUdLkld14ChQD93n2dmXcysq7vPK6S8Io1RDUOqTaNLQZvZTDOrM7M3zOxfZrZ1Kr2DhR3K/pF6\n77BU+g/N7BEz+zvwrAU3mNkUM3vazJ4wsyPNbH8zeygjnwPNbFwjRfgB8EhW2n2ED38IS5n/d58Q\nM6sxsyvMbGKq5nFK6q2xGedA2MxpVkaAeDzrfZHYKGBItVknq0kqcyXe/7j7rsBNhF3sAH4N/N3d\n9wQOAP6YWiYdYGfgSHffHzgS6O7u2wInAP0A3P15oJeZbZg6ZzhweyPl2ht4I+O1Aw8CR6ReH8bq\nS2X/mLB3yB6EzW9+YmY93P1tYJWZ9Ukddyyh1pH2OrBPc/9AIvlSk5RUm6XNNEmlawJv0PBB/V3g\nMDM7L/V6bRqWgX7G3RelnvcH7gdw9wVm9nzGde8EjjezO4A9CQElWyfCznmZPgU+N7NjCDvrLct4\n77tAn4yAtx7QE5hNqpZhZlMI29JemHHef4DOjd69SIEUMKQ1WZ76uYqGv30DjnL3dzIPNLM9gag7\nA95BqB0sB+53928aOWYp0L6R9PsI22KemJVuwFnu/kwj54wFniZsEvUvd88MRO1ZPfCIxEZNUlJt\nct3O8m/Az/57stlOTRz3EnBUqi9jE6A2/Ya7f0hYTvrXNL2j4FRgq0bK+RBwOSEAZJfrdDNbK1Wu\nnummMnd/n7AD32Ws3hwFsDXwdhNlECmIAoZUm/ZZfRi/S6U3NQLpEqCtmU0ys7eBi5s47kHCPsiT\ngb8SmrUWZbx/NzDX3ac3cf6TwP4Zrx3A3b909z+4e/Ye5LcRmqneNLN/E/pdMlsE7gF6EbYLzbQ/\nMW+zKpKm/TBEIjKzdd19SWqv5YnA3u7+n9R71wJvunujNQwzaw88lzonkf90qZ3U6oH+TTSLiRRE\nAUMkolRHd0egLXC5u9+ZSn8d+BIY6O4rmzl/IDA1qTkSZrYV0NndX0zi+iIKGCIiEon6MEREJBIF\nDBERiUQBQ0REIlHAEBGRSBQwREQkEgUMERGJ5P8DTIO86bB/YIwAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -98,8 +223,7 @@ } ], "source": [ - "total = gd157[1]\n", - "plt.loglog(total.xs.x, total.xs.y)\n", + "plt.loglog(gd157.energy, total.xs(gd157.energy))\n", "plt.xlabel('Energy (MeV)')\n", "plt.ylabel('Cross section (b)')" ] @@ -115,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -145,12 +269,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's suppose we want to look more closely at the (n,2n) reaction." + "Let's suppose we want to look more closely at the (n,2n) reaction. This reaction has an energy threshold" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -161,12 +285,64 @@ "text": [ "Threshold = 6.400881 MeV\n" ] + } + ], + "source": [ + "n2n = gd157[16]\n", + "print('Threshold = {} MeV'.format(n2n.threshold))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The (n,2n) cross section, like all basic cross sections, is represented by the `Tabulated1D` class. The energy and cross section values in the table can be directly accessed with the `x` and `y` attributes. Using the `x` and `y` has the nice benefit of automatically acounting for reaction thresholds." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n2n.xs" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(6.400881, 20.0)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" }, { "data": { - "image/png": "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\n9zC0aV7vrgAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -174,12 +350,10 @@ } ], "source": [ - "n2n = gd157[16]\n", "plt.plot(n2n.xs.x, n2n.xs.y)\n", "plt.xlabel('Energy (MeV)')\n", "plt.ylabel('Cross section (b)')\n", - "plt.xlim((n2n.xs.x[0], n2n.xs.x[-1]))\n", - "print('Threshold = {} MeV'.format(n2n.threshold))" + "plt.xlim((n2n.xs.x[0], n2n.xs.x[-1]))" ] }, { @@ -191,7 +365,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -203,7 +377,7 @@ " ]" ] }, - "execution_count": 6, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -214,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -222,10 +396,10 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 7, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +418,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -252,39 +426,39 @@ { "data": { "text/plain": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" ] }, - "execution_count": 8, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -303,16 +477,16 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAERCAYAAABowZDXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4lUXah+856b2SHpIQSkIvEUJoQaUo0nUFQhFBBVkV\ny36grpTFCuvqWhYbIki3g4qC0ktCEAiQBEJJBwIhnZB65vvjJDEH0htJnPu63ivnzMw75Rw4zzsz\nzzw/IaVEoVAoFIrq0NzpDigUCoWiZaAMhkKhUChqhDIYCoVCoagRymAoFAqFokYog6FQKBSKGqEM\nhkKhUChqhDIYCoVCoagRymAoFAqFokY0a4MhhPARQnwmhNhyp/uiUCgUf3WatcGQUsZKKWff6X4o\nFAqFookNhhBilRAiRQhx8pb0kUKIM0KIGCHEgqbsk0KhUChqRlPPMFYDI8onCCE0wAcl6V2AyUII\nv1vuE03TPYVCoVBURpMaDCnlASD9luS+wDkpZbyUshDYBIwFEELYCyFWAj3VzEOhUCjuLIZ3ugOA\nO5BY7n0SOiOClDINmFvVzUIIFW5XoVAo6oCUslarN81607umSClb7TVhwoQ73gc1PjU2Nb7Wd9WF\n5mAwkoG25d57lKTVmCVLlrBnz56G7JNCoVC0Svbs2cOSJUvqdO+dMBgC/U3scKC9EMJLCGEMTAK2\n1qbCJUuWEBwc3HA9VCgUilZKcHBwyzAYQogNwCGgoxAiQQgxU0pZDDwF7AAigU1Syuja1NuaZxj+\n/v53uguNSmseX2seG6jxtVTqM8No0k1vKeWUStK3A9vrWm9dB98S6Ny5853uQqPSmsfXmscGanwt\nleDgYIKDg1m6dGmt720OXlIKhaKJ8Pb2Jj4+vsHqCwkJabC6miOtYXxeXl7ExcU1SF2twmCU7mGo\nfQyFomri4+Pr7CGjaJkIoe85u2fPnjov4bcag6FQKBSK6qnPklRzcKtVKBQKRQugVRiM1uwlpVAo\nFA1Ji/GSaizUkpRCoVDUDLUkpVAoWgXe3t6Ym5tjbW2NlZUV1tbWPP3007WuJzU1lZCQEGxtbXFw\ncGDatGnV3rN37140Gg2LFi3SS9+wYQPe3t5YWVkxYcIEMjIyquy/qakpaWlpeum9evVCo9GQkJBQ\nZR8uXbqEkZERsbGxt+WNHz+e//u//6t2HI1JqzAYaklKoWgdCCH46aefyMrKIjs7m6ysLN57771a\n1zNhwgTc3NxISkri6tWrvPDCC1WWLyoqYv78+QQGBuqlR0ZGMmfOHNavX09KSgpmZmbMnVt5PFQh\nBD4+PmzcuLEs7fTp09y8efM2b6WKcHNz49577+XLL7/US09PT2f79u088sgj1dZRHS0tNEiDo0KD\nKBSth/q6/e7cuZOkpCSWL1+OpaUlBgYG9OjRo8p73n77bUaMGIGfn74Uz4YNGxgzZgwDBgzA3Nyc\nZcuW8e2333Ljxo1K65o2bRpr1qwpe79mzRpmzJihV6agoIAXXngBLy8vXF1defLJJ8nPzwdg+vTp\ntxmMjRs30qVLlwY5TNhiQoMoFApFXTl48CB2dnbY29tjZ2en99re3p5Dhw4BEBoaSseOHZk+fTqO\njo7069ePffv2VVpvfHw8q1evZtGiRbcZq8jISD1j065dO0xMTIiJiam0vsDAQLKzszl79ixarZbN\nmzczdepUvboXLFjA+fPnOXnyJOfPnyc5OZl//etfgG7pKTU1tWw8AOvWrWuQ2UV9UQZDoVDoIUT9\nr/owbtw4PUOwatUqAAYMGEB6ejppaWmkp6frvU5LSyMoKAiApKQkdu7cyT333ENKSgrPPfccY8eO\nvW1foZRnnnmGV199FXNz89vycnJysLGx0UuztrYmOzu7yjGUzjJ27tyJv78/bm5uevmffvop77zz\nDjY2NlhYWLBw4cKyZSxTU1MefPBB1q5dC8C5c+c4duwYkydPrsGn17i0Gi8pddJboWgY7vRB8B9+\n+IGhQ4fW+X4zMzO8vb3LnsgffvhhXnvtNQ4ePMjo0aP1ym7bto3s7GwefPDBCuuytLQkKytLLy0z\nMxMrK6sq+zB16lQGDx5MbGws06dP18u7du0aubm59OnTpyxNq9XqzUBmzJjB2LFjee+99/jyyy8Z\nMWIEjo6O1Y69JqiT3sqtVqFoNVS2h3HgwAHuu+++2zaPpZQIIdi+fTsDBgyge/fu/Pjjj3plKttw\n3rVrF3/88Qeurq6AzhgYGhpy6tQpvvvuO7p06UJERERZ+QsXLlBYWEjHjh2rHEPbtm3x8fFh+/bt\nfP7553p5jo6OmJubExkZWdburQwcOBB7e3u+//571q9fz4oVK6psrzYot1qFQtHqGThwYJnnVPmr\nNG3AgAGAbg8gPT2dL7/8Eq1Wy9dff01ycnJZfnleffVVYmJiiIiIICIigjFjxvDYY4+xevVqQBd8\ncNu2bRw8eJAbN26waNEiJk6ciIWFRbX9/fzzz9m1axdmZmZ66UIIHnvsMebPn8+1a9cASE5OZseO\nHXrlpk2bxoIFC8jMzLxtZnSnUAZDoVA0K0aPHo21tXXZNXHixFrdb2dnx9atW1mxYgW2trYsX76c\nrVu3Ym9vD8DcuXN58sknAbCwsMDJyansMjMzw8LCAltbW0AX4vyjjz5iypQpuLi4cPPmTT788MNK\n2y4/k/Hx8aF3794V5r311lu0b9+ewMBAbG1tGT58+G0b6dOnTycxMZFJkyZhZGRUq8+gsRAtPXKl\nEEK29DFUxYYNG5gypUIZkVZBax5fcxybEEJFq/2LUdl3XpJeKxcFNcNQKBQKRY1oFQZDnfRWKBSK\nmqGCDyovKYVCoagRyktKoVAoFI2OMhgKhUKhqBHKYCgUCoWiRiiDoVAoFIoaoQyGQqFQKGqEMhgK\nhUKhqBGtwmCocxgKReugoSRa33//fdq1a4etrS19+/bl4MGDNWrT2tqakSNH6uW3NonW+pzDQErZ\noi/dEFov69evv9NdaFRa8/ia49ia+/8Xb29vuWvXrnrVERYWJi0sLOTx48ellFKuXLlStmnTRmq1\n2lq3efr0aWllZSUPHDggb9y4IadMmSInTZpUZf/9/PzkBx98UJZ26tQp2alTJ6nRaGR8fHy1/R85\ncqRcunSpXlpaWpo0MTGRkZGR1d5/K5V95yXptfq9bRUzDIVC0XqQ9Yx1FRcXR9euXenZsyegC+J3\n/fp1rl69Wus2W6NEa31QBkOhULQIairRet9991FcXMyRI0fQarWsWrWKnj174uzsXGndISEhODs7\nM3LkSE6ePFmWriRa9WkVoUEUCkXDIZbWU2MVkIvrPksYN24choaGZcJIK1asYNasWWUSrdVRutcw\ncOBAAGxtbdm+fXul5Tds2EDv3r2RUvLuu+8yYsQIzp49i7W1db0lWocMGVKpROupU6fK6l64cCEh\nISG89tprehKtQUFBZRKtW7durXbsjY0yGAqFQo/6/Ng3BPWVaP3ss89YvXo10dHR+Pr68uuvvzJq\n1ChOnDiBi4vLbeX79+9f9nrhwoWsWbOG/fv3M2rUqFYp0Vof1JKUQqFoVlS2n3DgwIEyz6nyV2la\nqSdUREQEo0ePxtfXF4ARI0bg6uqqt8RTFeX1IxpConXChAl6eeUlWtPS0khLSyMjI4PMzMyyMrdK\ntN66B3KnUAZDoVC0CGoq0XrXXXfx008/lbmm7ty5k3PnztG1a9fb6kxMTOTQoUMUFhaSn5/PihUr\nuH79elldSqJVn2ZtMIQQ5kKIL4QQHwshmpd0mUKhaBTqK9E6ffp0Jk2aRHBwMDY2NsyfP59PPvmk\nbFZQXqI1OzubuXPnYm9vj4eHBzt27OCXX37Bzs4OUBKtt9KsJVqFEFOBdCnlT0KITVLKSRWUkc15\nDPWlOcp8NiSteXzNcWxKovWvR4uVaBVCrBJCpAghTt6SPlIIcUYIESOEWFAuywNILHld3GQdVSgU\nCsVtNPWS1GpgRPkEIYQG+KAkvQswWQjhV5KdiM5oANTf10+hUCgUdaZJDYaU8gBwqyN1X+CclDJe\nSlkIbALGluR9BzwohPgQ2NZ0PVUoFArFrTSHcxju/LnsBJCEzoggpcwFHq2ugvKbYv7+/nf8+HxD\nUlXQtNZAax5fax6bomWxYcMGoqKiiI6Orlc9zcFg1JtvvvnmTnehUWluG6cNTWseX3MbW0hIyJ3u\nguIOUNG/w/JeWzWlORiMZKBtufceJWk1ZsmSJQQHBxMcHFyrhtNvppOcnUzazbSyK/1mOr1dexPs\nHVynD1ShUCiaM3v27KmzHMSdMBgC/Q3scKC9EMILuAxMAibXpsLaxnYv1hbzXth7LNu3DFcrV+zN\n7LE3s8fO1A4bExtWHV+FocaQp/s9TUi3EMyMzKqvVKFQKFoApQ/XS5curfW9TWowhBAbgGDAQQiR\nACyWUq4WQjwF7EC3Cb9KSlm/hbYqOJt6lke3PoqBMODIY0dob9/+tjJSSn67+Bv/DfsvL/7+IrN7\nzebpfk/jauXaWN1SKBSKZk+TGgwpZYULulLK7UDl4SSroSZLUsXaYt4NfZc3DrzB4iGLmdd3HhpR\n4iQWFgbvvQc+PuDnh/DzY1inQIZNGca56+d4L+w9Aj4NYNvkbfR27V1pGwqFQtHcqc+SVLMODVJT\nSg1GZVxMv8ig1YPYFrONsNlhPNXvqT+NxdatMHo0BASAkRH89BM89hi4uICnJx2eeJH3e73E+/e9\nz8h1I9lxYUel7SgUivrREBKtV65cYezYsbi7u1coi/rVV18xYMAALCwsuPvuu6utryqJ1oKCAh59\n9FFsbGxwc3PjnXfeqbSevXv3otFobgt1cvLkSTQaTY368tZbbzFkyJDb0q9fv46JiQlRUVHV1hEc\nHFxnidZWYzAqs5hfRX5F4GeBPNT5IXbN2IWvve+fmStXwhNP6IzEs8/C4sWwcSMcPw7Z2XDgAHTt\nCnfdxYTrTnz78LdM+24aayPWNs3AFIq/GEIIfvrpJ72ggu+9916t6tBoNNx33318++23FTquODg4\n8Oyzz/Liiy9WW1dkZCRz5sxh/fr1pKSkYGZmxty5c8vyFy9ezIULF0hMTGTXrl0sX778tiCC5WnT\npg2HDx/W0/VYs2YNnTp1qtHYpk6dyuHDh4mPj9dL37hxI927d6/RkQKl6V0BuQW5cs62OdL3v74y\nPDlcP1OrlfLFF6Vs317K8+fLklMLCuQj0dFyalSU/D0tTRaXagBv3y6lk5OU774ro1Iipdc7XvK1\nfa9VqhHckDRHXeiGpDWPrzmOrbL/L80Fb29v+fvvvzdIXUVFRVIIUamO9meffSaHDh1aZR0vvfSS\nDAkJKXt/4cIFaWxsLHNycqSUUrq5ucnffvutLH/RokVy8uTJFda1Z88e6eHhIefOnSs//PBDKaWU\nxcXF0t3dXS5btkyvL9HR0XLYsGHS3t5e+vn5yS1btpTlDR8+XC5btkyv7r59+8r333+/wnYr+85R\nmt46zqSeIXBVIOl56fzx+B8EuAX8mVlQADNmwK5dcOgQlMTM/+X6dXqEh2NnaEiAlRXPnj+Pb1gY\nS+PiiBsyBEJDYc0a/J/+F4cf3smWyC3M/2W+CuSmUDQRNZVobUiqkmjNyMjg8uXLdO/evSy/R48e\nREZGVlqfEILp06ezdq1uleLXX3+lW7duuLr+6VCTm5vL8OHDmTp1KqmpqWzatIl58+Zx5swZQCeu\nVF7z++zZs0RERDB5cq2cS+tEqzAY5ZekTl89zaDVg3iq71NsnLgRG9Ny8orZ2TBqFGRk6AxGmzbk\nFhczLyaGJ2JiWOvvz3/at+cZDw9OBATwtZcfqYWFBPzxB/dkZrLuhx/It7TEddh4Dgz8nF1xu/j0\n2Kd3ZtAKRWMhRP2vejBu3Dg9Q7Bq1SqAMonWtLQ00tPT9V6npaURFBTUEKPXoyqJ1pycHIQQevk1\nkW8NDAwkPT2dmJgY1q5de5si348//oiPjw/Tp09HCEGPHj2YMGECX331FaDT/E5JSSE0NBSAL7/8\nkvvuuw8HB4cajak+S1KtxmCUbnp/f+Z7ZvSYwezes/XXLwsKYPx48PSEb78Fc3OOZGXR6+hRMouK\niAgI4O6SGPjZx7M5Pf402Z4nmD0vl8gbfjzh6sqq69cJmjOHCy+8gOXdI/nJ6yX+ueufhCeH34FR\nKxSNhJT1v+rBDz/8oGcIZs2a1UADqz1VSbRaWloC6OXXRL4VdOJIH3zwAXv27GH8+PF6efHx8YSG\nhmJvb19mODds2MCVK1cAMDMzK9P8BmqtyPeX3/Quz67YXdztc4u3gVYLM2eCpSV8+ilFGg3/iotj\n9KlT/MvHh3WdO2NrZET2H9mcGnuKUw+cwu5uOwZeH4jTFCfin7tIu5GJbIpyZYajM4EdOvDN+vW0\nfeQZvnH8Ow9+9SCpual3ZsAKRSujsmXemkq0NiRVSbTa2tri6uqqlx8REUGXLl2qrXfq1Kn873//\nY9SoUZiamurleXp6EhwcXCbfmp6eTlZWlp5w04wZM9iyZQs7d+4kJyeHBx54oAFGWz3NITRIg3Gz\n8CZHko8wqO0g/YyFCyEuDn77DanRMCkyksziYo4FBOBuYkLW0Szil8aTfTybtgva0nlzZwxMDQBw\nfcQVl+kupG1PI2F5An1fzuf7uc48etc19m3ZwvIpU1g8L4gp30xhe8h2DDQGTT9wheIvQKlEa03I\nz8+nqKgIgLy8PPLz8zExMQFAq9VSWFhIYWEhxcXF5OfnY2BggKHh7T+HISEhBAUFcfDgQXr27Hmb\nROu0adN49dVX6dOnD5cvX+bTTz8te/KvCm9vb/bt20e7du1uy3vggQd48cUXWbduHZMmTUJKSURE\nBJaWlvj56ZQfBg0ahI2NDY8//jiTJk2qsO+NQm13yZvbBcjFixfL3bt3y98v/i77f9Zf3xXg3Xel\n9POTMjVVSinlfxIS5F1Hj8q84mKZ9UeWjLg/Qh7yOCSTPkiSRTeLKvQmKE9maKY8NfGU3Oe4X77+\nZKjs/+tueaFLF7loXhf58u8vV3t/bWmOnjYNSWseX3McGy3AS8rc3FxaWVmVXRMmTKh1PUIIqdFo\npEajKXtdyhdffKGXr9Fo5MyZM8vyLS0t5YEDB8reb9y4UbZt21ZaWlrK8ePHy/T09LK8/Px8+eij\nj0pra2vp4uIi33333Ur7tGfPHunp6Vlh3q0eWzExMXLUqFGyTZs20tHRUd5zzz0yIiJC754lS5ZI\njUYjjxw5UuVncet3vnv3brl48eI6eUnd8R/8+l7lP4yXf39ZvvTbS39+Mps3S+nuLmVcnJRSykMZ\nGdLpwAEZm5srb8bdlPsd9sukD5NkcV5xlR94RdyIuSFPTTglt7c/IIM+3C2/GXW//HuIvdx6Zmut\n66qK5vij05C05vE1x7E1d4OhaHgq+87rYjBa1R7G7rjdf+5f7NkDf/+77lCelxepBQVMiori006d\n8DI1JWZuDJ7PeeL+pDsak9p/DOYdzOn6TVd6v96B15YaEmb5D8zsH+H3f07leu71hh2YQqFQNANa\njcHIzs8m4koEQZ5BcPYsPPwwbNoEPXqglZLpZ87wsJMTYxwdubrpKvlJ+Xj+w7Pe7To95ETQ6b5M\n0jrQ7/sxZLi8xW+LZjfAiBQKhaJ50So2vZcsWYJZNzPucr9LF4p861adwSiJzfJWQgJZRUW85uND\nQWoB5589T7et3dAY1cxearX5aLV5GBraVJhv3MaYXlu64frNVcye0HIwwJ0O77xP72efarAxKhQK\nRUOggg8uWUKqVSpDvYfqEhITocT7YG9GBu8lJ7Opc2eMNBouPH8B58nOWPe1rrJOKYtJS/uNM2dm\nceiQK4cPe3L69HiuXfsWrTa/wntcJjoxLGYgzjlZxCzvzI//t6FBx6lQKBT1RZ3D4Jb9i8RE8PTk\nSn4+U6KiWOPnh4epKWk708jYm4H3Mu8K65BSkpkZyrlzz3D4sAcXLy7EwqIzAQEn6d8/EQeHB0hK\neo9Dh9yJiZlLZubh0o33MozsjRjydVe+GbmOglUurB/xI4U5RY08eoVCoWh8WsWSVPrNdGKux9DX\nva8uITGRYg8PpkRHM8vVleH29hTfKCbmiRg6ruyIoaX+sG/ciCIlZT1Xr25ECGOcnSfTs+dezM07\n6pVzdZ2Fq+ssbt6M4+rV9Zw5MxMoxtl5Gs7OUzEz081qerj04Oawa1wZeZL8d335qcNe+m3qhesQ\n+6b4OBQKhaJRaBUzjL3xe+nv2R9jA2NdQmIiK62tkcBib28AYhfHYh1kjcN9+vFWMjL2cvz4YKQs\noEuXb+jbNxpv78W3GYvymJl54+X1Mn37RuPvv57CwmscO9aP48cHcenSJxQWpvPSoJdYceW/PL6l\nO6eCz3BkfARHnomm+GZxI30KCoVC0bi0CoOxK3YXd3uXLEfl5UFmJieEYIqTEwZCkHU0i5QvU2j/\njr4ca3FxHmfPPkGnTp/h67sCK6teFcbPrwwhBNbWfenQ4X3690/G0/MfpKXtIDTUG5usdxjuYsF3\nabt55Z2JZIzcwm/HL7G7RxhZYVnVV65QKBTNjFZhMDaHbcYmrcSDKSkJ3NxILijAzcQEbaGWmMdi\n8P23L8ZtjPXuS0h4AwuLzrRpM67efdBojHF0HEPXrl8TGBiHnd29POwJNtdmE5P1KuPfGMcIq7f5\ndGI2h0ed4PyLF9Dma+vdrkKhUNSGv3y02nzTfGY/UHL2oWTD+1J+Pm7GxiT9JwkjJyOcpzrr3XPj\nRjSXLv2PDh3eb/D+GBnZ4eb2BEP7n+KDRH8uZF0n6vI8iv55jiVGj/PVW8fYefgyob3CyTyc2eDt\nKxQtlaaQaF2wYAFt27bFxsYGHx8f3nzzzUrr2rt3LwYGBnr9Ka9FoSRaWyCDvQZjqCnZyC4xGMn5\n+bRJ1JKwIoGOH3XUW2qSUktMzON4eS3GxMS90folhOCJwKUsPn6Bvn1j8Ou8FsO/3cejbf4PjwWT\n2fXCGo7P/o1zT5+jSHlSKRRNItE6a9YsoqKiyMzM5NChQ6xbt47vv/++0vrc3d31+jNt2rSyvJYo\n0VofWoXB0AtnnphIftu2ZBUXk73iEp7PeWLmY6ZX/vLlVWi1hbi7z6WxGec3juyCbHbF7cLGpj8d\nun5E/+CrDNxkR6DxYbI/mEVc/wcJfWYBV7ZHN3p/FIrmzq2u6rXFycmJOXPmEBAQUGFdHTt2LNOy\n0Gq1aDQazp8/X6e21q5dy6JFi7C2tsbPz4/HH3+cL774otLyxsbGjBs3jo0bN5a1v3nzZkJCQvTK\nnTlzhuHDh+Pg4IC/v3+ZeJK7uztDhw7Vm+WATkSpNpoYdaVVGoxLPj64GhuTdz4Pm4H6p7Pz868Q\nG/synTp9ghCNH4pcIzQsGLCANw68UZYmrG2x+99h7l3jSLdNE9jQ7lHOjTnDGW0/Dm7oy8Wo18nO\nPoGUao9DoSilISVa33rrLaysrPD09CQ3N5cpU6ZUWvbq1au4urri6+vLc889R25uLsBfUqK1VZzD\n6OrU9c83iYlcGjMGNxMT8pPyMXE30St7/vx8XFwexdKyO03FlG5TWLR7EUeSj/x5VsTCArZtw3vi\nRD55ay+L33yHNxOTWHk8mqSTu7ly7yqk2Q1sbTuQkiKxsxuGsbFTk/VZ8ddF1DFsRHlkiQJmXRg3\nbhyGhoZIKRFCsGLFCmbNmlUm0doQLFiwgAULFhAREcH3339/mwxrKf7+/pw4cQI/Pz/i4+OZPn06\nzz//PCtXrmxQidZSIwT6Eq2AnkTrK6+8wvjx43nyyScJDQ0lMDCw1hKt9aFVGAyNKDdRSkwk2dER\ndyMj8i9nY+z2p2fU9es/k50djp/f503aP2MDY57v/zxvHXyLb/72zZ8Zpqbw3XcYTZ3K6/PmMXTN\nGqaamTI/5W6Cn8vBsOM1rj/wHdeufU1MzDzMzHyxtx+Ond29WFsHYmBg0aTjUPw1qM+PfUPwww8/\nMHTo0CZpq0ePHvzyyy8sWrSIt99++7Z8JycnnJx0D2peXl4sX76c0aNHs3LlSj2JVkdHR6BuEq2r\nV69m/fr1ZXnlJVpBt0RXXFxctndSXqI1MDCQ9evXV7nZ3pBUuSQlhIgSQvxTCOHbJL2pI0uWLPkz\nmFZiIpdsbPDONcLAwgADM92yU3HxDWJinqRjx48wMDBv8j7O7j2b/fH7OZN6Rj/D2Bg2bgRPT4Y9\n9BDHOnTgt3YF/OMzA4z6+WPx1CTM1v6bfj0u0779u4ABsbGLOXjQiT/+COTChf8jNXUbhYUN8+Sl\nUNxpKtvDaCyJ1qKiIi5evFjj8lqtbqm4pUq01settjpxoh7AG8AF4AjwLOBWW9GNxrwoLw6SlSWl\nubn8x7lz8r2fY+SR7n8qUZ0797yMjAypXm2kEVm6Z6mc+f3MijOLi6V86ikpe/WSxSkp8o24OOl0\n4ID8x2ffyqgZUfKg+0F5ZcMVqdVqpZRSFhXlyrS03TI29l/yxIl75b59lvLIkW7y7Nl5MiVls8zP\nv9KEI6s7zVFkqKFojmOjmQsoeXt7y99//73e9eTl5cmcnBwphJBnz56VeXl5UkoptVqt/Pjjj8tU\n88LCwqSrq6v84IMPKqxn9+7dMj4+XkopZUJCggwODpazZs0qy1+4cKEMDg6W6enpMioqSrq4uMgd\nO3ZUWNetinsHDx6Uly9fllLqK+5lZ2dLb29v+eWXX8rCwkJZUFAgw8PDZXR0tF597dq1k97e3vLv\nf/97lZ9FZd85jam4BwQC7wAJwG7gsdo21hiX3ocRGSllp05ySmSk3LL2nIy4TydpmJX1hzxwwEnm\n56dU+cE2Ntdzr0u7N+1kQkZCxQW0WilffllKf38pk5JkaGamdN2xQz58+rSM33NNhvcKl8cGH5PZ\nJ7Nvu7W4uEBmZobJ+PgV8uTJB+T+/bYyLKyzPHt2nrx69WuZn3+tkUdXN5rjj2pD0RzH1hIMRmNK\ntGq1Wjly5Ejp4OAgraysZKdOneSbb76pd295idb//Oc/0t3dXVpYWMi2bdvK+fPny5ycnLKyLVGi\n9Zb0Wv2bp+AeAAAgAElEQVTeCllLFzYhRHCJ4egspTSppnijI4SQZWP49Vf4978ZumIFr+y2xD2q\nmA4f+3LsWCDu7vNwdZ15ZzsLvLDjBYq1xbwzsoo1x7fegk8+gZ07+SI0lJN9+7Lp6lU+8u1An28L\niFsch9MUJ7wXeWNkb1RhFVIWk519nIyM3WRk7CYz8yCmpt7Y2g7Fzm4oNjZDMDKybaRR1pwNGzZU\n6aHSkmmOYxNC1NttVdGyqOw7L0mveSwkauhWK4S4SwjxHyFEPLAE+Bhwq01DTUK5Q3tWKVqM3Y1J\nTv4AQ0MrXFweudO9A+DZwGdZE7GmahnXBQvghRdg8GCcEhL4T/v2bO7cmWdjL/BScBadInoh8yVH\nOh0hYXlChQENhTDA2jqAtm3/QffuPzNgQCodO36MsbEzyckfEhraloiIEVy69BkFBamNOGKFQtFa\nqG7T+3UhxAXgf0AyMEBKGSyl/EhK2fyEqxMTkSVhQUxTijHxMOHKlVX4+Lxeq6CCjYm7tTsT/Sfy\n/pFqQpLMnQtvv83QN96AgwcZZGtLREAAlgYG9IqLIPY1R3ru70lWWBZHOh3h8urLyOLKnxw1GiNs\nbALx8nqRHj12EBR0GVfX2aSn7yAszJeIiGFcuvQJBQXXGnjECoWitVDdDCMPGCmlvEtK+baUMqkp\nOlVnEhPJ8vJCCIH2UgHG7sbcvHkRC4vGPS5fW/4x4B/8L/x/5BTkVF3w4YcJnTsXxo2Dn3/G0tCQ\nDzt2ZHWnTjx+9ixzZAJtNnak8+bOXPn8CuE9wkndllqjJQcDAwucnB6iS5ctBAVdwtX1CdLTfycs\nrD0nTtzLpUsfU1BwtYFGrFAoWgNVGgwp5b+klOeEEOZCiFeEEJ8CCCE6CCFq7sfVVCQmcsnDAzdj\nY/KT8zFwzUKjMa1Ui/tO0dGhI0O8h7A2Ym21ZS937w7btsHMmVDiq32vvT2Rd92Fq7ExXcPDWd82\nh257e9DuzXZcfPEiJ4acqFVQQ53xeJAuXTYTFHQZd/cnycjYQ1hYR06cuJvk5JUUFKTUebwKhaJ1\nUNPQIKuBfKB/yftk4NVG6VF9SEgg2ckJdxMTCpILkA6XMDX1udO9qpAJfhPYeXFnzQoHBsKuXbBw\nIbyvW8qyNDRkua8vu3v0YOPVqwQdP078EBPuirgLl5kuRD0cRcTICDIP1S4aroGBOW3aTKBz540l\nxuMpMjMPcOSIHydODCU5+UPy86/UdrgKhaIVUFOD4SulXA4UAkgpc4FG3RQQQvgIIT4TQmyp0Q1S\n6mYYtra0LTJCm6el0DgBM7PmaTAGew1mf/x+tDWNF9WlC+zfrzMYixbpxgt0tbRkb8+ePOnmxqiT\nJ3n64nnMpjrS71w/2kxoQ9SUKE7ce4KMvRm17qOBgRlt2oync+f19O9/GQ+P+WRmHiY83J/jx4eQ\nlPSBmnkoFH8hamowCoQQZoAEKDn5nd9ovQKklLFSytk1viEtDUxMuCQEPhkGGLsbk5cX12xnGO7W\n7tia2hJ1rfr49WV4e8OBA/Dzz/DEE1CkC4muEYJHXF2J7NuXfK2WzuHhrE5LwfkxV/qd64dziDNn\nZp3h+JDjpP+eXie3SgMDUxwdx9K58zr697+Mp+fzZGeHERbWiZMn7yclZQPFxTdqXa9CoWg51NRg\nLAZ+ATyFEOuB34H/q8mNQohVQogUIcTJW9JHCiHOCCFihBALatXriih1qS0owD1Ng4m7CXl5sc3W\nYAAM8RrC3ri9tbvJyQl274a4OHjoIbh5syzLwciITzp14oeuXVlz5Qo9jx5lR1Y6Lo+40PdMX1xn\nuxLzZAzHBx7n+i/X6+yPrzMeY/D3/5KgoGScnaeSkrKOQ4fciY6eTlraDqRU2uUKRWujRgZDSrkT\nmAA8AmwEAqSUe2rYxmpgRPkEIYQG+KAkvQswWQjhV5I3reTMR2m835otfZVT2nNKBRMPE27ejMXM\nrF0Nu9n0DPYazN74WhoMACsr+PFHMDODESMgQ3+56S5ra/b27MmrPj48c/48I06e5FReLi7TXOgb\n1Rf3p9y5+H8XOdrjKFfWXkFbUPcw6gYGFjg7T6F795/p1+8sVlZ9iI19mcOHPTl//nmys4+rg2IK\nRSuhunMYvUsvwAu4DFwC2pakVYuU8gBwa2S8vsA5KWW8lLIQ2ASMLSn/pZTyOSBfCLES6FmjGUi5\nQ3t2V2XLmGF4D2Ff/L66/aAaG8O6ddC7NwwaBMnJetlCCMY6OnL6rrsY6+jI8IgIHj1zhktFBThP\nciYgIoB2y9txZe0VwnzDSPh3AkVZ9VP9MzZ2xsPjGfr0CadHj10YGJgTGTmB8PBuJCS8RV5e8/bK\nVtx5mkKiFeC3336jT58+WFpa0rZtW77++utK69uwYQPe3t5YWVkxYcIEMso9oLVEidb6UF1486PA\naaD0KHD5p30JVD/CinEHEsu9T0JnRP6sXMo0oEaSeBMnTiTk9GnyDA2JHjeOlNAU0pzzsL6ZwPff\nHy4ZRvNDSklRfhFvr3kbN+OKD85XG4HzrrvwT0mhQ8+e7FmwgCy32+uxA14Tgq1pafhdusSQ3FxG\n5+RgpdXCo2AUa0T6t+mcX3qe3CG55IzMQWvfEOJN/sAyjI1juHbtV8zMXqWw0Ivc3AHk5d2FlOZ1\njjDaEmjNY2ssSiVa6xPevFSi9aWXXiIoKOi2/KioKEJCQvjyyy+59957yczM1DMC5YmMjGTOnDls\n376dXr168dhjjzF37twyxbzyEq2XLl1i6NChdOnSheHDh1dYX3mJVjs7O6D2Eq2vvPIK8fHxeHl5\nlaVXJ9G6YcMGoqKiiI6up6pnVYGmgPnAAeAnYBpgWdtgVSX1eAEny72fCHxS7v1U4L061q2LpDVl\niixes0Ya7dkjI8adlInfhMuDB90rCcfVfJj67VT5ydFPKs2vcQC7zz+X0sVFyuPHqyyWePOmnHP2\nrLTfv1/+8+JFmV5QUJaXG5srY56Jkfvt9suo6VEy63hWzdquIUVFN2VKylfy5Mkxct8+axkZOUl+\n/fU/ZHFxYYO201xQwQdrT0NFq5VSyqKiIimEKIs2W8qUKVPkokWLalTHSy+9JENC/oxyfeHCBWls\nbFwWgNDNzU3+9ttvZfmLFi2SkydPrrCuPXv2SA8PDzl37lz54YcfSimlLC4ulu7u7nLZsmV6wQej\no6PlsGHDpL29vfTz85Nbtmwpyxs+fLhctmyZXt19+/aV77//foXtVvadU4fgg9Ud3HtXSjkQeArw\nBH4XQmwRQvSsn5kiGWhb7r1HSVqdWLJkCRmnT3OtbVtsDA0pvFQAzpebrUtteYZ4DanbPsatzJyp\nc7kdMQJCQyst5mFqysqOHTnapw/J+fl0OHKEV+PiyC4qwszbjA7vdqDfhX5YdLbg1AOnOHH3CVJ/\nTEVq678PYWBgipPTg3Tr9gP9+l3AxmYgVlbfcviwB+fPP6v2OxRV0lASraGhoUgp6d69O+7u7kyf\nPr1SJb/IyEh69OhR9r5du3aYmJgQExPTYiVa66OHUdNN74vAD8AOdEtHHWvZjkB/OSscaC+E8BJC\nGAOTgK21rLOMJUuWYJuVRbKzM+7GxuQn5aO1bb6H9spTuvHdID+UDz4Iq1fDmDE6T6oq8DEz43M/\nPw726kV0bi6+YWGsSEjgRnExRnZGtF3QlsDYQFxnuxK3JI4j/kdIXplM8Y2G8X4yNnbE3X0eqan/\nolevfRgYWBEZOYGjR7uTkLCc/Pw6Pz8o6skesafeV30YN26cniFYtWoVQJlEa6moUPnXaWlpFS4/\nVURSUhLr1q3ju+++49y5c+Tm5vLUU09VWDYnJ+c2+dZSGdaGlGgtT3mJViGEnkQrwPjx40lJSSG0\n5MGwthKtwcHBdTYYVe5hCCHaofsxH4tuz2ET8LqU8mZV991SxwYgGHAQQiQAi6WUq4UQT6EzQBpg\nlZSyzotrSxcv5pXkZC7Z2eF+s4DCa7kUmSRiatB8PaRK6WDfgSJtEXEZcfjYNYCBu/9+2LwZ/vY3\nWLNG974KOpqbs75zZ07n5LAkLo5/JybyvKcnT7q5YWlkiPMUZ5wmO5F5IJOk/yQRtygO19muuP/d\n/Ta99Lpibt4RH59/4e29hMzMg6SkrCU8vBtWVn1wdp6Oo+N4DA0tG6QtRfUEy+A72n5jS7SamZnx\n6KOP4uurExJ96aWXGDZsWIVlLS0tycrK0ksrlWFtqRKte/bs+VOhtJZUN8M4D/wN3RmMw+iWkeYK\nIZ4TQjxXkwaklFOklG5SShMpZVsp5eqS9O1Syk5Syg5Syjfr1PsSFs+Zg8bOjmStlnbZhhg5GJFX\nENcilqSEEHV3r62MoUP/jD9VhfdHebpaWvJ116783qMHf2Rn4xsWxpvx8WQXFSGEwHaQLV2/60rv\n0N4U3ygmvFs40dOiyT5W9dNUbRBCg63tIDp1+pT+/ZNxdX2Mq1c3c/iwB9HR00lP/x1Z05PxihZL\nZbPthpJoLb+EVB1dunTRk2C9cOEChYWFdOzYscVKtNZnhlGdwVgKfAdoAUvA6pareVDuDIZ3mgEm\nHibk5V1sEUtSoNvH2Be/r2ErDQzUCUo9/TR88UWNb+tqacnmLl3Y1bMnETdu4BsWxmvx8WSVnCo3\n8zWjw3sd6HexHxbdLTg99jQnhp7QRcltgH2OUgwMzHBy+hvdu/9Iv35nsbTszYULLxAa6s3Fiy+T\nmxvTYG0pWgYDBw4kOzubrKwsvas0bcCAAWVl8/PzycvLAyAvL4/8/D8DU8ycOZPVq1cTGxtLbm4u\nb731FqNHj66wzZCQELZt28bBgwe5ceMGixYtYuLEiVhYWAC6mcKrr75KRkYG0dHRfPrpp8ycWb1Q\nm7e3N/v27ePVV28PyffAAw8QExPDunXrKCoqorCwkKNHj5btYQAMGjQIGxsbHn/8cSZNmoShYXUO\nrw1EVTviwGTAobY76U15AXLTQw/JqwMHytlnzsh1n56RJ8eelAcPusibNyuRQm1mnE45Ldv9t12F\nefX2tImOlrJtWyn//e863R6VkyOnREZKxwMH5LLYWJlRqO/RVFxQLK9suCKPBhyVoR1CZdL/kmRR\nTlGN66/t+LKzI+S5c8/JAwec5R9/BMqkpJWyoCCtVnU0FcpLqvY0tkRrKUuWLJFt2rSRTk5OcsaM\nGTIjI6Msr7xEq5RSbty4UbZt21ZaWlrK8ePHl+mBS9kyJVp3794tFy9e3PASrSUH5kYARujCgWwH\njsiqbmpihBBSvvMOXLzI/bNn88xPJnhfyufKg3cxeHAuQhjc6S5Wi1ZqcVrhxIk5J/Cw9tDLaxCZ\nz8REGD4cxo6FN96AOohJnc3N5dX4eH5JS+Npd3ee9vDAptxTjZSSzIO6fY7M/Zm4Pl6yz+Fa9T5H\nXcen1RaRnv4rV66sIS3tV+ztR+DiMgM7uxFoNE30tFUNSqJV0RxoMolWKeVbUsq7gfuBCOBR4JgQ\nYoMQYroQwrk2jTUaCQllS1JW17Ro2l3D1LRtizAWABqhYbDX4IZflirF01MX6Xb3bnjssbKghbWh\nk7k5X/r7c7BXL87fvEn7sDD+FRdHRmEhoPvHZzvQlq7fluxzZBUT3iWcMzPPkHO6GqGoOqDRGOLg\nMIouXbYQGBiHre3dxMe/SmioJ+fPv0BOzqkGb1Oh+KtTU7fabCnld1LKJ6SUvdBpYbQBqlcAagIi\nf/2VyOxskgsKML1SjHC/gqlp8/eQKk+jGgwAR0f4/Xedcf3b36Bkfbe2dDQ3Z42/P4d69eJiieFY\nGhdHZjkjZOZrRof3O9DvfD/MOphxcvhJIkZGkLYzrVGebo2M7HB3n0Pv3ofp2XMPGo0xp07dz9Gj\nfUhKek9plisU5Wj0cxhCiG+FEPeXBA1EShkldZKtI6q7tynoYmVF+xEjyCwqQlwuRDq2jDMY5Wmw\nA3xVYWmp854yNNS5297iLlgbOpib84W/P6G9exNbYjhej48np5zhMLI3wuslLwJjA3F62IkLz13g\naM/6BzysCnPzTrRr9zqBgXG0a/cWWVlHCAtrz+nT47l27Xu02oJGaVehaCk0ppdUKf8DQoBzQog3\nhRA1C3zSVCQmctnVFRdjYwqSCyiyTGoRLrXl6e7cnSs5V0jJaWRBIhMT2LgROnXSud9erZ9ud/sS\nw3GgVy8ib9ygfVgY/05IILf4zwN+GhMNrjNdCTgZgO9yX1LWpRDqE0r86/GI7MbR4RLCAHv7e0v0\nOxJwcBhNUtJ/OHzYnXPnniIrK1yt5SsUtaSmS1K/SSlDgN5AHPCbEOKQEGKmEMKoMTtYE4qvXOGn\n2FjcjIzIT86nyDihxc0wDDQGDPAcwP6E/U3QmAH873+6WcagQRAfX+8qO5UcAPy9Z0/CsrNpHxbG\nf5OSyCtnOIQQ2I+wp8eOHnT/pTs3z9/E+TlnYp6MITcmt959qAxDQ2tcXR+lV6999O59BCOjNkRF\nTSY8vAvx8W+Sl5dYfSUKRSuh0ZekAIQQDuj0MGYDx4H/ojMgNRSmbjwM3Nxw6tYNn3xjhKEgv6j5\nKu1VRZ0EleqKELBsGcydqzMa9Y1iWUIXCwu+6tKFn7t14/f0dDocOcJnly5RpNVfgrLsZonf535c\nXXEVIwcjjg88zqkxp0jfUzdFwJpiZuaDt/ci+vU7R6dOn5GXF8fRoz05ceJerlxZS1FRw2/QKxTN\niUZfkhJCfAfsB8yB0VLKMVLKzVLKp9Ad6LuzeHpyqaCAdhmGmLjrhJNaosHo5tyNmLQmPpA2fz68\n9ppueerIkQartqeVFVu7dePrLl1Yf/Uq3Y4e5dtr124zBlpbLT7LfAiMC8RhlAMxc2L4o88fXP7i\nMsV5jafap4sBFESnTh/Rv38ybm5PcO3aVxw+7EFUVAjXr/+MVlvYaO0rFC2Rms4wPpVSdpZSviGl\nvAwghDABkFIGNFrvakqJS637dYGRbz6gxcioZoG4mhPOFs6Nv4dREdOmwaefwgMP6DypGpB+1tbs\n6tGDd3x9WRYfT+CxY+yuIDKogbkBbk+40TeqLz7LfLi66SqhXqFcfPkieUl18+iqKbooug/Rrds2\n+vU7h41NEPHxyzh82KNkvyNM7XcoFNTcYNx+fl0XW6p5UKK055wqMOx4FVNTH0QdDqfdaZwsnLh6\no36b0HVm9Ghd3KnJk+Hbbxu0aiEEIx0c+KNPH+Z7eDD77FlGRkRwvIKonkIjcBjlQI9fetBrXy+K\ns4o52v0okQ9HknEgo9F/uI2N2+DuPo/evQ/Tu/chjIzaEB09nbCwDsTGLlYhSRR/aaqTaHURQvQB\nzIQQvcpJtgajW55qFmw/fZqoq1exvSYRXiktcjkKoI1FG67lXkN7pwLsDR4MO3bAvHlQEkq5IdEI\nwWRnZ6L79mWMoyP3nzrFx7a2XCoX56c85p3M6fB+BwLjArEZYMPZmWd1y1WrL1Oc23jLVaWYmfni\n7b2Ivn3P0LnzRoqKMjl+fDBHjwaQkPBvtVneCDSFRGt6ejoPP/wwjo6OODk5MW3aNHJyKt672rt3\nLwYGBnr9Ka9F0RIlWuuz6V1dnKYZwG4gu+Rv6bUVmFDbOCSNcQFSfvut7BgaKkNnnpanNv1Tnjs3\nv8rYKs0Zuzft5LUb18re35F4RCdOSOnsLOVXXzVqM5mFhXL01q3SYf9+uSw2VuYWVR2DSluslak/\np8qIURFyv/1+GfP3GJl9MrtR+3grxcWF8vr1nTI6epbcv99eHjs2UCYlfSDz81NuK6tiSdUeb29v\nuWvXrnrVkZKSIleuXClDQ0OlRqO5TXFv7ty5csSIETInJ0dmZWXJe++9Vz7//PMV1lVV/CcppVy4\ncKEcPHiwzMzMlNHR0dLFxUX++uuvldbl5OQkXV1dZVran/HPnnvuOenn56cXS6oykpKSpJGRkYyL\ni9NLf//992VAQECF91T2ndMIintrpJRDgUeklEPLXWOklA27blEfSja9jVKK0Nolt9gZBoCzpfOd\nW5YqpUcP+OUX+Pvf4ZtvGq0Za0NDJmVnE96nDydv3MDvyBE2pKRUuuwkNAKH+xzo/mN3Ao4HYGhv\nyMn7TnKs/zHdJnkTzDo0GkPs7e/Fz+8zgoIu4en5f2RmHiIsrCMREcO5fPlzCgsr1odW1IzKvv+a\n4uTkxJw5cwgICKiwrri4OMaNG4eFhQVWVlaMHz++SpW8qli7di2LFi3C2toaPz8/Hn/8cb6oIjq0\nsbEx48aNK9ME12q1bN68mZCQEL1yZ86cYfjw4Tg4OODv718mnuTu7s7QoUP1ZjmgE1GaMWNGncZQ\nG6pbkppa8tK7VAOj/NXovashWW5uSCkpTi6gyCyxRRsMJwunO7PxfSs9e8L27brlqe++a9SmfMzM\n2NKlC+v9/XknKYn+x44RmplZ5T2mbU3xWarzrmr7YluufX2Nw56Hifl7DDkRTeMaq9GY4Og4ms6d\n1xMUlIyr62yuX/+R0NC2nDz5AGZm+5TxaEAaSqJ13rx5bNu2jYyMDNLT0/nmm2+4vwqhsatXr+Lq\n6oqvry/PPfccubm6M0MtVaK1PlQX1tOi5O+dd52tgkvW1riZmFCQXIChQcs7tFceZ4tmMMMopVcv\n+PlnuO8+3fvx4xu1uYG2toT17s36lBQmRkZyv4MDb7Zrh4NR5WdDNYYaHMc44jjGkbyEPC6vusyp\nMacwtDPEZboLTlOcMHFpGGXAqjAwsMDJ6W84Of2NoqIsrl/fRnLyO4SGtsXGZhBt2jyEo+NYjIzs\nGr0v9WXPnvo7jAQH132WMG7cOAwNDXXhtIVgxYoVzJo1q0yitb707t2bgoICHBwcEEJwzz33MHfu\n3ArL+vv7c+LECfz8/IiPj2f69Ok8//zzrFy5skElWkuNEOhLtAJ6Eq2vvPIK48eP58knnyQ0NJTA\nwMBaS7TWhyoNhpTy45K/Sxu9J/Xg9c8+w6pzTwqzJcVFCS0uLEh5nCycSLnRDGYYpfTurTMa99+v\nO+w3blyjNqcRgmkuLoxxdOSV2Fi6HDnCm+3aMcPFpVrPt9JZh/dibzL2ZpCyNoVw/3Cs+1vjPN0Z\nx7GOGJg1fgRjQ0NrnJ1DSE8XDBv2ANev/8i1a19x/vzT2NgMLGc87Bu9L3WhPj/2DUFjS7Q+9NBD\n9OzZk23btqHVann++ecJCQlh8+bNt5V1cnLCyckJAC8vL5YvX87o0aNZuXLlX1KitTpN7/eqypdS\n1s59oZEYNmkS5ievYdwpFmlgjYGBRfU3NVOa1QyjlD594KefYMwYOHoUFi+GKp76GwIbQ0Pe69CB\n6c7OzImJYfWVK6zs2JHOFtV/t0IjsBtqh91QO4o/KCb1+1SurL7CuSfP4TjBEecQZ2wH2yIMGt/1\nWmc8puDsPIWiouxyxuMZrK374eg4HkfHcZiYuDV6X1oKle1hHDhwgPvuu++2B4fSmcj27dv1VPcq\nIyIigpUrV5ZJo86ZM4dBgwbVuH/akqgF5SVa77nnnrK6ayrR2r59ex555JFKJVp//fXXSu+fMWMG\n48ePZ/z48XWSaA0ODmbp0trPA6o7h/FHNVez4FJBAW3TDDDsnNqil6OgGe1h3EpAABw/rjMYQ4ZA\nXFzTNGttTVifPvzNyYkhJ07w4sWLeoENq8PAwgDnEGd6/NqDu07dhXkncy68cIFD7oeImRdDxt4M\nZHHTPFEbGlrh7DyZrl2/JSjoMm5uc8nKOkx4eFeOHetPQsJycnPPNUlfWiINJdHat29fPvvsM/Ly\n8rh58yYff/xxpTrfe/bsKXPLTUxMZOHChYwrN8v+q0m01sRLqtKrSXpYA5Lz83G7Dga+KS16OQpK\nvKRym9kMoxRnZ93y1MSJ0LcvVDCFbwwMhGCeuzsnAwKIy8uja3h4hafFq8PE3YS2/2hLwB8B9Nrf\nCxN3E849c47DHoc599Q5MvZnNKgueVUYGFjQps0E/P2/JCjoCt7eS8nLi+XEicGEh3cjNnYRWVlH\nkXfqTM4dZPTo0VhbW5ddt55bqAlmZmZYW1sjhMDPzw9z8z+PjX3++efExsbi4eGBp6cncXFxrFnz\n58+ZlZUVBw8eBOD48eMEBQVhaWnJwIED6dmzJ//973/Lyi5dupR27drh5eXF3XffzcKFCxk2bFiN\n+hgUFISLi8tt6ZaWluzYsYNNmzbh5uaGm5sbCxcupKBAPzT/9OnTSUhIKNvraAqqk2h9V0o5Xwix\nDbitoJRyTGN2riYIIeTEU6eY8Y0B7k4fYTvCgnbtXr/T3aozhxMP8+yvzxI6OxRonjKfgG6mMXmy\nbrbx3/9CDZaKKqIu4/sxNZU5MTGMdXTkrXbtsKzn01Xu2VyufnWVa1uuUXi9EMfxjjiOc8R2iC0a\noxrH57yNuoxNSi1ZWaGkpn7H9es/UliYjoPD/Tg4jMLObhiGhtZ17g8oida/Ig0p0Vrd/7RS361/\n16bSpia5oACbqybILpcxNa2ZdW+uNLtN78oICIBjx3RnNfr2hZ07wa1p1uEfcHTklI0N88+fp/vR\no6zq1ImhdnX3PjLvZI73P73x/qc3N87cIPW7VGJfjuXmuZs4jHLAcZwjdiPsMLRs/Gm/EBpsbIKw\nsQnC13cFN29e4Pr1n7h06RPOnHkEK6t+ODiMwsFhFObmHRu9PwpFearzkvqj5O9eIYQx4IdupnFW\nStlspMsu5edjesWQYuskzMxaljTrrTSLg3s1xcoK1qyBN9/URbvdvbvJjIadkRFr/P35MTWVadHR\nDTbbsPCzwOJFC7xe9CI/OZ/Uralc+uQSZ2aewTbYFsdxjjg84ICxk3EDjaRqzMx88fB4Gg+Ppykq\nyiE9/TfS0n4iMfHfGBiYY2d3L7a2d2NrG4yxcZsm6ZPir0uN/ncJIUYBHwEXAAH4CCGekFJub8zO\n1ZTLBQVoLpuQb9yyD+0BWBhZIKUkpyAHS+NmffzlTxYuBCnh7rt1RqPcIaTGpnS28ez583Q7epTP\n66JlaWkAACAASURBVDnbKI+Juwnuc91xn+tOYUYhaT+nkfp9KuefO49FFwscxzjiMNYB807mTRLs\n0tDQkjZtxtGmzTiklNy4cZL09N+5cmUNZ8/OxtTUBzu7u0sMyOB6L18pFLdS08ext4GhUsrzAEII\nX+AnoFkYDMOCAnLi0xBcxcTE8053p14IIcpmGS3GYAC8+KLOaJTONJrQaNgZGfGFvz8/Xb/O1Oho\nQpydedXHB2NN3fcfbsXI1gjnKc44T3FGm68lY08GqVtTOTnsJBozDQ5jHHAc44h1kDUaw4ZrtzKE\nEFha9sDSsgeens+h1RaSnf0HGRm7SEp6h+joyVhYdMXGZgjW1v2wtu6nXHcVQCOewyhHdqmxKOEi\nuoCEzYIO1jZgdB5jY1c0mjuuGFtvSl1r29m1sOW1l176c6axa1eTGg2AUQ4OnAgIYNbZswQdO8b6\nzp3pZN7wQZU1JhrsR9hjP8Ie+YEk53gOqVtTOT//PPmJ+TiMdsBxvCM04aKtRmOEjU0gNjaBeHm9\nRHFxHllZh8nM3Mfly59y9uxsDAyaTYBpxR2kPucwqju4N6Hk5VEhxM/AFnR7GA8B4bVurZFon2uM\nge9VzMxb9nJUKc3y8F5Nefll/eWpCtwGG5M2xsb80LUrH126xMDjx3ndx4fZrq6NtmQkhMCqtxVW\nva3wWeJDXnweqd+nkvh2Ii7hLkT+HInjBEcc7nfA0LppfOVBJwplZzcUOzvdiWkpJTdvXgA6NFkf\nFK2P6v4Fjy73OgUoDcR+DTBrlB7VgXZpBhiUCCe1BlqMp1Rl/POf+stTTWw0hBDMdXdniK0tU6Ki\n2J6WxqedOlUZk6qhMPUyxeMZDzye8WDTR5vwN/In5csUYh6PwWaQDW0mtMFxgiNGdk07ExZCYG7e\nHi8vrxYpLqaoO15eXg1WV3VeUtUfWWwGeKRr0HilYGrawpZwKqFFzzBKeeUV3d/SmYazc5N3obOF\nBWF9+vDSxYv0PHqUL/z8uKeBNsRrgtZai+v/t3fn8VHV5+LHP89kTyYkZCUJBNmSEDAECBB3rK1a\n17qjYlvxttdr22v11163qtjrrdYutldb/dkqKq241xVba1utIpBAgAAhAWQLaxKQJRtkee4f5wSH\nNJDJMnNm+b5fr7xIzsyc85yE5Jnv9nyvyyLrpizaD7azd+Fe6l+tZ+PtG0k+K5mMazNIuySNiATf\n17fqsqWXFfqqypEjO2lsXE1T02qamtbQ1LSa5uYaIiOHEB9fQFxcPvHx+ZSV7eKCC24mNnYkIv67\nB38J2DVQDvJ2llQscBMwATha+ERV5/gorj7JrAeydxMX1/uOVcEgIyGDjfs29v7EQHfvvce2NBxI\nGjEuF78YO5bzUlL4ZnU1l9oVcAc6/bavIodEkjkrk8xZmbQfbKfhjQb2PL+H9f+xntSvppJxbQYp\n56fgivb9gPmJiAgxMTnExOSQmnr+0eOqnRw+vIPm5hqam6tpaanB7f6QlStfpK2tgbi4MR7JpID4\neCupmJlaocXb35r5QDVwHvBj4Hpgna+C6quh9dA5Ibg3TvKU6c7k0+3e1fYPePfdd+xAuANJA+Dc\nlBQqS0q4beNGJi1bxryCAs5MTnYklsghVun1YV8fxpH6I9S/Wk/tz2upvrGa9CvTyZqTReL0xIDq\nOhJxERs7gtjYEaSkfBmA8vIXOO+86+joaKK5ef3RZLJv37ts3/4LmpvXExmZdDSBJCRMxO0uJiFh\nEpGRQTQD0DjK24QxVlWvEpFLVfU5EXkB+NiXgfVFQl0nHQnbQydhJGQGZgHC/rr//oBIGl3Tb99p\naODaqiquTE/nJ6NHkxDhXHdKdHr00bUerbWt7PnDHtbNXodEC1k3ZZE5O9NviwT7KyIigcTEySQm\nTj7muNUq2X40kTQ2VrJ793M0Na0lJmY4bncxbrf1Ore7mOhoZ/5fGN7zNmG02f/uF5GJwG4gwzch\nfUFELgUuBBKBZ1T1rz09L2rvQVpdTURH+3dw1VeCftC7J3PnHjt7KsPn/32Oq2ux360bN1K8bBnz\n8vM53aHWhqfYEbGMvGskuXfmcuDjA+x6Zhdb8rYw9EtDybopi6HnDfXLGo/BYrVKcomNzSUl5YuS\nPZ2d7XYCWUlj4wq2bfspjY0rcbliSUo6jaSks0hOnklCQiEiwXO/4cDbhPGUiAwF7gXewtqB716f\nRWVT1TeBN0UkGfgZ0GPC6GzbSkxkbkA14QciqMqD9MXcuda/X/oSLFoEHjuV+VtKVBTzx4/njfp6\nrq6qYlZGBg+OGkW8g62NLiJC8pnJJJ+ZTPvBdupeqmPrg1up+XYNWTdlkX1zNjHZvt9F0Fdcrkjc\n7om43RMBaxdoVaW1dQsHDnzC/v0fsn37r2hv309y8pkkJ59FUtJZuN1FJoE4zKvvvqr+XlU/V9WP\nVHW0qmZ07cbnDRF5WkT2iEhlt+Pni0i1iKwXkTtOcIofAb853oNtspW4+DHehhPwUuJSOHj4IG0d\nbb0/OZiIWEnjlFPgttucjgaAr6WnU1lSwp4jR5i0bBkf7w+sPbgjh0SS/a1spiyewqT3J9G2r43y\nieVUXVvFgcUHQqbyrIgQFzeKYcNuoKDgaUpLN1JSspL09CtoalpLVdU1LFqUxpo1l7Fr1zyOHKl3\nOuSw5FXCEJFUEXlMRCpEZLmI/EpE+rKB7DysAXPPc7qAx+3jE4BrRaTAfuwGEfmliGSLyMPAQlVd\nebyTa9ou4hJDY/wCwCUu0uLTqG8OwV8KEXj0UfjoI3jrLaejASAtOpo/Fhbys9Gjuaaqils3bKCp\nD5s0+UvChATyHs+jdHMpiTMSWTd7HRXTK9g9fzedh0Nv34zY2OFkZl5Pfv5TzJhRw7Rpa0lLu5x9\n+xaydOlYVqw4i9raR2lp2eR0qGHD2/bdi0AdcAVwJdAAeL17jqp+AnTf8WY6sEFVt6pqm32NS+3n\nz1fV2+3rnQNcKSLfPu5NjKkL+iq13QXsznuDwe2GZ5+Fm28m5uBBp6M56mvp6ayZNo197e0UlZfz\nUYC1NrpEJkUy4vsjmLF+BiPvH8me+XtYPHIxm+/bzJE9AVNEetDFxGQxbNgNTJjwCqeeuofc3P+i\nubmKiopTKC8vYvPm+zh0qCJkWl2ByNuEkaWq/62qm+2PB4GBTmnIAWo9vt5uHztKVR9T1Wmqeouq\nPnW8E8nw3SEzQ6pLSCzeO5EzzoDZs5n+9NPWYHiA6Brb+NXYsVxfVcV316+nsb3d6bB6JBFC2kVp\nTHp/EsX/KKatvo2y8WVs+N4GWre1Oh2eT0VExJKaeiH5+b/j1FN3kpf3BJ2dLVRVXUNZWR61tb+k\nrW2f02GGHG8Hvd8XkVlYtaTAamUcf4dyP2uM38iPfvQbGhr+yPjx4yksLHQ6pAFrrm/mjQ/ewLU6\ndAf5XIWFnPH003x6yy1sOeMMp8P5F/eLMH//fvK2beP2ffvI7mPi6Nrm02/OANdEF/vf209tYS0t\nJS00XtJIxzDfdK/5/f56NRkoJipqA3v3vs6GDffS2jqNpqav0NbW9zeUgXd/A1NVVcW6dQNbPtdb\n8cFDWMUGBfg+8Af7IRfQCPxgANfeAeR6fD3cPtZncdmf8/jjrxEV5fzUyMGy/C/LyUrMIntIdkiX\nJ3hv506++qtfcerdd8OIwCtN/y3gmV27uHPTJp7Jz+eitLQ+vd6Rn913oG1vG9v/dzs7frKDlHNT\nyL07F/fEwV8sF7j/N+dy5Egdu3Y9w86dTxIdnUlOzi2kp19NRIT3ZfAC9/4Grj+zSk/49lVVE1V1\niP2vS1Uj7Q+XqvZ1zb/YH13KgbEiMtLezW8W1pTdPmtvg0WLjjsmHpRCegzDw+cnnQS33gpz5kBn\nYA7czsnK4q2JE7l5/Xoe3LIlKPrIo1KjGPXAKEo3leKe5GbVl1ex+muraVzd6HRofhMdncHIkXdS\nWvoZI0feS13dSyxZkstnn/3Qrtwbnj788EPmdk1x7yOv+ztE5BIR+bn9cVFfLmKvDP8UyBORbSJy\no6p2AN8D3gfWAi+qar/aSwlRY5k5c2Z/XhqwMt2Zobd473juuAMOHYInnnA6kuMqTUqibOpU3t23\nj6vWrg3YcY3uIodEkntHLqWbSkk+K5lV56yi+t+qObzzsNOh+Y1IBGlpF1FUtJApU5YAQkVFKZWV\nX6Wh4W2sP0XhY+bMmb5NGPbU1luBKvvjVhF5yNuLqOp1qpqtqjGqmquq8+zj76lqvqqOU9WH+3MD\nALt2aL93kApUIT/o7SkyEp5/3lqjUVvb69Odkh0Tw4fFxSRFRnLKihV81tLidEhei4iPYMRtI5i+\nfjpRqVGUn1zO5vs2034oOBLfYImLG8OYMY9QWrqNjIxZbN36IEuWjGHr1oc4ciQ8ft/80cK4APiK\nqj6jqs8A52OV7AgIhZPOCbkWRkiWBzmRvDy46iorcQSwGJeL3+fnc3N2NqdWVPByXR0dQdBF1SUq\nOYoxPx1DSUUJrZtbKcsrY8eTO+hsD8zuQF+JiIhj2LBvMHXqUiZMeJWWlo2UleVTVTWbAwc+DYpu\nx/7yeQvD5jmi7FxNhx78c+n60GthhGp5kBOZPRv+8IeAmmbbExHhOzk5vDphAo9u3864pUt5tLaW\nA0HSTQXWRk/j54/n5HdPpv6VepadvIyGtxpC+g/l8QwZUkJBwdPMmPEZiYlTqa7+BsuXTyEubhGd\nncHzM/WWP1oYDwErRORZEXkOWA78T7+u6AOXX/ndkGthpMenU99UT6eG0Tu/U06BI0dg+XKnI/HK\nGcnJLJ4yhRfGj6fs0CFGLVnCrRs2sLG52enQvJY4JZFJH0xizC/GsOmuTaw6ZxWHVhxyOixHREWl\nMGLEbUyfXsOoUf9DfPzfKCvLZ8eOJ+noCJ11LT5tYYg19+oToBR4HXgNOEVVvV7p7WuhtsobICYy\nhoToBJo7g+ePz4CJfNHKCCKlSUksKCyksqSEhIgITlmxgktWr6YqOjoo3rGLCKkXpFKyqoT0q9Op\n/Gol1XPCa2Dck4iL1NQL2Lv3PsaPf569e99h6dLRbNv2CO3tgVOZwAm9Jgy1/scvVNVdqvqW/bHb\nD7F57ec/nx9yXVJgjWMc6DjgdBj+NXs2LFgAQdS902V4bCw/GT2araWlXJSayjPJyZRWVPB6fX1Q\njHO4Il3k3JzDjJoZRGVEUV5UzpYfb6GjKbxmEXlKSjqNoqJ3KCr6M42NK1myZDSbNv0oqIsf+qNL\nqkJEpvXrCn5w330PhlyXFFgzpQ6G2zuaceNg9Gj4a4+V7INCfEQE387O5pG6Ou7MzeWRbdsoLCvj\n9zt3cjhA15p4ikyKZMzDY5i6bCrN65opKyhj9/O70c7AT3q+4nYXUVj4AlOnLqWtrYGysnw2bvx/\ntLV1L5EX+Pwx6D0DWCIin4lIpYis7l6q3Bh8YdnCAKuVMX++01EMmAu4LD2dxVOm8FR+Pq83NDBq\nyRJ+um0bh4KgBRV3UhyFCwopfLmQnU/spGJGBYdWhuf4Rpe4uDHk5z/JtGlr6OhooqysgB07ngjJ\nwfGeeJswzgNGA18CLgYusv81fCgzIZODHWHWwgC45hpYuNBazBcCRISzkpNZWFTEn4uKWNnYyNTl\ny6luanI6NK8knZLE5E8nk31LNpXnVrLprk10tIRvNxVATEw2+flPMmnS+9TXv8zy5ZPZt+8Dp8Py\nuRMmDBGJFZHvAz/EWnuxwy5HvlVVt/olQi/MnTvXjGGEkrQ0OPNMeP11pyMZdEVuNwsKC7krN5cz\nV67k3b17nQ7JKyJC1o1ZlFSW0LKphWVFy4heG9h7jfuD2z2JSZP+zkkn/Zj16/+d1asvpbl5o9Nh\nnZAvxzCeA0qA1cBXgV/06yo+Nnfu3NAcw3BncqA9DBMGwA03hES31PHcmJXFmxMn8u2aGh7eujUo\nZlMBxAyLYcJLExjzyzEk//9kar5VQ9vnIbYzZB+JCOnplzFt2lqSkk6loqKUzz77Ie0B+rvryzGM\nQlWdbW/HeiUQeDWoQ1jYdkkBXHQRVFTAjn4VMA4Kp9j1qV5vaOD6detoDsBd/o4n7eI06h+uR2KE\n8gnl1L1aFzRJz1ciImLJzb2DadPW0Na2j7KyAjZvvo+DB8vREFlP1VvCOPrWQVXDY1QngIRtlxRA\nXBxcfjm88ILTkfhUTkwMHxUXEyHCGStWUNsaPAvENF7JezyPCa9MYMt9W1h59kp2PbuL9oPh/aci\nJmYYBQVPU1T0Zzo7W6mu/jqLF+dQXf1v1Ne/QUdHcIxd9aS3hDFJRA7aH4eAoq7PRSRg3vqG6hhG\npjuMWxgQlIv4+iMuIoLnCwq4NiODGRUVLA+ywf6k05IoWVFCzndzaHijgcUjFrP2mrU0vN1A55HQ\neGfdH273JMaMeYTp09dRXPwxbvfJ7NjxOJ9+OozKyq+yY8dvaG31/1DwQMYwTriBkqpG9Ousftbf\nmw90GQkZ4TuGAdbA9+efQ2UlFBU5HY1PiQg/yM1leEwMs6qqWFVSQnxEUPz6AeCKcZFxZQYZV2bQ\ntreNulfqqH2klpo5NaRflU7m7EyGnDKkX5v2hIL4+LHEx9/K8OG30t5+gH37/srevW+zZcsDgIvE\nxMm43cVHP+LixiHim902Z86cycyZM3nggQf6/Fpvt2g1HJAYnUgnnTQdaSIhOsHpcPzP5YLrr7da\nGY884nQ0fjErM5O39+7lR5s388uxY50Op1+iUqPIuTmHnJtzaNncQt0LddTcVENbQxtJpyeRdEYS\nSacn4Z7sxhUVulsQH09kZBIZGVeSkXElqsrhw7U0Nq6ksXEldXUvsWnTXbS11ZOQcDJudzFJSWeQ\nnn4VLpfzf66dj8A4LhFhSMQQ6prqGBXd9z2JQ8INN8BXvgIPPQRB9I57IP533DhOLi/n8rQ0Tk8O\n7m2H40bFMfKekYy8ZyStta0c+OQABz4+wO5nd9O6uZXE6YlHk0jyWclhl0BEhNjYXGJjc0lLu+To\n8ba2/TQ1raKxcSU7dz7B1q0PMnr0Q6SmXuxoKy28fjpBKCkiKfzKnHsqLIRhw+Djj52OxG9So6L4\nzbhxzKmpCaqZU72JHRFL5rWZ5P02j2mV0yjdVsqI20egR5TNd2+mrKCMXfN2hd3eHD2JikomOfks\nhg+/leLijxg9+qds2nQ3K1eeyYEDix2LyySMADckYkh4baTUk4UL4ayznI7Cry5LT2dqYiL3bt7s\ndCg+EzU0itQLUxn90Gimlk2l4JkC9jy/52jtKpM4LCJCWtpFTJu2imHD5lBVdTVr1lxBc3ON32MJ\niYQRqrOkAJIik9jTGOYJIzPTKn0eZh4bO5YX6ur49EB4THxIPiuZ4n8Uk/+7fHb9fhflheXs/sNu\ntCO813d0EYkgK+tGpk9fz5AhM1ix4nRqam7m8OFdfTqPP6rVBrRQXekNpksqnKVFR/P4uHHcWF1N\nSwh1TfVm6NlDKf6omLwn8tj55E7KJpSxZ8GesF8Y2CUiIo7c3P9i+vQaIiMTKS+fSH39n7x+vb+2\naDUcYLqkwtsV6elMdru5b8sWp0PxKxFh6DlDmfzxZMY9Po6tP97K9l9vdzqsgBIVlcKYMT+joOBZ\namt/5pdrmoQR4JIiTQsj3D02bhx/2LOHxWHSNeVJREj5cgonv3cytT+t5fO/Bd/+E76WknI+zc3r\naW3d5vNrmYQR4EwLw0iPjuaxsWPDrmvKU9xJcYxfMJ6q66to2dTidDgBxeWKIj39MurqXvb9tXx+\nBWNAzBiGAXBlRgb58fHM2x1QuyP71dCZQxl5z0jWfG0N7Y3hXa+qu/T0a6ivf8nn1zEJI8AlRyZT\nlBnaZTEM71ycmsrSg2FcWwzI+W4OiSWJ1NxYYwbBPSQnz6S1dRstLZ/59DomYQS4xIhEFlyxwOkw\njAAwJTGRisZGp8NwlIiQ90QerbWtbPuJ7/vsg4XLFUl6+hU+75YKiYQRyuswDKPLhIQEPmtpCanV\n3/3hinEx8fWJ7HhiBw3vNDgdTsDIyLiGurreu6XMOowQXodhGF1iXC7Gx8dTGeatDICY7BgmvDqB\nmjk1NFUH7/4Sgykp6XTa2up6XQFu1mEYRpgw3VJfSCpNYvTDo1lz6Rra9of3NrFgrQRPT7/Kq1ZG\nf5mEYRhBZKrbHXQbLPlS1pwsUs5NYd3160wJEbq6pV702YQAkzAMI4iYFsa/GvPLMaRdkuZ0GAFh\nyJBSOjoaaWpa45Pzm4RhGEGkKCGBmuZmWsN84NuTK8pF9r9nIxHhV6CyOxEX6elX+6xbyiQMwwgi\nsRERjIuLY02TGeg1epaRYS3i80W3lEkYhhFkTLeUcSKJiSWodtLYuGLQzx2wCUNECkTkCRF5WURu\ndjoewwgUZuDbOBERISPDN91SAZswVLVaVf8DuAY41el4DCNQmBaG0RurttTLg94t5fOEISJPi8ge\nEansdvx8EakWkfUicsdxXnsx8A6w0NdxGkawmOR2s7apiSOdZgtTo2du9yREojl0qGxQz+uPFsY8\n4DzPAyLiAh63j08ArhWRAvuxG0TklyKSpapvq+qFwGw/xGkYQSEhIoJRsbFUmYFv4zisbinvSoX0\nhc8Thqp+AnTf9WQ6sEFVt6pqG/AicKn9/PmqejuQJyK/FpEngXd9HadhBBPTLWX0xkoYL6M6eC3R\nyEE7U9/kALUeX2/HSiJHqepHwEfenOyKK644+vn48eMpLCwchBADw6JFi5wOwadC+f58em8JCSyI\njCTWwV34QvlnB6Fxf+npwmuvPcCRI/lUVVWxbt26AZ3PqYQxqF577TWnQ/Cp6667zukQfCqU789X\n9zZ8/37u2LSJ6y680Cfn91Yo/+wg+O9vy5ZNtLXtYdy4f70Pkb4vdHRqltQOINfj6+H2sX4x5c2N\ncDPZ7aaysZF2M/BtnIC1iO9VVL+oDBAM5c3F/uhSDowVkZEiEg3MAt7q78lNeXMj3CRGRjI8Jobq\n5manQzECWHz8OKKjs9i//59HjwV0eXMReQH4FGsQe5uI3KhWuvse8D6wFnhRVfvduWZaGEY4mpKY\nyHIz8G30ovtsqYBuYajqdaqaraoxqpqrqvPs4++par6qjlPVhwdyDdPCMMLRVLebCrPi2+hFevrV\nNDS8RmentWdIQLcwDMPwDTO11vBGXNwo3O7JNDdXD/hcITFLqquFYVoZRjiZ4nazsrGRDlUi+jHj\nxQgfRUV/OTor6sMPP+x3F35ItDBMl5QRjpKjosiIimKDGfg2euE5hdZ0SRlGmDID34Y/hUTCMLOk\njHBlBr6NvgroWVL+YLqkjHA1JTHR7I1h9InpkjKMMDXF7WZFYyOdPtiO0zC6MwnDMIJYWnQ0yZGR\nbGppcToUIwyERMIwYxhGOJtqBr6NPjBjGGYMwwhjU8zAt9EHZgzDMMKYGfg2/MUkDMMIclPtEiFq\nBr4NHwuJhGHGMIxwlhkdTZzLxdbWVqdDMYKAGcMwYxhGmDMD34a3BjKGERLFBw0j3D1w0klkREc7\nHYYR4kzCMIwQMDkx0ekQjDAQEl1ShmEYhu+ZhGEYhmF4JSQShpklZRiG4Z2BzJIKiTGM/t68YRhG\nuOnanfSBBx7o82tDooVhGIZh+J5JGIZhGIZXTMIwDMMwvGIShmEYhuEVkzAMwzAMr4REwjDTag3D\nMLxjptWaabWGYRheMdNqDcMwDJ8zCcMwDMPwikkYhmEYhldMwjAMwzC8YhKGYRiG4RWTMAzDMAyv\nmIRhGIZheCWgE4aIxItIuYhc4HQshmEY4S6gEwZwB/CS00E4qaqqyukQfCqU7y+U7w3M/YUjnycM\nEXlaRPaISGW34+eLSLWIrBeRO3p43ZeBKqAeEF/HGajWrVvndAg+Fcr3F8r3Bub+wpE/SoPMAx4D\nnu86ICIu4HHgHGAnUC4ib6pqtYjcAEwBhgAHgAlAM/CuH2I1DMMwjsPnCUNVPxGRkd0OTwc2qOpW\nABF5EbgUqFbV+cD8rieKyNeBBl/HaRiGYZyYU8UHc4Baj6+3YyWRf6Gqz/d03JNIaPdYmfsLXqF8\nb2DuL9wEfbVaVTU/UcMwDD9wapbUDiDX4+vh9jHDMAwjQPkrYQjHznQqB8aKyEgRiQZmAW/5KRbD\nMAyjH/wxrfYF4FMgT0S2iciNqtoBfA94H1gLvKiqZg6bYRhGAPN5wlDV61Q1W1VjVDVXVefZx99T\n1XxVHaeqD/f1vL2t4whmIjJcRP4uImtFZLWI/KfTMfmCiLhEpEJEQq51KSJJIvKKiKyzf44znI5p\nMInIbSKyRkQqReSPdk9B0OppvZiIDBWR90WkRkT+IiJJTsY4EMe5v0fs/58rReQ1ERnS23kCfaV3\njzzWcZyHtU7jWhEpcDaqQdUO3K6qE4BTgO+E2P11uRVrcWYo+jWwUFXHA5OAkGlBi0g2Vg/BFFUt\nwpo8M8vZqAZsHtbfE093Ah+oaj7wd+Auv0c1eHq6v/eBCapaDGzAi/sLyoSBxzoOVW0DutZxhARV\n3a2qK+3PG7H+2OQ4G9XgEpHhwAXA752OZbDZ79TO8GhNt6vqQYfDGmwRQIKIRALxWAtwg5aqfgJ8\n3u3wpcBz9ufPAV/za1CDqKf7U9UPVLXT/nIJ1uSjEwrWhNHTOo6Q+oPaRUROAoqBpc5GMugeBX4I\nqNOB+MAooEFE5tldbk+JSJzTQQ0WVd0J/ALYhjW7cb+qfuBsVD6Roap7wHoTB2Q4HI8vzQHe6+1J\nwZowwoKIuIFXgVvtlkZIEJELgT12K6r7DLpQEIlV3uY3qjoFq7TNnc6GNHhEJBnr3fdIIBtwi8h1\nzkblF6H45gYRuQdoU9UXentusCaMkF/HYTf1XwXmq+qbTsczyE4DLhGRTcAC4GwR6XVFfxDZDtSq\n6jL761exEkio+DKwSVX32TMeXwdOdTgmX9gjIpkAIjIMqHM4nkEnIt/E6hr2KuEHa8IIh3Ucm7eK\negAABj9JREFUzwBVqvprpwMZbKp6tz1jbjTWz+7vqvp1p+MaLHY3Rq2I5NmHziG0Bve3AaUiEitW\n7YxzCI1B/e6t3beAb9qffwMI9jdux9yfiJyP1S18iaoe9uYEQVkaRFU7ROS7WKP8LuDpUFrHISKn\nAdcDq0VkBVZT+G5V/bOzkRl98J/AH0UkCtgE3OhwPINGVctE5FVgBdBm//uUs1ENjL1ebCaQKiLb\ngPuBh4FXRGQOsBW42rkIB+Y493c3EA381a6ZtURVbznheVRDslvOMAzDGGTB2iVlGIZh+JlJGIZh\nGIZXTMIwDMMwvGIShmEYhuEVkzAMwzAMr5iEYRiGYXjFJAzDESKSIyJv2OXpN4jIo/bq9t5eN6CK\noSLygIh8aSDnCAZ2afWT7M+3iMhH3R5f6Vnq+jjn+ExExnU79qiI/FBEJorIvMGO2whsJmEYTnkd\neF1V84A8IBH4iRevu3sgF1XV+1X17wM5hy+JSMQgnKMQcKnqFvuQAokikmM/XoB3dZEW4FG23F7V\nfSWwQFXXADl21WEjTJiEYfid/Q6/RVWfB1Br9ehtwBy73MQ3ROQxj+e/LSJnishDQJxdAXa+/di9\n9kZa/xSRF0Tkdvt4sYgs9tgcJsk+Pk9ELrc/3ywic0VkuYis6irlISJp9sY5q0Xkd/Y79JQe7uMr\nIvKpiCwTkZdEJL6X88bbG9kssR+72D7+DRF5U0T+Bnwglt+KSJUdx7sicrmInC0if/K4/pdF5PUe\nvsXX869lLF7miz/+1wJHC82JtZHVIyKy1P5+fct+6EWO3efiTGCLqm63v36H4N8Hw+gDkzAMJ0wA\nlnseUNVDWOUXxnYd6v4iVb0LaFbVKap6g4iUAJcBJ2MVUCvxePpzwA/tzWHWYJVC6Emdqk4FngR+\nYB+7H/ibqp6MVThwRPcXiUgq8CPgHFUtse/n9l7Oe4993lLgS8DP5Yuy55OBy1X1bOByIFdVC4Eb\nsDbRQlX/AeTb1war3MjTPdzTaRz7/VXgNazvFcDFwNsej9+EVaJ8BtZeM98WkZF2K6JDRE62nzcL\nq9XRZRlwRg/XN0KUSRhGIPGmzLnnc04D3lTVNrv8+9twdAOjJHvTGLCSx5nHOV/XO/blwEn256dj\nvbtGVf/Cv26sA1AKFAKL7HpfX+fYCso9nfdc4E77+R9i1fHpes1fVfWAx/Vfsa+/B/iHx3nnA7Pt\nFlMpPe9hkAXUdzu2F/hcRK7BKoTY4vHYucDX7biWAilA19jFi8Asu6vsa11x2eqwypsbYSIoiw8a\nQa8Kqy/8KPuP/AhgI9aWpp5vZmL7cQ1v99joqtLZwfF/H3o6lwDvq+r1fTivAFeo6oZjTiRSCjR5\nGe+zWInxMPCKx45pnprp+Xv2MvAbrOR2TAjA91T1rz285kWsIp//BFapqmciiuXYxGOEONPCMPxO\nVf+GNRYxG44O9P4cmKeqrcAWoNjuyx+B1U3S5YjHwPAi4GIRiRFrs6mL7PMfBPaJVfUXrG6dY2YJ\n9WIRcI0d27lAcg/PWQKcJiJj7OfFd59R1IO/YFWxxX5N8Qmuf4V9/5lYVUYBUNVdWNuh3oO1T3NP\n1vFF1x58kfD+BPwUKwF0j+sWsWepici4rq4yVd0ENGBVbl3Q7XV5WN19RpgwCcNwymXA1SKyHqjG\neqd6D4CqLsJKGmuBX3Fsf/xTWGXf59sbFL0FrALeBSqBrm6db2KNEazEarH82D7uOTZyvJlCDwBf\nsaedXgHsBg55PkFVG+xrLBCRVcCnQH4v5/1vIEpEKkVkjUdM3b2GtQnTWuB5rPs/4PH4H7E2aKo5\nzusXAmd7hmvH3KiqP1PV9m7P/z1Wq69CRFZjjbt4trYW2PfWfYD9bKzvuxEmTHlzI6iJSIKqNtnv\niP8JfMve+nUg54wGOux9V0qB39pbrfqNx32lYI0rnKaqdfZjjwEVqtpjC0NEYoG/26/xyS+4/T36\nEDj9ON1iRggyYxhGsHtKrHUHMcCzA00WtlzgZRFxYY0VfKuX5/vCO2LtnR0F/NgjWSwDGjl2RtYx\nVLVVRO4HcrBaKr6QC9xpkkV4MS0MwzAMwytmDMMwDMPwikkYhmEYhldMwjAMwzC8YhKGYRiG4RWT\nMAzDMAyv/B9ZBCMoWOfF0wAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -333,14 +507,42 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Unresolved resonance probability tables\n", - "\n", - "We can also look at unresolved resonance probability tables which are stored in a `ProbabilityTables` object. In the following example, we'll create a plot showing what the total cross section probability tables look like as a function of incoming energy." + "There is also `summed_reactions` attribute for cross sections (like total) which are built from summing up other cross sections." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ]\n" + ] + } + ], + "source": [ + "pprint(list(gd157.summed_reactions.values()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the cross sections for these reactions are represented by the `Sum` class rather than `Tabulated1D`. They do not support the `x` and `y` attributes." + ] + }, + { + "cell_type": "code", + "execution_count": 17, "metadata": { "collapsed": false }, @@ -348,18 +550,49 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 10, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gd157[27].xs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Unresolved resonance probability tables\n", + "\n", + "We can also look at unresolved resonance probability tables which are stored in a `ProbabilityTables` object. In the following example, we'll create a plot showing what the total cross section probability tables look like as a function of incoming energy." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAETCAYAAAAYm1C6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXmcU9Xd/z8nezKZZFZghmEYtmFXWRSKWFBA3HetWizV\nVq1atWqf6uNjRVqrj89PrVUr1RYXtBalYlUUKypoLVIFFNl3GGAGZmH27Mn5/ZG5mdx7z53cJDcr\n5/168WLuyV1ObpLzvd+dUErB4XA4HE686DI9AQ6Hw+HkJlyAcDgcDichuADhcDgcTkJwAcLhcDic\nhOAChMPhcDgJwQUIh8PhcBKCCxAOh8PhJERaBQghZDEh5Bgh5DvJ+DmEkB2EkF2EkHslr9kIIV8T\nQs5L51w5HA6H0zfp1kBeAjA3eoAQogPwbM/4WADXEEJGRe1yL4A30jZDDofD4agirQKEUvoFgFbJ\n8GkAdlNKD1JK/QCWArgYAAghswFsA9AEgKRzrhwOh8PpG0OmJwBgIIBDUduHERYqADATgA1hzcQF\n4P20zozD4XA4imSDAFGEUvoAABBCfgSgOcPT4XA4HE4U2SBAjgCojtqu6hmLQCldonQwIYRXg+Rw\nOJw4oZQm7RbIRBgvgdif8TWA4YSQwYQQE4CrAbwbzwkppZr9W7Bggab7K72udryv7Vj7pvNeqNk3\nXfdC6/vA7wW/F/l2L7RC/9BDD2l2slgQQl4H8FsAgxYuXHjTwoUL2yilGxcuXLgbwF8B/BzAq5TS\nf6g958KFCx8S/q6pqdFknvGeJ9b+Sq+rHe9rO/rvNWvWYObMmX3OJV7iuRdq9k3HvUjFfWBdO9l9\n+b2IvQ+/F/GP97V94MABvPzyy/jss8/w0EMPLYw5mVhoLZHT/S/8FjiUUrpgwYJMTyEr4PehF34v\neuH3opeedTPp9ZdnoucRqXi6ykX4feiF34te+L3QHkI1tIdlAkIIXbBgAWbOnMm/IBwOh9MHa9as\nwZo1a7Bw4UJQDZzoeSFAcv09cDgcTjohhGgiQPLChPXQQw9hzZo1mZ5GzkIIQXt7e6anweFwUsya\nNWugZeAU10A4IIRg7969GDp0aKanwuFw0gDXQDia4vV6Mz0FDoeTY+SFAOEmrOQJBAKZngKHw0kx\n3IQlgZuwkocQgs2bN2PcuHGZngqHw0kD3ITF4XA4nIzCBcgJDtfeOBxOouSFAOE+kMQJhUKi/zkc\nTv7CfSASuA8kOfx+P0wmEzZu3IgJEyZExgOBAIxGI0KhEAjhzSA5nHyC+0A4mqCkgQhRWTw6i8Ph\nKMEFyAlOMBgU/S8gCBSfz5f2OXE4nNwgLwQI94EkjpIGImz7/f60zykVrF69Gp988kmmp8HhZBTu\nA5HAfSDJ0d7ejqKiIvz73//GtGnTIuMdHR1wOp1obGxEeXl5BmeoDYIfh39XOBzuA+FohKBpSE1Y\nwna+LLg8EIDD0R4uQE5wYpmw8iW8lwsQDkd7uAA5wYnlRM8XDYTD4WgPFyAnOJnWQHbv3p3S8wtw\nDYTD0Z68ECA8CitxYmkgqRYgtbW1+Oqrr1J6DYALEA4H0D4Ky6DZmTKIljfkRCPTGggAdHZ2pvwa\nXIBwOMDMmTMxc+ZMLFy4UJPz5YUGwkkcJUEhaCTpECBSP8tZZ52FpUuXpvy6HA4nObgAOcHJtAmL\nxerVq/HWW29pek6ugXA42sMFyAlONpiwWEgFGofDyT64ADnByUYNBNBegHANhMPRHi5ATnBiaSCZ\nygPJlwRGDief4QLkBEfJWZ5OJzoLrTUGroFwONqTFwKE54EkjlItrEybsPiCz+FoD88DYcDzQBIn\nW53oWsMFEofD80CyggMHDuRNnwwlU1W+CBCPx5PpKXA4eQsXIAkwZMgQ/OEPf8j0NDQhW01YWrBz\n505YrVbF1zs7O9OSBc/h5CtcgCRIa2trpqegCfmsgbS0tET+ZpmwJk6ciNNOO03Vuf7yl7/g22+/\njWxXVVXhkUceSX6SHE4Okxc+kHQiLKg6XX7I3nxtKFVfX49jx45FtqUCxOVyYc+ePap9IzfeeCPO\nP/98rFixAgBw5MgRfP7557j//vv7PO72Hy9DR1uvGc1RZMEzL1+p9m1wOFkNFyBx4na7AQBtbW0Z\nnok25KsTfeTIkejq6lJ8/fTTT0/JdW/7yVtob+8VGPqA+P5FCxMOJ9fJj8foNOJyuQCEe4nnA5kw\nYR08eBCBQEDz80bTl/AAEDFHaR2d1d7BBQTnxCGtAoQQspgQcowQ8p1k/BxCyA5CyC5CyL1R46MI\nIYsIIW8SQn6WzrkqIQgQQRPJdTLhRK+pqcHTTz+t+XkFon0fWiIVNizzXsCgQ8DY+0+2h46HE3Py\nh3RrIC8BmBs9QAjRAXi2Z3wsgGsIIaMAgFK6g1J6C4AfAJiW5rkyyTcBkikneqxFPhnNoKysTPX5\nUu3j8RQY4Y7+Z+VWY07+kNZvM6X0C0LIYMnwaQB2U0oPAgAhZCmAiwHs6Nm+EMDPALyazrkq0d3d\nDSB/BEgsJ3qqBEi6fSvZkkho9AYx74q/isacTgv+uPjyDM2Iw0mcbPCBDARwKGr7cM8YAIBS+h6l\n9HwA89I9MRYulwuEkLwRIJnSQKIFVrYs7rGQaiss7SVk7PsnxXqn0U53DieXyGp9mhAyA8BlAMwA\n3s/wdACEBUhpaWneCJBMRWFFnzdXQ4VZHBhVKtqu2dos2qZgCJHckJ8cjoxsECBHAFRHbVf1jIFS\n+hmAz2KdILoWllDrJVXkqwBJdyZ6rmgdyRLUE+iDvQLSb9bL9jG5A7justdk484iC5598YqUzo9z\nYrBmzZqUFJzNhAAhED9zfQ1geI9vpAHA1QCuieeE6SymKAiQw4cPp+2aqSSTmejp1Dwy5UQ/PKJE\ntD14hzx4QEmUtvOcEY5GSB+sc7KYIiHkdQBrAdQSQuoIIddTSoMAbgfwEYCtAJZSSrfHc950lnPP\nVw0kkwIkHQ71E0Xj4XD6IqfLuVNKr1UYXwlgZaLnTbcGUlZWljcCRKmlrdK4lggCJFd9IInMO2Ag\nMATEx4UIoGOdiueMcDRG63Lu2eADSZqHHnoo5b4PAa6BaAMhpM9rRGsMDQ0NGDBgQEa0iMGDB+Ph\nhx/W7Hx1Y8tlY4MYZi0OJxVo7QvJGwGSLlwuF5xOJwDA7/fDaDSm7dqpIJPl3NVqIJWVlXj33Xdx\n4YUXpmwuStTV1UV+cGrCeLXE0u3HtT94XTTmdFqw6IXLUnpdTv7CNZAM43K5UFxcDIvFAo/Hk/MC\nJJYTPZUmLOEaahZiVvl8Qgi8Xi9MJlOfxz733HNp0xit5hDcXm1ciyx9q7PZJYvY4tFanEyRFwIk\nnSYst9sNq9UKq9UKt9uNwsLClF8zleSKE11JyLjd7pgC5Lbbbot/coxrqxF0l89tEm3/9e1+MY+R\nhvpGrgu5EGEmIvJoLY5KuAmLQTpNWFIBkuvkuhNdKnxSaVZKxAdjNQfh9spzP6KpH1bMHB+6uUk2\npvfnZnl9TnbATVgZJt8ESCIayCeffIKZM2dCr+97YUz02iyUBEMm+5WoEVbXXih2kL/wXkVy1wTP\nZOdkD3khQDJhwhJ8ILlOIomEs2fPxkcffYQ5c+YkdW2tNRBKKT788MOk5tTe3o729nZUV1fH3jkB\nTMYgfH51gpcV8htgZLLr/SFeoJGjCm7CYsBNWIkTKwpLyYSVbEOoWGG88Zznq6++wqmnnorOzk6c\nd955Sc1r3rx5WLFiBVOoaRGFNfN0uVnqo0/7M/c9PF5eln7ohkbZGC/QyFGL1iasbKjGm1PkqwCR\nLuKxyrlrYTqKRwPpa58pU6Zgx44dSc8HAJqbm2PvlEECBm6v4mQPeaOBpNOEZbFY8kaABINB6PX6\nuPNAtHBW9xWFFav7n1T4+P3+hBMNQ6EQBgwYgMZG+dM969qZpO5keSLiiHVHuV+EowpuwmKQThOW\nx+PJKx9IIBCAyWSKOw9Ei+isZDQQ6bGU0oQXer/fj6amJhw+fBiHDh2KfYDCnBLFZArC50s8IIFV\n4ZcS4Mrr3pCNO50W/OXZixO+Fie34VFYGSbfTFjBYLBPAZLKUibJFFOUHhsKhZJe0CdMmJARE9ac\nGexrrlzN9o2oQkEb474RjpZwARIn+SZABA0k3pa2WtSliicTPZUaiEBnZ2dSx2cKVrQWKGUKEYMv\nKCuPAvASKZzE4AIkTvJVgGSilEkyYbzCMX/4wx8AhOebqLa0adOmuK6ptH3PPfdg+I9Php8klx8j\nYDUF4VZh2qobzYjW2twUFiISFHuPcM2EkwB5IUB4HkjiCCaseJ3oWmggyZQyEbbXr1+vuI9aZs+e\nndBx0us9+eSTwJPA0fZXYLGEy6u8sTdxAXz9XHnI73PvDUj4fH1BglSUS8LzSPITrZ3oeRHGKwiQ\nVBMMBuH3+2E2m08YDSQbqvGqOZZSmvBcWfOglEZyXeKd39/fWBv526rX9idmMqoTSEG9QgdGhf2l\ne3ONJD+ZOXNm7jaUynU8Hg8sFgsIIbBarWhvb8/0lJJGSYDEqoWVLRpItB8lUQ2Eddxjjz2G//7v\n/477OAD4aOU3mDd/JgDguhFijeGRb46iS+qviIPTp8od7p8wnO1K9bWq9sirGgOA2Z1cYijnxIQL\nkDgQckAAwGKx4OjRoxmeUfIkasLSgr40kFgCinWslnPdvHmzZueK5t4Jcn/FbzbKTVXxYDEF4Uki\nDFgJbtLixIILkDgQ/B8AYLVa88IHkqgJK1kNJN4w3nRrIK+/Lo9UUnMcALz79lcIBkPQa2y+UmLe\nOXIB9MoyecIhEF/p+Gi4SYvDIi8ESLqc6FIBkg8+kFh5IJmKwoolDBI5Rol4wonV4vMFYLX23adE\nwGYAXGmyIB0b7GSOD97RIvKP6KRCJkRljawA3swq1+CZ6AzSlYne1dUVaSCVLwIkG/JAktFAtKjo\nq3SNeF9PdN+fj7Ewx5ftS/z7ZTGH4EmiM6JUI1EM/+XNrHIKnomeQTo7O2G32wGEfSD5IEC8Xi9s\nNpusum6mfSBqF3NpOfdk5hHv69lUI0vKxee3MMeX/V3ugwHkpi2qJyKNRB/K3vfKyRx5EcabLqQa\nSD74QBYvXgyv18t0ohNCZONaLZqxfCCxkva0zEQXjtNCq9ISi0Iobio4PKIEB0eVRv5JUbyz2XXL\nOGmGayBx0NnZmXcmLACorKzE4cOHRWOhUAhGozHuMu9qiV7wtcoDSVaAZJtGcekQub/iwfXJhY6b\nzSF4VZi2gjoi0jpCRv6syZETU4AQQqoAXA3gDACVANwAtgB4H8BKSukJ06S5q6srYsLKFwEyZMgQ\nnHbaaTh48KBoPBgMwmAwKDrXU13OPRETVrLziPc9ZULgFBiA7iQc7pdcdJw5/sYysWlL6myv3N/G\nPC5EgKuv+Zts3Om04Pk/XZrgLDm5Qp8ChBDyEoCBAFYAeAxAIwALgFoA5wD4H0LIfZTSz1M90Wwg\nWgPJFx+I3++HzWaD3+8XjQsaSKryQ6JNWJkuppitGgiLX4yX/2Rf3+Nn7BkfJnMIvj40E2bBRoBX\n/T3BiaWBPEEp3cIY3wJgOSHEBCA1zaOzEKkGkg8+EL/fj4KCAkUBkg4NJBknupYCJN79skXgWPSA\nJ8lo6+/PFWeof7asSLS9b3w/5nHDN7GbcLG47SdviQQLT07MffoUINHCo0dYjELYn7aTUuqjlPoA\n7EntFGOTrjyQzs5OlJaGHYwFBQXo6upK6fXSgSBAfD6faDwUCsFgMKQ0Q10LE5YW2oOW4bsC7xS/\nBDPR4/rgA4lOSzU/GGaXjT2/PbnvZiyNRKCvBESpacvgF3/OXEtJPxnJAyGEnA/gTwD2Ivx9GUII\nuZlSulKzmSRBuvJAOjs7MXjwYACAw+HI2f4R0fh8PqYACQaDKddAkjmXUgHEREilCct9rAvW/vIF\nPtXY9AQuRsa5WmZc0iHafvuf7OZWPit7CeG1tbKTTOWBPAHgTErpHgAghAxDjxNdk1nkCNFhvBaL\nBYFAAD6fDyaTuozjbETwgbA0kL4EiJY+EK0SCdNtUlJzvfdqnxFtX7j3VpjKClI1pQg31cpDcQHg\n6R3p77jYF9H1tgBu1so11AqQTkF49LAPQO4/fsdJR0dHRIAQQiJaiGDWykX68oEYDAY888wzMBgM\nmDlzJpYtWxZp4JRqH0i8x6YjE521/7Zt23Dffffh3XffVXXM5rmLZWNj/3N9XNfNBHH3badU0cHe\nF9yslVvEisISelyuJ4R8AOBNhM2eVwL4OsVzyzpaW1tRUlIS2XY4HOjo6MhZASJ08bNarYomLAB4\n5plncPDgQSxfvhy///3vI8cmQ7TGkEwioRbFFBOFEIKVK1fivffek89POfVOhq/JBVO5TevpMbHp\ndXAF4//slPq2f7PPBD0jOktHERYiUcQq2MjJPWJpIBdG/X0MwIyev5sQDuc9oTh+/LhIgBQWFua0\nH8Tv98NoNMJkMjFNWIJpTsgJEcaB7InCEpz86RAgcdXCiuO8ayfLixQCwOxDt8dxFnX8dBS7o+GC\njQ0Jna9+eAlzvHaDvNWB1F/C/SS5T6worOzXrdOIVIAIGkiu0pcAEUxbQHjhlAqQVGsgrP1Z22az\nOXKOVAmQTIXr+pq6YSpPvb8EAAoMBN1JNLqSolQ2PhqmRsJVlJwilgnrAQB/pJQy25gRQs4CYKOU\nrkjF5NRCKU15HSNKaV4KEJPJBJPJJPOBBAKBiAABAJ0uHNKplQYSq5SJWg3ksssuw8aNGzOyyK9b\ntw6DBg0CADQ1JdcUinn+770sGzv1Pz+Arsiq+bV+NUac9/Hk9la4k8gtOcLoiFhxQFyGJcgoj6L3\nh2SOdYA717OVWCaszQBWEEI8ADai13Q1AsApAD4G8EhKZ6iCv/71r5g3b15Kr+F2uyOtbAVy3YTl\n8/n61EBstl67vCCgE9VALr/8clRUVODZZ5+NjCWjzUiFT6Y0kI0bNwIA+vdnh7lqjeuON2Rjxa/d\nrPl1bhglfiD7/Wb2PTCbgvCqdK5L62uxUCwbz53rWUksE9Y7AN4hhIwAcDqACgAdAF4DcBOlNK5a\nHoSQxQAuAHCMUnpS1Pg5AJ5CuDrwYkrpYz3jFwM4H0AhgBcppatY573nnnswZ86clP6IpdoHkB8a\niNFohNFohN/vF2ly0SYsQC5A4l2sly9fDofDIRIgWpQySacTPR4tN536kLexG+Z+qTV1KdXgOm8G\nW/P6eEUR/D6xhnGsRlxfq2JvKwxx5KrwkN/sQ1UYL6V0N4DdGlzvJQDPAFgiDBBCdACeBTALQD2A\nrwkh71BKd0QJsCIA/w8AU4Bcf/31uP322/Hmm29qMEU20ggsIPcFSCAQgNFoBCEEBoMhYtISXutL\ngCSjNQh/J1MQUepET0ffEhbZUAL+4zEvy8auaL5H02vcPpYtoJ7c3M0cnzxHXnxx7UpxtOKhkfLo\nxeGbGlW7QbhWknlU1WgmhNQSQl4ghHxECPlU+BfvxSilXwCQ+lNOA7CbUnqQUuoHsBTAxZJ9HgDw\nR6XzLliwAN999x2WL18e75RU09LSIhMguW7CCgQCEee41A+iZMLSIndD+DsZH4hAtEBLlQbSV8ka\n5Wtmtk6Wp5G9sGcSszm2kA8adQgw/nGyE7WJhMsQLmXyFwBaN8keCOBQ1PZhhIUKAIAQ8r8APqCU\nfqt0AqvVisWLF+PKK6/EzJkzZQu9FjQ0NGDAAHEIpNPpRF1dnebXShdSASKUNRFe01oDkaKFMEpH\nGK+QJEgphdvtFglWxfmlZCbq+fDk55njlzTel+aZ9HL+BeJS8m++wy7QyIIVsSUof9FFGrlZK72o\nFe0BSukiSulXlNINwr+UzgwAIeR2hE1bVxBCbupr39NPPx1XXHEFfvGLX6RkLvX19aisrBSNlZWV\noaWF3To0F4gWIEajUeRIl2ogWkRhSc09WiYSptKEFU0umywBwH00ewqA6o3yzyyg0IWR6glCkn9B\nXXjfaFMWN2ulF7UayHuEkFsBvA3AKwxSStndaeLjCMQl4at6xkApfQZhn0mfCMUU7XY73nrrLSxf\nvhyXXXZZ3wfFSUNDAyoqKkRjZWVlaG7OrtpC8eD3+2UaSPRrLA1EC7+F8LcWTvR0JhKyUPKBZFoD\nUWLpwKeY49d7f5nQ+Qr0QHeCNolhp8iF8S6wqzoM2yJ31vuNOlx53RswJ3b5Ewqtq/AKqBUg83v+\n/6+oMQpgaALXJBBro18DGE4IGQygAeHuh9fEc8LoarwXXXQRLrnkEkybNk1mckqGhoYGnHLKKaKx\nXBcgLBNW9GtaRmEJsIofauVET7UAqaurw6FDh0Rj2eBE1wLX0W7YBsQfyfWL2kLm+MItXejSMDGR\nifBQg94FJU8+Ds2RtrtIazVeSukQLS5GCHkdwEwApYSQOgALKKUv9ZiqPkJvGO/2eM4b3Q9k6tSp\nuPHGG/HTn/4U7733nmY/8Pr6epkGUlpamvMCRKh3JW2QJTVhCSRrMooWGn0JI7WJhOkM4925cydO\nPfVU0Vi+CJA3Bi8SbZ974FpYBiRen+vBSfKQ+ic3J1YuBVDoiNhTsJHqSZ8a389v+Dva2+SmLWeR\nBc++eEXCc8pFMtUPxAjgFgDfF+YB4PmeqCnVUEqvVRhfiSRKw0v7gTz44IOYOnUq/vznP+Omm/p0\nnaimoaEhr30gNpsNLpcr8lqsKKxEBQgraiqZUibpCONNBIuNwEp0CIUodLpeIRPwUxiM2S90Vta8\nLtq+2ndH0udU06PEZArB55O7Zg9MkDvch25ohNRYKJi1orF0s5cpllDJdzLVD2QRACOA53q2r+sZ\n+6kms0gSaUdCo9GIV199FTNmzMCsWbMwbNiwpM4fCoVQV1cXKVsh4HA44PF44PV6IzWZcom+BEgg\nEOjTia6lANFCA0mHCYtFLB+I2yW+T7u3yxetfhUGhLSObdQYLSoG31IrLm9yW3MXOsQFEHDWbPYD\n2crVyknCISOBzt9zx/NEI0wVGdFAAJxKKT05avtTQsgmzWaRJKyOhGPGjMEDDzyA6667Dp999lnE\nVJMIDQ0NcDgckX7oAoQQlJaWoqWlRaad5AKxNBCh9wmgvQ8kXg1E6TyZdqJrwfAx7IZke7f7oZdE\nJYVCgC4DaREbZ7ArBp/53c8SPufj35e/7//dxNYWWCVTAnoCQ5Di+CxHZMz5aSd4RUZlMqWBBAkh\nwyilewGAEDIU2ueDJIxST/Tbb78dH374IR588EE8+uijCZ9/7969ilqM4EjPdQFitVplGkh0Po3U\nhCXtla4Wls9CGp0lHetrO91hvFJSGYXVcNgnGxs+TvtCirnAed+X+xr/4S4HADjRe5+MPvn3IER6\n+pNIoDpywhVuzJQG8l8AVhNC9iEs3gcDyJpS70o90XU6HZYsWYKJEydi5syZmDt3bkLn37NnT0wB\nkotEh/GyNJBos5xUA0lWgIRCIab/Qm1ob7ZrIPE0lOL0YtNTuILaahBdxWyhW6jgA8nnXJKMaCCU\n0k96CiqO7BnaSSn19nVMtlBeXo7XXnsNV199NTZs2JCQprBlyxaMGTOG+VplZSXq6+uTnWZGiI7C\nYgkQo9GIZ599Fv/3f/+XUgESvfCr1SiyxQeyY8cO9gtpbL+nNwDBDPVmch/rhrW/PPzX3dgNawIF\nHm8cTcHS357fLrfbmc0heL06GPQhBILh19X0IeFoR6x+IGdRSj+Nam0rMJwQAkpp6opPxYGSCUtg\nxowZuPXWW3Httdfi448/jjx1q+Wbb77BffexS0AMHDgQhw8fjnfKWUEsH4jRaMRFF12ERx99VHMT\nVrQAiT6XWr8ISwPJJn7u/gIzDZUYQ0swGsWwkPi+c/Ew+iT5E/aOzel5il465M+q9000WVGJc88O\nO9xdUW6Tf+0sku3nbGYXDVeU8XlceivdJqwZAD6FuLWtAAWQNQIkFvfffz/Wrl2Le+65B3/4wx9U\nn5tSim+//RYTJkxgvl5VVYVdu3apPl82ITVhud29PzSPxwOr1YpgMBgp9Q6EhQ6grQCJLuKoJEDU\n+ECySYgM1TlQobPhYxzGC9iGodSBcSjBSbQUVbBnLH9Ep0fGIr58zd0wlSVWdt6mB1wq5m0whxDw\niiWAklYibbErYHIHRL6RfPKJpNWERSld0PPnbyil+6NfI4RoklyYLvR6Pf72t79hypQpWLx4MX7y\nk5+oOm7v3r0oKChAv37swm9VVVVYvXq1llNNG263O9IgS6qBeDweWCwWeDweBAKByGIvZKsnIkAo\npSInOkuAKJnIck2AlBAzzjcOxln+QXDTAHaiDZvRgmdCm+FDEGNJKcajBOMIu3RHqhgyzMIcP7jf\ng0BcWV3x8+35r4i2x/zzWuiL1YUG3zxGnvH++83yStijzpaXR/nqS3YI8OBNbN+lVLS3dnpw7Q96\n82KcTgsWvaBtqaRcRa1e/RaAiZKxvwOYpO10UktRURHeffddfP/738fIkSMxffr0mMd8+umnOPPM\nMxVfz2UTllSAHD8eLm0maBkGgyHSbEoqQBKJeuoxe0aOF87B0kCEsVhRWfGGFdM0tD+WYiUGnIIy\nnIIy6HQEjdSFzfQ41tFjeIXuwPPrCnFGWTnOKO2Hk51FMGQgTveUyeIQ9Y3/6UL0R6zTU4Q0dm43\n/1QeAeV482rVx9sMBK4kyqUws9vBMG1Jvi/57GSPl1g+kFEAxgJwSvwgDoRb22YFsXwg0YwcORJL\nlizBFVdcgU8//VTROS7w0Ucf4YILLlB8vaqqKmcFiGCmAsQaiKB9AJAJEGFhT1YDUTJhSYVKLAES\nby2s6MCBVNLXTPoRG2YRG2ahCgEagrnWg3+1NOE3OzbjiNuNqSWlmF7WDxZagDKSmbDdykHixNih\no9nC48CedMyGza1jwomJT25qQ1dA+YHGagrCzWi7e2h0GXP/2g1HxZ9fT8kUgVzOMkm3D2Qkwi1o\niyD2g3QCuFGzWSSJGh9INHPnzsXjjz+OuXPn4vPPP8eQIWxrXGtrKz7++GO88MILiucaMGAAWlpa\n4PP5It25V/tnAAAgAElEQVT8cgW32x0RFDabDd3d4SZELAEiLOzJmLAA9T6QRDQQNQJECA7IFgxE\nhyklZZhSUoZfjhiNJq8H/25pwhctTViN7bBTI8aiBONQipGQO4jzjVCbG7qi+ITmvRN6TVT3/acB\nXZKItJ+ew267+4d/VDDHpehCgPSRIFfzR9LtAxFayn6PUvqlJlfMEubNm4fOzk7MmDEDH3zwAcaN\nGyfbZ8mSJZg7d26fDar0ej0GDhyIuro6DB8+PJVT1hy32x3JNo/urhgtQAwGA4LBYMSspbUAEQSU\n9HWpAFFyqsergURfK7UkZlopN1twSeUgXFI5CJ83dKEOndiC4/gAB7EIWzB5XTHOKC/DGeXlGFVY\nmDfFHAXct/yDOW5bpi7j/f4J8iXtnQPxfeZBI4HeH//ndyKattT6QH5GCNlOKW0DAEJIMYAnKKU3\npG5qqeeWW25BUVERZs2aheeffx6XXHJJ5LVjx47h0UcfxYcffhjzPLW1tdi1a1dOChAhOKCoqAht\nbeE+1tEChBACvV4Przec9qO1CctisTA1EEFQae0DSZcA0cKdryMENXCgBg5cgBq4aQDGGhf+1dSE\nW9dvQHcwiDPKyjDV0Q/TSspRZsoaq7LmeI51w8LIN0kGiykID8O01TBN/MBYtbpZlMmuFP6bZ7Jc\nFWoFyEmC8AAASmkrIYQd15oB4vGBSLnmmmswePBgzJ8/H0uWLMH8+fMRDAbxwAMP4JZbbpH1AGEx\nYsQI7Nq1C+edd14Cs88c0U50JQEChM1YggDRSgMRorCkAiTVPhDhvNEO/VzBSgz4fnl/zB4QNtnU\ndbvwr+YmrGpowMO7N2OgxYbvFZdjSnEZHKECWHWpyz0RMJoAv7ziCnQ6IIE4C0XerpLnm1zdeCsM\nJbGFilkHeBlzufSsRub+73wh9o24C8WmaWu3X/EBITpaSyCborYyVcpERwgpppS2AgAhpCSOY1NO\nvD4QKdOmTcOmTZvwl7/8BYsWhfsiPPjgg/jBD36g6vja2lrs3LkzqTlkgmgnulSACONAWIAIvUKE\nBViLaryhUAhms1kkQKR+kVgmrHjDeNOtgRAS9sFCYRuILzKsq7X3ibkIhbiwoBBXjB+KQCiE7zpa\nsa6tGS/W7cF3bW0YbLBjvLEE440lGGUsgonIn7aT5dTpduZ43V75fQ4EKAyG3vcZCobzUhLl2E9e\nAgD0f/5mWAew5wEA51SzfV5/3sH+LhgNIfgDUZFwJiCq3Fbc2e7ZZNrKVDHFJwB8SQhZ1rN9JYDf\naTKDLMFms+GOO+7AHXfE3/egtrYW7733XgpmlVri0UCkAiRRE1b0ws/SQILBIPR6fdwaSLaZsAgB\nDAaC8v7ixcvPsK0bzezyHeqT/igMOh0mFpViYlEpbq0ZiW83dWFXoB3f+Y/jr649qAt0YYTRiSko\nwwRbKUZZnDCQ9IYL798trn5kMMqd5eUD4/9eLa3sbdN74aHrVJedt+oBN+Ny0ya0irZ3DRSbBg9v\ndIDFoJ0tzKKNgFwzySatJBnU1sJaQghZD+CsnqHLKKXbUjet3KK2tla5JlIW43K5IgLE4XCgs7MT\noVBINA6EHelam7CUBEggEIDVao3bB6JGAyGEwO/3Y+3atTlhvqqqVtdjhiWA/F0EQ1CEISjCxbqh\ncBkD2EnbcDjQjt8f24IGvxvjrcWYaCvFBFspJoeKoc9EnXgZyRUR+2b6m7KxKTt/zNz3xyPZ5q9H\nv3Exx2PhtrM/r4JOednA7sZuzL/k1ci2o8iCZ16+MqHrZpJ4zFAlALp7WtCWE0KGSLPTT1RqamrQ\n0dGB5uZmlJWxY8uzkc7OTjgc4acpvV4Pu92Ozs5OdHR0RMYBsQaSagESDAZhtVrR3t4OID4NJJZQ\nsFqt8Pv9+Oc//5nQ3HMZGzFgAinDZZVVAIC2gA/fuFqwsbsZKxoOof2wDxMLSzG5sAwn20tQrrOB\nhHoXcq+HwmxJvZfYaGFrY8kQanVDp1CRl0WBAeiOCgV2mCBqfGUxh+Dxqhe2LJEo3e5gVAa+/cfL\nZOPZJmjUtrRdAGAywnkhLyHcnfA1AKenbmq5g06nw4QJE7Bx40acffbZmZ6Oatrb2+F0OiPbghmL\nJUCEOlmCINGqlInFYkFra6/JQBiTlshX8rnE09JW6m85kSkymHCmowJnOsK5EB16L9Z3tmBjZwuW\nNR1Ac8CDCUXFmFRcjMklJdi70gwzw4cy7Sxl30O20HmLXCsBgNI32alsPx8n1iQserGm8spIdgmU\nf/zeCh3DN8ISuzKhwpBHLKHCGsskajWQSwFMALARACil9YQQeXGaDJFMFJZWTJo0CRs2bMgpASIV\nFMXFxWhpaWEKECHJUBAkqTRhCQmZwWBQ00RCq9UKr9ebltyJ7DeQielnsuK80iqcVxrWUGiRBxvb\nWrH++HE8sXMntqIdA2kBRqAIw+HECDjhJOlr42wwAAFJgmCyWpGv2QVTWXJteqNpGOJkjg/fdKwn\nGTHq2gqFHFNNpqKwfJRSSgihAEAI0TYgO0mSjcLSgokTJ+Ltt9/O9DTior29XSQoBgwYgKNHj6Kz\ns1PUztZgMIjKnADJCxChQCMrCstgMMBkMsHn82kaxltYWCgqGJlKcr2hVKnZjDn9B2BO/wEAgFUf\ndOIAOrEbbfgCDXgZO2CnRkzbWopJRaWYWFSCobbeKsN6I0XQL17cZaG9cbg7Rp8kX3LWrgo/1BiM\niBSCDAaprA2wEhtOZ7fpnbKj70KrFh2FJyS/hskUhI+RV9LOqEDsbBZ/D0MEuOqHS8XXAeP2JPns\nk6korDcJIc8DKCKE3AjgBgDqGwGcAEyZMgW/+tWvMlKsLxEopTJNo6KiAg0NDejo6BBVHzYajXC5\nXCCEwOPxQKfTJdzHPDrPIxQKMTUQvV4fyVCXNrKKPlf0uBoB4nA4Iu+DEx8mokctilDbU04lRCnq\n0Q2XyY21jc1YtG8XuoMBnGwvwSn2EswZ68BJJU6Y9b22mS1fiiPSjEb55xAMhBtkxcNpZ/Sa0dat\n6Za9PmpCfJoSbXeBOHs1E2+zC+YoTeXaMvZ3/8AZbNPWhqU2UJ/4vaoJBQ4ZGHatEMV1l70GZ5EF\nz754RZ/HpwO1UViPE0LmAOhA2A/yIKV0VUpnlmMMGzYMer0eO3fuxKhRozI9nZh4PJ7Ik75AZWUl\nGhoa0N7eLmrhKzjRbTYbPB4PzGZzwhpIdKZ5MBhEQUFBRKsBesN4BQEi1K3SIozX4XBETHG5Siqq\n4iY0D0JQBTvGl/fH5eU1AIBGnxubulqxqes47v/6CPZ2duOkYgdOLS/Caf2KYQ+WoFDfdx2yYwdT\nUKdMDyCOr2vogSWi7S/eFWsV5225lnmcRU/hYXw2zpnyi+/7VlzGf8i2ZnmCEAPh7O1Z4gtR60Qv\nAPAppXQVIWQkgJGEECOllHskeyCEYNasWfjkk09yQoBIzVdAWAPZtm0bGhsbRRpIUVH4qdNqtcLt\ndiclQKITBYPBoMysJJiwhF4ken34x6tFGG96TVipoXqcvLte88HsKGHSz2TFnBIr5pRUYtAoP7r8\nAWxobsNXTa14YcdBrD+2Cf0NVoyzFGOspRgzisox0GxLuUZYNpZ9/l2btP2Uzh/M7vL92FG5BqQ3\nhBCMSlZklZYP6gj0Icn3Hj1CJPPPEADUm7A+B3BGTw2sDwGsB/ADAD9M1cRykdmzZ+Ott97Cbbfd\nlumpxERqvgLCvU0++ugjNDY2oqKit1Kp8LfVaoXH44Hdbo/khcRLIBAAIQQ+nw9+vx8OhwNutxuh\nUAg6nS5iwiooKEB3d3ckH0WLMN5s1UB8XgqTWb4ihEIUOl3slcLnozCZYvgbelAyscrHxQ6KREqT\n2I0GzKgow4yKcGj7prUUe32d2OJpxZeuRizevBM6QjDeXoQx9iKMtReh1uKE0yCvak0IBaXiebMc\n6/GQaC95T5MblnL1YcFOE9AuKfcyeFyXaHuvXh7+b2+T/8YGHGxXfd10oFaAEEqpixDyEwCLKKX/\nRwj5NpUTy0XmzJmD2267TZThna2wNJDRo0dj27Zt8Pv96N+/t0T2gAFhR2pxcXGkgm90+9t4CAQC\nsNls8Pl88Pl8sFgsEW3DZrNFNJCCggJ0dXWhuDjc80GNDyQW6dRAlGAJhbUfs80RhQ51dT7WrZZ/\nFjXD2VpJeMGVC1qLVWxvNxeI72e/AfG1KvB7KYwSoagnOtSanag1O3GZswalZXo0BNzY0tWGLV1t\n+Mvh3dje1Y4iowljC4owuqAIYwqcGF1QhMpyvWzeJ00K+z5CQQpdj+Oc6ACqUtANU9BMpCVWpJ/Z\nymnsTt7D11+EkEP+u//TWfJIr5s/dYlyS5Qc8FIErYSqDBRINaoFCCHkewhrHEKIgvaFdXKcfv36\nYdKkSVi5ciUuuyy7yxS0tLSgtFRshx0+fDj27t0LABg0aFBkXNBASktL4fF4NBEgfr8ffr8fBQUF\nkV4kNpstooHY7XZ0d3crVttNRgMR+sCnErOFoHKQCV6veE6NR/PM6ksoQOWL2cZ/AdIFv9BBRKVZ\nWltDsMCMyeiPyQX9gQLAXktQ5+3Gtu42bO1ux+rWBuxydWCg1YrxTifGO4ow3unEaIcTQvJEa3Ov\nxCgqkX+2AQ9giMPK11ov3rm5UfzQ4Sxmf3+qHn6XfcI//UI29PtZ4uXz8YEtsn3+/Y9C+D1iwd48\nMGuyJwCoFyB3AvhvAG9TSrcSQoYCyJpG4NmQByJw1VVX4Y033sh6AdLU1ITy8nLRmMFgwMiRI9Hc\n3CxqujRxYribcXFxMQ4fPgyHw4GWFvkXPhaUUvj9fpEGYjKZUFBQENEMBCe6xWJRJUDi9YG0tLSI\nNK+bbroJK1asQH19fdzvpy9yO4hXPY4i9pNwPaNJ55DR4sVw/3b5XQr6CAYSOwba7ZhjD+ekBGgI\nbYVd2NzRhs3tbXi7/jD2dHWi2mLH2IIiDDUUYoTVgWFmdo2qfZ+xn3WL+weQSDkwtaZFAfexblhj\nlKIv0FN0SxzwUy+W93z/998LQf0EugRjDTKSB0Ip/RxhP4iwvQ9A/FUHU0Q25IEIXHHFFbj33nuZ\nC3Q2IXWUC6xYsSLSPEpgxowZOHLkCO666y50d3ejuro64Ta+ggbS3t4eESDR3RCjTVjxaCBqBUhd\nXZ0o+95gMIiiwDjZh4HoMKrQgdEOB66qqgYAeENBfFPfha1dbdjS3ob32w7jgKcLJTozhhgKMcTo\nCP9vKEQ1NTH9Pn6lciSk794ene3sAJKAzwCG+wZLqxfJxi6quwHWAb1C5e7B8hIu/++gHt0Sx7pz\nUhJOH2QuD4SjktLSUlx66aVYvHgx7rvvvkxPRxElAcdqikUIQWVlJQwGA9rb21FWVpawCUvQQJqb\nm0UCRNBAop3oXV1diqVKWJnosSLDnE4nOjo6UFlZGRmzWCyRulu5gN8X7sGRamgIoqfzVOQ3sUrb\n97VvNGadHuPsxRhnL8aPejpSB0IhfL2/HXu9Hdjj68QH3jrs6ewA2QCMLHBgpM2JYdZCDLc5MNRq\nh51VP4RxLaMRUFMBZ993Sh+MfNF/t/pF0fa8vVfDIKnX9auTB8iOu6G+De1ewJm+IgB9wgVICrjj\njjtw4YUX4s4778xaZ3pjY2PcHRQNBgPa2tqSEiBSJ7pgwopXAxGERbSAieVILykpEdXdAgC73Z5w\nSHJfpMqEtetr+cpBiFu2EAcDFHqD+gVfapaRPp37fEEk+66k0WaOIrlpyedJ/BoGnQ415kLUmAsx\nq2eMUgq/PYCdrnbscnVgXXsT/np0Hw56utDPbMEIeyFqCwsxwm5Hrd2BoQUFsBp0oFGZ5pNPF9f7\n+upfXYjnK2Nx6ODp6Pu7eejncv/J0Pfvlo09e252OM8FuABJARMmTMDkyZOxaNEi3H23/EuQDSRi\nYjMYDOju7kZZWVnCZh+WAIk2YSk50aVmNakAic5yV6K0tBTHjx+PPEmfffbZOPfcc/Gb3/wmoffS\nFx51jTwAAHo9mAuS2qd+W4F8IT50gB1mPWI0+4GmtUV8f0sr1MXIsMJrAcBqlT/df7tW/Bg/fHQ8\n+SusuifyMWm4MSEE5SYLyk0WTC/qjSwM0BCOBtzY6+rAHlcnPjrSiOdce3HY241qhwWjigswutiO\n0SV2lHaVosZmh7Gn3P3wUex7KG2YJXDVcxWysVd/dEQULRYKhecejb+5G0ZpGZQuN2C3At1ugF16\nK62oTST8PwAPA3AjnAdyEoC7KKXsYjIc/Pa3v8Xs2bNxww03RBLxsoljx46JQnXVINTHKisrg8vl\nSsisIZiw/H4/fD4fjEYjiouLI5qBIFSKiorQ2toaEQpSgSXtXMjSQN599108+uij+PLLLwGENZBo\nAfLOO+/ENfd4cIfCC7JUE2AJC6UFqW6/F9nuji8dxOhnC+DgHm2DNC2F8oeDrrawJzna1FYxSH7d\noJ9lqtLB6rdjiNWO2VHBiP5QCN5BzdhxvAvbW7vx1p6j2HJsHxq8bgw021Bjs2MAbBhssWOQqQDV\n5gIU6cM+lt3b2Vr5JJ8DOpN4XjabeNvvls/7m7Ofl42NPzfqy/O7a5jXSydqNZCzKaW/IoRcCuAA\ngMsQdqpzAaLA+PHjcckll+C+++7Dn/70p0xPR8bBgwdRXV0d1zHC/lVVVTCbzeju7obdrr6cN6U0\n0jAqEAjA4/HAZDKhrKwsEtXl9XphNptRXl6O9evX9ylA9Hp9RDNh+UAGDBggClUWBIiAXq9PWUhv\ndyCAzo4g6g+JF9iRY7PTpJkOpNpBvNFMms+HkUth1usxxGnHmJLe7/WB72wIkBDqPN046O7CN4fb\n8JWrGcsDB3Ek0A0KoMpQgFJqRX/YUAEb+sOG/rDCRPTwbm6WXUvaS551L5gPaAYdEAgBpuwwHqmd\nhbDf+QCWUUrbeUG62Dz22GMYN24cVq9ejTPPPDPT04ngdrvR3t4eSRBUi+Azqa6uRllZGZqbm+MS\nIAAi9a0sFgs6OjpgMplQWloa6f/h9XphsVhQXl6O5ubmiFCQ+lwCgUCkXhbA1kB0Op0oHFnodyLs\np9PpknIMv/DCC7jpppuYr91SPDrh8/aFkpkk2eOli5VaJzrL9AKwM9f7DRDHnna2y7WKArtSZJQ8\n30R4L0RHIz6L6KTCqNmDVftDqXJva4NZ5EjfuUX47hlQiSKMsJf0nplSdFA/jgS6ccjvwpFANzYE\nG1Ef6MaxoBtOYsKrb9ow3GnDMKcNQxw2DHFYMe50Byz6Xq3jyF75vQj4KUKSUibm78X30Jdq1AqQ\nFYSQHQibsG4hhJQDiNsITghZDOACAMcopSdFjZ8D4CmEM4MWU0of6xkfAuB/ADgopVfFe71MU1RU\nhBdffBHz5s3D+vXrReVBMsmhQ4dQVVUFXZwtTM8++2w89dRTGDJkSERrqKmpiescgUAABoMBhYWF\naG5uhtlsRmlpaaQlsFCssby8HE1NTX1qILEEiFCUUcBgMMBut0eiroT3L9T4isXjjz+OX/7yl5Ht\n6dOnK+472ZqaEG5pX3EAsBfqZGYxpQin/bvZP9vw4t57gN8rNql4PexOgZ5OduRRWT/50tLemngI\nanGV3En07w/D5zvr8t7VfsdX4vcBAKXl7GWu4TDb/DZinEF076T30mYX35sCGFABK8a6g5Gy8gAQ\npBRNQTeKxnRib6cLu9tcWFXXggOdbhzq9KDUbEK1zYbBBTY4vTZUmQow0GzDQFMBnHoj+rPMca4g\n9DY9gu6QQgxZelGbB3Jfjx+knVIaJIR0A7g4geu9BOAZAJFyl4QQHYBnAcwCUA/ga0LIO5TSHT0t\nc39KCGG3FMsBzj77bNx000246qqrsGrVKlgsmS98d/DgQQwePDju4ywWC+68804AEGkN8SAIEIfD\ngfr6ehQWFjJNWGVlZWhqaoqYqFgCxGAwRBZ+lhOdZaIqLS1FU1MTAESeqAcMGID9+2N3Z5b6sqLD\ngRUhEK1nNERBNDbb1I6Rm8X27mILCqmzPOuQ3C8BaXkRoNefFPAhkn/BKmXC1kqUNRCplsaKFmMx\n7jRIapoRAAVoO1aEk20EsAHoeYY8csiLo24v6gMuNLhcOBpyYXX3UdT7u9HgdyMIiur9NlTbbBhk\nLej534aGRR2osdsA6FB9qapppRS1TvQrAXzYIzweADARYaf60XguRin9ghAiXblOA7CbUnqw51pL\nERZOO+I5dzbz61//Gtu2bcO1116LZcuWRSrMZor9+/fHrTlIqaiowJEjR+I+zuPxwGKxoLCwEHv3\n7oXdbmeasAYOHIgjR45EijZKNQShGZXgfBc6HEaj1+tlQqWiokKWdd6/f/+IAFm1ahXmzJnDnPsF\nF1wg2pbWEotGWIAKJBFSPj8gXSFLStk/Q7Z/ID1OdaVFV476rlDSgAJWrS+7g32u7mb5voOHhbXL\nfd/1fsal5fL9GuvZQvNYPTu5w2AQh0pL/RO2AiIK8xX46hP2+WqGG2S9TybNCgEhAwAHAAcObzfD\naOrVKdr9Pny49jgavR40HndjNW1BIz2MQ6QL9w0fh4v6ZYcpS60J69eU0mWEkOkAZgP4fwAWAZii\nwRwGAjgUtX0YYaESTU47XHQ6HZYsWYKLL74Y11xzDV599VWYzZnLBNq6dSvGjBmT1DmGDx+O3bt3\nx3UMpRQulwtWqzUS0WW320WLumDCcjgcsFgsOHToUKQKcDRCKfijR49Gzs3ygYwYMUI0VllZiS1b\ntsjey7p16yLzUaK4uBh2ux1dXeFKqoQQVFdXo66uTrTfyZYS1uGawA75lS/iSiYstVV1o+tLhY9j\n/wRtTna4cnujvNbGgX1i89v4iazyHuoFEssv4/dRGE3qjo/uZBiN9N5JfTUjxrGXzaP17PNt3yw3\nj9ZeUgh9lMD4dkkbfBKlcYipEFU+ce2r5bbdaGjyosHnxzjmLNKLWgEifEvOB/ACpfR9QsjDKZpT\nBEJICYDfATiFEHKv4BvJRcxmM9555x1cc801uOiii7Bs2bI+n2BTydatW3HeeecldY7a2lq8+Wb8\nlkW32w2bzRZ573a7HU6nEwcPHgSlFF6vNyJchg4diu3bt6OsrAydneK6QMFgUFSSJBgMMk1Y//M/\n/4OdO3dG5lpZWYkPP/xQtN8TTzyBm2++GVdeeWWffiqdToeqqqqIvwYALrnkEjz99NPi81XG+1zF\nXjRZ5phR4+WVXe0lconAyg0BlCv8JtBgsk8C/hAMRrGVXir8/P4QjJJ9WOG6wvxkeRK+sF9Gb6AI\nBsL377sN8sV6hEK+yamnsx8W/BI3U+vxgKgIJAUFYXxeYyeZmCaxdavdMqHf/p1bJPxmXWqUvT9P\nl15mtnur56srda5nCrUC5EhPS9s5AB4jhJgBzXw4RwBE62NVPWOglB4HcEusE0TXwsqWoooszGYz\n3nzzTdx555049dRTsXz5cowdOzatc6CUYvPmzUlfd9KkSbj77rvjygUhhMDtdqOoqCiy+Dscjkjx\nxObmZrjd7kiC4/Dhw7F582ZUVVVh69atonNJBYjP52MKELPZjF/+8pcRZ3tFRYVMGPXr1w/9+vVD\nQ0MDAODuu+/Gk08+CQC48MIL8d5770X2HTZsmEiAPPXUU7jrrrswadKkSIhwZ0fvaiHt88GKMrI5\nAJZpSsm0lQxqNRCp8FLqvSGN1hLY8q18IR9aK/bV7GA8mZ85kB3m3NXCqh4YnuCwU3ondmCfXOgq\nf0fZglsq2KqHiK0FRlMIhMg/ryM72DW0Blab5YKFBkVajruTEXTQJI8S9HhCaOsOoMXLDgBQQusi\nigJqv6FXATgHwOOU0jZCSAWA/0rwmgTiT+1rAMN7fCMNAK4GEFeGTDYVU4yFwWDAH//4R7z66quY\nOXMmHn74Ydx4441xR0Qlyv79+2EwGDBw4MCkzjNs2DDodDrs3r0btbW1qo4RnN7RJizBH1RTU4P9\n+/ejo6MjIhgmTJiAp556ClOmTMH69esjDnZALkCis9YFhHMLwhpQ5/h+4okn8PDDD4sy5IX5jx49\nGu+//35kjBCCmpoanHTSScwfqLr+FOyFjLXwBfwUBok9nRWaq+TDGFjD/sk3HxVPsn+V+NjS/uyF\nPRhIrLGYEl4PhdmibrE3mcO/mWgHezGj1Ho430K+4BvN7PFNa8Tl28dNtIp8HoK2I8XjDjHPx4o+\nGz5BL8g/AOzP1dUdkpkOa0bosPZYPbqLOvDZzTdj4MCBGDRoUORfZWUl7Ha77HsjfbBOazHFnmZS\newHMJYTMBfAvSulH8V6MEPI6gJkASgkhdQAWUEpfIoTcDuAj9Ibxbo/nvNlUzl0t1113HSZOnIgb\nbrgBS5cuxZ///Oe4a1MlwhdffIHp06cnXRiPEIKLLroIS5cuxYMPPqjqGJ1OF/GB/PjHP0ZJSa+v\nYOTIkdi+fTva29sjgmHKlCmor69HWVkZysvL0djYGOlTEi1ATCaTqPCiACtYQW0otVDDLDrxEACu\nv/56PP7447L9R44ciTVr1mCcsVi0cPfrL35yZvU01xsA1sLDWvjqD8uf2iurTLL9jio4iAcPV/fM\nKBVAyvknbOFnMgM+iWyR+hakCyYArF3Fjh4780Ir5PcoLEDaGqI1BPn7Vpq7kr9Ep4fIZFU5NCTS\nsrrbCHPuBiNFwM8wRTL8UYXDjNBHXXvDc17oJL9JVnLhf51Zg2+bS9DlD8J3yik4cuQI1qxZg7q6\nOhw6dAgNDQ0IBoOR34z03/HjxxOupM1CbRTWnQBuBCC04nqNEPICpfSZeC5GKWV2o6eUrgSwMp5z\nRZNLGkg0Y8eOxdq1a/H0009jypQpuP7663H//feLFlatWblyJc466yxNznXzzTfj3HPPxT333IOC\ngr77HQDhJEJBA5k6dSqmTp0aeW3ixInYuHGjSICceuqpAMJVdGtqarBv376IAPH7/ZFF3uFwoKur\nS7et8YsAABsvSURBVFEDiUbQQIYOHarqPQpOeoExY8bgqaeewj333CMaP+200/D888/jd2VTgCj7\ntDRUtHKYXB3pbtMxbeeslqtGs9xGH09VW+WEQPFidbxRvE/TUbbJZMYothP9jPPkJqfOFkk/kD3y\n41iCB2DPu1fI9Qox1qKrlPty+CBb66+sEpusaIiItMg9W9gq5ZS57PFv1siX2eObxfet7bi62mnT\nCs04p6AcMOjgvIVt3Xe5XGhubkZTU5PsX3t7u6btC9SasH4CYAqltBsACCGPAfgS4ZwOThLo9Xrc\ndddduPrqq/Gb3/wGI0eOxF133YVbbrkl0s5VK9xuN1auXImnnnpKk/OddNJJ+P73v4/f/e53eOSR\nR2Lu7/P5RAIimkmTJuEf//gHurq6IgLUarXi008/xdixY/HrX/8aW7duxYwZMwCEo7UEARIIBNDd\n3Y1AIIB58+bh+uuvx6xZs5hmQUGA9JUEGL2v0+nExx9/jN/97neR8TvvvBO3SH688+fPx5lnnolt\np98i8g62NIslQFWtTuYYbQp7/GTXHz5W/vMsYHwljuyW79fSxA5dNRjZ12pvFS9g5QPUdSyilG33\nZ45LsslZwmLOFezr+tyAdN5Nx8LvsaR/b/KgFh0fjUVm+Bn9yAVMpVb4WuSaYLDADH23/Dh9iQnB\n4xIBXGgCOnvHzOVWeJvE5zSXWeFtFo/px5bB5PPBb1GO4rTZbKiuru6zVJFWlURUt7RFbyQWev7O\nmtDaXDRhSamoqMCiRYtw11134eGHH8awYcMwb9483HnnnRg2bJgm13jjjTcwZcqUuIso9sUTTzyB\nyZMnY/r06YqRXUIpdr1ej4aGBlkrXSCsbWzevBkdHR2iHBWhBMyECRPw5Zdf4tZbbwXQm08ChH0T\nXV1d8Pl8cDgcItOWFOG1aN+GEuvXr4der0e/fv3w+uuvi16Tnluv12PIkCHYadQh6O99EpUmDna3\nyhfIYDDA1EBYkUcsHwHbRKNQvkOhzLtU25E+ySuGBSukNPk98hesdvET+lmXypcftf3MoyEOC2hH\n+KnaXG6Bt0n8hM0aAwBTmRW+ZrkgmPGxOEe6/lfvgbb3Hj/r29uZ89jdwVCpAIxiyEQdEd+fi0zy\nskLSfQBgXWND5O/Yj0ByMtKREOEM8v8QQt7u2b4EwGLNZpEkuWrCYlFbW4slS5bgyJEj+OMf/4ip\nU6di/PjxmD9/Pi677LKI8zlePB4PHnnkESxaJO+OlgyVlZX4+9//josvvhhLly7FrFmzZPsIVXcL\nCgpw8OBBpgCx2+0444wz8P777zNNeHPnzsWCBQsQCoWg0+ng8Xhgs9nwyiuvwGKx4K677oo42YVc\nDptNHvIqPHkdOnRI9pqURErPDBkhXi2+WSd2yLKyn4/Usc1DzmK5WfCrlS7ZmNWmlF0uX/GPHmKX\nJBk2WiwQD+wSn5PVazxMEpntdgvQJVnYCy1AJ8PEInliBwBjqQX+Fg/6LemNuTmfyu+lgbDLrRh0\nCk/xbU3iaS66kr2fBFeAwGaQ39suH2A39T3mCYZg0ccOpHH7CaxGCjfD16KGjHQkpJQ+SQhZg16h\ndz2l9BtNZqAB+aCBSBk4cCAeeeQRLFiwACtWrMArr7yCO++8E7Nnz8YFF1yA888/X3U/D0op7r77\nbpx00kma+T+imTZtGpYtW4arrroKTzzxBK677jrR64LZymq14tChQ4oa0JIlS3Ds2DGmej1kyBBU\nVlZi1apVmDt3LtxuN0pKSvCjH/0IPp8P8+bNg9vthslkipyfpYEISJP/0kVzg/bNqzJKgQ3olgs1\n4jCDdkjMOQ4zEDVmeeqH8uOUsgMC8q6R3zMk9jAVL64AhS1Ka+vwBeEwybWD57fLH1gAwM3QxqTM\nHix/f+dVl6BQkifzl42973nOoJinlZF2DYQQogewlVI6CsBGza6sIfmkgUgxm824/PLLcfnll6Op\nqQkffPAB3nvvPfziF7/AiBEjMG3aNHzve9/D1KlTUV1dLbP7b9u2DQsXLsSePXvw8ccfa96WVGDm\nzJn45JNPcPnll+Pf//43nnzyyYgG0NbWhqKiokiUlJIWVVJS0mcAwW233Yann346IkAEE5bQP+TI\nkSPo168fioqK0NXVpfhey8vLI7W3tEZfbEOwtXdBNZfb4G3q3TaUWBE4LrV12+Btli/CeqcVwXbx\nvqZyC3wScwzLFGMqs8DXLH+SNxRbEWiVm22kC76xxAp/1Dz1xWYEW+X2fesjd8jGAKAo0CobC9HU\nCM8uP4W9Jyqq209RIImQin49mg4vhcMsH+8MAIVRK+OLO8Va24GOJtkxAIAggdGkXYLf/34rv4fU\nZwExAYgvDSRC2jWQnvpXOwkh1ZTSzDy2cQCEF7758+dj/vz58Hq9+Prrr/Hll1/ijTfewN13343W\n1lZUV1dHTER1dXUIBoO46aab8PLLL6e8ve748ePx9ddf42c/+xlOOeUUvPjii5g+fToaGhrQv39/\nXH311di3b1/C5//hD3+Ihx56COvWrUNra6soyKCiogL79++PRGn1FRW2atUq+HwJ/gJjMPz1H4m2\nRxrEWdBBhslHB/YTKivbucInrz9mM8iDEpQWaxth35f2oFigVuvFQt4TFCdfaoH0yR5QXuy7/UCB\nxJcg7PvYpl7BVsAIiW7xsh3ira3sxb64WKy5DpTcsoCPwMAQFNs+Yz/8DJ3SLts/6AX0URY0l5vA\nZo0tfFyfRt0bdZa1lKLWB1IMYCsh5CsAEe8jpfSilMwqTvLRhBULs9mM6dOni6KJXC4X9u/fj7a2\nNlBKUVVVxdRKUonT6cTf/vY3LF++HFdddRUuvPBCGI1GjBs3Dj//+c+TOrfVasXChQtx7733wmAw\niEx4NTU12Lhxo2IhxGhOPvnkpObRF10BCnsS/TpyjU5/EIVGuQBUowk8t00uTJsUqurrCKscSfh4\nU4q/3l4PgdnSu7jvWMsWFLpQCGDUDNu1QR46Z28XC7WDjONOObcdRqlVrCe8LdG3rLUJi1AVAeSE\nkBmscUrpZ5rNJEEIIVTNe+Ckn5aWFjz++OP417/+hRdeeCHpAo5AOGR38uTJ2LRpk6iq8IMPPojf\n/va3ePHFF3H99dcnfZ1EWbBBHK31X+P7wR61wHYGfLAZxD9/lx+ifQTcgRBsBvH4EdcRWCWPfSwN\npMsfkD3dA0AoYIXdKF9+6j3NogU/ECoQ7dfi6ZAJBAB4cD07bMrCUKo6JRG25QyFWFmAsMcBAAEC\nU88TfgHjkbhFISK3udEMPSNCqtDqRbTiuG2FuIy/V/oB9CAVCgIdxXLhV3jcDRrlNKeMN2hnhBIb\nfb1C962XE2+RRAgBZTWzj5M+NRBCyHAA/aWCoqcqbwP7KA4nTGlpKR599FFNz2kwGPD222/jn//8\npyjc95RTTgGAlCZhJsJz24+JtlkV0tu87N/xAJv8waibUUbjJyNDKJAIhecV+nN7AnJfCwD4QkC0\n6SdExSar8Omz60HN7yUwminW/ac3KGPW947BZBHPM+ABDAwFpv4btjnP2i0JvlCOxUiYkkbx53B8\nQAFCKqKwso1YJqynAPw3Y7y957ULNZ8RhxODIUOG4Gc/+5lo7Oyzz0ZJSQkmT56coVlljj9tj53T\nko14fQRmiW/A7ycwGlllXeQO6q2re0xDUe6aL1eKtQUAMHsUQo1jF09goguEEDKoX+zV7N/vsNzH\n1OVkSL0QBXSJm7C0JpYA6U8p3SwdpJRuJoTUpGRGCXAi+kA4Yux2e8oiq+LB59PBZOo163i8BBZz\ndj25pwOfr9esJCAVAp9/VSY7LuBnL40hhgywMOpexYNaQUCCIZG5aeC+NuZ+bWVW0X4CQ3bIv5cB\nPWGn8MfA6kquo2RafSCEkN2U0hEKr+2hlKa++l8MuA+Ek01M+e0q0XbQLHYGXDrzKCwSE0tjhw4m\nhpAp0kG2b0u3XCD5Gd3xvF4CM+OcHS75wg4AXW4imoPHK96P4TYBALS52RrDuk/kOUo6SQ8LUiSf\nd1wCpDssQDyFvTYmG8NvoKSBlDZ0McdbKsR9QoqPqdPwpO+vr3FdUDwWYtg2WRqIIyq0+rW/y/No\n1JIWHwiA9YSQGymlf5Zc/KcANiR7cQ7nROOD9+VZ+CEFD7HRKw/F9djlXt+Lz22Uja36p/w6AEAd\n7AWadIid4dI5nTGjWeZbAID1X/djnw8J1CRJkGhNQhcMyXwJUg0iK2EUD8uFeccSIL8A8DYh5Ifo\nFRiTEXYrZUFLdw6H43UTmFXkECTDVx/KfQsAAI1jFuLxLwgL7KBdvSX3WULX4GcLs4CCWsUSQiKU\nKkgmgdEnn2ORl1GwMQ7fSzroU4BQSo8BmEYIOROItOB9n1L6acpnFgfcB8LJFgzBEAJpfmr8/F15\nGC9SmzOaMip2sf0Lh2rlkqriYAcAIKhkX0uQfofEDm1p2K7Zw07S9JtjlyxJmh7h5WQ52FWQkTyQ\nbIb7QDjZxFU/XCra3ney2MRj7pY7fpM1Ydk65Fn1SrkKak1YCFGRJmB2s/0InhJ2jCtxy5+oDb6g\n6JwsH0j/TWwBUj/EiaAkV2bo5nBJkWgBEpcGYmA7sqXnkAkQhXvhN+mY52P5QEiQiuoM6APqTX6v\n/OO62DvFIF0+EA6HkwR6f1C28CVDopFDkeP9IYQYT+wkFAKNqlhQeVBc3K+lf3x5CiwzUOUB8Tkb\nTipCSGUa+bAtzbKxAOs+MMxL7ML2gCHArkwsoyd0NhZGXwivLp8nG//hD16XX0VP8Nobvf31bv/x\nMnS0adfoKV1wAcLhpJDB28QhnA01TpkAUFrsWePVO4/L9msc5JCNldezI4d0IfaTrt/c91LAylMA\ngLrCUqZAkgoLFlUb5e9FSXNSi2qhEAdWicahpDEqYWBoRVKeeVle2Gr+Ja/GdZ1MwAUIh5NGKhgL\nq5LtXCksVLZfLKdvCqnews690dov0ScqNYRcg9XEK0XFtBOGCxAOR0OEDt3phKUduAtSUH8jS0k2\nuS5uFKKwnEWJObb7uoyasUySFwKER2FxsgWpA9aXjsicE5UUhNOqQUeBV96W+zq0xlFkkflFHEkK\nKR6FJYFHYXGyiXlX/FW0rUaAxGPC0jMiilj7KWkgan0gZrc4Wox13b5gmbB0gZBowWdFHnnNeqY5\nysqIXhPmxKpkmwwkKJ4n6/7GEwml5MvQIpoqUXgUFodzIqL2qTtZv4D0Oho87Rv9fWe7A0BBF7u+\nFavUhxLSEh+3/eQttLfLI5xYPgYgrGFkna0oS+EChMNJJdKFPMmF2BCURxkxF+JudsdFt7StnwLS\nzOjwU7h8UWWG0mYZf1x8eVz750L0U7bABQiHk0LUhIAqZjDnaXRRrpOsHyKf4AKEw9EQp9PCNJck\ngo1hzkk6PFZBKOVC4b5Mkkl/RTbDBQiHoyFSc4kacwgJ0eQcwXGYxeyMsicskq7rpLX2lKGIK07f\n5IUA4WG8nFymkNHDAlCf8cyq5JrWRD4GLEGVjFBivcfI/YkSLokWGUwlqQjHTRQexiuBh/Fyshmp\nBsISCkoZ56x9WYKBFWKrJEDUhuNKF3ulOSo50Vlht9Jzst6fUuFDVshv9PGsGlSJwtIa882EpVUY\nLzd6cjicxFFZboUJf/DLefLChMXh5AzJ2vKzzBcgjTKLB1ZfjWxrmMTpGy5AOJw0wiqDEU/egT5A\n8epycaLcdZe9psncOJx44eKew+GkB61NVj3n07qIIUc9XAPhcFKINAInbdE3GpvKlMp+xIPRFxI5\no5PN+E5XUUOOMlyAcDgphNUoKB2wTF2AenOXUnc9Kbzsx4kNN2FxOBxOFFItkZcuUSatGgghZDGA\nCwAco5SeFDV+DoCnEBZoiymlj/WM2wA8B8AL4DNK6evpnC+HwznxyJTWmIukWwN5CcDc6AHy/9u7\n95g5qjKO499fuVgwIsE/DLShakppQAxqAiXcrFIgkIoUjBQBxbsk9Q8DSoIxb8EYUCKJrWKQmzRC\n0wYqlksEkdIAkXARai9oVW5FpKJAwiUE6uMfc5adLrvd3dndmd19f5+E9J0zs/OefbLL855z5pwj\nTQGWpvIDgYWSZqfTC4CVEfF14NNlVtSsck0GHZoNGHdaZtZvpbZAIuJeSTMaig8BNkfEUwCSlgMn\nAY8D04F16br2O9ObjZFOB4mXXn1qCbUxe6dhGAOZBjyTO96Symo/T08/D8/sKbMRNfQtE89OHynD\n/hTWTcBSSScCq6uujNmoa9VaGZbJiDttC371m3e2uvy013AahgTyLLBv7nh6KiMiXgO+1O4GExMT\nb//sVXnNzLbX71V4a6pIIGL77qgHgZlpbOQ54DRgYTc3zCcQMzPbXuMf1osXL+7LfUsdA5F0PXA/\nMEvS05LOjohtwCLgDmADsDwiNnVz34mJiYFkV7PJonFsZOjHSqyQNWvW9PUP7rKfwjq9RfntwO1F\n7+sWiFlv/CTX5FBriYxkC2RQ3AIxM2tvpFsgg+IWiJlZe26BmNmk02w9Kq9RVb2xaYH48V0bVY1L\nvufLLeP1qfqj34/zKkZ85qekGPX3YDaqup3g18l+IPlrbDAkERE9r+7hLiwzMytkLBKIn8IyG37u\nkqtev5/CcheWmRW2oy6sdl1R7sKqjruwzMysUmORQNyFZWbWnruwGrgLy6w6i764suUjyO0evXUX\nVnX61YU1FvNAzKwanp8xuY1FF5aZmZXPCcTMzAoZiwTiQXQzs/Y8iN7Ag+hmo8mD6NXxPBAzM6uU\nE4iZmRXiBGJmZoWMRQLxILqZWXseRG/gQXSz0eRB9Op4EN3MzCrlBGJmZoU4gZiZWSFOIGZmVogT\niJmZFeIEYmZmhYxFAvE8EDOz9jwPpIHngZiNJs8DqY7ngZiZWaWcQMzMrBAnEDMzK8QJxMzMCnEC\nMTOzQpxAzMysECcQMzMrZOAJRNJVkp6XtK6h/HhJj0v6q6TvNnndByVdKWnFoOtoZmbdK6MFcg1w\nXL5A0hRgaSo/EFgoaXb+moh4IiK+UkL9xoZn42cchzrHos6x6L+BJ5CIuBd4saH4EGBzRDwVEW8C\ny4GTBl2XcecvSMZxqHMs6hyL/qtqDGQa8EzueEsqQ9KZkn4iae90rufp9t3o9kPW7vpW5zst39Hx\noL8Q3dy/k2sdi/bXTMZY/OuFTV29dpxjMWqfi6EbRI+IZRHxbeANSZcDBzcbIxkUJ5DWv7vXax2L\n9tdMxlg4gbS/ZlhjUcpiipJmAKsj4iPpeA4wERHHp+PzgYiISwrc2yspmpl1qR+LKe7cj4p0QGzf\nFfUgMDMllueA04CFRW7cjyCYmVn3yniM93rgfmCWpKclnR0R24BFwB3ABmB5RDRvx5qZ2VAa+f1A\nzMysGkM3iG5mZqNhqBNID7PYJekHkn4qaSy2N+shFkdLWivpcklHlVfjwSkai3TN7pIelHRCObUd\nrB4+F7PTZ2KFpG+UV+PB6SEWJ0m6QtINkuaVV+PBKW0FkIgY2v+AI4CDgXW5sinA34AZwC7Ao8Ds\nhtd9BrgWuBSYW/X7qDgWRwG3AlcDH6r6fVQZi3TdYuBc4ISq30fVsUjXCriu6vcxJLHYE/hl1e9j\nSGKxopPfM9QtkCg+i31/4L6IOBc4Z/A1HbyisYiItRFxInA+cGEplR2worGQdAywEfg3JU9QHZQe\nviNImg/cAtw28IqWoJdYJN8DfjbAKpamD7HoyFAnkBbazmIH/kk9eG+VW71SdTOj/yVg15LrV6Z2\nsbiM7FHxQ4HTgXFeZ62jz0VErE5/XJxRRSVL0kks9pF0MXBbRDxaRSVL0vcVQMqaB1KKiFgGLJO0\nG7BE0pHA2oqrVYlcLE6WdBzwXrIFLCedWixqx5LOAl6orkbVyX0ujk4TeN9F1sU56eRisQj4FLCH\npJkRcUXFVStdLhZ75VcAiTaTu0cxgTwL7Js7np7K3hYRrzPef2HWdBKLVcCqMitVkbaxqImI60qp\nUXU6+VzcA9xTZqUq0kkslgBLyqxURTqJxX+Bb3Z6w1Howmo5i13SrmSz2H9bSc3K51jUORZ1jkWd\nY1E38FgMdQLxLPY6x6LOsahzLOoci7qyYuGZ6GZmVshQt0DMzGx4OYGYmVkhTiBmZlaIE4iZmRXi\nBGJmZoU4gZiZWSFOIGZmVogTiI0lSdskPSLpT+nf71RdpxpJKyV9IP38pKR7Gs4/2riPQ5N7/F3S\nfg1ll0k6T9KHJV3T73qbNRrFtbDMOvFqRHysnzeUtFOazdvLPQ4ApkTEk6kogPdImhYRz0qancra\nuYFsKYqL0n0FnAocFhFbJE2TND0itvRSX7MdcQvExlXT5aglPSFpQtLDkh6TNCuV7552cftjOjc/\nlX9B0s2S7gJ+r8zPJW2UdIekWyUtkDRX0qrc7zlG0k1NqvB54OaGshVkyQCyJeevz91niqQfSXog\ntUy+mk4tz70Gso3DnswljFsazpv1nROIjavdGrqwPps7tzUiPg78gmx3QoALgLsiYg7wSeDStC0A\nwEeBBRExF1gA7BsRBwBnAocBRMTdwP6S3pdeczZwVZN6HQ48nDsO4Ebg5HQ8H1idO/9l4KWIOJRs\nQ6CvSZoREeuBbZIOStedRtYqqXkIOHJHATLrlbuwbFy9toMurFpL4WHq/+M+Fpgv6bx0vCv1pa/v\njIiX089HACsBIuJ5SXfn7rsMOEPStcAcsgTTaG+yHRHz/gO8KOlzZDsmvp47dyxwUC4B7gHsBzxF\naoVI2ki2jfP3c6/bCuzT9N2b9YkTiE1Gb6R/t1H/Dgg4JSI25y+UNAd4tcP7XkvWengDWBkR/2ty\nzWvA1CblK8i2Uz2roVzAooi4s8lrlpOtrLoWeCwi8olpKtsnIrO+cxeWjatu9zz/HfCtt18sHdzi\nuvuAU9JYyPuBT9RORMRzZNspXwC0egpqEzCzST1XAZeQJYTGep0jaedUr/1qXWsR8Q+ynRUvZvvu\nK4BZwPoWdTDrCycQG1dTG8ZAfpjKWz3hdBGwi6R1ktYDF7a47kayvaQ3ANeRdYO9nDv/a+CZiPhL\ni9ffBszNHQdARLwSET+OiLcarr+SrFvrEUl/Jhu3yfcc3ADsDzQO2M9lkm5Va+XxfiBmXZL07oh4\nVdJewAPA4RGxNZ1bAjwSEU1bIJKmAn9IrxnIly/tNrcGOKJFN5pZXziBmHUpDZzvCewCXBIRy1L5\nQ8ArwLyIeHMHr58HbBrUHA1JM4F9ImLtIO5vVuMEYmZmhXgMxMzMCnECMTOzQpxAzMysECcQMzMr\nxAnEzMwKcQIxM7NC/g/XBW/wr41qsAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -411,7 +644,7 @@ " color=cm(value)))\n", "\n", "# Overlay total cross section\n", - "ax.plot(total.xs.x, total.xs.y, 'k')\n", + "ax.plot(gd157.energy, total.xs(gd157.energy), 'k')\n", "\n", "# Make plot pretty and labeled\n", "ax.set_xlim(1e-6, 1e-1)\n", @@ -426,32 +659,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Exporting to HDF5\n", + "## Converting ACE to HDF5\n", "\n", - "To create an HDF5 nuclear data file for a nuclide, we can use the `export_to_hdf5()` method." + "The `openmc.data` package can also read ACE files and output HDF5 files. ACE files can be read with the `openmc.data.IncidentNeutron.from_ace(...)` factory method." ] }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "gd157.export_to_hdf5('gd157.h5', 'w')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's see what's in the HDF5 file." - ] - }, - { - "cell_type": "code", - "execution_count": 12, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -459,29 +674,80 @@ { "data": { "text/plain": [ - "['Gd157.71c']" + "" ] }, - "execution_count": 12, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "h5file = h5py.File('gd157.h5', 'r')\n", - "list(h5file)" + "filename = '/home/smharper/nuclear-data/nndc/293.6K/Gd_157_293.6K.ace'\n", + "gd157_ace = openmc.data.IncidentNeutron.from_ace(filename)\n", + "gd157_ace" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "All reaction data is contained in the `reactions` group under a nuclide. While the group for each reaction is only labeled by its MT value, we can look at the group attributes to get a label for the reaction." + "We can store this formerly ACE data as HDF5 with the `export_to_hdf5()` method." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "gd157_ace.export_to_hdf5('gd157.h5', 'w')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With few exceptions, the HDF5 file encodes the same data as the ACE file." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gd157_reconstructed = openmc.data.IncidentNeutron.from_hdf5('gd157.h5')\n", + "gd157_ace[16].xs.y - gd157_reconstructed[16].xs.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And one of the best parts of using HDF5 is that it is a widely used format with lots of third-party support. You can use `h5py`, for example, to inspect the data." + ] + }, + { + "cell_type": "code", + "execution_count": 22, "metadata": { "collapsed": false }, @@ -504,6 +770,7 @@ } ], "source": [ + "h5file = h5py.File('gd157.h5', 'r')\n", "main_group = h5file['Gd157.71c/reactions']\n", "for name, obj in sorted(list(main_group.items()))[:10]:\n", " if 'reaction_' in name:\n", @@ -512,7 +779,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -541,9 +808,10 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 24, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true }, "outputs": [ { @@ -564,7 +832,7 @@ " 7.77740000e-01])" ] }, - "execution_count": 15, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -572,57 +840,25 @@ "source": [ "n2n_group['xs'].value" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that we can go the other direction, converting data from an HDF5 file into a `NeutronTable` object:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gd157_reconstructed = openmc.data.IncidentNeutron.from_hdf5('gd157.h5')\n", - "gd157[16].xs.y - gd157_reconstructed[16].xs.y" - ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 2", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.2" + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, diff --git a/openmc/data/data.py b/openmc/data/data.py index 21fffc8cba..0365b37944 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -122,10 +122,11 @@ ATOMIC_SYMBOL = {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', 114: 'Fl', 116: 'Lv'} ATOMIC_NUMBER = {value: key for key, value in ATOMIC_SYMBOL.items()} -REACTION_NAME = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', 5: '(n,misc)', 11: '(n,2nd)', - 16: '(n,2n)', 17: '(n,3n)', 18: '(n,fission)', 19: '(n,f)', - 20: '(n,nf)', 21: '(n,2nf)', 22: '(n,na)', 23: '(n,n3a)', - 24: '(n,2na)', 25: '(n,3na)', 28: '(n,np)', 29: '(n,n2a)', +REACTION_NAME = {1: '(n,total)', 2: '(n,elastic)', 4: '(n,level)', + 5: '(n,misc)', 11: '(n,2nd)', 16: '(n,2n)', 17: '(n,3n)', + 18: '(n,fission)', 19: '(n,f)', 20: '(n,nf)', 21: '(n,2nf)', + 22: '(n,na)', 23: '(n,n3a)', 24: '(n,2na)', 25: '(n,3na)', + 27: '(n,absorption)', 28: '(n,np)', 29: '(n,n2a)', 30: '(n,2n2a)', 32: '(n,nd)', 33: '(n,nt)', 34: '(n,nHe-3)', 35: '(n,nd2a)', 36: '(n,nt2a)', 37: '(n,4n)', 38: '(n,3nf)', 41: '(n,2np)', 42: '(n,3np)', 44: '(n,n2p)', 45: '(n,npa)', From 2342d17431ac10202f71402e3d6af6899b32396c Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 29 Jul 2016 11:09:54 -0400 Subject: [PATCH 77/82] changed mgxs velocity to inverse velocity to avoid test suite round off issue --- .../pythonapi/examples/mgxs-part-i.ipynb | 8 +- .../pythonapi/examples/mgxs-part-iii.ipynb | 2 +- openmc/mgxs/library.py | 2 +- openmc/mgxs/mgxs.py | 83 +-- .../inputs_true.dat | 2 +- .../results_true.dat | 252 ++++----- .../inputs_true.dat | 2 +- .../results_true.dat | 84 +-- tests/test_mgxs_library_hdf5/inputs_true.dat | 2 +- tests/test_mgxs_library_hdf5/results_true.dat | 318 +++++------ .../inputs_true.dat | 2 +- .../results_true.dat | 516 +++++++++--------- .../inputs_true.dat | 2 +- .../results_true.dat | 2 +- tests/test_multipole/results_true.dat | 2 +- tests/test_tallies/inputs_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_arithmetic/results_true.dat | 208 +++---- tests/testing_harness.py | 8 - 19 files changed, 734 insertions(+), 765 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index 4146d0c861..7c5132100e 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -384,7 +384,7 @@ "* `NuScatterMatrixXS`\n", "* `Chi`\n", "* `ChiPrompt`\n", - "* `Velocity`\n", + "* `InverseVelocity`\n", "* `PromptNuFissionXS`\n", "\n", "These classes provide us with an interface to generate the tally inputs as well as perform post-processing of OpenMC's tally data to compute the respective multi-group cross sections. In this case, let's create the multi-group total, absorption and scattering cross sections with our 2-group structure." @@ -1167,14 +1167,14 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 2", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index 5c139661f0..39980a8fd7 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -550,7 +550,7 @@ "* `NuScatterMatrixXS` (`\"nu-scatter matrix\"`)\n", "* `Chi` (`\"chi\"`)\n", "* `ChiPrompt` (`\"chi prompt\"`)\n", - "* `Velocity` (`\"velocity\"`)\n", + "* `InverseVelocity` (`\"inverse-velocity\"`)\n", "* `PromptNuFissionXS` (`\"prompt-nu-fission\"`)\n", "\n", "In this case, let's create the multi-group cross sections needed to run an OpenMOC simulation to verify the accuracy of our cross sections. In particular, we will define `\"transport\"`, `\"nu-fission\"`, `'\"fission\"`, `\"nu-scatter matrix\"` and `\"chi\"` cross sections for our `Library`.\n", diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index fd974bfebe..bf822017c1 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -452,7 +452,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', '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'} The type of multi-group cross section object to return Returns diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 0c820a9204..c359379f49 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -36,7 +36,7 @@ MGXS_TYPES = ['total', 'nu-fission matrix', 'chi', 'chi-prompt', - 'velocity', + 'inverse-velocity', 'prompt-nu-fission'] @@ -430,7 +430,7 @@ class MGXS(object): Parameters ---------- - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', 'chi', 'chi-prompt', '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'} The type of multi-group cross section object to return domain : openmc.Material or openmc.Cell or openmc.Universe The domain for spatial homogenization @@ -487,8 +487,8 @@ class MGXS(object): mgxs = Chi(domain, domain_type, energy_groups) elif mgxs_type == 'chi-prompt': mgxs = ChiPrompt(domain, domain_type, energy_groups) - elif mgxs_type == 'velocity': - mgxs = Velocity(domain, domain_type, energy_groups) + elif mgxs_type == 'inverse-velocity': + mgxs = InverseVelocity(domain, domain_type, energy_groups) elif mgxs_type == 'prompt-nu-fission': mgxs = PromptNuFissionXS(domain, domain_type, energy_groups) @@ -4787,35 +4787,34 @@ class ChiPrompt(Chi): return ['prompt-nu-fission', 'prompt-nu-fission'] -class Velocity(MGXS): - r"""A velocity multi-group cross section. +class InverseVelocity(MGXS): + r"""An inverse velocity multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group neutron velocities for multi-group neutronics calculations. - The units of velocity are centimeters per second. At a minimum, one needs to - set the :attr:`Velocity.energy_groups` and :attr:`Velocity.domain` - properties. Tallies for the flux and appropriate reaction rates over the - specified domain are generated automatically via the - :attr:`Velocity.tallies` property, which can then be appended to a - :class:`openmc.Tallies` instance. + multi-group neutron inverse velocities for multi-group neutronics + calculations. The units of inverse velocity are seconds per centimeter. At a + minimum, one needs to set the :attr:`InverseVelocity.energy_groups` and + :attr:`InverseVelocity.domain` properties. Tallies for the flux and + appropriate reaction rates over the specified domain are generated + automatically via the :attr:`InverseVelocity.tallies` property, which can + then be appended to a :class:`openmc.Tallies` instance. For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the necessary data to compute multi-group cross sections from a :class:`openmc.StatePoint` instance. The derived multi-group cross section - can then be obtained from the :attr:`Velocity.xs_tally` property. + can then be obtained from the :attr:`InverseVelocity.xs_tally` property. For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the - neutron velocities are calculated by tallying the flux-weighted inverse - velocity and the flux. The velocity is then the inverse of the flux-weighted - inverse velocity divided by the flux. This equates to dividing the - spatially-homogenized and energy-integrated flux by the inverse velocity: + neutron inverse velocities are calculated by tallying the flux-weighted + inverse velocity and the flux. The inverse velocity is then the + flux-weighted inverse velocity divided by the flux: .. math:: \frac{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; - \psi (r, E, \Omega)}{\int_{r \in V} dr \int_{4\pi} - d\Omega \int_{E_g}^{E_{g-1}} dE \; \frac{\psi (r, E, \Omega)}{v (r, E)}}. + \frac{\psi (r, E, \Omega)}{v (r, E)}}{\int_{r \in V} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)} Parameters ---------- @@ -4859,8 +4858,8 @@ class Velocity(MGXS): The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys - are strings listed in the :attr:`Velocity.tally_keys` property and - values are instances of :class:`openmc.Tally`. + are strings listed in the :attr:`InverseVelocity.tally_keys` property + and values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -4895,37 +4894,15 @@ class Velocity(MGXS): def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(Velocity, self).__init__(domain, domain_type, + super(InverseVelocity, self).__init__(domain, domain_type, groups, by_nuclide, name) - self._rxn_type = 'velocity' - - @property - def scores(self): - return ['inverse-velocity', 'flux'] - - @property - def rxn_rate_tally(self): - if self._rxn_rate_tally is None: - self._rxn_rate_tally = self.tallies['flux'] - self._rxn_rate_tally.sparse = self.sparse - return self._rxn_rate_tally - - @property - def xs_tally(self): - - if self._xs_tally is None: - inverse_velocity = self.tallies['inverse-velocity'] - - # Compute the velocity - self._xs_tally = self.rxn_rate_tally / inverse_velocity - super(Velocity, self)._compute_xs() - - return self._xs_tally + self._rxn_type = 'inverse-velocity' def get_units(self, xs_type='macro'): - """Returns the units of Velocity. + """Returns the units of InverseVelocity. - This method returns the units of a Velocity based on a desired xs_type. + This method returns the units of an InverseVelocity based on a desired + xs_type. Parameters ---------- @@ -4936,17 +4913,17 @@ class Velocity(MGXS): Returns ------- str - A string representing the units of the Velocity. + A string representing the units of the InverseVelocity. """ cv.check_value('xs_type', xs_type, ['macro', 'micro']) if xs_type == 'macro': - return 'cm/second' + return 'second/cm' else: - raise ValueError('Unable to return the units of Velocity for ' - 'xs_type other than "macro"') + raise ValueError('Unable to return the units of InverseVelocity for' + ' xs_type other than "macro"') class PromptNuFissionXS(MGXS): diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index 840a3987e7..0c648376e8 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -d4ad3ef5f03913bcedf7dad7f9ace431e0701dac128d1f38f571898b2c79d6b207191fd1e726d9b3c14b2b994ea9d3ba5b10489be3af9c8fbb41868b85940d9f +e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index fbdab856f8..204a7e35d9 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1,126 +1,126 @@ - material group in nuclide mean std. dev. -0 10000 1 total 4.536244e-01 2.105270e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008522e-01 2.285755e-02 - material group in nuclide mean std. dev. -0 10000 1 total 4.008522e-01 2.285755e-02 - material group in nuclide mean std. dev. -0 10000 1 total 6.490346e-02 4.312761e-03 - material group in nuclide mean std. dev. -0 10000 1 total 2.804807e-02 4.579964e-03 - material group in nuclide mean std. dev. -0 10000 1 total 3.685539e-02 2.622160e-03 - material group in nuclide mean std. dev. -0 10000 1 total 9.064929e-02 6.409875e-03 - material group in nuclide mean std. dev. -0 10000 1 total 7.137955e+00 5.073638e-01 - material group in nuclide mean std. dev. -0 10000 1 total 3.887210e-01 1.783043e-02 - material group in nuclide mean std. dev. -0 10000 1 total 3.893036e-01 2.307554e-02 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893036e-01 2.314560e-02 -1 10000 1 1 total P1 4.622442e-02 5.907170e-03 -2 10000 1 1 total P2 1.798359e-02 2.882972e-03 -3 10000 1 1 total P3 6.628374e-03 2.457109e-03 - material group in group out nuclide moment mean std. dev. -0 10000 1 1 total P0 3.893036e-01 2.314560e-02 -1 10000 1 1 total P1 4.622442e-02 5.907170e-03 -2 10000 1 1 total P2 1.798359e-02 2.882972e-03 -3 10000 1 1 total P3 6.628374e-03 2.457109e-03 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 1.000000e+00 6.611082e-02 - material group in group out nuclide mean std. dev. -0 10000 1 1 total 8.583502e-02 5.591825e-03 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000e+00 4.607052e-02 - material group out nuclide mean std. dev. -0 10000 1 total 1.000000e+00 5.147146e-02 - material group in nuclide mean std. dev. -0 10000 1 total 2.001309e+06 1.462166e+05 - material group in nuclide mean std. dev. -0 10000 1 total 9.000398e-02 6.366908e-03 - material group in nuclide mean std. dev. -0 10001 1 total 3.115941e-01 1.379317e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792551e-01 2.918950e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.792551e-01 2.918950e-02 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846e-03 2.863341e-04 - material group in nuclide mean std. dev. -0 10001 1 total 2.209846e-03 2.863341e-04 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 3.093843e-01 1.355127e-02 - material group in nuclide mean std. dev. -0 10001 1 total 3.079873e-01 2.930809e-02 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873e-01 2.930809e-02 -1 10001 1 1 total P1 3.061715e-02 7.464456e-03 -2 10001 1 1 total P2 1.891149e-02 4.322828e-03 -3 10001 1 1 total P3 6.234618e-03 3.338202e-03 - material group in group out nuclide moment mean std. dev. -0 10001 1 1 total P0 3.079873e-01 2.930809e-02 -1 10001 1 1 total P1 3.061715e-02 7.464456e-03 -2 10001 1 1 total P2 1.891149e-02 4.322828e-03 -3 10001 1 1 total P3 6.234618e-03 3.338202e-03 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 1.000000e+00 9.503872e-02 - material group in group out nuclide mean std. dev. -0 10001 1 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10001 1 total 1.833261e+06 1.663552e+05 - material group in nuclide mean std. dev. -0 10001 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 9.049988e-01 4.396449e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991840e-01 4.091412e-02 - material group in nuclide mean std. dev. -0 10002 1 total 4.991840e-01 4.091412e-02 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341e-03 5.545244e-04 - material group in nuclide mean std. dev. -0 10002 1 total 6.060341e-03 5.545244e-04 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 8.989385e-01 4.349298e-02 - material group in nuclide mean std. dev. -0 10002 1 total 9.034147e-01 4.395874e-02 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034147e-01 4.358599e-02 -1 10002 1 1 total P1 4.104174e-01 1.587722e-02 -2 10002 1 1 total P2 1.433010e-01 7.187378e-03 -3 10002 1 1 total P3 8.739426e-03 3.571441e-03 - material group in group out nuclide moment mean std. dev. -0 10002 1 1 total P0 9.034147e-01 4.358599e-02 -1 10002 1 1 total P1 4.104174e-01 1.587722e-02 -2 10002 1 1 total P2 1.433010e-01 7.187378e-03 -3 10002 1 1 total P3 8.739426e-03 3.571441e-03 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 1.000000e+00 5.686673e-02 - material group in group out nuclide mean std. dev. -0 10002 1 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -0 10002 1 total 1.732200e+06 1.596914e+05 - material group in nuclide mean std. dev. -0 10002 1 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +0 10000 1 total 0.453624 0.021053 + material group in nuclide mean std. dev. +0 10000 1 total 0.400852 0.022858 + material group in nuclide mean std. dev. +0 10000 1 total 0.400852 0.022858 + material group in nuclide mean std. dev. +0 10000 1 total 0.064903 0.004313 + material group in nuclide mean std. dev. +0 10000 1 total 0.028048 0.00458 + material group in nuclide mean std. dev. +0 10000 1 total 0.036855 0.002622 + material group in nuclide mean std. dev. +0 10000 1 total 0.090649 0.00641 + material group in nuclide mean std. dev. +0 10000 1 total 7.137955 0.507364 + material group in nuclide mean std. dev. +0 10000 1 total 0.388721 0.01783 + material group in nuclide mean std. dev. +0 10000 1 total 0.389304 0.023076 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 0.389304 0.023146 +1 10000 1 1 total P1 0.046224 0.005907 +2 10000 1 1 total P2 0.017984 0.002883 +3 10000 1 1 total P3 0.006628 0.002457 + material group in group out nuclide moment mean std. dev. +0 10000 1 1 total P0 0.389304 0.023146 +1 10000 1 1 total P1 0.046224 0.005907 +2 10000 1 1 total P2 0.017984 0.002883 +3 10000 1 1 total P3 0.006628 0.002457 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 1 0.066111 + material group in group out nuclide mean std. dev. +0 10000 1 1 total 0.085835 0.005592 + material group out nuclide mean std. dev. +0 10000 1 total 1 0.046071 + material group out nuclide mean std. dev. +0 10000 1 total 1 0.051471 + material group in nuclide mean std. dev. +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 group in nuclide mean std. dev. +0 10001 1 total 0.311594 0.013793 + material group in nuclide mean std. dev. +0 10001 1 total 0.279255 0.02919 + material group in nuclide mean std. dev. +0 10001 1 total 0.279255 0.02919 + material group in nuclide mean std. dev. +0 10001 1 total 0.00221 0.000286 + material group in nuclide mean std. dev. +0 10001 1 total 0.00221 0.000286 + material group in nuclide mean std. dev. +0 10001 1 total 0 0 + material group in nuclide mean std. dev. +0 10001 1 total 0 0 + material group in nuclide mean std. dev. +0 10001 1 total 0 0 + material group in nuclide mean std. dev. +0 10001 1 total 0.309384 0.013551 + material group in nuclide mean std. dev. +0 10001 1 total 0.307987 0.029308 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 0.307987 0.029308 +1 10001 1 1 total P1 0.030617 0.007464 +2 10001 1 1 total P2 0.018911 0.004323 +3 10001 1 1 total P3 0.006235 0.003338 + material group in group out nuclide moment mean std. dev. +0 10001 1 1 total P0 0.307987 0.029308 +1 10001 1 1 total P1 0.030617 0.007464 +2 10001 1 1 total P2 0.018911 0.004323 +3 10001 1 1 total P3 0.006235 0.003338 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 1 0.095039 + material group in group out nuclide mean std. dev. +0 10001 1 1 total 0 0 + material group out nuclide mean std. dev. +0 10001 1 total 0 0 + material group out nuclide mean std. dev. +0 10001 1 total 0 0 + material group in nuclide mean std. dev. +0 10001 1 total 5.454760e-07 4.949800e-08 + material group in nuclide mean std. dev. +0 10001 1 total 0 0 + material group in nuclide mean std. dev. +0 10002 1 total 0.904999 0.043964 + material group in nuclide mean std. dev. +0 10002 1 total 0.499184 0.040914 + material group in nuclide mean std. dev. +0 10002 1 total 0.499184 0.040914 + material group in nuclide mean std. dev. +0 10002 1 total 0.00606 0.000555 + material group in nuclide mean std. dev. +0 10002 1 total 0.00606 0.000555 + material group in nuclide mean std. dev. +0 10002 1 total 0 0 + material group in nuclide mean std. dev. +0 10002 1 total 0 0 + material group in nuclide mean std. dev. +0 10002 1 total 0 0 + material group in nuclide mean std. dev. +0 10002 1 total 0.898938 0.043493 + material group in nuclide mean std. dev. +0 10002 1 total 0.903415 0.043959 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 0.903415 0.043586 +1 10002 1 1 total P1 0.410417 0.015877 +2 10002 1 1 total P2 0.143301 0.007187 +3 10002 1 1 total P3 0.008739 0.003571 + material group in group out nuclide moment mean std. dev. +0 10002 1 1 total P0 0.903415 0.043586 +1 10002 1 1 total P1 0.410417 0.015877 +2 10002 1 1 total P2 0.143301 0.007187 +3 10002 1 1 total P3 0.008739 0.003571 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 1 0.056867 + material group in group out nuclide mean std. dev. +0 10002 1 1 total 0 0 + material group out nuclide mean std. dev. +0 10002 1 total 0 0 + material group out nuclide mean std. dev. +0 10002 1 total 0 0 + material group in nuclide mean std. dev. +0 10002 1 total 5.773006e-07 5.322132e-08 + material group in nuclide mean std. dev. +0 10002 1 total 0 0 diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index 610d2e1af4..055ce35a57 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -8387be0df212cc1b277f42e4b7946b7b1097b34a2d51733bbc0ce1fcc86b0ae97676770b0a4230735e8c11d769989a8c6f702d9f48eb1a145ab6517128443fb7 +2d948f3b12293294eaeca231a3df9d51195379e8bb38dd3e68d3bc512a7d08ed52a1109054ca381684ec127268710f6d6e9210ac8154c9b379608e996627624a \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index 7b66c39e49..dec30061f6 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,42 @@ - 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.145934e+00 5.538217e-01 - 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.189192e-01 5.206443e-01 - 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.189192e-01 5.206443e-01 - 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.976221e-02 1.062876e-02 - 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.976221e-02 1.062876e-02 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.126172e+00 5.434400e-01 - 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.142547e+00 5.701314e-01 - 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.142547e+00 5.701314e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 - 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.142547e+00 5.701314e-01 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 4.473813e-01 2.163222e-01 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 1.412018e-01 6.650377e-02 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 3.922827e-02 2.462083e-02 - 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.000000e+00 5.297173e-01 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.000000e+00 0.000000e+00 - 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.742457e+05 4.163977e+05 - 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.000000e+00 0.000000e+00 + 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 + 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 + 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 + 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.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 + 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 + 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 + 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 + 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 + 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 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.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 + 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 + 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 + 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 diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index 840a3987e7..0c648376e8 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -d4ad3ef5f03913bcedf7dad7f9ace431e0701dac128d1f38f571898b2c79d6b207191fd1e726d9b3c14b2b994ea9d3ba5b10489be3af9c8fbb41868b85940d9f +e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 3160e850fd..b2bd28f279 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1,222 +1,222 @@ domain=10000 type=total -[4.148255e-01 6.601699e-01] -[2.279291e-02 4.751893e-02] +[ 0.41482549 0.66016992] +[ 0.02279291 0.04751893] domain=10000 type=transport -[3.568596e-01 6.476477e-01] -[2.549360e-02 2.370374e-02] +[ 0.35685964 0.64764766] +[ 0.0254936 0.02370374] domain=10000 type=nu-transport -[3.568596e-01 6.476477e-01] -[2.549360e-02 2.370374e-02] +[ 0.35685964 0.64764766] +[ 0.0254936 0.02370374] domain=10000 type=absorption -[2.740784e-02 2.645107e-01] -[2.692497e-03 2.336708e-02] +[ 0.02740784 0.26451074] +[ 0.0026925 0.02336708] domain=10000 type=capture -[1.984455e-02 7.171935e-02] -[2.643304e-03 2.520786e-02] +[ 0.01984455 0.07171935] +[ 0.0026433 0.02520786] domain=10000 type=fission -[7.563295e-03 1.927914e-01] -[5.084837e-04 1.710592e-02] +[ 0.00756329 0.19279139] +[ 0.00050848 0.01710592] domain=10000 type=nu-fission -[1.943174e-02 4.697748e-01] -[1.322976e-03 4.168200e-02] +[ 0.01943174 0.46977478] +[ 0.00132298 0.041682 ] domain=10000 type=kappa-fission -[1.474570e+00 3.728690e+01] -[9.923532e-02 3.308378e+00] +[ 1.47456982 37.28689641] +[ 0.09923532 3.30837772] domain=10000 type=scatter -[3.874176e-01 3.956592e-01] -[2.062573e-02 2.512506e-02] +[ 0.38741765 0.39565918] +[ 0.02062573 0.02512506] domain=10000 type=nu-scatter -[3.851884e-01 4.123894e-01] -[2.694562e-02 1.542528e-02] +[ 0.38518839 0.4123894 ] +[ 0.02694562 0.01542528] domain=10000 type=scatter matrix -[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] - [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] +[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] + [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] - [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] - [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] -[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] - [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] + [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] + [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] +[[[ 0.02700101 0.00698255 0.0028465 0.00223352] + [ 0.00048242 0.00014901 0.00018432 0.00012817]] - [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] - [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] + [[ 0.00092488 0.00076791 0.00049392 0.00017154] + [ 0.01524494 0.00450173 0.01055075 0.01043819]]] domain=10000 type=nu-scatter matrix -[[[3.841995e-01 5.187028e-02 2.006885e-02 9.477716e-03] - [9.889304e-04 -2.072346e-04 -1.033662e-04 2.342906e-04]] +[[[ 3.84199458e-01 5.18702843e-02 2.00688453e-02 9.47771571e-03] + [ 9.88930393e-04 -2.07234596e-04 -1.03366181e-04 2.34290623e-04]] - [[9.246399e-04 -7.677050e-04 4.937889e-04 -1.714972e-04] - [4.114648e-01 1.648173e-02 6.371490e-03 -1.049912e-02]]] -[[[2.700101e-02 6.982549e-03 2.846495e-03 2.233520e-03] - [4.824194e-04 1.490108e-04 1.843163e-04 1.281731e-04]] + [[ 9.24639909e-04 -7.67704968e-04 4.93788872e-04 -1.71497229e-04] + [ 4.11464759e-01 1.64817280e-02 6.37149049e-03 -1.04991221e-02]]] +[[[ 0.02700101 0.00698255 0.0028465 0.00223352] + [ 0.00048242 0.00014901 0.00018432 0.00012817]] - [[9.248835e-04 7.679072e-04 4.939189e-04 1.715424e-04] - [1.524494e-02 4.501728e-03 1.055075e-02 1.043819e-02]]] + [[ 0.00092488 0.00076791 0.00049392 0.00017154] + [ 0.01524494 0.00450173 0.01055075 0.01043819]]] domain=10000 type=multiplicity matrix -[[1.000000e+00 1.000000e+00] - [1.000000e+00 1.000000e+00]] -[[7.851646e-02 6.871843e-01] - [1.414214e+00 4.113035e-02]] +[[ 1. 1.] + [ 1. 1.]] +[[ 0.07851646 0.68718427] + [ 1.41421356 0.04113035]] domain=10000 type=nu-fission matrix -[[2.014243e-02 0.000000e+00] - [4.543665e-01 0.000000e+00]] -[[3.149092e-03 0.000000e+00] - [2.742551e-02 0.000000e+00]] +[[ 0.02014243 0. ] + [ 0.45436647 0. ]] +[[ 0.00314909 0. ] + [ 0.02742551 0. ]] domain=10000 type=chi -[1.000000e+00 0.000000e+00] -[4.607052e-02 0.000000e+00] +[ 1. 0.] +[ 0.04607052 0. ] domain=10000 type=chi-prompt -[1.000000e+00 0.000000e+00] -[5.147146e-02 0.000000e+00] -domain=10000 type=velocity -[1.751521e+07 3.501720e+05] -[1.438175e+06 2.994593e+04] +[ 1. 0.] +[ 0.05147146 0. ] +domain=10000 type=inverse-velocity +[ 5.70932329e-08 2.85573950e-06] +[ 4.68792969e-09 2.44216503e-07] domain=10000 type=prompt-nu-fission -[1.923922e-02 4.667190e-01] -[1.309506e-03 4.141087e-02] +[ 0.01923922 0.46671903] +[ 0.00130951 0.04141087] domain=10001 type=total -[3.137377e-01 3.008214e-01] -[1.558190e-02 2.805245e-02] +[ 0.31373767 0.3008214 ] +[ 0.0155819 0.02805245] domain=10001 type=transport -[2.732279e-01 3.123748e-01] -[3.311537e-02 4.960583e-02] +[ 0.27322787 0.31237484] +[ 0.03311537 0.04960583] domain=10001 type=nu-transport -[2.732279e-01 3.123748e-01] -[3.311537e-02 4.960583e-02] +[ 0.27322787 0.31237484] +[ 0.03311537 0.04960583] domain=10001 type=absorption -[1.574991e-03 5.400379e-03] -[3.225479e-04 6.181383e-04] +[ 0.00157499 0.00540038] +[ 0.00032255 0.00061814] domain=10001 type=capture -[1.574991e-03 5.400379e-03] -[3.225479e-04 6.181383e-04] +[ 0.00157499 0.00540038] +[ 0.00032255 0.00061814] domain=10001 type=fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10001 type=nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10001 type=kappa-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10001 type=scatter -[3.121627e-01 2.954210e-01] -[1.532192e-02 2.744549e-02] +[ 0.31216268 0.29542102] +[ 0.01532192 0.02744549] domain=10001 type=nu-scatter -[3.101207e-01 2.962643e-01] -[3.378811e-02 4.379223e-02] +[ 0.31012074 0.29626427] +[ 0.03378811 0.04379223] domain=10001 type=scatter matrix -[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] +[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] + [ 0. 0. 0. 0. ]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] -[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0. ] + [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] +[[[ 0.03378811 0.008484 0.00469561 0.00373162] + [ 0. 0. 0. 0. ]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] + [[ 0. 0. 0. 0. ] + [ 0.04379223 0.01618037 0.01150396 0.00732885]]] domain=10001 type=nu-scatter matrix -[[[3.101207e-01 3.822959e-02 2.074494e-02 7.964297e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] +[[[ 0.31012074 0.03822959 0.02074494 0.0079643 ] + [ 0. 0. 0. 0. ]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [2.962643e-01 -1.121364e-02 8.836566e-03 -3.270067e-03]]] -[[[3.378811e-02 8.483997e-03 4.695611e-03 3.731623e-03] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0. ] + [ 0.29626427 -0.01121364 0.00883657 -0.00327007]]] +[[[ 0.03378811 0.008484 0.00469561 0.00373162] + [ 0. 0. 0. 0. ]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [4.379223e-02 1.618037e-02 1.150396e-02 7.328846e-03]]] + [[ 0. 0. 0. 0. ] + [ 0.04379223 0.01618037 0.01150396 0.00732885]]] domain=10001 type=multiplicity matrix -[[1.000000e+00 0.000000e+00] - [0.000000e+00 1.000000e+00]] -[[1.087787e-01 0.000000e+00] - [0.000000e+00 1.424272e-01]] +[[ 1. 0.] + [ 0. 1.]] +[[ 0.1087787 0. ] + [ 0. 0.14242717]] domain=10001 type=nu-fission matrix -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] +[[ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.]] domain=10001 type=chi -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10001 type=chi-prompt -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] -domain=10001 type=velocity -[1.667784e+07 3.349534e+05] -[1.266444e+06 3.833678e+04] +[ 0. 0.] +[ 0. 0.] +domain=10001 type=inverse-velocity +[ 5.99598048e-08 2.98549021e-06] +[ 4.55309296e-09 3.41701554e-07] domain=10001 type=prompt-nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10002 type=total -[6.645723e-01 2.052384e+00] -[3.121475e-02 2.243429e-01] +[ 0.66457226 2.05238401] +[ 0.03121475 0.22434291] domain=10002 type=transport -[2.905653e-01 1.516438e+00] -[2.385185e-02 2.351973e-01] +[ 0.29056526 1.51643801] +[ 0.02385185 0.23519727] domain=10002 type=nu-transport -[2.905653e-01 1.516438e+00] -[2.385185e-02 2.351973e-01] +[ 0.29056526 1.51643801] +[ 0.02385185 0.23519727] domain=10002 type=absorption -[6.903995e-04 3.168726e-02] -[4.414757e-05 3.746559e-03] +[ 0.0006904 0.03168726] +[ 4.41475687e-05 3.74655858e-03] domain=10002 type=capture -[6.903995e-04 3.168726e-02] -[4.414757e-05 3.746559e-03] +[ 0.0006904 0.03168726] +[ 4.41475687e-05 3.74655858e-03] domain=10002 type=fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10002 type=nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10002 type=kappa-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10002 type=scatter -[6.638819e-01 2.020697e+00] -[3.117268e-02 2.206045e-01] +[ 0.66388186 2.02069676] +[ 0.03117268 0.22060445] domain=10002 type=nu-scatter -[6.712692e-01 2.035388e+00] -[2.618637e-02 2.580603e-01] +[ 0.6712692 2.03538833] +[ 0.02618637 0.25806033] domain=10002 type=scatter matrix -[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] - [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] +[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] + [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] - [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] - [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] -[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] - [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] + [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] + [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] +[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] + [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] - [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] - [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] + [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] + [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] domain=10002 type=nu-scatter matrix -[[[6.399015e-01 3.811674e-01 1.523919e-01 9.148022e-03] - [3.136772e-02 8.757723e-03 -2.567901e-03 -3.784803e-03]] +[[[ 6.39901485e-01 3.81167449e-01 1.52391898e-01 9.14802229e-03] + [ 3.13677198e-02 8.75772321e-03 -2.56790106e-03 -3.78480288e-03]] - [[4.433431e-04 3.999604e-04 3.195627e-04 2.138470e-04] - [2.034945e+00 5.099405e-01 1.111746e-01 2.498844e-02]]] -[[[2.470912e-02 1.624326e-02 8.156278e-03 3.888562e-03] - [1.728113e-03 9.256705e-04 1.013985e-03 8.170756e-04]] + [[ 4.43343134e-04 3.99960414e-04 3.19562707e-04 2.13846969e-04] + [ 2.03494499e+00 5.09940513e-01 1.11174609e-01 2.49884357e-02]]] +[[[ 2.47091228e-02 1.62432649e-02 8.15627770e-03 3.88856214e-03] + [ 1.72811290e-03 9.25670501e-04 1.01398475e-03 8.17075571e-04]] - [[4.448504e-04 4.013202e-04 3.206491e-04 2.145740e-04] - [2.577999e-01 5.123591e-02 1.301982e-02 8.312353e-03]]] + [[ 4.44850393e-04 4.01320183e-04 3.20649143e-04 2.14573997e-04] + [ 2.57799889e-01 5.12359063e-02 1.30198170e-02 8.31235256e-03]]] domain=10002 type=multiplicity matrix -[[1.000000e+00 1.000000e+00] - [1.000000e+00 1.000000e+00]] -[[3.860919e-02 6.766735e-02] - [1.414214e+00 1.359292e-01]] +[[ 1. 1.] + [ 1. 1.]] +[[ 0.03860919 0.06766735] + [ 1.41421356 0.13592921]] domain=10002 type=nu-fission matrix -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] -[[0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00]] +[[ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.]] domain=10002 type=chi -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] domain=10002 type=chi-prompt -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] -domain=10002 type=velocity -[1.660556e+07 3.284120e+05] -[1.042436e+06 3.882844e+04] +[ 0. 0.] +[ 0. 0.] +domain=10002 type=inverse-velocity +[ 6.02207831e-08 3.04495537e-06] +[ 3.78043696e-09 3.60007673e-07] domain=10002 type=prompt-nu-fission -[0.000000e+00 0.000000e+00] -[0.000000e+00 0.000000e+00] +[ 0. 0.] +[ 0. 0.] diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index 840a3987e7..0c648376e8 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -d4ad3ef5f03913bcedf7dad7f9ace431e0701dac128d1f38f571898b2c79d6b207191fd1e726d9b3c14b2b994ea9d3ba5b10489be3af9c8fbb41868b85940d9f +e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index fc42ccf494..00f5a9523f 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1,258 +1,258 @@ - material group in nuclide mean std. dev. -1 10000 1 total 4.148255e-01 2.279291e-02 -0 10000 2 total 6.601699e-01 4.751893e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596e-01 2.549360e-02 -0 10000 2 total 6.476477e-01 2.370374e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.568596e-01 2.549360e-02 -0 10000 2 total 6.476477e-01 2.370374e-02 - material group in nuclide mean std. dev. -1 10000 1 total 2.740784e-02 2.692497e-03 -0 10000 2 total 2.645107e-01 2.336708e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.984455e-02 2.643304e-03 -0 10000 2 total 7.171935e-02 2.520786e-02 - material group in nuclide mean std. dev. -1 10000 1 total 7.563295e-03 5.084837e-04 -0 10000 2 total 1.927914e-01 1.710592e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.943174e-02 1.322976e-03 -0 10000 2 total 4.697748e-01 4.168200e-02 - material group in nuclide mean std. dev. -1 10000 1 total 1.474570e+00 9.923532e-02 -0 10000 2 total 3.728690e+01 3.308378e+00 - material group in nuclide mean std. dev. -1 10000 1 total 3.874176e-01 2.062573e-02 -0 10000 2 total 3.956592e-01 2.512506e-02 - material group in nuclide mean std. dev. -1 10000 1 total 3.851884e-01 2.694562e-02 -0 10000 2 total 4.123894e-01 1.542528e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841995e-01 2.700101e-02 -13 10000 1 1 total P1 5.187028e-02 6.982549e-03 -14 10000 1 1 total P2 2.006885e-02 2.846495e-03 -15 10000 1 1 total P3 9.477716e-03 2.233520e-03 -8 10000 1 2 total P0 9.889304e-04 4.824194e-04 -9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 -10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 -11 10000 1 2 total P3 2.342906e-04 1.281731e-04 -4 10000 2 1 total P0 9.246399e-04 9.248835e-04 -5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 -6 10000 2 1 total P2 4.937889e-04 4.939189e-04 -7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 -0 10000 2 2 total P0 4.114648e-01 1.524494e-02 -1 10000 2 2 total P1 1.648173e-02 4.501728e-03 -2 10000 2 2 total P2 6.371490e-03 1.055075e-02 -3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 - material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 3.841995e-01 2.700101e-02 -13 10000 1 1 total P1 5.187028e-02 6.982549e-03 -14 10000 1 1 total P2 2.006885e-02 2.846495e-03 -15 10000 1 1 total P3 9.477716e-03 2.233520e-03 -8 10000 1 2 total P0 9.889304e-04 4.824194e-04 -9 10000 1 2 total P1 -2.072346e-04 1.490108e-04 -10 10000 1 2 total P2 -1.033662e-04 1.843163e-04 -11 10000 1 2 total P3 2.342906e-04 1.281731e-04 -4 10000 2 1 total P0 9.246399e-04 9.248835e-04 -5 10000 2 1 total P1 -7.677050e-04 7.679072e-04 -6 10000 2 1 total P2 4.937889e-04 4.939189e-04 -7 10000 2 1 total P3 -1.714972e-04 1.715424e-04 -0 10000 2 2 total P0 4.114648e-01 1.524494e-02 -1 10000 2 2 total P1 1.648173e-02 4.501728e-03 -2 10000 2 2 total P2 6.371490e-03 1.055075e-02 -3 10000 2 2 total P3 -1.049912e-02 1.043819e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 1.000000e+00 7.851646e-02 -2 10000 1 2 total 1.000000e+00 6.871843e-01 -1 10000 2 1 total 1.000000e+00 1.414214e+00 -0 10000 2 2 total 1.000000e+00 4.113035e-02 - material group in group out nuclide mean std. dev. -3 10000 1 1 total 2.014243e-02 3.149092e-03 -2 10000 1 2 total 0.000000e+00 0.000000e+00 -1 10000 2 1 total 4.543665e-01 2.742551e-02 -0 10000 2 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000e+00 4.607052e-02 -0 10000 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10000 1 total 1.000000e+00 5.147146e-02 -0 10000 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10000 1 total 1.751521e+07 1.438175e+06 -0 10000 2 total 3.501720e+05 2.994593e+04 - material group in nuclide mean std. dev. -1 10000 1 total 1.923922e-02 1.309506e-03 -0 10000 2 total 4.667190e-01 4.141087e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.137377e-01 1.558190e-02 -0 10001 2 total 3.008214e-01 2.805245e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732279e-01 3.311537e-02 -0 10001 2 total 3.123748e-01 4.960583e-02 - material group in nuclide mean std. dev. -1 10001 1 total 2.732279e-01 3.311537e-02 -0 10001 2 total 3.123748e-01 4.960583e-02 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991e-03 3.225479e-04 -0 10001 2 total 5.400379e-03 6.181383e-04 - material group in nuclide mean std. dev. -1 10001 1 total 1.574991e-03 3.225479e-04 -0 10001 2 total 5.400379e-03 6.181383e-04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 3.121627e-01 1.532192e-02 -0 10001 2 total 2.954210e-01 2.744549e-02 - material group in nuclide mean std. dev. -1 10001 1 total 3.101207e-01 3.378811e-02 -0 10001 2 total 2.962643e-01 4.379223e-02 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207e-01 3.378811e-02 -13 10001 1 1 total P1 3.822959e-02 8.483997e-03 -14 10001 1 1 total P2 2.074494e-02 4.695611e-03 -15 10001 1 1 total P3 7.964297e-03 3.731623e-03 -8 10001 1 2 total P0 0.000000e+00 0.000000e+00 -9 10001 1 2 total P1 0.000000e+00 0.000000e+00 -10 10001 1 2 total P2 0.000000e+00 0.000000e+00 -11 10001 1 2 total P3 0.000000e+00 0.000000e+00 -4 10001 2 1 total P0 0.000000e+00 0.000000e+00 -5 10001 2 1 total P1 0.000000e+00 0.000000e+00 -6 10001 2 1 total P2 0.000000e+00 0.000000e+00 -7 10001 2 1 total P3 0.000000e+00 0.000000e+00 -0 10001 2 2 total P0 2.962643e-01 4.379223e-02 -1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 -2 10001 2 2 total P2 8.836566e-03 1.150396e-02 -3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 - material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 3.101207e-01 3.378811e-02 -13 10001 1 1 total P1 3.822959e-02 8.483997e-03 -14 10001 1 1 total P2 2.074494e-02 4.695611e-03 -15 10001 1 1 total P3 7.964297e-03 3.731623e-03 -8 10001 1 2 total P0 0.000000e+00 0.000000e+00 -9 10001 1 2 total P1 0.000000e+00 0.000000e+00 -10 10001 1 2 total P2 0.000000e+00 0.000000e+00 -11 10001 1 2 total P3 0.000000e+00 0.000000e+00 -4 10001 2 1 total P0 0.000000e+00 0.000000e+00 -5 10001 2 1 total P1 0.000000e+00 0.000000e+00 -6 10001 2 1 total P2 0.000000e+00 0.000000e+00 -7 10001 2 1 total P3 0.000000e+00 0.000000e+00 -0 10001 2 2 total P0 2.962643e-01 4.379223e-02 -1 10001 2 2 total P1 -1.121364e-02 1.618037e-02 -2 10001 2 2 total P2 8.836566e-03 1.150396e-02 -3 10001 2 2 total P3 -3.270067e-03 7.328846e-03 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 1.000000e+00 1.087787e-01 -2 10001 1 2 total 0.000000e+00 0.000000e+00 -1 10001 2 1 total 0.000000e+00 0.000000e+00 -0 10001 2 2 total 1.000000e+00 1.424272e-01 - material group in group out nuclide mean std. dev. -3 10001 1 1 total 0.000000e+00 0.000000e+00 -2 10001 1 2 total 0.000000e+00 0.000000e+00 -1 10001 2 1 total 0.000000e+00 0.000000e+00 -0 10001 2 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10001 1 total 1.667784e+07 1.266444e+06 -0 10001 2 total 3.349534e+05 3.833678e+04 - material group in nuclide mean std. dev. -1 10001 1 total 0.000000e+00 0.000000e+00 -0 10001 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.645723e-01 3.121475e-02 -0 10002 2 total 2.052384e+00 2.243429e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905653e-01 2.385185e-02 -0 10002 2 total 1.516438e+00 2.351973e-01 - material group in nuclide mean std. dev. -1 10002 1 total 2.905653e-01 2.385185e-02 -0 10002 2 total 1.516438e+00 2.351973e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995e-04 4.414757e-05 -0 10002 2 total 3.168726e-02 3.746559e-03 - material group in nuclide mean std. dev. -1 10002 1 total 6.903995e-04 4.414757e-05 -0 10002 2 total 3.168726e-02 3.746559e-03 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 6.638819e-01 3.117268e-02 -0 10002 2 total 2.020697e+00 2.206045e-01 - material group in nuclide mean std. dev. -1 10002 1 total 6.712692e-01 2.618637e-02 -0 10002 2 total 2.035388e+00 2.580603e-01 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399015e-01 2.470912e-02 -13 10002 1 1 total P1 3.811674e-01 1.624326e-02 -14 10002 1 1 total P2 1.523919e-01 8.156278e-03 -15 10002 1 1 total P3 9.148022e-03 3.888562e-03 -8 10002 1 2 total P0 3.136772e-02 1.728113e-03 -9 10002 1 2 total P1 8.757723e-03 9.256705e-04 -10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 -11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 -4 10002 2 1 total P0 4.433431e-04 4.448504e-04 -5 10002 2 1 total P1 3.999604e-04 4.013202e-04 -6 10002 2 1 total P2 3.195627e-04 3.206491e-04 -7 10002 2 1 total P3 2.138470e-04 2.145740e-04 -0 10002 2 2 total P0 2.034945e+00 2.577999e-01 -1 10002 2 2 total P1 5.099405e-01 5.123591e-02 -2 10002 2 2 total P2 1.111746e-01 1.301982e-02 -3 10002 2 2 total P3 2.498844e-02 8.312353e-03 - material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 6.399015e-01 2.470912e-02 -13 10002 1 1 total P1 3.811674e-01 1.624326e-02 -14 10002 1 1 total P2 1.523919e-01 8.156278e-03 -15 10002 1 1 total P3 9.148022e-03 3.888562e-03 -8 10002 1 2 total P0 3.136772e-02 1.728113e-03 -9 10002 1 2 total P1 8.757723e-03 9.256705e-04 -10 10002 1 2 total P2 -2.567901e-03 1.013985e-03 -11 10002 1 2 total P3 -3.784803e-03 8.170756e-04 -4 10002 2 1 total P0 4.433431e-04 4.448504e-04 -5 10002 2 1 total P1 3.999604e-04 4.013202e-04 -6 10002 2 1 total P2 3.195627e-04 3.206491e-04 -7 10002 2 1 total P3 2.138470e-04 2.145740e-04 -0 10002 2 2 total P0 2.034945e+00 2.577999e-01 -1 10002 2 2 total P1 5.099405e-01 5.123591e-02 -2 10002 2 2 total P2 1.111746e-01 1.301982e-02 -3 10002 2 2 total P3 2.498844e-02 8.312353e-03 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 1.000000e+00 3.860919e-02 -2 10002 1 2 total 1.000000e+00 6.766735e-02 -1 10002 2 1 total 1.000000e+00 1.414214e+00 -0 10002 2 2 total 1.000000e+00 1.359292e-01 - material group in group out nuclide mean std. dev. -3 10002 1 1 total 0.000000e+00 0.000000e+00 -2 10002 1 2 total 0.000000e+00 0.000000e+00 -1 10002 2 1 total 0.000000e+00 0.000000e+00 -0 10002 2 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group out nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 - material group in nuclide mean std. dev. -1 10002 1 total 1.660556e+07 1.042436e+06 -0 10002 2 total 3.284120e+05 3.882844e+04 - material group in nuclide mean std. dev. -1 10002 1 total 0.000000e+00 0.000000e+00 -0 10002 2 total 0.000000e+00 0.000000e+00 + material group in nuclide mean std. dev. +1 10000 1 total 0.414825 0.022793 +0 10000 2 total 0.660170 0.047519 + material group in nuclide mean std. dev. +1 10000 1 total 0.356860 0.025494 +0 10000 2 total 0.647648 0.023704 + material group in nuclide mean std. dev. +1 10000 1 total 0.356860 0.025494 +0 10000 2 total 0.647648 0.023704 + material group in nuclide mean std. dev. +1 10000 1 total 0.027408 0.002692 +0 10000 2 total 0.264511 0.023367 + material group in nuclide mean std. dev. +1 10000 1 total 0.019845 0.002643 +0 10000 2 total 0.071719 0.025208 + material group in nuclide mean std. dev. +1 10000 1 total 0.007563 0.000508 +0 10000 2 total 0.192791 0.017106 + material group in nuclide mean std. dev. +1 10000 1 total 0.019432 0.001323 +0 10000 2 total 0.469775 0.041682 + material group in nuclide mean std. dev. +1 10000 1 total 1.474570 0.099235 +0 10000 2 total 37.286896 3.308378 + material group in nuclide mean std. dev. +1 10000 1 total 0.387418 0.020626 +0 10000 2 total 0.395659 0.025125 + material group in nuclide mean std. dev. +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 +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 +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 + 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 +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 +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 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 1 0.078516 +2 10000 1 2 total 1 0.687184 +1 10000 2 1 total 1 1.414214 +0 10000 2 2 total 1 0.041130 + material group in group out nuclide mean std. dev. +3 10000 1 1 total 0.020142 0.003149 +2 10000 1 2 total 0.000000 0.000000 +1 10000 2 1 total 0.454366 0.027426 +0 10000 2 2 total 0.000000 0.000000 + material group out nuclide mean std. dev. +1 10000 1 total 1 0.046071 +0 10000 2 total 0 0.000000 + material group out nuclide mean std. dev. +1 10000 1 total 1 0.051471 +0 10000 2 total 0 0.000000 + material group in nuclide mean std. dev. +1 10000 1 total 5.709323e-08 4.687930e-09 +0 10000 2 total 2.855740e-06 2.442165e-07 + material group in nuclide mean std. dev. +1 10000 1 total 0.019239 0.001310 +0 10000 2 total 0.466719 0.041411 + material group in nuclide mean std. dev. +1 10001 1 total 0.313738 0.015582 +0 10001 2 total 0.300821 0.028052 + material group in nuclide mean std. dev. +1 10001 1 total 0.273228 0.033115 +0 10001 2 total 0.312375 0.049606 + material group in nuclide mean std. dev. +1 10001 1 total 0.273228 0.033115 +0 10001 2 total 0.312375 0.049606 + material group in nuclide mean std. dev. +1 10001 1 total 0.001575 0.000323 +0 10001 2 total 0.005400 0.000618 + material group in nuclide mean std. dev. +1 10001 1 total 0.001575 0.000323 +0 10001 2 total 0.005400 0.000618 + material group in nuclide mean std. dev. +1 10001 1 total 0 0 +0 10001 2 total 0 0 + material group in nuclide mean std. dev. +1 10001 1 total 0 0 +0 10001 2 total 0 0 + material group in nuclide mean std. dev. +1 10001 1 total 0 0 +0 10001 2 total 0 0 + material group in nuclide mean std. dev. +1 10001 1 total 0.312163 0.015322 +0 10001 2 total 0.295421 0.027445 + material group in nuclide mean std. dev. +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 +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 +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 + 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 +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 +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 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 1 0.108779 +2 10001 1 2 total 0 0.000000 +1 10001 2 1 total 0 0.000000 +0 10001 2 2 total 1 0.142427 + material group in group out nuclide mean std. dev. +3 10001 1 1 total 0 0 +2 10001 1 2 total 0 0 +1 10001 2 1 total 0 0 +0 10001 2 2 total 0 0 + material group out nuclide mean std. dev. +1 10001 1 total 0 0 +0 10001 2 total 0 0 + material group out nuclide mean std. dev. +1 10001 1 total 0 0 +0 10001 2 total 0 0 + material group in nuclide mean std. dev. +1 10001 1 total 5.995980e-08 4.553093e-09 +0 10001 2 total 2.985490e-06 3.417016e-07 + material group in nuclide mean std. dev. +1 10001 1 total 0 0 +0 10001 2 total 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 + material group in nuclide mean std. dev. +1 10002 1 total 0.290565 0.023852 +0 10002 2 total 1.516438 0.235197 + material group in nuclide mean std. dev. +1 10002 1 total 0.290565 0.023852 +0 10002 2 total 1.516438 0.235197 + material group in nuclide mean std. dev. +1 10002 1 total 0.000690 0.000044 +0 10002 2 total 0.031687 0.003747 + material group in nuclide mean std. dev. +1 10002 1 total 0.000690 0.000044 +0 10002 2 total 0.031687 0.003747 + material group in nuclide mean std. dev. +1 10002 1 total 0 0 +0 10002 2 total 0 0 + material group in nuclide mean std. dev. +1 10002 1 total 0 0 +0 10002 2 total 0 0 + material group in nuclide mean std. dev. +1 10002 1 total 0 0 +0 10002 2 total 0 0 + material group in nuclide mean std. dev. +1 10002 1 total 0.663882 0.031173 +0 10002 2 total 2.020697 0.220604 + material group in nuclide mean std. dev. +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 +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 +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 + 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 +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 +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 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 1 0.038609 +2 10002 1 2 total 1 0.067667 +1 10002 2 1 total 1 1.414214 +0 10002 2 2 total 1 0.135929 + material group in group out nuclide mean std. dev. +3 10002 1 1 total 0 0 +2 10002 1 2 total 0 0 +1 10002 2 1 total 0 0 +0 10002 2 2 total 0 0 + material group out nuclide mean std. dev. +1 10002 1 total 0 0 +0 10002 2 total 0 0 + material group out nuclide mean std. dev. +1 10002 1 total 0 0 +0 10002 2 total 0 0 + material group in nuclide mean std. dev. +1 10002 1 total 6.022078e-08 3.780437e-09 +0 10002 2 total 3.044955e-06 3.600077e-07 + material group in nuclide mean std. dev. +1 10002 1 total 0 0 +0 10002 2 total 0 0 diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index 59493ac58c..a15bbee4c8 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -7e6a35ac723fc77db2865fe425832bd6c54aae0132b4543583fc6eb10f2ec5e3d53ea19aa23127a989f19cfe328a57d29f28bff43f779aff246d38f7cffdfd0c +e4a5f03ab6167e96462c4ef537533fe33b98d7878ae00824c5619356bda8d548b3c71af01ba8c88d5a9b46dd1471d331e6f678a164af922200f2ee3642be6340 \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 9ef3428c6b..2f3290a1f2 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -9620ed88224f5a4013b1ff47a1286ed166f84847b97d145e52f6f71eb441c2abd1ad5baa91e0b1cac802daa8610ee388d23dcbc43d834b73fb35a16972d09788 +e421bd357f75c7b77532126ec4a7871ab8369c2dcaceb97c55eaafde1032099338a25b6bdafe54cbd1cac1e6243c91b60ca196fd92f5c2649208146e4c5b2c42 \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index 91562d8e15..d138fa16a9 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -6,7 +6,7 @@ Cell Fill = Material 2 Region = -10000 Rotation = None - Temperature = [5.000000e+02 0.000000e+00 7.000000e+02 8.000000e+02] + Temperature = [ 500. 0. 700. 800.] Translation = None Offset = None Distribcell index= 1 diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index fd9956eea4..17f04238c2 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -5c0dbcb03265615cd2842b280dbd3e6c14f62ec7db9052657b98f03015cd1204295542f5affbb5948f4c5e57534746435065545a0fe533e3c8b062344bb854da +ca47172a42f6c13b244a763c990cbe4811662708ee03307d810a4542ee34bb5db7cc29d66aea313dad95b9f38a4ff7943ded527cfd0c7c8825372fec40cfc0d0 \ No newline at end of file diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 0bc44d358f..2d995d91e0 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -fea5b32f021c64daceffd73d9a50e4d15cad26f9f07f5cdea2e92bfd53d6c31c57da3a9240d4f7059cc30ceebae5c8ed730a0f97a67d3b3f631b9a02c747f982 \ No newline at end of file +89b550950d4cb4a63647a068bbbeaefca1c459538fb9c4c91b817e7999f09623365894367f318115647614885903a5d19bbb4cc080832beb5f1794a8f89d392e \ No newline at end of file diff --git a/tests/test_tally_arithmetic/results_true.dat b/tests/test_tally_arithmetic/results_true.dat index 6ef9ffeccd..ef2741cc12 100644 --- a/tests/test_tally_arithmetic/results_true.dat +++ b/tests/test_tally_arithmetic/results_true.dat @@ -1,134 +1,134 @@ -[[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] +[[[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]]][[[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]]][[[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0. 0.] + [ 0. 0. 0. 0.] + [ 0. 0. 0. 0.]]][[[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]]][[[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]]][[[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] ..., - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]] + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]] - [[0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00] - [0.000000e+00 0.000000e+00 0.000000e+00]]] \ No newline at end of file + [[ 0. 0. 0.] + [ 0. 0. 0.] + [ 0. 0. 0.]]] \ No newline at end of file diff --git a/tests/testing_harness.py b/tests/testing_harness.py index bde708b808..d360184045 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -9,14 +9,6 @@ import shutil import sys import numpy as np -import pandas as pd - -# Require numpy and pandas to print output in scientific notation with 7 -# significant figures. This is needed to avoid round off error when large -# numbers are printed, which can cause tests to fail for different build -# configurations. -np.set_printoptions(formatter={'float': '{:.6e}'.format}) -pd.options.display.float_format = '{:.6e}'.format sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet From 892e6419b5602fca34d382ad55a84e7a7ad5663f Mon Sep 17 00:00:00 2001 From: samuel shaner Date: Fri, 29 Jul 2016 15:34:18 +0000 Subject: [PATCH 78/82] updated mgxs and tally test results on linux --- .../results_true.dat | 38 ++++---- .../results_true.dat | 16 ++-- .../results_true.dat | 96 +++++++++---------- .../results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- 5 files changed, 77 insertions(+), 77 deletions(-) diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index 204a7e35d9..ae768cbe67 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -29,13 +29,13 @@ 2 10000 1 1 total P2 0.017984 0.002883 3 10000 1 1 total P3 0.006628 0.002457 material group in group out nuclide mean std. dev. -0 10000 1 1 total 1 0.066111 +0 10000 1 1 total 1.0 0.066111 material group in group out nuclide mean std. dev. 0 10000 1 1 total 0.085835 0.005592 material group out nuclide mean std. dev. -0 10000 1 total 1 0.046071 +0 10000 1 total 1.0 0.046071 material group out nuclide mean std. dev. -0 10000 1 total 1 0.051471 +0 10000 1 total 1.0 0.051471 material group in nuclide mean std. dev. 0 10000 1 total 4.996730e-07 3.650635e-08 material group in nuclide mean std. dev. @@ -51,11 +51,11 @@ material group in nuclide mean std. dev. 0 10001 1 total 0.00221 0.000286 material group in nuclide mean std. dev. -0 10001 1 total 0 0 +0 10001 1 total 0.0 0.0 material group in nuclide mean std. dev. -0 10001 1 total 0 0 +0 10001 1 total 0.0 0.0 material group in nuclide mean std. dev. -0 10001 1 total 0 0 +0 10001 1 total 0.0 0.0 material group in nuclide mean std. dev. 0 10001 1 total 0.309384 0.013551 material group in nuclide mean std. dev. @@ -71,17 +71,17 @@ 2 10001 1 1 total P2 0.018911 0.004323 3 10001 1 1 total P3 0.006235 0.003338 material group in group out nuclide mean std. dev. -0 10001 1 1 total 1 0.095039 +0 10001 1 1 total 1.0 0.095039 material group in group out nuclide mean std. dev. -0 10001 1 1 total 0 0 +0 10001 1 1 total 0.0 0.0 material group out nuclide mean std. dev. -0 10001 1 total 0 0 +0 10001 1 total 0.0 0.0 material group out nuclide mean std. dev. -0 10001 1 total 0 0 +0 10001 1 total 0.0 0.0 material group in nuclide mean std. dev. 0 10001 1 total 5.454760e-07 4.949800e-08 material group in nuclide mean std. dev. -0 10001 1 total 0 0 +0 10001 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. @@ -93,11 +93,11 @@ material group in nuclide mean std. dev. 0 10002 1 total 0.00606 0.000555 material group in nuclide mean std. dev. -0 10002 1 total 0 0 +0 10002 1 total 0.0 0.0 material group in nuclide mean std. dev. -0 10002 1 total 0 0 +0 10002 1 total 0.0 0.0 material group in nuclide mean std. dev. -0 10002 1 total 0 0 +0 10002 1 total 0.0 0.0 material group in nuclide mean std. dev. 0 10002 1 total 0.898938 0.043493 material group in nuclide mean std. dev. @@ -113,14 +113,14 @@ 2 10002 1 1 total P2 0.143301 0.007187 3 10002 1 1 total P3 0.008739 0.003571 material group in group out nuclide mean std. dev. -0 10002 1 1 total 1 0.056867 +0 10002 1 1 total 1.0 0.056867 material group in group out nuclide mean std. dev. -0 10002 1 1 total 0 0 +0 10002 1 1 total 0.0 0.0 material group out nuclide mean std. dev. -0 10002 1 total 0 0 +0 10002 1 total 0.0 0.0 material group out nuclide mean std. dev. -0 10002 1 total 0 0 +0 10002 1 total 0.0 0.0 material group in nuclide mean std. dev. 0 10002 1 total 5.773006e-07 5.322132e-08 material group in nuclide mean std. dev. -0 10002 1 total 0 0 +0 10002 1 total 0.0 0.0 diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index dec30061f6..c21ca09e99 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -9,11 +9,11 @@ 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, 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, 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, 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 1.126172 0.54344 avg(distribcell) group in nuclide mean std. dev. @@ -29,14 +29,14 @@ 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.529717 +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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.0 0.0 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 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, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 00f5a9523f..141143c8c3 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -63,21 +63,21 @@ 2 10000 2 2 total P2 0.006371 0.010551 3 10000 2 2 total P3 -0.010499 0.010438 material group in group out nuclide mean std. dev. -3 10000 1 1 total 1 0.078516 -2 10000 1 2 total 1 0.687184 -1 10000 2 1 total 1 1.414214 -0 10000 2 2 total 1 0.041130 +3 10000 1 1 total 1.0 0.078516 +2 10000 1 2 total 1.0 0.687184 +1 10000 2 1 total 1.0 1.414214 +0 10000 2 2 total 1.0 0.041130 material group in group out nuclide mean std. dev. 3 10000 1 1 total 0.020142 0.003149 2 10000 1 2 total 0.000000 0.000000 1 10000 2 1 total 0.454366 0.027426 0 10000 2 2 total 0.000000 0.000000 material group out nuclide mean std. dev. -1 10000 1 total 1 0.046071 -0 10000 2 total 0 0.000000 +1 10000 1 total 1.0 0.046071 +0 10000 2 total 0.0 0.000000 material group out nuclide mean std. dev. -1 10000 1 total 1 0.051471 -0 10000 2 total 0 0.000000 +1 10000 1 total 1.0 0.051471 +0 10000 2 total 0.0 0.000000 material group in nuclide mean std. dev. 1 10000 1 total 5.709323e-08 4.687930e-09 0 10000 2 total 2.855740e-06 2.442165e-07 @@ -100,14 +100,14 @@ 1 10001 1 total 0.001575 0.000323 0 10001 2 total 0.005400 0.000618 material group in nuclide mean std. dev. -1 10001 1 total 0 0 -0 10001 2 total 0 0 +1 10001 1 total 0.0 0.0 +0 10001 2 total 0.0 0.0 material group in nuclide mean std. dev. -1 10001 1 total 0 0 -0 10001 2 total 0 0 +1 10001 1 total 0.0 0.0 +0 10001 2 total 0.0 0.0 material group in nuclide mean std. dev. -1 10001 1 total 0 0 -0 10001 2 total 0 0 +1 10001 1 total 0.0 0.0 +0 10001 2 total 0.0 0.0 material group in nuclide mean std. dev. 1 10001 1 total 0.312163 0.015322 0 10001 2 total 0.295421 0.027445 @@ -149,27 +149,27 @@ 2 10001 2 2 total P2 0.008837 0.011504 3 10001 2 2 total P3 -0.003270 0.007329 material group in group out nuclide mean std. dev. -3 10001 1 1 total 1 0.108779 -2 10001 1 2 total 0 0.000000 -1 10001 2 1 total 0 0.000000 -0 10001 2 2 total 1 0.142427 +3 10001 1 1 total 1.0 0.108779 +2 10001 1 2 total 0.0 0.000000 +1 10001 2 1 total 0.0 0.000000 +0 10001 2 2 total 1.0 0.142427 material group in group out nuclide mean std. dev. -3 10001 1 1 total 0 0 -2 10001 1 2 total 0 0 -1 10001 2 1 total 0 0 -0 10001 2 2 total 0 0 +3 10001 1 1 total 0.0 0.0 +2 10001 1 2 total 0.0 0.0 +1 10001 2 1 total 0.0 0.0 +0 10001 2 2 total 0.0 0.0 material group out nuclide mean std. dev. -1 10001 1 total 0 0 -0 10001 2 total 0 0 +1 10001 1 total 0.0 0.0 +0 10001 2 total 0.0 0.0 material group out nuclide mean std. dev. -1 10001 1 total 0 0 -0 10001 2 total 0 0 +1 10001 1 total 0.0 0.0 +0 10001 2 total 0.0 0.0 material group in nuclide mean std. dev. 1 10001 1 total 5.995980e-08 4.553093e-09 0 10001 2 total 2.985490e-06 3.417016e-07 material group in nuclide mean std. dev. -1 10001 1 total 0 0 -0 10001 2 total 0 0 +1 10001 1 total 0.0 0.0 +0 10001 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 @@ -186,14 +186,14 @@ 1 10002 1 total 0.000690 0.000044 0 10002 2 total 0.031687 0.003747 material group in nuclide mean std. dev. -1 10002 1 total 0 0 -0 10002 2 total 0 0 +1 10002 1 total 0.0 0.0 +0 10002 2 total 0.0 0.0 material group in nuclide mean std. dev. -1 10002 1 total 0 0 -0 10002 2 total 0 0 +1 10002 1 total 0.0 0.0 +0 10002 2 total 0.0 0.0 material group in nuclide mean std. dev. -1 10002 1 total 0 0 -0 10002 2 total 0 0 +1 10002 1 total 0.0 0.0 +0 10002 2 total 0.0 0.0 material group in nuclide mean std. dev. 1 10002 1 total 0.663882 0.031173 0 10002 2 total 2.020697 0.220604 @@ -235,24 +235,24 @@ 2 10002 2 2 total P2 0.111175 0.013020 3 10002 2 2 total P3 0.024988 0.008312 material group in group out nuclide mean std. dev. -3 10002 1 1 total 1 0.038609 -2 10002 1 2 total 1 0.067667 -1 10002 2 1 total 1 1.414214 -0 10002 2 2 total 1 0.135929 +3 10002 1 1 total 1.0 0.038609 +2 10002 1 2 total 1.0 0.067667 +1 10002 2 1 total 1.0 1.414214 +0 10002 2 2 total 1.0 0.135929 material group in group out nuclide mean std. dev. -3 10002 1 1 total 0 0 -2 10002 1 2 total 0 0 -1 10002 2 1 total 0 0 -0 10002 2 2 total 0 0 +3 10002 1 1 total 0.0 0.0 +2 10002 1 2 total 0.0 0.0 +1 10002 2 1 total 0.0 0.0 +0 10002 2 2 total 0.0 0.0 material group out nuclide mean std. dev. -1 10002 1 total 0 0 -0 10002 2 total 0 0 +1 10002 1 total 0.0 0.0 +0 10002 2 total 0.0 0.0 material group out nuclide mean std. dev. -1 10002 1 total 0 0 -0 10002 2 total 0 0 +1 10002 1 total 0.0 0.0 +0 10002 2 total 0.0 0.0 material group in nuclide mean std. dev. 1 10002 1 total 6.022078e-08 3.780437e-09 0 10002 2 total 3.044955e-06 3.600077e-07 material group in nuclide mean std. dev. -1 10002 1 total 0 0 -0 10002 2 total 0 0 +1 10002 1 total 0.0 0.0 +0 10002 2 total 0.0 0.0 diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 2f3290a1f2..3da8146042 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -e421bd357f75c7b77532126ec4a7871ab8369c2dcaceb97c55eaafde1032099338a25b6bdafe54cbd1cac1e6243c91b60ca196fd92f5c2649208146e4c5b2c42 \ No newline at end of file +e494320a213b5704a2ac915a2ba504857be91961ceb6735b6ad05d81eb31c44c9584d5bd9d40baececf1dcb5b030e6ecec63cfbd20639baf69bcb596c5c46591 \ No newline at end of file diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 2d995d91e0..6c2d7a5193 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -89b550950d4cb4a63647a068bbbeaefca1c459538fb9c4c91b817e7999f09623365894367f318115647614885903a5d19bbb4cc080832beb5f1794a8f89d392e \ No newline at end of file +840d2648f9ba782926c71baa84e5a2ad31331e156740a3d1e9d86af8f1f0d301ef8c0f69474975d365dbcf8d229a68c62d3e60286d18045e5254373f4e1010bf \ No newline at end of file From 6694895769ce32bfa8555da2843ec52a65bec88d Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 29 Jul 2016 13:38:46 -0400 Subject: [PATCH 79/82] added error statement when micro xs is requested for a mesh domain --- .../pythonapi/examples/mgxs-part-i.ipynb | 47 ++++++++++--------- openmc/mgxs/mgxs.py | 7 +++ 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index 7b20a97db5..e7b8cc73ad 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -433,7 +433,7 @@ " \tName =\t\n", " \tFilters =\t\n", " \t\tmesh\t[10000]\n", - " \t\tenergy\t[0.000000E+00 6.250000E-07 2.000000E+01]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", " \tNuclides =\ttotal \n", " \tScores =\t['flux']\n", " \tEstimator =\ttracklength), ('absorption', Tally\n", @@ -441,7 +441,7 @@ " \tName =\t\n", " \tFilters =\t\n", " \t\tmesh\t[10000]\n", - " \t\tenergy\t[0.000000E+00 6.250000E-07 2.000000E+01]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", " \tNuclides =\ttotal \n", " \tScores =\t['absorption']\n", " \tEstimator =\ttracklength)])" @@ -520,9 +520,10 @@ "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-22 21:03:18\n", + " Version: 0.8.0\n", + " Git SHA1: 16e74656b028875a7ebcb90df07293c5f1cc56a4\n", + " Date/Time: 2016-07-29 13:20:18\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -532,11 +533,11 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", - " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", - " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", - " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", + " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", + " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", + " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", " Maximum neutron transport energy: 20.0000 MeV for H1.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", @@ -607,20 +608,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.2300E-01 seconds\n", - " Reading cross sections = 1.6900E-01 seconds\n", - " Total time in simulation = 1.9882E+01 seconds\n", - " Time in transport only = 1.9869E+01 seconds\n", - " Time in inactive batches = 2.6590E+00 seconds\n", - " Time in active batches = 1.7223E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 4.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 3.8300E-01 seconds\n", + " Reading cross sections = 2.0900E-01 seconds\n", + " Total time in simulation = 2.3245E+01 seconds\n", + " Time in transport only = 2.3223E+01 seconds\n", + " Time in inactive batches = 2.0320E+00 seconds\n", + " Time in active batches = 2.1213E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-02 seconds\n", + " Sampling source sites = 7.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 2.0217E+01 seconds\n", - " Calculation Rate (inactive) = 9402.03 neutrons/second\n", - " Calculation Rate (active) = 5806.19 neutrons/second\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 2.3642E+01 seconds\n", + " Calculation Rate (inactive) = 12303.1 neutrons/second\n", + " Calculation Rate (active) = 4714.09 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 5399047447..1ef3194be0 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -773,6 +773,13 @@ class MGXS(object): cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) cv.check_value('xs_type', xs_type, ['macro', 'micro']) + # FIXME: Unable to get microscopic xs for mesh domain because the mesh + # cells do not know the nuclide densities in each mesh cell. + if self.domain_type == 'mesh' and xs_type == 'micro': + msg = 'Unable to get micro xs for mesh domain since the mesh ' \ + 'cells do not know the nuclide densities in each mesh cell.' + raise ValueError(msg) + filters = [] filter_bins = [] From c35eac2c0656a902007cc7fd865b7fe13dcd1394 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 29 Jul 2016 13:41:14 -0400 Subject: [PATCH 80/82] changed mgxs-part-i.ipynb mgxs domain back to cell --- .../pythonapi/examples/mgxs-part-i.ipynb | 667 ++---------------- 1 file changed, 78 insertions(+), 589 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index e7b8cc73ad..b4e6d84fef 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -398,17 +398,10 @@ }, "outputs": [], "source": [ - "# Instantiate a tally Mesh\n", - "mesh = openmc.Mesh(name='mesh')\n", - "mesh.type = 'regular'\n", - "mesh.dimension = [2, 2]\n", - "mesh.lower_left = [-0.63, -0.63]\n", - "mesh.upper_right = [+0.63, +0.63]\n", - "\n", "# Instantiate a few different sections\n", - "total = mgxs.TotalXS(domain=mesh, groups=groups)\n", - "absorption = mgxs.AbsorptionXS(domain=mesh, groups=groups)\n", - "scattering = mgxs.ScatterXS(domain=mesh, groups=groups)" + "total = mgxs.TotalXS(domain=cell, groups=groups)\n", + "absorption = mgxs.AbsorptionXS(domain=cell, groups=groups)\n", + "scattering = mgxs.ScatterXS(domain=cell, groups=groups)" ] }, { @@ -432,7 +425,7 @@ " \tID =\t10000\n", " \tName =\t\n", " \tFilters =\t\n", - " \t\tmesh\t[10000]\n", + " \t\tcell\t[1]\n", " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", " \tNuclides =\ttotal \n", " \tScores =\t['flux']\n", @@ -440,7 +433,7 @@ " \tID =\t10001\n", " \tName =\t\n", " \tFilters =\t\n", - " \t\tmesh\t[10000]\n", + " \t\tcell\t[1]\n", " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", " \tNuclides =\ttotal \n", " \tScores =\t['absorption']\n", @@ -522,7 +515,7 @@ " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", " Git SHA1: 16e74656b028875a7ebcb90df07293c5f1cc56a4\n", - " Date/Time: 2016-07-29 13:20:18\n", + " Date/Time: 2016-07-29 13:40:25\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -608,20 +601,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.8300E-01 seconds\n", - " Reading cross sections = 2.0900E-01 seconds\n", - " Total time in simulation = 2.3245E+01 seconds\n", - " Time in transport only = 2.3223E+01 seconds\n", - " Time in inactive batches = 2.0320E+00 seconds\n", - " Time in active batches = 2.1213E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-02 seconds\n", - " Sampling source sites = 7.0000E-03 seconds\n", - " SEND/RECV source sites = 2.0000E-03 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for initialization = 3.9900E-01 seconds\n", + " Reading cross sections = 2.1800E-01 seconds\n", + " Total time in simulation = 2.0870E+01 seconds\n", + " Time in transport only = 2.0855E+01 seconds\n", + " Time in inactive batches = 2.3100E+00 seconds\n", + " Time in active batches = 1.8560E+01 seconds\n", + " Time synchronizing fission bank = 4.0000E-03 seconds\n", + " Sampling source sites = 3.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 2.0000E-03 seconds\n", " Total time for finalization = 1.0000E-03 seconds\n", - " Total time elapsed = 2.3642E+01 seconds\n", - " Calculation Rate (inactive) = 12303.1 neutrons/second\n", - " Calculation Rate (active) = 4714.09 neutrons/second\n", + " Total time elapsed = 2.1283E+01 seconds\n", + " Calculation Rate (inactive) = 10822.5 neutrons/second\n", + " Calculation Rate (active) = 5387.93 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -737,26 +730,11 @@ "text": [ "Multi-Group XS\n", "\tReaction Type =\ttotal\n", - "\tDomain Type =\tmesh\n", - "\tDomain ID =\t10000\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t1\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 3.06e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 6.94e-01%\n", - "\n", - "\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 3.19e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 7.34e-01%\n", - "\n", - "\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.82e-01 +/- 3.01e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 7.23e-01%\n", - "\n", - "\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.80e-01 +/- 3.34e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 5.92e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 2.69e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 5.93e-01%\n", "\n", "\n", "\n" @@ -787,121 +765,40 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
mesh 10000cellgroup innuclidemeanstd. dev.
xyz
11111total0.6676910.0020460.6677870.001802
01112total1.2917090.008941
31211total0.6674740.002119
21212total1.2926770.009479
52111total0.6687660.002021
42112total1.2925040.009323
72211total0.6672180.002220
62212total1.2911600.0076131.2920130.007642
\n", "
" ], "text/plain": [ - " mesh 10000 group in nuclide mean std. dev.\n", - " x y z \n", - "1 1 1 1 1 total 0.667691 0.002046\n", - "0 1 1 1 2 total 1.291709 0.008941\n", - "3 1 2 1 1 total 0.667474 0.002119\n", - "2 1 2 1 2 total 1.292677 0.009479\n", - "5 2 1 1 1 total 0.668766 0.002021\n", - "4 2 1 1 2 total 1.292504 0.009323\n", - "7 2 2 1 1 total 0.667218 0.002220\n", - "6 2 2 1 2 total 1.291160 0.007613" + " cell group in nuclide mean std. dev.\n", + "1 1 1 total 0.667787 0.001802\n", + "0 1 2 total 1.292013 0.007642" ] }, "execution_count": 19, @@ -961,9 +858,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -971,142 +868,40 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
mesh 10000cellenergy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-1.332268e-150.013214-3.996803e-150.011292
11116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...-2.220446e-160.002922
21210.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...4.440892e-160.014000
31216.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...2.331468e-150.003034
42110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-6.661338e-160.013782
52116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...-9.992007e-160.002880
62210.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...4.440892e-160.011257
72216.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...7.771561e-160.0031775.551115e-160.002570
\n", "
" ], "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "2 1 2 1 0.00e+00 6.25e-07 total \n", - "3 1 2 1 6.25e-07 2.00e+01 total \n", - "4 2 1 1 0.00e+00 6.25e-07 total \n", - "5 2 1 1 6.25e-07 2.00e+01 total \n", - "6 2 2 1 0.00e+00 6.25e-07 total \n", - "7 2 2 1 6.25e-07 2.00e+01 total \n", + " cell energy low [MeV] energy high [MeV] nuclide \\\n", + "0 1 0.00e+00 6.25e-07 total \n", + "1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - " \n", - "0 (((total / flux) - (absorption / flux)) - (sca... -1.33e-15 1.32e-02 \n", - "1 (((total / flux) - (absorption / flux)) - (sca... -2.22e-16 2.92e-03 \n", - "2 (((total / flux) - (absorption / flux)) - (sca... 4.44e-16 1.40e-02 \n", - "3 (((total / flux) - (absorption / flux)) - (sca... 2.33e-15 3.03e-03 \n", - "4 (((total / flux) - (absorption / flux)) - (sca... -6.66e-16 1.38e-02 \n", - "5 (((total / flux) - (absorption / flux)) - (sca... -9.99e-16 2.88e-03 \n", - "6 (((total / flux) - (absorption / flux)) - (sca... 4.44e-16 1.13e-02 \n", - "7 (((total / flux) - (absorption / flux)) - (sca... 7.77e-16 3.18e-03 " + " score mean std. dev. \n", + "0 (((total / flux) - (absorption / flux)) - (sca... -4.00e-15 1.13e-02 \n", + "1 (((total / flux) - (absorption / flux)) - (sca... 5.55e-16 2.57e-03 " ] }, "execution_count": 21, @@ -1142,9 +937,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1152,142 +947,40 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
mesh 10000cellenergy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0760770.0007620.0761150.000649
11116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0192420.000160
21210.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0761730.000800
31216.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0193720.000136
42110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0761830.000796
52116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0193640.000154
62210.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0760270.000654
72216.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0190740.0001530.0192630.000095
\n", "
" ], "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "2 1 2 1 0.00e+00 6.25e-07 total \n", - "3 1 2 1 6.25e-07 2.00e+01 total \n", - "4 2 1 1 0.00e+00 6.25e-07 total \n", - "5 2 1 1 6.25e-07 2.00e+01 total \n", - "6 2 2 1 0.00e+00 6.25e-07 total \n", - "7 2 2 1 6.25e-07 2.00e+01 total \n", + " cell energy low [MeV] energy high [MeV] nuclide \\\n", + "0 1 0.00e+00 6.25e-07 total \n", + "1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - " \n", - "0 ((absorption / flux) / (total / flux)) 7.61e-02 7.62e-04 \n", - "1 ((absorption / flux) / (total / flux)) 1.92e-02 1.60e-04 \n", - "2 ((absorption / flux) / (total / flux)) 7.62e-02 8.00e-04 \n", - "3 ((absorption / flux) / (total / flux)) 1.94e-02 1.36e-04 \n", - "4 ((absorption / flux) / (total / flux)) 7.62e-02 7.96e-04 \n", - "5 ((absorption / flux) / (total / flux)) 1.94e-02 1.54e-04 \n", - "6 ((absorption / flux) / (total / flux)) 7.60e-02 6.54e-04 \n", - "7 ((absorption / flux) / (total / flux)) 1.91e-02 1.53e-04 " + " score mean std. dev. \n", + "0 ((absorption / flux) / (total / flux)) 7.61e-02 6.49e-04 \n", + "1 ((absorption / flux) / (total / flux)) 1.93e-02 9.46e-05 " ] }, "execution_count": 22, @@ -1316,9 +1009,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1326,142 +1019,40 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
mesh 10000cellenergy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9239230.0090540.9238850.007736
11116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9807580.004247
21210.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9238270.009586
31216.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9806280.004411
42110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9238170.009436
52116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9806360.004180
62210.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9239730.007717
72216.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9809260.0046230.9807370.003737
\n", "
" ], "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "2 1 2 1 0.00e+00 6.25e-07 total \n", - "3 1 2 1 6.25e-07 2.00e+01 total \n", - "4 2 1 1 0.00e+00 6.25e-07 total \n", - "5 2 1 1 6.25e-07 2.00e+01 total \n", - "6 2 2 1 0.00e+00 6.25e-07 total \n", - "7 2 2 1 6.25e-07 2.00e+01 total \n", + " cell energy low [MeV] energy high [MeV] nuclide \\\n", + "0 1 0.00e+00 6.25e-07 total \n", + "1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - " \n", - "0 ((scatter / flux) / (total / flux)) 9.24e-01 9.05e-03 \n", - "1 ((scatter / flux) / (total / flux)) 9.81e-01 4.25e-03 \n", - "2 ((scatter / flux) / (total / flux)) 9.24e-01 9.59e-03 \n", - "3 ((scatter / flux) / (total / flux)) 9.81e-01 4.41e-03 \n", - "4 ((scatter / flux) / (total / flux)) 9.24e-01 9.44e-03 \n", - "5 ((scatter / flux) / (total / flux)) 9.81e-01 4.18e-03 \n", - "6 ((scatter / flux) / (total / flux)) 9.24e-01 7.72e-03 \n", - "7 ((scatter / flux) / (total / flux)) 9.81e-01 4.62e-03 " + " score mean std. dev. \n", + "0 ((scatter / flux) / (total / flux)) 9.24e-01 7.74e-03 \n", + "1 ((scatter / flux) / (total / flux)) 9.81e-01 3.74e-03 " ] }, "execution_count": 23, @@ -1497,9 +1088,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1507,142 +1098,40 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", "
mesh 10000cellenergy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.0090860.007763
11116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.004250
21210.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.009619
31216.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.004413
42110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.009470
52116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.004183
62210.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.007745
72216.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.0046260.003739
\n", "
" ], "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "2 1 2 1 0.00e+00 6.25e-07 total \n", - "3 1 2 1 6.25e-07 2.00e+01 total \n", - "4 2 1 1 0.00e+00 6.25e-07 total \n", - "5 2 1 1 6.25e-07 2.00e+01 total \n", - "6 2 2 1 0.00e+00 6.25e-07 total \n", - "7 2 2 1 6.25e-07 2.00e+01 total \n", + " cell energy low [MeV] energy high [MeV] nuclide \\\n", + "0 1 0.00e+00 6.25e-07 total \n", + "1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - " \n", - "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 9.09e-03 \n", - "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.25e-03 \n", - "2 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 9.62e-03 \n", - "3 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.41e-03 \n", - "4 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 9.47e-03 \n", - "5 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.18e-03 \n", - "6 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 7.74e-03 \n", - "7 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 4.63e-03 " + " score mean std. dev. \n", + "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 7.76e-03 \n", + "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 3.74e-03 " ] }, "execution_count": 24, From a00441ee14bec10badad33f78531e49ae6b050f5 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 29 Jul 2016 13:44:11 -0400 Subject: [PATCH 81/82] removed updates to mgxs notebooks --- .../pythonapi/examples/mgxs-part-i.ipynb | 102 +++++---- .../pythonapi/examples/mgxs-part-iii.ipynb | 212 +++++++++--------- 2 files changed, 161 insertions(+), 153 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index b4e6d84fef..7c5132100e 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -91,7 +91,7 @@ "\n", "$$\\sigma_{n,x,k,g} = \\frac{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\sigma_{n,x}(\\mathbf{r},E')\\Phi(\\mathbf{r},E')}{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\Phi(\\mathbf{r},E')}$$\n", "\n", - "This scalar flux-weighted average microscopic cross section is computed by `openmc.mgxs` for most multi-group cross sections, including total, absorption, and fission reaction types. These double integrals are stochastically computed with OpenMC's tally system - in particular, [filters](https://mit-crpg.github.io/openmc/pythonapi/filter.html) on the energy range and spatial zone (material, cell, universe, or mesh) define the bounds of integration for both numerator and denominator." + "This scalar flux-weighted average microscopic cross section is computed by `openmc.mgxs` for most multi-group cross sections, including total, absorption, and fission reaction types. These double integrals are stochastically computed with OpenMC's tally system - in particular, [filters](https://mit-crpg.github.io/openmc/pythonapi/filter.html) on the energy range and spatial zone (material, cell or universe) define the bounds of integration for both numerator and denominator." ] }, { @@ -513,10 +513,9 @@ "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.8.0\n", - " Git SHA1: 16e74656b028875a7ebcb90df07293c5f1cc56a4\n", - " Date/Time: 2016-07-29 13:40:25\n", - " MPI Processes: 1\n", + " Version: 0.7.1\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-22 21:03:18\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -526,11 +525,11 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", - " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", - " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", - " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", " Maximum neutron transport energy: 20.0000 MeV for H1.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", @@ -601,20 +600,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9900E-01 seconds\n", - " Reading cross sections = 2.1800E-01 seconds\n", - " Total time in simulation = 2.0870E+01 seconds\n", - " Time in transport only = 2.0855E+01 seconds\n", - " Time in inactive batches = 2.3100E+00 seconds\n", - " Time in active batches = 1.8560E+01 seconds\n", + " Total time for initialization = 3.2300E-01 seconds\n", + " Reading cross sections = 1.6900E-01 seconds\n", + " Total time in simulation = 1.9882E+01 seconds\n", + " Time in transport only = 1.9869E+01 seconds\n", + " Time in inactive batches = 2.6590E+00 seconds\n", + " Time in active batches = 1.7223E+01 seconds\n", " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", - " Total time for finalization = 1.0000E-03 seconds\n", - " Total time elapsed = 2.1283E+01 seconds\n", - " Calculation Rate (inactive) = 10822.5 neutrons/second\n", - " Calculation Rate (active) = 5387.93 neutrons/second\n", + " Sampling source sites = 4.0000E-03 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 0.0000E+00 seconds\n", + " Total time elapsed = 2.0217E+01 seconds\n", + " Calculation Rate (inactive) = 9402.03 neutrons/second\n", + " Calculation Rate (active) = 5806.19 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -815,12 +814,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The following code snippet shows how to export all three `MGXS` to the same HDF5 binary data store." + "Each multi-group cross section object can be easily exported to a variety of file formats, including CSV, Excel, and LaTeX for storage or data processing." ] }, { "cell_type": "code", "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "absorption.export_xs_data(filename='absorption-xs', format='excel')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code snippet shows how to export all three `MGXS` to the same HDF5 binary data store." + ] + }, + { + "cell_type": "code", + "execution_count": 21, "metadata": { "collapsed": false }, @@ -847,7 +864,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -877,7 +894,7 @@ " 6.250000e-07\n", " total\n", " (((total / flux) - (absorption / flux)) - (sca...\n", - " -3.996803e-15\n", + " -3.774758e-15\n", " 0.011292\n", " \n", " \n", @@ -887,7 +904,7 @@ " 2.000000e+01\n", " total\n", " (((total / flux) - (absorption / flux)) - (sca...\n", - " 5.551115e-16\n", + " 1.443290e-15\n", " 0.002570\n", " \n", " \n", @@ -900,11 +917,11 @@ "1 1 6.25e-07 2.00e+01 total \n", "\n", " score mean std. dev. \n", - "0 (((total / flux) - (absorption / flux)) - (sca... -4.00e-15 1.13e-02 \n", - "1 (((total / flux) - (absorption / flux)) - (sca... 5.55e-16 2.57e-03 " + "0 (((total / flux) - (absorption / flux)) - (sca... -3.77e-15 1.13e-02 \n", + "1 (((total / flux) - (absorption / flux)) - (sca... 1.44e-15 2.57e-03 " ] }, - "execution_count": 21, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -926,7 +943,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -983,7 +1000,7 @@ "1 ((absorption / flux) / (total / flux)) 1.93e-02 9.46e-05 " ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -998,7 +1015,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -1055,7 +1072,7 @@ "1 ((scatter / flux) / (total / flux)) 9.81e-01 3.74e-03 " ] }, - "execution_count": 23, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1077,7 +1094,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -1107,7 +1124,7 @@ " 6.250000e-07\n", " total\n", " (((absorption / flux) / (total / flux)) + ((sc...\n", - " 1\n", + " 1.0\n", " 0.007763\n", " \n", " \n", @@ -1117,7 +1134,7 @@ " 2.000000e+01\n", " total\n", " (((absorption / flux) / (total / flux)) + ((sc...\n", - " 1\n", + " 1.0\n", " 0.003739\n", " \n", " \n", @@ -1134,7 +1151,7 @@ "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 3.74e-03 " ] }, - "execution_count": 24, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -1146,15 +1163,6 @@ "# The scattering-to-total ratio is a derived tally which can generate Pandas DataFrames for inspection\n", "sum_ratio.get_pandas_dataframe()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index aa243cfc22..39980a8fd7 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -32,7 +32,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -75,12 +75,12 @@ "outputs": [], "source": [ "# Instantiate some Nuclides\n", - "h1 = openmc.Nuclide('H-1')\n", - "b10 = openmc.Nuclide('B-10')\n", - "o16 = openmc.Nuclide('O-16')\n", - "u235 = openmc.Nuclide('U-235')\n", - "u238 = openmc.Nuclide('U-238')\n", - "zr90 = openmc.Nuclide('Zr-90')" + "h1 = openmc.Nuclide('H1')\n", + "b10 = openmc.Nuclide('B10')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" ] }, { @@ -458,7 +458,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -728,27 +728,26 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 47ef320ad517612376e181ec6a6bc42ca0db98ce\n", - " Date/Time: 2016-05-14 12:29:07\n", - " MPI Processes: 1\n", + " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", + " Date/Time: 2016-07-23 16:42:32\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", " ===========================================================================\n", "\n", " Reading settings XML file...\n", - " Reading cross sections XML file...\n", " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", " Reading materials XML file...\n", + " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", + " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 5010.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -816,20 +815,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.7700E-01 seconds\n", - " Reading cross sections = 1.3400E-01 seconds\n", - " Total time in simulation = 8.0461E+01 seconds\n", - " Time in transport only = 8.0422E+01 seconds\n", - " Time in inactive batches = 6.4060E+00 seconds\n", - " Time in active batches = 7.4055E+01 seconds\n", - " Time synchronizing fission bank = 6.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", - " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 4.3400E-01 seconds\n", + " Reading cross sections = 2.7900E-01 seconds\n", + " Total time in simulation = 6.1121E+01 seconds\n", + " Time in transport only = 6.1101E+01 seconds\n", + " Time in inactive batches = 5.0660E+00 seconds\n", + " Time in active batches = 5.6055E+01 seconds\n", + " Time synchronizing fission bank = 5.0000E-03 seconds\n", + " Sampling source sites = 3.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 8.1067E+01 seconds\n", - " Calculation Rate (inactive) = 3902.59 neutrons/second\n", - " Calculation Rate (active) = 1350.35 neutrons/second\n", + " Total time elapsed = 6.1576E+01 seconds\n", + " Calculation Rate (inactive) = 4934.86 neutrons/second\n", + " Calculation Rate (active) = 1783.96 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -956,7 +955,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/Documents/NSE-CRPG-Codes/openmc/openmc/tallies.py:1988: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/romano/openmc/openmc/tallies.py:1941: RuntimeWarning: invalid value encountered in true_divide\n", " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n" ] }, @@ -980,7 +979,7 @@ " 3\n", " 10000\n", " 1\n", - " U-235\n", + " U235\n", " 8.055246e-03\n", " 2.857567e-05\n", " \n", @@ -988,7 +987,7 @@ " 4\n", " 10000\n", " 1\n", - " U-238\n", + " U238\n", " 7.339215e-03\n", " 4.349466e-05\n", " \n", @@ -996,7 +995,7 @@ " 5\n", " 10000\n", " 1\n", - " O-16\n", + " O16\n", " 0.000000e+00\n", " 0.000000e+00\n", " \n", @@ -1004,7 +1003,7 @@ " 0\n", " 10000\n", " 2\n", - " U-235\n", + " U235\n", " 3.615565e-01\n", " 2.050486e-03\n", " \n", @@ -1012,7 +1011,7 @@ " 1\n", " 10000\n", " 2\n", - " U-238\n", + " U238\n", " 6.742638e-07\n", " 3.795256e-09\n", " \n", @@ -1020,7 +1019,7 @@ " 2\n", " 10000\n", " 2\n", - " O-16\n", + " O16\n", " 0.000000e+00\n", " 0.000000e+00\n", " \n", @@ -1030,12 +1029,12 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-235 8.055246e-03 2.857567e-05\n", - "4 10000 1 U-238 7.339215e-03 4.349466e-05\n", - "5 10000 1 O-16 0.000000e+00 0.000000e+00\n", - "0 10000 2 U-235 3.615565e-01 2.050486e-03\n", - "1 10000 2 U-238 6.742638e-07 3.795256e-09\n", - "2 10000 2 O-16 0.000000e+00 0.000000e+00" + "3 10000 1 U235 8.055246e-03 2.857567e-05\n", + "4 10000 1 U238 7.339215e-03 4.349466e-05\n", + "5 10000 1 O16 0.000000e+00 0.000000e+00\n", + "0 10000 2 U235 3.615565e-01 2.050486e-03\n", + "1 10000 2 U238 6.742638e-07 3.795256e-09\n", + "2 10000 2 O16 0.000000e+00 0.000000e+00" ] }, "execution_count": 30, @@ -1070,17 +1069,17 @@ "\tReaction Type =\tnu-fission\n", "\tDomain Type =\tcell\n", "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", + "\tNuclide =\tU235\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t8.06e-03 +/- 3.55e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t3.62e-01 +/- 5.67e-01%\n", "\n", - "\tNuclide =\tU-238\n", + "\tNuclide =\tU238\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t7.34e-03 +/- 5.93e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.63e-01%\n", "\n", - "\tNuclide =\tO-16\n", + "\tNuclide =\tO16\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t0.00e+00 +/- nan%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t0.00e+00 +/- nan%\n", @@ -1193,7 +1192,7 @@ " 0\n", " 10000\n", " 1\n", - " U-235\n", + " U235\n", " 0.074860\n", " 0.000303\n", " \n", @@ -1201,7 +1200,7 @@ " 1\n", " 10000\n", " 1\n", - " U-238\n", + " U238\n", " 0.005952\n", " 0.000035\n", " \n", @@ -1209,7 +1208,7 @@ " 2\n", " 10000\n", " 1\n", - " O-16\n", + " O16\n", " 0.000000\n", " 0.000000\n", " \n", @@ -1219,9 +1218,9 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "0 10000 1 U-235 0.074860 0.000303\n", - "1 10000 1 U-238 0.005952 0.000035\n", - "2 10000 1 O-16 0.000000 0.000000" + "0 10000 1 U235 0.074860 0.000303\n", + "1 10000 1 U238 0.005952 0.000035\n", + "2 10000 1 O16 0.000000 0.000000" ] }, "execution_count": 36, @@ -1301,7 +1300,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ NORMAL ] Importing ray tracing data from file...\n", + "[ NORMAL ] Ray tracing for track segmentation...\n", + "[ NORMAL ] Dumping tracks to file...\n", "[ NORMAL ] Computing the eigenvalue...\n", "[ NORMAL ] Iteration 0:\tk_eff = 0.854370\tres = 0.000E+00\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.801922\tres = 1.521E-01\n", @@ -1314,42 +1314,42 @@ "[ NORMAL ] Iteration 8:\tk_eff = 0.683124\tres = 6.142E-03\n", "[ NORMAL ] Iteration 9:\tk_eff = 0.685943\tres = 7.897E-04\n", "[ NORMAL ] Iteration 10:\tk_eff = 0.691322\tres = 4.180E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.698747\tres = 7.873E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.698746\tres = 7.873E-03\n", "[ NORMAL ] Iteration 12:\tk_eff = 0.707777\tres = 1.076E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.718040\tres = 1.295E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.718039\tres = 1.295E-02\n", "[ NORMAL ] Iteration 14:\tk_eff = 0.729218\tres = 1.452E-02\n", "[ NORMAL ] Iteration 15:\tk_eff = 0.741045\tres = 1.559E-02\n", "[ NORMAL ] Iteration 16:\tk_eff = 0.753296\tres = 1.624E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.765785\tres = 1.655E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.765784\tres = 1.655E-02\n", "[ NORMAL ] Iteration 18:\tk_eff = 0.778355\tres = 1.659E-02\n", "[ NORMAL ] Iteration 19:\tk_eff = 0.790879\tres = 1.643E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.803254\tres = 1.610E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.803253\tres = 1.610E-02\n", "[ NORMAL ] Iteration 21:\tk_eff = 0.815394\tres = 1.566E-02\n", "[ NORMAL ] Iteration 22:\tk_eff = 0.827235\tres = 1.513E-02\n", "[ NORMAL ] Iteration 23:\tk_eff = 0.838724\tres = 1.453E-02\n", "[ NORMAL ] Iteration 24:\tk_eff = 0.849823\tres = 1.390E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.860503\tres = 1.324E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.860502\tres = 1.324E-02\n", "[ NORMAL ] Iteration 26:\tk_eff = 0.870744\tres = 1.258E-02\n", "[ NORMAL ] Iteration 27:\tk_eff = 0.880535\tres = 1.191E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.889870\tres = 1.125E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.898748\tres = 1.061E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.889869\tres = 1.125E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.898747\tres = 1.061E-02\n", "[ NORMAL ] Iteration 30:\tk_eff = 0.907172\tres = 9.985E-03\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.915151\tres = 9.382E-03\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.922693\tres = 8.802E-03\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.929811\tres = 8.248E-03\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.915150\tres = 9.382E-03\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.922692\tres = 8.802E-03\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.929810\tres = 8.248E-03\n", "[ NORMAL ] Iteration 34:\tk_eff = 0.936517\tres = 7.720E-03\n", "[ NORMAL ] Iteration 35:\tk_eff = 0.942827\tres = 7.219E-03\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.948757\tres = 6.744E-03\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.954322\tres = 6.295E-03\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.948756\tres = 6.744E-03\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.954321\tres = 6.295E-03\n", "[ NORMAL ] Iteration 38:\tk_eff = 0.959539\tres = 5.871E-03\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.964425\tres = 5.472E-03\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.968996\tres = 5.096E-03\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.964424\tres = 5.472E-03\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.968995\tres = 5.096E-03\n", "[ NORMAL ] Iteration 41:\tk_eff = 0.973268\tres = 4.744E-03\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.977259\tres = 4.413E-03\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.980982\tres = 4.104E-03\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.984454\tres = 3.814E-03\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.977258\tres = 4.413E-03\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.980981\tres = 4.104E-03\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.984453\tres = 3.814E-03\n", "[ NORMAL ] Iteration 45:\tk_eff = 0.987689\tres = 3.543E-03\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.990702\tres = 3.289E-03\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.990701\tres = 3.289E-03\n", "[ NORMAL ] Iteration 47:\tk_eff = 0.993505\tres = 3.053E-03\n", "[ NORMAL ] Iteration 48:\tk_eff = 0.996112\tres = 2.832E-03\n", "[ NORMAL ] Iteration 49:\tk_eff = 0.998536\tres = 2.627E-03\n", @@ -1369,12 +1369,12 @@ "[ NORMAL ] Iteration 63:\tk_eff = 1.018721\tres = 8.864E-04\n", "[ NORMAL ] Iteration 64:\tk_eff = 1.019490\tres = 8.187E-04\n", "[ NORMAL ] Iteration 65:\tk_eff = 1.020201\tres = 7.560E-04\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.020858\tres = 6.980E-04\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.021464\tres = 6.444E-04\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.020857\tres = 6.980E-04\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.021464\tres = 6.443E-04\n", "[ NORMAL ] Iteration 68:\tk_eff = 1.022024\tres = 5.947E-04\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.022541\tres = 5.488E-04\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.022540\tres = 5.488E-04\n", "[ NORMAL ] Iteration 70:\tk_eff = 1.023017\tres = 5.063E-04\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.023458\tres = 4.670E-04\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.023457\tres = 4.670E-04\n", "[ NORMAL ] Iteration 72:\tk_eff = 1.023863\tres = 4.308E-04\n", "[ NORMAL ] Iteration 73:\tk_eff = 1.024238\tres = 3.972E-04\n", "[ NORMAL ] Iteration 74:\tk_eff = 1.024583\tres = 3.663E-04\n", @@ -1389,38 +1389,38 @@ "[ NORMAL ] Iteration 83:\tk_eff = 1.026697\tres = 1.753E-04\n", "[ NORMAL ] Iteration 84:\tk_eff = 1.026849\tres = 1.614E-04\n", "[ NORMAL ] Iteration 85:\tk_eff = 1.026989\tres = 1.487E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.027118\tres = 1.369E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.027118\tres = 1.368E-04\n", "[ NORMAL ] Iteration 87:\tk_eff = 1.027237\tres = 1.260E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.027347\tres = 1.160E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.027346\tres = 1.159E-04\n", "[ NORMAL ] Iteration 89:\tk_eff = 1.027447\tres = 1.067E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.027540\tres = 9.823E-05\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.027625\tres = 9.039E-05\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.027704\tres = 8.317E-05\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.027776\tres = 7.652E-05\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.027843\tres = 7.040E-05\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.027904\tres = 6.476E-05\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.027960\tres = 5.957E-05\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.028012\tres = 5.479E-05\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.028059\tres = 5.039E-05\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.028103\tres = 4.635E-05\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.028143\tres = 4.262E-05\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.028180\tres = 3.919E-05\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.028214\tres = 3.603E-05\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.028245\tres = 3.313E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.028274\tres = 3.046E-05\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.027540\tres = 9.821E-05\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.027625\tres = 9.040E-05\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.027703\tres = 8.316E-05\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.027775\tres = 7.652E-05\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.027842\tres = 7.039E-05\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.027903\tres = 6.480E-05\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.027959\tres = 5.959E-05\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.028011\tres = 5.479E-05\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.028058\tres = 5.043E-05\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.028102\tres = 4.633E-05\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.028142\tres = 4.265E-05\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.028180\tres = 3.921E-05\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.028214\tres = 3.605E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.028245\tres = 3.315E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.028273\tres = 3.047E-05\n", "[ NORMAL ] Iteration 105:\tk_eff = 1.028300\tres = 2.800E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.028324\tres = 2.574E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.028347\tres = 2.366E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.028367\tres = 2.175E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.028386\tres = 1.999E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.028324\tres = 2.575E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.028346\tres = 2.368E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.028367\tres = 2.176E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.028386\tres = 2.003E-05\n", "[ NORMAL ] Iteration 110:\tk_eff = 1.028403\tres = 1.837E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.028419\tres = 1.688E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.028434\tres = 1.551E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.028419\tres = 1.690E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.028434\tres = 1.553E-05\n", "[ NORMAL ] Iteration 113:\tk_eff = 1.028447\tres = 1.426E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.028460\tres = 1.310E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.028471\tres = 1.204E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.028481\tres = 1.106E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.028491\tres = 1.016E-05\n" + "[ NORMAL ] Iteration 114:\tk_eff = 1.028459\tres = 1.309E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.028471\tres = 1.202E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.028481\tres = 1.107E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.028491\tres = 1.015E-05\n" ] } ], @@ -1562,7 +1562,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 43, @@ -1571,9 +1571,9 @@ }, { "data": { - "image/png": "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\n2ajR7Q6wgAAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAADDCAYAAABJYEAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXmYFdW19t/VzTzPgzigqDggyHwVDTHOMYKCA55oNEbN\nNRrN1cRozBU1gyZG45A5GjXGIxEFxRsTcfow0oiAMs9jQwMNzdQMDTR91vdHVfepOlXnrGoauk+Z\n9/c8/XTttVftvatq1TpVu/beS1QVhBBC4kFBQzeAEEJIdOi0CSEkRtBpE0JIjKDTJoSQGEGnTQgh\nMYJOmxBCYgSddgMiIr8XkfvrsP99IvKnQ9kmQg4HInKWiCyqw/5HiUi5iMihbFccySunLSI3iMhc\nEdktIutF5Hci0rae6l4tIntFpEOG/HMRSYnI0R7ZEBH5h4hsE5EyEflERG7IUu71InLANbid7v+n\nAUBVb1XVnx1sm1X1EVW95WD3z0ZGm7e75+CSWuz/vIg8fKjbFRdiZMdnisj77nXeJiJvisjJGfu1\nFpEnRWSNq7dMRJ7ILN+jn/LY+U4R2QoAqvqxqp4ctk8UVHWtqrbRwzCxJKPNa0Xk8ag/DiIyXETW\nHuo25SJvnLaI3A3gEQB3A2gD4L8AHAPgXRFpVA9NUACrAFzjaVMfAM3dvGrZGQDeB/AhgF6q2gnA\nrQAuzFF2kWtwrd3/dxyOAzjEVLe5HYDfAxgnIm0aulH5Tszs+B0AEwF0B3AsgLkApopIT1enMYAP\nAJwM4AJVbQPgDABlAIbkqL+vx95DnXueUdNmAMMBXA3gxoj7CjzntV5Q1Qb/A9AawE4AozPkLQFs\nAnCDmx4LYDyAcQDKAcyEc7Kr9bsDeM3dZwWA73ryxgL4O4AX3X3nARjgyV8F4EcAPvXIHgNwH4Aq\nAEe7sn8DeLoWx3Y9gI+y5D0P4GF3uyOAtwBsA7AFwBSP3g8BrHPbvQjAOZ5jesmjNwLAfABb4dxs\nJ2Uc390A5rh1vAKgSZQ2w7nhUwAGemSvAtjglvX/AJzsym8GsB/AXre9b0a4NoMBzACwwy3zVw1t\nk/8BdvwRgGdCjuFtAC+42ze516N5Lc5BCsBxIfLhANZGsOlQW4Dzw5cCUOA5R2+698pSADdFPUdW\nm919n/GkbwCw0C1rOYBbXHkLAHsAHHCvezmAbnAc+b2u7mb3Ordz92kK4CU4P3zbAEwH0LlWdtbQ\nhu4eyIVwbvSCkLwXALzsuRj7AFwOoBCOE1rpbotr/Pe76Z7uSTvfs+8ety4B8HMA0zKM/SuuAfWG\n8xZSDOAo96IeDcd5HQAwvBbHFtVp/xzA79x6CwEMc+Unuu3o6qaPBnCs55j+6tHb5R5DIYAfAFgG\noJHn+D4B0BVAO9cIb7Ha7JZ1Gxwn3CnDkFsAaAzgCQCfhx2Xm7auTRGAr3tuhCENbZP/qXbsXtcS\nd/sVAM/X8hzkctrFEWw61BbgOO0qpJ32RwCece2vH5wfuC9HOUe52gzgJADrAdzhyb8YQE93+2wA\nuwGcnnlcHv073ePo7rbv9wCSbt4tcH5smrpt6w+gVW3Ocb50j3QCUKaqqZC8DW5+NbNUdaKqVsFx\nFk3hvIIOhuNUfqaqVaq6GsCzAMZ49v1YVd9R5+y9BKBvSH0vwXFa58Mx/PWevPZwboINtTy+M0Rk\nq9tvuFVEwl4tK+G+prrtn+rKqwA0AdBHRBqparGqrgrZ/yoA/6eqH7jn5ldwbs4zPTpPqWqpqm6H\n81R/utVmABUAfgngWlUtq85U1RdUdY+qVgJ4GEA/EWmdpSzr2lQCOF5EOrplfpqjXflMXOy4A7Lb\nsbedHbPoWHzmsfUnQ/Jz2fR+GLYgIkfB6ab5oapWquocOOfoGx61KOcos8274DzMfAjH0QIAVPWf\n7nWAqv4bwGQ4zjsb3wZwv6pu8NwfV4hIARxb7wjgRHX4XFV3GW3zkS9OuwxAJ/egMunu5ldT0+nv\nXpASAEfA+SXu4RrKVhHZBueVsItn342e7T0AmoXU+TcACThPHH/NyNsG51e5e8TjqmaaqnZQ1fbu\n/zCn9BicV+HJIrJcRH7oHuMKAN8D8CCAUhFJiki3kP2PALCmOuGem7UAenh0Sj3bewC0stoM56l8\nEoAvVWeISIGIPOq2czucpzuF3yl5sa7NjXCeCheLyPTafPTMM74Iduxt55YsOhb9Pbb+vczMLDZd\nXc+3YNtCdwBbVXWPR7YGfluPco4y29wKzsPPUDhdWgAAEblYRKaJyBb3elyM7LYOONdwYvU1hPND\nUAnnLfclON8SxonIOvc+KsxRVoB8cdrT4LwujvIKRaQVnBP0nkd8lCdfABwJ5yliLYCVrqFUO8i2\nqnppbRqiqsVwnNDFACZk5FW4bR1dmzIj1rtLVb+vqr3g9E3fJSLnuHnjVPVsOMYAAL8IKWK9J7+a\no+D0G9alXXsAfAfAdSLSzxUnAFwK4CvqfKjsCedVr/qLu2YUk/PaqOoKVU2oamc4T/WviUjzurS7\ngYiLHe9x23plyK5Xedr5HoALD+JamCMvQmz6UVcexRbWA+ggIi09sqPh/PAdLOLW/xqcbsSxACAi\nTeB8X/glnL7n9gD+iey2DjhdPxdnXMOW7pP3AVX9iaqeCuct+FL43xBM8sJpq2o5nFeIZ0TkQhFp\n5H7B/jucE/A3j/pAEbnM/XX6Hzh9rZ8A+BTAThG5R0SaiUihiJwqIoNyVJ3NuG6E45AqQvLuAXCD\niNxdPexJRPqJyCvRjzikISKXiEgvN7kTTp9jSkROFJFzXOPZD6e7Iuz1+1UAl7i6jUTk+3DOzbS6\ntAsAVHUbnNfPsa6oNRzntM29cR6B33hLARznSee8NiLydRGpfnLZ4ZYVdox5Tczs+F4A14vI7SLS\nSkTai8hP4XTRVA/XfAnOj8jrItJbHDqKMz/goginJLyxOWzasIVqx7oOTp/xIyLSVET6wnlCfylX\ntbVo4qMAbhaRLnC6cZrA7fYSkYsBXODRLQXQUfwjq/4I4OfiDq8Ukc4iMsLd/rKI9HGf+nfBeQKv\nla3nhdMGAFV9DM5X71/BuVjT4LzynOf2C1XzJpwhOdsAfB3A5W7fXwrA1+D0066C82Hiz3CGXWWt\nNmxbVVep6mdZ8qbB+dBzLoAVIlIG4A8A/lGrAw5yAoD3RGQngKkAfquqU+D0dT4K5yv0egCd4bwu\n+w9EdSmAawH8xtW9BMClqnog8xgOkicBXCzO8LG/wnFCJXBGqxRl6D4H4FT39XBChGtzEYAFIlIO\n4NcArlbVfXVsb4MQIzueCudD3Wg4/dar4HzQG+Z2X0BV9wM4D8BiAO+6x/MJnD7Z6RHako1cNp3L\nFrxlXwNnmOJ6AK8D+F9V/TBHnbna5ctT1fkApgD4gdvffCeA8W5Xxxg4165adwmcD7YrXXvvBuAp\nV2eyiOyAc39Uf8fqBufJfQeABXD6z3P92AQQpzstHojIWDhjo2v1OkFIPkE7JnUhb560CSGE2NBp\nE0JIjIhV9wghhPynwydtQgiJEXVawMYd9vMkHOf/nKoGxg+LCB/lyWFFVQ/5cp20bZIPhNn2QXeP\nuOMMl8IZ+rYeziIvY1R1cYaeYrZnGOJdo4EnXveVNaLvOLO+SUVjTJ2bhz1t6ryFr5k6T2VM4np8\n9Ezc/bp/mOzVT79lloOe9rn91sjf5MzvoFvNMh57amxQ+JfRwI2e8/yvCNf5nYdMlUab7zJ1DnSP\nsBjg1SHtmTIaGO5p88uv2uVgzCF32rWybRR7JLcA8C5v/pxd2X89aOvca1+7U0fMNHWW7+gVkO2/\n7no0eenFmvS+Ne3tuvradS1YmGtYuVvOKRHKmRtSToYPadbTvkd6tVlp1/XmYFMHj0a4j6Zn3kd/\nhzO608tNOYsYPrwJpkzpGmrbdekeGQJgmaquccefjgMwsg7lEZIv0LZJ3lIXp90DnvUT4EyX7pFF\nl5A4QdsmeUt9LMruvM5Us2UT8HbSl71ufoSZ1kvtmZ7L18wydSoizBj9WP1LGKRSio+TGcsazPIf\nQyhr7FepFbtzvyJujLIAWFhbtMovXx+lG2yeqZF6fbxdTCrCUhWrQtqjKWCV91g+CdlxHeq2xMSh\nxhs4qAzAG560fT5RFsGOptjXbvsu+/W/ak/XoDBVharxr3na0zKok1nXfLsulCy1y5kdoZzikHJS\nKZ8Pqeps3yPbm2+y65q1zNYpO5j7SENkE0P2W+b+AfPnZ3+erovTLoGzSEs1RyLb3eTtw347CXw1\n4cs+sq/9wP9ZhD7t44eVmTqLIvRpn6UfBGUJ/4PWM2WJgE6ACH3avUbm7o+L0qf9j81Z2jLQI98c\nwdjm2UZbMDpsjSE/qdsj9Gkfm6U9x3raXBTFPG27OAii27avD/sNAJd50lvsmjpFsKPh9rVrF6FP\nuyykTxsACq+8omb7QIQ+7XYR+rRLIvRpt4vQp10S1qcN+HxIYYQ+7XYR+rRLWkbo0y6KcB+tCLuP\nTstIX56ziD59nD7tMOrSPTIDzrq3x7gLv4yBs4QnIXGHtk3yloN+0lbVKhG5Hc6C4NXDog462jIh\n+QJtm+QzderTVtV/wVmwnJAvFLRtkq/Uz4dI77DFtXBePj1sndDRLGLYme+ZOs8+9F1TZ8pYu99q\nt/gDujSXCrSRcp9s8R1Hw+KkFatNnT9tujNnfp8uM3LmA8Czdwb7RacnV2No4v9q0hvvCAt24+fH\nbz9u6hz4X1PFiZVi8Z0Q2T/hLNlfzcv9IxTU0HjHYs+Dvx/7XHv3vXYfabcRdn/s0VJs6rzfNtie\nCS0qMart92vSr/cdFdDJZGfWqHJpLjvFjhPyhtijKFv3/W1ANmP+Sgzu+25NerQ/xkMoN8gLpk7Z\nCNsPlT54rKkTvO6pENmzRhmZ8UzScBo7IYTECDptQgiJEXTahBASI+i0CSEkRtBpE0JIjKDTJoSQ\nGEGnTQghMYJOmxBCYkS9TK7p/Hp6lcu9yS1olljry98Je7D+iWKvGjbqgZdNnWFLPzd15IQqX3qL\nJnGh+iewvIwrYLG3o316pV1VzvwFU+zfVT0+GAOg6TZFYn16lTw5Inc9AHBfz0JT54jfLTd1WmiF\nqbPqyFOCwgoAnpgQ96b+ZpbzaEM/dgz1BKAoS/oXgNoXYf8Iq3Sv//R4U0dL7DgQcnnQBtogiS5I\nt/nMCJNA+86wbUAG2fZ2z0z74s0eeGJAth3lOAOlNeku2GGW8/bECPdRd/scFl5mrxIKnOVPbisG\n2mfImmWkMzkZwJQbQ7Ma2uQJIYTUAjptQgiJEXTahBASI+i0CSEkRtBpE0JIjKDTJoSQGEGnTQgh\nMaJexmk/iTtqtqdiHYbBHzh3TG87/N6biy8wdS7DP02d4uPvMnWOPj5jvPIuBR64zif6+j0RAnxG\niG+7/+LcY6M/+tIws4zz1k8NyASAIN3GWYX2GOyBY00VbDjVXgReIwyeXlZyVED2VnI3Lk3cV5P+\njgQXwM877vVsfwTgS+lklOAFJdNPsOsYYo8N3tXcPuet+gZtQLco9Km0bVd+GjJ+PoNNg+x5FV3m\n2/ZWOrCtqXMAjQOyKhT65DrErmvnfHsMdps99tjyqgjPuUc84B/HXpHcjOaJVT5Z6aTjchfSEcAf\nwrP4pE0IITGCTpsQQmIEnTYhhMQIOm1CCIkRdNqEEBIj6LQJISRG0GkTQkiMoNMmhJAYUS+Ta4bK\n9JrtUqnAUCnx5Q9c/LFZxmer7UkmWGMPsj+6a4RJMd/JrBzAAP9+J93ymVnM4scGmDplbdvlzD/v\n6eDEmUzk4hDZPkB2p9MD/2gft5SbKtAP7HMsES7VOBkTkM2Vhdgt6ckdhYiy4HzDcurImTXb23ev\nRDtP+mgUm/vLBvu6lDe3z/neCAEXWq0MqWsfgB1p+YkH7GAjbV6tNHXEjkeCbtfawQtaXLknIJuT\nSuHEqk1pQdhxZbB3r90etLDPc5ukXVf/gtm+9PqCNTgiQ7Z25JacZfREa0zJkscnbUIIiRF02oQQ\nEiPotAkhJEbQaRNCSIyg0yaEkBhBp00IITGCTpsQQmIEnTYhhMSIOk2uEZHVAHYASAGoVNUhYXon\nvJmeTKMzk7i7ZcKX/9MRd9uV9bQnWhT+xR74/sBD95k6Y0961C9IJoGEv82Ll0f4vRtoR8s4ArkH\n2ctAux7dF6xHK9Uvv8mOyqE/sevaG3qF/TRrZV+rjfh1QLYD67ER3WrS9tk7fES17ZXl6Ug+Byq6\nYKsn/X6bc+2KLrfPVZs+EaLSrLLPlmwO2oAkkxCPbbf5QQS7nmXXpR/Y9ibn2HW1/uxAQNZskaL1\n3PR5kzL7HHbuFOG4jGAyAIDL7LpeUH9EnglaiVH6nE/Ws9wfySaTIwqzu+a6zohMAfiyqm6rYzmE\n5Bu0bZKX1LV7RA5BGYTkI7RtkpfU1SgVwLsiMkNEbj4UDSIkT6Btk7ykrt0jw1R1g4h0hmPgi1TV\nXv2JkPyHtk3ykjo5bVXd4P7fLCITAQwBEDBsffSKdCJVhczPhXN2LTbrSiJpt2e+/SFyXnKhXZf4\n6yoqKgoqlZrFAGURVhTcmPu4xF50Ddo8WE/RbADeMz3XPn+Ya6tUvmofU+Nmdl3LJLhK4sap/o8z\nm7AuoLNr4VrsXhSUH2qi2va+625IJ6r8H6kmNLdXw2sTwa6x1VbRfRFWcUwG6wrY9iK7LpRGsOuQ\nugLtiXAPpRaF2HYJ4LXtsOPKRCOsgogtB3cOMymH/7rPKAp+lK2qeC0gSy1ZAl3i3PCzJXsnyEE7\nbRFpAaBAVXeJSEsAFwB4KFT33nQDdUoSMtw/EqPfiFlmfQkkTJ3rFtsn/bTEPLsuCdaVyBg9guXX\nmuWgOML4h6/kPi6ZatejbcPqUSQu8cj72OcPK+y69l5lH1OzVnZdH2e5Y09IpJezLUQvs5zJcpmp\nU1tqY9tNX3qhZvvA+NfR6MrRNelRbX5g1tUlgl3j1/Z1Se2wr0tBpg27+Gz78wh2vSeCXWepy4v8\nOcJxnZzFtj1yiVCX3hHhuDpGGIEToa5NuDUgG5Vo7EvfVX5FQMe7MOzphY3wbuvwZZvr8qTdFcBE\nEVG3nJdVdXIdyiMkX6Btk7zloJ22qq4CcPohbAsheQFtm+Qz9RK5Rnt7XjuWiT8N4N7NT5llXNR5\nuKkz9OE2ps6bGGnqPPBbfwQLnanQbdf5ZLfc9rRZzl/23GbqNNuRe3LN7pPNIiAvBLuFZB4gjdPy\n1IN2VI5PX+tr6gydY3d8/3c/+3oeo2sDsq26BUd55H8ovt0sp6GpWN0xndjcCpWe9IR+l5v7n6G9\nTZ3KGaeaOr0PLDF1Wt0TtAFdpNDZadsueqy/WU4jtSfODOln29v0Oba9HdBgOcuSW1GU6FCTPjPk\nuDLZWdrY1FlaeKKp0wgnmTrTMMqXnoGV0IyZO3tXd0Au9rfMnsdxqIQQEiPotAkhJEbQaRNCSIyg\n0yaEkBhBp00IITGCTpsQQmIEnTYhhMQIOm1CCIkR9TK5Bi97tufDiQfi4Y8P+yeuhPH21lGmTqPV\n9qD/4QP+ZepIxuI7UhmUzZRBZjlT+w4wdYZ+lHuyyj++dI5ZxiX9PwzIdCugnnkSP7rrAbOcH+//\nianzUb/Bps538Yypc8qPg5E7kgsUiYXv1KTvP+UJs5yGpk/fGTXb2+evRDtPeqe2NvfvN2uZqbNx\nYFtTp/X4YISXADOCIikFZFfathvBvoeGXm9PsHrYXuIHD0QoZ/qLwQk4BZJCI0m3s2CGveZQm/H2\n4l1HjrEXIus2a4epM3nQBb70XmmGneK3hVP7zsxZRk+0xpQseXzSJoSQGEGnTQghMYJOmxBCYgSd\nNiGExAg6bUIIiRF02oQQEiPotAkhJEbQaRNCSIyon8k113sGv09SYIR/MHwT2APfCzrYg/6rHrEj\nWHw2IEIomLv8UbWRTAYClQ5VOzrL0CvsyQPyWu7jumRghN/V0SEBSZcp0CItf+ScsWYxujs0dq2P\nD5vYk33G4lFT55KfTAjI1if/jWTi7LTg+ggBZBuYBQvTk6y0ZClKPOmRpwSDtwYYmDJVus2PYAPJ\nCOfqwxBby7DtoX3tuh5aYNc1NmXfrw8X2HX97+zgLJ3l2xVDfpGeCKNz7HMoX7Pr6tqn3NSJcr0u\n02N86ULdjUt1sU9278Lcka86tciexydtQgiJEXTahBASI+i0CSEkRtBpE0JIjKDTJoSQGEGnTQgh\nMYJOmxBCYgSdNiGExIh6mVxzf68f12zP77oAfXot9OXvkyZmGbepHcXkmsf6mzp/km+bOvfpcb50\nCXZhEX7sk3WUa81ytozPMUK+upwXck8Ien/WMLsMbAnIVid34PNEOuJJWz3CLOdYUwM4VoIRZzJZ\nlDrO1PnnRyuDwsV7MecjO0JRPnHqKekIJNtnr0I7T/pNjDD3//5Me0LYpkFtTJ1uCXtiSOorwbq0\nVKHPpiNHfTonGCkmk7HfsCeNPVRoH9dY+xbC9BdPC8hWJLfh00T7mvTQkOPKRG+269rUx4401CXC\n9Xpj8G2+9GxZgirp7ZN57SYMRq4hhJAvCHTahBASI+i0CSEkRtBpE0JIjKDTJoSQGEGnTQghMYJO\nmxBCYgSdNiGExAhzco2IPAfgawBKVbWvK2sP4O8AjgGwGsBVqrojaxlQ37Y3DQC3TnnRbOgfhn/D\n1GmJPabOk3qnqdP+6b2+9GezgJPKynyyF+683izncplo6nQcsSBn/slYZJbR44OtAdmiBUD/Dzak\nBT8OqAQYV2RPBrlu/GumzuArsk0L8NA+RNbSL2/0a3vCyIG/2VVl41DY9vy5g9OJ4mVY50m37vdb\nsw3zBvUydfajqanT4qolpk7rzw4EZLIIkJPT9+OBAnvyyPS/RpiAM8eegBOlnAMIticlBTggHvlA\nDehkUn5VY1NnrRxl6mwctN/Uaa07felmujcgWzB3EHLRqWX2vChP2s8DuDBDdi+A91S1N4APANwX\noRxC8g3aNokdptNW1Y8BbMsQjwRQ/Xj8IoDLDnG7CDns0LZJHDnYPu0uqloKAKq6EUCXQ9ckQhoU\n2jbJaw7Vh0i7U4mQeELbJnnFwa7yVyoiXVW1VES6AdiUS3n86Ak125oKhqBPLg6IAswoCVkVLoOt\nyPq9qIZOWmXqtJzlTxeFLGxXkZxklvMv3W7qLNmVO39bq31mGR1CvmUWZcrKgjqZTEuuM3WqPrV9\n2Nb979qVFRcHZbOLfMlUh70BFV2yGLrU/uhWB2pl27hrdHo7w7ZnLLBtdnvGB6owDqDC1Jkbcl9l\n0izkm3ZRiT+9NBn8qJ1JQYS6Vtimj+XJzJ6pIKmQ58p5Rbt96TX2t3pUvGK3eUOh3ehGGvyYm8lS\n+K/7yqIQEypOBmUrFwIrnYOZn8MzR3Xa4v5VMwnADQB+AeB6AG/m2vnK19PLbc5PLkCfxKm+/MRH\nb5kNKB9uL/c5NIJnOkZtQ2lfVhmQJQb60/ck7JEWF+lfTJ2BW0ty5q/vYI8c6PHB7lB54lxP4kOz\nGBQkjjR1rm7yuanz6yvON3VWzz0rPOOriXR7ekRwaJ3bmjoGdbJtPPF6evvtpK/9g/tNNis/Uzea\nOlFGj/SuKjV1Ws8Jd1yJk9PbUxMdzHIapewHn6G/WGvqTE+EDSHyEzZ6BADO97Rz2OdrzHLKr7E7\nFZY2amfqNFZ79EhbBH3V4IRf9sLcREDHS5+WwJQTwttsHomIJAEUAThRRIpF5JsAHgVwvogsAXCu\nmyYkVtC2SRwxn7RVNdtPwnmHuC2E1Cu0bRJH6iVyzU5JR96okOa+NACcdbbdB/qxnmvqYIn9CqQF\nYurIHf7XSEkmIQn//V2yKEJd/4hQ1925+9oW4WyzjB5bioLCXQps8dRfZL/Sno1Opo4Eg+QEmIks\nXR8eJvcdHpB9OH8Tzun7x5r0NVWvmOXYnV2Hl2bHpPuAqzrtQqEnPUrtyVVdInyHwRDb1lKrbFvD\n5hBbSyYBj20P+34Eu54Voa65dh/y0HMi1DU4WNfqRYozZ3u+iTxm19W6s13XwOMWmjoy3b6PusPf\nZSeoxCjM9snuOiZ3JK7GhdldM6exE0JIjKDTJoSQGEGnTQghMYJOmxBCYgSdNiGExAg6bUIIiRF0\n2oQQEiPotAkhJEbUy+SaF/bdULO9v3ICPtk3ypf/eNO7zTIWpL5t6vT5jd0WOcFe8CiV9K93oPMU\nuuw6n+y5sV83y9l3kr1mxLVVzXLmlzW6yCxj25VNArLdlVXYdmX6ONo/ZUck6XGcfW4mfdteV+TS\nn9t1/eb+cQFZiXyMBZKemHN24Ud2e0yNw0uvtunFgba32IR2nvSNsNeeeWuCfa52zbPbUbHPvnad\nOgfr0n2K1J1p29690XYJbV61F03SS+3jwi22yq4rg+XseyWFXZ61RFp2susqs9fBQvNd9jlsNdGu\n65ujxvvS6+XfeEv8k+SOb7siZxk90DprHp+0CSEkRtBpE0JIjKDTJoSQGEGnTQghMYJOmxBCYgSd\nNiGExAg6bUIIiRF02oQQEiPqZXLNjtO6pRPl7VDxs26+/Fun/d4s48YOz5s6v3/mTlNHHrR/pwp2\n+AfZF+wGCrb7ZTfd8bJZzsRn7IkxGwq758xPwp7E01uWBmSbZQdWSzqCxtI7gxNwMinXNqbOCLxj\n6kz90UBTZ9L0qwOy5HIgMf2ZmnTJUDvIbENPrlkwaVA6MWspSlql01tH2IFrpYddR+sKOzILmkew\n62ODk0dkC1DQMS1fUtjbLOeoa+ygvV1PKzd1NvaxgzKvQzDY9PrC7VjiCcI76NgFZjnNdtvRdlpX\n2FFp8Kl9nj/X033pCi1GaYZs46Tcgco7dcyexydtQgiJEXTahBASI+i0CSEkRtBpE0JIjKDTJoSQ\nGEGnTQghMYJOmxBCYgSdNiGExIh6mVwjU/bUbOuE/ZBRe3z5lX+zJ3XsvcOeHKJr7agSr4wdaepc\nIxP95SaT0ETCJ3uowP69a/9beyLK5VW5B/RPKrHr0beDEwcWTlecvntjTVpusicOvFvwJVPnpdRV\nps4Ni2ao+zqQAAAIlklEQVSaOqOGBCcnFS8vwsQhZ9akj4I9iQO4P4LOYeRRz7kvE2BaOr3hoV7m\n7oUj7SgwVbDtutXL9uQRjAqxgWQS8Nh2E5xoFtNl5k67rkH2hKBus2zbLh3YJSBrhANojP1pwQy7\nrjYTI9xHn9jnufCdCBOd/jsjva0LdvwqYzJNM+N69c+exSdtQgiJEXTahBASI+i0CSEkRtBpE0JI\njKDTJoSQGEGnTQghMYJOmxBCYgSdNiGExAhzco2IPAfgawBKVbWvKxsL4GYAm1y1H6nqv7KV0bp9\nejB+ZcsKNG7vH5xfflILs6HrYYf4aDTenqgw8S47mowO9A+y160Kffw6n2xF6o9mOZ10s6mzf0fu\nAf03HWHXU3FT84CsuEUR3kikJ6oMx81mOXPUnjjz2v4rTB3tbz8LvP69a4PChQWYMSc90eO4X9oR\nSeoyueZQ2DY+edCTmAcs90YROs9sg2KYqdPjgWBkokz6Y7ap8xcEI8WUoxKbcGtNukguN8t5Z9CF\nps5IHGPqvDnwNlOntQQn8iyTlWgn6ckq3dWOgPPNy18zdTIjzoTyHVsFsz/OECwB1mTK3s9dRtPs\n5y/Kk/bzAMKu0hOqOsD9y27UhOQvtG0SO0ynraofA9gWkhVh3iwh+Qttm8SRuvRp3y4is0XkWRGx\n308IiQ+0bZK3HOyCUb8D8LCqqoj8FMATAL6VTXnPmHSWhi2QtNi+LzaUzTJ19DN7IZspyQ2mzs6t\n/qjVRbsBwC9blfzULKdM7YjU4yqCEbJ99bSw69mPxgHZlqJlvvRMrDDLKUalXVdlhN/5lB2FHAtD\njrukyJfclVwXrH/hCuxftNIu/+CplW0Df/dsZx5T7msLANi6xlSpSJaaOiWwy5kQcn1nFPnvxxli\nn9sKDX5DyaQAu02dz2H31TeXioBsxdRNfoHadrse/zZ1KrTY1MG24AJWQZZkpOeF6IR9r9ns/gHz\n52f/zndQTlvV94XtzwDeyqXfYtxzNduV4yag8ZhRvvyKKV3NOrtf0MrUWbDxUlNneOKvps6lj2ee\nUEWig/+N+Z3EELOcKB8ix5Tn/kDyXlu7ngqE30RHez5EDorgkBujn6nz+b5Rpk7FLd1NHZySxaGd\nkv4Q2Sphf4hcKafZddWC2to2cLVnex4Ab3vsD5HoYH+IbJ6wf3B7RPgQOQrPh8sTnh99OS5Ux8tO\nbW3qXIrFpk4qwoqCYR8iAWBwIt3OUTrHLOctnG3qlEb4ELnjcfv8BD86AsD5GencDz99+hyDKVNu\nDM2L2j0i8PTziUg3T94oAPMjlkNIvkHbJrEiypC/JIAvA+goIsUAxgI4R0ROB5ACsBrAtw9jGwk5\nLNC2SRwxnbaqJkLE4e9ZhMQI2jaJI/USuaZ8uafPurQtKpZn9GFfaY+wevfdEabORf8z0dS5/Fv2\nsNtHZt3pS89OLkFJordP9nLx9WY5E46x2zy57Tk589/Yc5lZxhktpwVkFdIc5ZKOCPRzvc8sZ2NH\nu7+uZXGZqYNh9ge4pj8KjrSrGr8bhVem5StL7MgvDY/3G+UbALzX6zmYND3LVNkwyT4PHUaEjVz0\n03PHqoCsas9ruGtHesLU3jUdzHL69J1h6ty78GlT59RT7AhH8+cMDgrXJPG8ZxLW3T0fN8s5rk3w\n2DPZOClCf3VTWyU4cWYBgj3ROb5tGxVxGjshhMQIOm1CCIkRdNqEEBIj6LQJISRG1L/TXrGw3qus\nK6ULtzZ0E2rNroVrG7oJtSa1JHMmWdxYZqvkGbE85yvj5kPsSXa1of6d9spF9V5lXdm0yP4yn2/s\nXhScAp7v6BJ7WnN+Ez+nHctzHjsfEnenTQgh5KCpl3HaA5qlt1cUAr2aZShEWHscdpwEHI92ps5m\ne212dMVRvnRTNA/IBjSxx5a3xfGmTiFCFtDycHqBfYmOD1ncfjkaZ8ibmOUcYS89guYR2lNxgl1O\nk8Jg8IclIujtke9vbJ/jz+yqDisDBqTX7VixogC9enkX74qwBktvWyXk8gboFeEGaRNyzheL4CSP\nfJ+9FlSkuppm3uMhHBehnCYh7VlRCPTyyJsW5A4kAgBHRmlzlPUco1yvSv91X7GiGXr1yrSF4CJv\nXk48sRGmTAnPE9UIK5HVARE5vBWQ/3hUtUHWv6Ztk8NNmG0fdqdNCCHk0ME+bUIIiRF02oQQEiPq\n1WmLyEUislhElorID+uz7oNFRFaLyBwR+VxE7DAyDYCIPCcipSIy1yNrLyKTRWSJiLyTT2GzsrR3\nrIisE5HP3L+LGrKNtYF2fXiIm10D9WPb9ea0RaQAwG/gRL8+FcA1InJSfdVfB1IAvqyq/VXVDiPT\nMIRFFb8XwHuq2hvABwDsZf7qjy9MFHTa9WElbnYN1INt1+eT9hAAy1R1japWAhgHYGQ91n+wCPK8\nGylLVPGRAF50t1+Ef83QBuULFgWddn2YiJtdA/Vj2/V50XoA8M6tXufK8h0F8K6IzBCRmxu6MbWg\ni6qWAoCqbgQQJSJpQxPHKOi06/oljnYNHELbzutf2jxhmKoOAPBVALeJiL1qfX6S72M7fwfgOFU9\nHcBGOFHQyeGDdl1/HFLbrk+nXQLgaE/6SFeW16jqBvf/ZgAT4bwOx4FSEekK1ASr3dTA7cmJqm7W\n9KSBPwMICVmSl9Cu65dY2TVw6G27Pp32DADHi8gxItIEwBgAk+qx/lojIi1EpJW73RLABcjf6Ny+\nqOJwzu0N7vb1AN6s7wYZfFGioNOuDy9xs2vgMNt2vaw9AgCqWiUitwOYDOfH4jlVzffluroCmOhO\nV24E4GVVndzAbQqQJar4owDGi8iNANYAuKrhWujnixQFnXZ9+IibXQP1Y9ucxk4IITGCHyIJISRG\n0GkTQkiMoNMmhJAYQadNCCExgk6bEEJiBJ02IYTECDptQgiJEXTahBASI/4/n9C4+LslnowAAAAA\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, From fc56da57fd66f1603c819b29004ed0b5e2c5229b Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 29 Jul 2016 13:46:03 -0400 Subject: [PATCH 82/82] removed implement mesh domain todos --- openmc/mgxs/mgxs.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 1ef3194be0..ca5adcceb5 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -42,7 +42,6 @@ MGXS_TYPES = ['total', # Supported domain types -# TODO: Implement Mesh domains DOMAIN_TYPES = ['cell', 'distribcell', 'universe', @@ -50,7 +49,6 @@ DOMAIN_TYPES = ['cell', 'mesh'] # Supported domain classes -# TODO: Implement Mesh domains _DOMAINS = (openmc.Cell, openmc.Universe, openmc.Material,